@charset "UTF-8";
@-moz-keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-webkit-keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-o-keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-ms-keyframes flash {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    opacity: 1;
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  25% {
    opacity: 0;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    opacity: 1;
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  75% {
    opacity: 0;
  }
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    opacity: 1;
  }
}

@keyframes flash {
  0% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  75% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-moz-keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes bounce {
  /* line 17, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 21, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  /* line 23, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 25, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 29, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes bounce {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  50% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    -webkit-transform: translateY(-15px);
    -moz-transform: translateY(-15px);
    -ms-transform: translateY(-15px);
    -o-transform: translateY(-15px);
    transform: translateY(-15px);
  }
  80% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes shake {
  /* line 35, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 37, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 45, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 47, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 49, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes shake {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  10% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  20% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  30% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  40% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  50% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  60% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  70% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  90% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-webkit-keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-o-keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-ms-keyframes tada {
  /* line 61, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  /* line 63, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  /* line 65, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  /* line 67, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 69, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  /* line 71, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 73, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  /* line 75, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 77, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  /* line 79, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  /* line 81, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@keyframes tada {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  10% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  20% {
    -webkit-transform: scale(0.9) rotate(-3deg);
    -moz-transform: scale(0.9) rotate(-3deg);
    -ms-transform: scale(0.9) rotate(-3deg);
    -o-transform: scale(0.9) rotate(-3deg);
    transform: scale(0.9) rotate(-3deg);
  }
  30% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  40% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  50% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  60% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  70% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  80% {
    -webkit-transform: scale(1.1) rotate(-3deg);
    -moz-transform: scale(1.1) rotate(-3deg);
    -ms-transform: scale(1.1) rotate(-3deg);
    -o-transform: scale(1.1) rotate(-3deg);
    transform: scale(1.1) rotate(-3deg);
  }
  90% {
    -webkit-transform: scale(1.1) rotate(3deg);
    -moz-transform: scale(1.1) rotate(3deg);
    -ms-transform: scale(1.1) rotate(3deg);
    -o-transform: scale(1.1) rotate(3deg);
    transform: scale(1.1) rotate(3deg);
  }
  100% {
    -webkit-transform: scale(1) rotate(0);
    -moz-transform: scale(1) rotate(0);
    -ms-transform: scale(1) rotate(0);
    -o-transform: scale(1) rotate(0);
    transform: scale(1) rotate(0);
  }
}

@-moz-keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-webkit-keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-o-keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-ms-keyframes swing {
  /* line 87, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  /* line 89, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  /* line 91, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  /* line 93, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  /* line 95, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  /* line 97, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@keyframes swing {
  20%, 40%, 60%, 80%, 100% {
    -webkit-transform-origin: top center 50%;
    -moz-transform-origin: top center 50%;
    -ms-transform-origin: top center 50%;
    -o-transform-origin: top center 50%;
    transform-origin: top center 50%;
  }
  20% {
    -webkit-transform: rotate(15deg);
    -moz-transform: rotate(15deg);
    -ms-transform: rotate(15deg);
    -o-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    transform: rotate(-10deg);
  }
  60% {
    -webkit-transform: rotate(5deg);
    -moz-transform: rotate(5deg);
    -ms-transform: rotate(5deg);
    -o-transform: rotate(5deg);
    transform: rotate(5deg);
  }
  80% {
    -webkit-transform: rotate(-5deg);
    -moz-transform: rotate(-5deg);
    -ms-transform: rotate(-5deg);
    -o-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-moz-keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-webkit-keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-o-keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-ms-keyframes wobble {
  /* line 103, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  /* line 105, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  /* line 107, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  /* line 109, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  /* line 111, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  /* line 113, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  /* line 115, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@keyframes wobble {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
  15% {
    -webkit-transform: translateX(-25%) rotate(-5deg);
    -moz-transform: translateX(-25%) rotate(-5deg);
    -ms-transform: translateX(-25%) rotate(-5deg);
    -o-transform: translateX(-25%) rotate(-5deg);
    transform: translateX(-25%) rotate(-5deg);
  }
  30% {
    -webkit-transform: translateX(20%) rotate(3deg);
    -moz-transform: translateX(20%) rotate(3deg);
    -ms-transform: translateX(20%) rotate(3deg);
    -o-transform: translateX(20%) rotate(3deg);
    transform: translateX(20%) rotate(3deg);
  }
  45% {
    -webkit-transform: translateX(-15%) rotate(-3deg);
    -moz-transform: translateX(-15%) rotate(-3deg);
    -ms-transform: translateX(-15%) rotate(-3deg);
    -o-transform: translateX(-15%) rotate(-3deg);
    transform: translateX(-15%) rotate(-3deg);
  }
  60% {
    -webkit-transform: translateX(10%) rotate(2deg);
    -moz-transform: translateX(10%) rotate(2deg);
    -ms-transform: translateX(10%) rotate(2deg);
    -o-transform: translateX(10%) rotate(2deg);
    transform: translateX(10%) rotate(2deg);
  }
  75% {
    -webkit-transform: translateX(-5%) rotate(-1deg);
    -moz-transform: translateX(-5%) rotate(-1deg);
    -ms-transform: translateX(-5%) rotate(-1deg);
    -o-transform: translateX(-5%) rotate(-1deg);
    transform: translateX(-5%) rotate(-1deg);
  }
  100% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

@-moz-keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-webkit-keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-o-keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-ms-keyframes pulse {
  /* line 121, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  /* line 123, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  /* line 125, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@keyframes pulse {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  50% {
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-moz-keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-webkit-keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-o-keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-ms-keyframes wiggle {
  /* line 131, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  /* line 133, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  /* line 135, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  /* line 137, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  /* line 139, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  /* line 141, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  /* line 143, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  /* line 145, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  /* line 147, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  /* line 149, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  /* line 151, node_modules/compass-sass-mixins/lib/animation/animate/_attention-seekers.sass */
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@keyframes wiggle {
  0% {
    -webkit-transform: skewX(9deg);
    -moz-transform: skewX(9deg);
    -ms-transform: skewX(9deg);
    -o-transform: skewX(9deg);
    transform: skewX(9deg);
  }
  10% {
    -webkit-transform: skewX(-8deg);
    -moz-transform: skewX(-8deg);
    -ms-transform: skewX(-8deg);
    -o-transform: skewX(-8deg);
    transform: skewX(-8deg);
  }
  20% {
    -webkit-transform: skewX(7deg);
    -moz-transform: skewX(7deg);
    -ms-transform: skewX(7deg);
    -o-transform: skewX(7deg);
    transform: skewX(7deg);
  }
  30% {
    -webkit-transform: skewX(-6deg);
    -moz-transform: skewX(-6deg);
    -ms-transform: skewX(-6deg);
    -o-transform: skewX(-6deg);
    transform: skewX(-6deg);
  }
  40% {
    -webkit-transform: skewX(5deg);
    -moz-transform: skewX(5deg);
    -ms-transform: skewX(5deg);
    -o-transform: skewX(5deg);
    transform: skewX(5deg);
  }
  50% {
    -webkit-transform: skewX(-4deg);
    -moz-transform: skewX(-4deg);
    -ms-transform: skewX(-4deg);
    -o-transform: skewX(-4deg);
    transform: skewX(-4deg);
  }
  60% {
    -webkit-transform: skewX(3deg);
    -moz-transform: skewX(3deg);
    -ms-transform: skewX(3deg);
    -o-transform: skewX(3deg);
    transform: skewX(3deg);
  }
  70% {
    -webkit-transform: skewX(-2deg);
    -moz-transform: skewX(-2deg);
    -ms-transform: skewX(-2deg);
    -o-transform: skewX(-2deg);
    transform: skewX(-2deg);
  }
  80% {
    -webkit-transform: skewX(1deg);
    -moz-transform: skewX(1deg);
    -ms-transform: skewX(1deg);
    -o-transform: skewX(1deg);
    transform: skewX(1deg);
  }
  90% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
  100% {
    -webkit-transform: skewX(0deg);
    -moz-transform: skewX(0deg);
    -ms-transform: skewX(0deg);
    -o-transform: skewX(0deg);
    transform: skewX(0deg);
  }
}

@-moz-keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-webkit-keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-o-keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-ms-keyframes bounceOut {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  /* line 10, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@keyframes bounceOut {
  0% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
  25% {
    -webkit-transform: scale(0.95, 0.95);
    -moz-transform: scale(0.95, 0.95);
    -ms-transform: scale(0.95, 0.95);
    -o-transform: scale(0.95, 0.95);
    transform: scale(0.95, 0.95);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.1, 1.1);
    -moz-transform: scale(1.1, 1.1);
    -ms-transform: scale(1.1, 1.1);
    -o-transform: scale(1.1, 1.1);
    transform: scale(1.1, 1.1);
  }
  100% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
}

@-moz-keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-webkit-keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-o-keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-ms-keyframes bounceOutUp {
  /* line 17, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  /* line 22, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@keyframes bounceOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
}

@-moz-keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-webkit-keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-o-keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-ms-keyframes bounceOutDown {
  /* line 29, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@keyframes bounceOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-moz-keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-webkit-keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-o-keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-ms-keyframes bounceOutLeft {
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  /* line 46, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@keyframes bounceOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-moz-keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-webkit-keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-o-keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-ms-keyframes bounceOutRight {
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  /* line 58, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@keyframes bounceOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  20% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-moz-keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-webkit-keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-o-keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-ms-keyframes bounceIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  /* line 6, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@keyframes bounceIn {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3, 0.3);
    -moz-transform: scale(0.3, 0.3);
    -ms-transform: scale(0.3, 0.3);
    -o-transform: scale(0.3, 0.3);
    transform: scale(0.3, 0.3);
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1.05, 1.05);
    -moz-transform: scale(1.05, 1.05);
    -ms-transform: scale(1.05, 1.05);
    -o-transform: scale(1.05, 1.05);
    transform: scale(1.05, 1.05);
  }
  70% {
    -webkit-transform: scale(0.9, 0.9);
    -moz-transform: scale(0.9, 0.9);
    -ms-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9);
  }
  100% {
    -webkit-transform: scale(1, 1);
    -moz-transform: scale(1, 1);
    -ms-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
  }
}

@-moz-keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes bounceInDown {
  /* line 17, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  /* line 20, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  /* line 23, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  /* line 25, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes bounceInDown {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(30px);
    -moz-transform: translateY(30px);
    -ms-transform: translateY(30px);
    -o-transform: translateY(30px);
    transform: translateY(30px);
  }
  80% {
    -webkit-transform: translateY(-10px);
    -moz-transform: translateY(-10px);
    -ms-transform: translateY(-10px);
    -o-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes bounceInUp {
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  /* line 37, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes bounceInUp {
  0% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    -o-transform: translateY(-30px);
    transform: translateY(-30px);
  }
  80% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes bounceInRight {
  /* line 45, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  /* line 48, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes bounceInRight {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(-30px);
    -moz-transform: translateX(-30px);
    -ms-transform: translateX(-30px);
    -o-transform: translateX(-30px);
    transform: translateX(-30px);
  }
  80% {
    -webkit-transform: translateX(10px);
    -moz-transform: translateX(10px);
    -ms-transform: translateX(10px);
    -o-transform: translateX(10px);
    transform: translateX(10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes bounceInLeft {
  /* line 59, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  /* line 62, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  /* line 65, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  /* line 67, node_modules/compass-sass-mixins/lib/animation/animate/bouncing/_bouncing-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes bounceInLeft {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(30px);
    -moz-transform: translateX(30px);
    -ms-transform: translateX(30px);
    -o-transform: translateX(30px);
    transform: translateX(30px);
  }
  80% {
    -webkit-transform: translateX(-10px);
    -moz-transform: translateX(-10px);
    -ms-transform: translateX(-10px);
    -o-transform: translateX(-10px);
    transform: translateX(-10px);
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-webkit-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-o-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-ms-keyframes fadeOut {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
  }
}

@keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-moz-keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutUp {
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  /* line 14, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@keyframes fadeOutUp {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutDown {
  /* line 21, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  /* line 24, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@keyframes fadeOutDown {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutRight {
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@keyframes fadeOutRight {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutLeft {
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  /* line 44, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@keyframes fadeOutLeft {
  0% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-webkit-keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-o-keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-ms-keyframes fadeOutUpBig {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  /* line 54, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@keyframes fadeOutUpBig {
  0% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
    opacity: 0;
  }
}

@-moz-keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-webkit-keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-o-keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-ms-keyframes fadeOutDownBig {
  /* line 61, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  /* line 64, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@keyframes fadeOutDownBig {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
  }
}

@-moz-keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-webkit-keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-o-keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-ms-keyframes fadeOutRightBig {
  /* line 71, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 74, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@keyframes fadeOutRightBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
}

@-moz-keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-webkit-keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-o-keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-ms-keyframes fadeOutLeftBig {
  /* line 81, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  /* line 84, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-exits.sass */
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@keyframes fadeOutLeftBig {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
}

@-moz-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-o-keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-ms-keyframes fadeIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
  }
  /* line 5, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@-moz-keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInUp {
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  /* line 14, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes fadeInUp {
  0% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInDown {
  /* line 21, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  /* line 24, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes fadeInDown {
  0% {
    -webkit-transform: translateY(-20px);
    -moz-transform: translateY(-20px);
    -ms-transform: translateY(-20px);
    -o-transform: translateY(-20px);
    transform: translateY(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInRight {
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  /* line 34, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes fadeInRight {
  0% {
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInLeft {
  /* line 41, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  /* line 44, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes fadeInLeft {
  0% {
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-o-keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-ms-keyframes fadeInUpBig {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  /* line 54, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes fadeInUpBig {
  0% {
    -webkit-transform: translateY(2000px);
    -moz-transform: translateY(2000px);
    -ms-transform: translateY(2000px);
    -o-transform: translateY(2000px);
    transform: translateY(2000px);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    opacity: 1;
  }
}

@-moz-keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-o-keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes fadeInDownBig {
  /* line 61, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  /* line 64, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes fadeInDownBig {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-2000px);
    -moz-transform: translateY(-2000px);
    -ms-transform: translateY(-2000px);
    -o-transform: translateY(-2000px);
    transform: translateY(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes fadeInRightBig {
  /* line 71, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  /* line 74, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes fadeInRightBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(2000px);
    -moz-transform: translateX(2000px);
    -ms-transform: translateX(2000px);
    -o-transform: translateX(2000px);
    transform: translateX(2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-webkit-keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-o-keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-ms-keyframes fadeInLeftBig {
  /* line 81, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  /* line 84, node_modules/compass-sass-mixins/lib/animation/animate/fading/_fading-entrances.sass */
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@keyframes fadeInLeftBig {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-2000px);
    -moz-transform: translateX(-2000px);
    -ms-transform: translateX(-2000px);
    -o-transform: translateX(-2000px);
    transform: translateX(-2000px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}

@-moz-keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-webkit-keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-o-keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-ms-keyframes flip {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  /* line 6, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  /* line 12, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@keyframes flip {
  0% {
    -webkit-transform: perspective(400px) rotateY(0);
    -moz-transform: perspective(400px) rotateY(0);
    -ms-transform: perspective(400px) rotateY(0);
    -o-transform: perspective(400px) rotateY(0);
    transform: perspective(400px) rotateY(0);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -o-transform: perspective(400px) translateZ(150px) rotateY(170deg);
    transform: perspective(400px) translateZ(150px) rotateY(170deg);
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    -ms-animation-timing-function: ease-out;
    -o-animation-timing-function: ease-out;
    animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -moz-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -o-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -moz-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -ms-transform: perspective(400px) rotateY(360deg) scale(0.95);
    -o-transform: perspective(400px) rotateY(360deg) scale(0.95);
    transform: perspective(400px) rotateY(360deg) scale(0.95);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
  100% {
    -webkit-transform: perspective(400px) scale(1);
    -moz-transform: perspective(400px) scale(1);
    -ms-transform: perspective(400px) scale(1);
    -o-transform: perspective(400px) scale(1);
    transform: perspective(400px) scale(1);
    -webkit-animation-timing-function: ease-in;
    -moz-animation-timing-function: ease-in;
    -ms-animation-timing-function: ease-in;
    -o-animation-timing-function: ease-in;
    animation-timing-function: ease-in;
  }
}

@-moz-keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-o-keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes flipInX {
  /* line 22, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 25, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  /* line 29, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes flipInX {
  0% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateX(-10deg);
    -moz-transform: perspective(400px) rotateX(-10deg);
    -ms-transform: perspective(400px) rotateX(-10deg);
    -o-transform: perspective(400px) rotateX(-10deg);
    transform: perspective(400px) rotateX(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateX(10deg);
    -moz-transform: perspective(400px) rotateX(10deg);
    -ms-transform: perspective(400px) rotateX(10deg);
    -o-transform: perspective(400px) rotateX(10deg);
    transform: perspective(400px) rotateX(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes flipOutX {
  /* line 36, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes flipOutX {
  0% {
    -webkit-transform: perspective(400px) rotateX(0deg);
    -moz-transform: perspective(400px) rotateX(0deg);
    -ms-transform: perspective(400px) rotateX(0deg);
    -o-transform: perspective(400px) rotateX(0deg);
    transform: perspective(400px) rotateX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateX(90deg);
    -moz-transform: perspective(400px) rotateX(90deg);
    -ms-transform: perspective(400px) rotateX(90deg);
    -o-transform: perspective(400px) rotateX(90deg);
    transform: perspective(400px) rotateX(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-o-keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes flipInY {
  /* line 46, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 49, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  /* line 53, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes flipInY {
  0% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotateY(-10deg);
    -moz-transform: perspective(400px) rotateY(-10deg);
    -ms-transform: perspective(400px) rotateY(-10deg);
    -o-transform: perspective(400px) rotateY(-10deg);
    transform: perspective(400px) rotateY(-10deg);
  }
  70% {
    -webkit-transform: perspective(400px) rotateY(10deg);
    -moz-transform: perspective(400px) rotateY(10deg);
    -ms-transform: perspective(400px) rotateY(10deg);
    -o-transform: perspective(400px) rotateY(10deg);
    transform: perspective(400px) rotateY(10deg);
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes flipOutY {
  /* line 60, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 63, node_modules/compass-sass-mixins/lib/animation/animate/_flippers.sass */
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes flipOutY {
  0% {
    -webkit-transform: perspective(400px) rotateY(0deg);
    -moz-transform: perspective(400px) rotateY(0deg);
    -ms-transform: perspective(400px) rotateY(0deg);
    -o-transform: perspective(400px) rotateY(0deg);
    transform: perspective(400px) rotateY(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: perspective(400px) rotateY(90deg);
    -moz-transform: perspective(400px) rotateY(90deg);
    -ms-transform: perspective(400px) rotateY(90deg);
    -o-transform: perspective(400px) rotateY(90deg);
    transform: perspective(400px) rotateY(90deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-o-keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes lightSpeedIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 6, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 9, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 12, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes lightSpeedIn {
  0% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  60% {
    -webkit-transform: translateX(-20%) skewX(30deg);
    -moz-transform: translateX(-20%) skewX(30deg);
    -ms-transform: translateX(-20%) skewX(30deg);
    -o-transform: translateX(-20%) skewX(30deg);
    transform: translateX(-20%) skewX(30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  80% {
    -webkit-transform: translateX(0%) skewX(-15deg);
    -moz-transform: translateX(0%) skewX(-15deg);
    -ms-transform: translateX(0%) skewX(-15deg);
    -o-transform: translateX(0%) skewX(-15deg);
    transform: translateX(0%) skewX(-15deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes lightSpeedOut {
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 22, node_modules/compass-sass-mixins/lib/animation/animate/_lightspeed.sass */
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes lightSpeedOut {
  0% {
    -webkit-transform: translateX(0%) skewX(0deg);
    -moz-transform: translateX(0%) skewX(0deg);
    -ms-transform: translateX(0%) skewX(0deg);
    -o-transform: translateX(0%) skewX(0deg);
    transform: translateX(0%) skewX(0deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    -webkit-transform: translateX(100%) skewX(-30deg);
    -moz-transform: translateX(100%) skewX(-30deg);
    -ms-transform: translateX(100%) skewX(-30deg);
    -o-transform: translateX(100%) skewX(-30deg);
    transform: translateX(100%) skewX(-30deg);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOut {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@keyframes rotateOut {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(200deg);
    -moz-transform: rotate(200deg);
    -ms-transform: rotate(200deg);
    -o-transform: rotate(200deg);
    transform: rotate(200deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutDownLeft {
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutUpLeft {
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutDownRight {
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-webkit-keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-o-keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-ms-keyframes rotateOutUpRight {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-exits.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
}

@-moz-keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateIn {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateIn {
  0% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(-200deg);
    -moz-transform: rotate(-200deg);
    -ms-transform: rotate(-200deg);
    -o-transform: rotate(-200deg);
    transform: rotate(-200deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: center center 50%;
    -moz-transform-origin: center center 50%;
    -ms-transform-origin: center center 50%;
    -o-transform-origin: center center 50%;
    transform-origin: center center 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInDownLeft {
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  /* line 19, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInDownLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInUpLeft {
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  /* line 31, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInUpLeft {
  0% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: left bottom 50%;
    -moz-transform-origin: left bottom 50%;
    -ms-transform-origin: left bottom 50%;
    -o-transform-origin: left bottom 50%;
    transform-origin: left bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInUpRight {
  /* line 39, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  /* line 43, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInUpRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-webkit-keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-o-keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-ms-keyframes rotateInDownRight {
  /* line 51, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  /* line 55, node_modules/compass-sass-mixins/lib/animation/animate/rotating/_rotating-entrances.sass */
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@keyframes rotateInDownRight {
  0% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
    opacity: 0;
  }
  100% {
    -webkit-transform-origin: right bottom 50%;
    -moz-transform-origin: right bottom 50%;
    -ms-transform-origin: right bottom 50%;
    -o-transform-origin: right bottom 50%;
    transform-origin: right bottom 50%;
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    opacity: 1;
  }
}

@-moz-keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-o-keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes hinge {
  /* line 3, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 7, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 11, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 15, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  /* line 20, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes hinge {
  0% {
    -webkit-transform: rotate(0);
    -moz-transform: rotate(0);
    -ms-transform: rotate(0);
    -o-transform: rotate(0);
    transform: rotate(0);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate(80deg);
    -moz-transform: rotate(80deg);
    -ms-transform: rotate(80deg);
    -o-transform: rotate(80deg);
    transform: rotate(80deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  40% {
    -webkit-transform: rotate(60deg);
    -moz-transform: rotate(60deg);
    -ms-transform: rotate(60deg);
    -o-transform: rotate(60deg);
    transform: rotate(60deg);
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  80% {
    -webkit-transform: rotate(60deg) translateY(0);
    -moz-transform: rotate(60deg) translateY(0);
    -ms-transform: rotate(60deg) translateY(0);
    -o-transform: rotate(60deg) translateY(0);
    transform: rotate(60deg) translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform-origin: top left 50%;
    -moz-transform-origin: top left 50%;
    -ms-transform-origin: top left 50%;
    -o-transform-origin: top left 50%;
    transform-origin: top left 50%;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-timing-function: ease-in-out;
    -ms-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
  }
  100% {
    -webkit-transform: translateY(700px);
    -moz-transform: translateY(700px);
    -ms-transform: translateY(700px);
    -o-transform: translateY(700px);
    transform: translateY(700px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-webkit-keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-o-keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-ms-keyframes rollIn {
  /* line 27, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  /* line 30, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@keyframes rollIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
}

@-moz-keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@-webkit-keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@-o-keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@-ms-keyframes rollOut {
  /* line 37, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  /* line 40, node_modules/compass-sass-mixins/lib/animation/animate/_specials.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

@keyframes rollOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateX(0px) rotate(0deg);
    -moz-transform: translateX(0px) rotate(0deg);
    -ms-transform: translateX(0px) rotate(0deg);
    -o-transform: translateX(0px) rotate(0deg);
    transform: translateX(0px) rotate(0deg);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(-100%) rotate(-120deg);
    -moz-transform: translateX(-100%) rotate(-120deg);
    -ms-transform: translateX(-100%) rotate(-120deg);
    -o-transform: translateX(-100%) rotate(-120deg);
    transform: translateX(-100%) rotate(-120deg);
  }
}

/* line 1, app/assets/stylesheets/mixins/_animations.sass */
.bounce-down {
  animation-name: bounceDown;
  animation-duration: 2s;
  animation-fill-mode: both;
  animation-iteration-count: infinite;
  animation-delay: 1s;
}

/* line 8, app/assets/stylesheets/mixins/_animations.sass */
.fade-in {
  animation: fadeIn;
  animation-duration: 0.25s;
  transition-timing-function: ease-in;
  animation-fill-mode: both;
}

/* line 14, app/assets/stylesheets/mixins/_animations.sass */
.fade-in-top {
  animation: fadeIn;
  animation-duration: 0.25s;
  transition-timing-function: ease-in;
  animation-fill-mode: both;
}

/* line 21, app/assets/stylesheets/mixins/_animations.sass */
.is-exiting .fade-in {
  animation-direction: alternate-reverse;
}

@-webkit-keyframes loading {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: 300px;
  }
}

@-moz-keyframes loading {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: 300px;
  }
}

@-ms-keyframes loading {
  /* line 25, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    background-position-x: 0;
  }
  /* line 27, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    background-position-x: 300px;
  }
}

@keyframes loading {
  0% {
    background-position-x: 0;
  }
  100% {
    background-position-x: 300px;
  }
}

@-webkit-keyframes bounceDown {
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes bounceDown {
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes bounceDown {
  /* line 31, app/assets/stylesheets/mixins/_animations.sass */
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  /* line 34, app/assets/stylesheets/mixins/_animations.sass */
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 37, app/assets/stylesheets/mixins/_animations.sass */
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes bounceDown {
  0%, 20%, 50%, 80%, 100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
  }
  40% {
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  60% {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    -o-transform: translateY(10px);
    transform: translateY(10px);
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes slideFromBottomFull {
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes slideFromBottomFull {
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes slideFromBottomFull {
  /* line 42, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  /* line 44, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes slideFromBottomFull {
  0% {
    -webkit-transform: translateY(65vh);
    -moz-transform: translateY(65vh);
    -ms-transform: translateY(65vh);
    -o-transform: translateY(65vh);
    transform: translateY(65vh);
  }
  100% {
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes fadeIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes fadeIn {
  /* line 48, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 50, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes fadeIn {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes fadeInTop {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes fadeInTop {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes fadeInTop {
  /* line 54, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  /* line 57, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes fadeInTop {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(20px);
    -moz-transform: translateY(20px);
    -ms-transform: translateY(20px);
    -o-transform: translateY(20px);
    transform: translateY(20px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeInLeft {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes fadeInLeft {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes fadeInLeft {
  /* line 62, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  /* line 65, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes fadeInLeft {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateX(50px);
    -moz-transform: translateX(50px);
    -ms-transform: translateX(50px);
    -o-transform: translateX(50px);
    transform: translateX(50px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes slideInTopBig {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes slideInTopBig {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-ms-keyframes slideInTopBig {
  /* line 70, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  /* line 73, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes slideInTopBig {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    -webkit-transform: translateY(60px);
    -moz-transform: translateY(60px);
    -ms-transform: translateY(60px);
    -o-transform: translateY(60px);
    transform: translateY(60px);
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}

@-webkit-keyframes fadeOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-moz-keyframes fadeOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-ms-keyframes fadeOut {
  /* line 78, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 80, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@keyframes fadeOut {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
}

@-webkit-keyframes blink {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-moz-keyframes blink {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-ms-keyframes blink {
  /* line 84, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  /* line 86, app/assets/stylesheets/mixins/_animations.sass */
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  /* line 88, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@keyframes blink {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
    opacity: 1;
  }
}

@-webkit-keyframes rotate {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@-moz-keyframes rotate {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@-ms-keyframes rotate {
  /* line 92, app/assets/stylesheets/mixins/_animations.sass */
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  /* line 94, app/assets/stylesheets/mixins/_animations.sass */
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@keyframes rotate {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

/* line 1, app/assets/stylesheets/common/_alerts.sass */
.alert {
  margin: 0 auto 1.5rem;
  padding: 1rem;
  background: #ffffff;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
  font-size: 0.875rem;
  font-weight: 400;
  color: rgba(0, 0, 0, 0.7);
  line-height: 1.5;
}

/* line 12, app/assets/stylesheets/common/_alerts.sass */
.alert:last-child {
  margin-bottom: 0;
}

/* line 15, app/assets/stylesheets/common/_alerts.sass */
.alert .pull-right {
  margin: 0 !important;
}

/* line 18, app/assets/stylesheets/common/_alerts.sass */
.alert i {
  margin-right: 0.3125rem;
  font-size: 1.25rem;
  vertical-align: middle;
}

/* line 23, app/assets/stylesheets/common/_alerts.sass */
.alert p, .alert li {
  font-size: 0.875rem;
  font-weight: 400;
  color: rgba(0, 0, 0, 0.7);
  line-height: 1.5;
}

/* line 30, app/assets/stylesheets/common/_alerts.sass */
.alert ul li {
  list-style-type: circle;
  list-style-position: inside;
  margin-bottom: 0.3125rem;
}

/* line 35, app/assets/stylesheets/common/_alerts.sass */
.alert ul li:last-child {
  margin-bottom: 0;
}

/* line 38, app/assets/stylesheets/common/_alerts.sass */
.alert .alert-title {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  font-size: 1rem;
  font-weight: 600;
  color: #000000;
  margin: 0 0 1rem;
  padding: 0;
}

/* line 47, app/assets/stylesheets/common/_alerts.sass */
.alert .alert-title:last-child {
  margin-bottom: 0;
}

/* line 50, app/assets/stylesheets/common/_alerts.sass */
.alert .alert-title i {
  margin-right: 0.3125rem;
  font-size: 1.25rem;
}

/* line 54, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-error, .alert.alert-danger {
  border-color: #CE5947;
  background-color: #FFE7E7;
}

/* line 59, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-error .alert-title, .alert.alert-error p a, .alert.alert-danger .alert-title, .alert.alert-danger p a {
  color: #CE5947;
}

/* line 62, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-success {
  border-color: #00875C;
  background-color: #E3F0EC;
}

/* line 66, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-success .alert-title, .alert.alert-success p a {
  color: #00875C;
}

/* line 69, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-warning {
  border-color: #E4AE56;
  background-color: #FFF2DC;
}

/* line 73, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-warning .alert-title, .alert.alert-warning p a {
  color: #E4AE56;
}

/* line 76, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-notice, .alert.alert-info {
  border-color: #4b9bf1;
  background-color: #EDF3FE;
}

/* line 81, app/assets/stylesheets/common/_alerts.sass */
.alert.alert-notice .alert-title, .alert.alert-notice p a, .alert.alert-info .alert-title, .alert.alert-info p a {
  color: #106dd1;
}

/* line 84, app/assets/stylesheets/common/_alerts.sass */
.alert.growlyflash {
  top: 4.375rem;
  max-width: 18.75rem;
  padding-right: calc(1rem * 2 + 1.5rem);
}

/* line 89, app/assets/stylesheets/common/_alerts.sass */
.alert.with-close-button {
  width: 18.75rem;
  max-width: 100%;
  padding-right: calc(1rem * 2 + 1.5rem);
}

/* line 94, app/assets/stylesheets/common/_alerts.sass */
.alert .close {
  position: absolute;
  top: 0.625rem;
  right: 0.625rem;
  width: 1.5rem;
  height: 1.5rem;
  min-height: 0;
  text-align: center;
  color: rgba(0, 0, 0, 0.7);
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.7);
  background: none;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
}

/* line 110, app/assets/stylesheets/common/_alerts.sass */
.alert .close i {
  font-size: 0.6875rem;
}

/* line 113, app/assets/stylesheets/common/_alerts.sass */
.alert.stripe-authentication {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

/* line 118, app/assets/stylesheets/common/_alerts.sass */
.alert .alert-header {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  margin-bottom: 1rem;
}

/* line 123, app/assets/stylesheets/common/_alerts.sass */
.alert .alert-header i {
  margin-right: 0.3125rem;
  font-size: 1.25rem;
}

/* line 127, app/assets/stylesheets/common/_alerts.sass */
.alert .alert-footer {
  margin-top: 1rem;
}

/* line 1, app/assets/stylesheets/common/_backgrounds.sass */
.background-grey {
  background: #AFAFAF;
}

/* line 1, app/assets/stylesheets/common/_buttons.sass */
.btn, #logotype.form-group.image-upload label, .form-group.image-upload label {
  position: relative;
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  width: auto;
  height: 2.5rem;
  font-family: "Work Sans", sans-serif;
  font-weight: 600;
  text-align: center;
  font-size: 0.875rem;
  cursor: pointer;
  outline: none;
  max-width: 100%;
  background: none;
  padding: 0 0.9375rem;
  text-decoration: none !important;
  color: #000000;
  background-color: #FFCD00;
  border: 1px solid #FFCD00;
  color: #000000;
  transition: all 0.2s ease;
  border-radius: 4px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* line 26, app/assets/stylesheets/common/_buttons.sass */
.btn:hover, #logotype.form-group.image-upload label:hover, .form-group.image-upload label:hover, .btn.hover, #logotype.form-group.image-upload label.hover, .form-group.image-upload label.hover {
  background-color: #FFE166;
  border-color: #FFE166;
}

/* line 30, app/assets/stylesheets/common/_buttons.sass */
.btn:active, #logotype.form-group.image-upload label:active, .form-group.image-upload label:active, .btn.active, #logotype.form-group.image-upload label.active, .form-group.image-upload label.active {
  background-color: #E5B800;
  border-color: #E5B800;
}

/* line 34, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-block, #logotype.form-group.image-upload label.btn-block, .form-group.image-upload label.btn-block {
  width: 100%;
}

/* line 37, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-primary, #logotype.form-group.image-upload label.btn-primary, .form-group.image-upload label.btn-primary, .btn.btn-yellow, #logotype.form-group.image-upload label.btn-yellow, .form-group.image-upload label.btn-yellow {
  color: #000000;
  background-color: #FFCD00;
  border-color: #FFCD00;
}

/* line 42, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-primary:hover, #logotype.form-group.image-upload label.btn-primary:hover, .form-group.image-upload label.btn-primary:hover, .btn.btn-primary.hover, #logotype.form-group.image-upload label.btn-primary.hover, .form-group.image-upload label.btn-primary.hover, .btn.btn-yellow:hover, #logotype.form-group.image-upload label.btn-yellow:hover, .form-group.image-upload label.btn-yellow:hover, .btn.btn-yellow.hover, #logotype.form-group.image-upload label.btn-yellow.hover, .form-group.image-upload label.btn-yellow.hover {
  background-color: #FFE166;
  border-color: #FFE166;
}

/* line 46, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-primary:active, #logotype.form-group.image-upload label.btn-primary:active, .form-group.image-upload label.btn-primary:active, .btn.btn-primary.active, #logotype.form-group.image-upload label.btn-primary.active, .form-group.image-upload label.btn-primary.active, .btn.btn-yellow:active, #logotype.form-group.image-upload label.btn-yellow:active, .form-group.image-upload label.btn-yellow:active, .btn.btn-yellow.active, #logotype.form-group.image-upload label.btn-yellow.active, .form-group.image-upload label.btn-yellow.active {
  background-color: #E5B800;
  border-color: #E5B800;
}

/* line 50, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary, #logotype.form-group.image-upload label, .form-group.image-upload label.btn-secondary, .btn.btn-black, .form-group.image-upload label.btn-black {
  background-color: #000000;
  border-color: #000000;
  color: #ffffff;
}

/* line 55, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary:hover, #logotype.form-group.image-upload label:hover, .form-group.image-upload label.btn-secondary:hover, .btn.btn-secondary.hover, #logotype.form-group.image-upload label.hover, .form-group.image-upload label.btn-secondary.hover, .btn.btn-black:hover, .form-group.image-upload label.btn-black:hover, .btn.btn-black.hover, .form-group.image-upload label.btn-black.hover {
  background-color: #2B2B2B;
  border-color: #2B2B2B;
}

/* line 59, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary:active, #logotype.form-group.image-upload label:active, .form-group.image-upload label.btn-secondary:active, .btn.btn-secondary.active, #logotype.form-group.image-upload label.active, .form-group.image-upload label.btn-secondary.active, .btn.btn-black:active, .form-group.image-upload label.btn-black:active, .btn.btn-black.active, .form-group.image-upload label.btn-black.active {
  background-color: #4C4C4C;
  border-color: #4C4C4C;
}

/* line 63, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary.btn-outline, #logotype.form-group.image-upload label.btn-outline, .form-group.image-upload label.btn-secondary.btn-outline, .btn.btn-black.btn-outline, .form-group.image-upload label.btn-black.btn-outline {
  background: none;
  color: #000000;
}

/* line 67, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary.btn-outline:hover, #logotype.form-group.image-upload label.btn-outline:hover, .form-group.image-upload label.btn-secondary.btn-outline:hover, .btn.btn-secondary.btn-outline.hover, #logotype.form-group.image-upload label.btn-outline.hover, .form-group.image-upload label.btn-secondary.btn-outline.hover, .btn.btn-black.btn-outline:hover, .form-group.image-upload label.btn-black.btn-outline:hover, .btn.btn-black.btn-outline.hover, .form-group.image-upload label.btn-black.btn-outline.hover {
  background: rgba(0, 0, 0, 0.05);
}

/* line 70, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-secondary.btn-outline:active, #logotype.form-group.image-upload label.btn-outline:active, .form-group.image-upload label.btn-secondary.btn-outline:active, .btn.btn-secondary.btn-outline.active, #logotype.form-group.image-upload label.btn-outline.active, .form-group.image-upload label.btn-secondary.btn-outline.active, .btn.btn-black.btn-outline:active, .form-group.image-upload label.btn-black.btn-outline:active, .btn.btn-black.btn-outline.active, .form-group.image-upload label.btn-black.btn-outline.active {
  background: rgba(0, 0, 0, 0.2);
}

/* line 73, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary, #logotype.form-group.image-upload label.btn-tertiary, .form-group.image-upload label.btn-tertiary, .btn.btn-white, #logotype.form-group.image-upload label.btn-white, .form-group.image-upload label.btn-white {
  background-color: #ffffff;
  border-color: #ffffff;
  color: #000000;
}

/* line 78, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary:hover, #logotype.form-group.image-upload label.btn-tertiary:hover, .form-group.image-upload label.btn-tertiary:hover, .btn.btn-tertiary.hover, #logotype.form-group.image-upload label.btn-tertiary.hover, .form-group.image-upload label.btn-tertiary.hover, .btn.btn-white:hover, #logotype.form-group.image-upload label.btn-white:hover, .form-group.image-upload label.btn-white:hover, .btn.btn-white.hover, #logotype.form-group.image-upload label.btn-white.hover, .form-group.image-upload label.btn-white.hover {
  background-color: #E1E1E1;
  border-color: #E1E1E1;
}

/* line 82, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary:active, #logotype.form-group.image-upload label.btn-tertiary:active, .form-group.image-upload label.btn-tertiary:active, .btn.btn-tertiary.active, #logotype.form-group.image-upload label.btn-tertiary.active, .form-group.image-upload label.btn-tertiary.active, .btn.btn-white:active, #logotype.form-group.image-upload label.btn-white:active, .form-group.image-upload label.btn-white:active, .btn.btn-white.active, #logotype.form-group.image-upload label.btn-white.active, .form-group.image-upload label.btn-white.active {
  background-color: #C8C8C8;
  border-color: #C8C8C8;
}

/* line 86, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary.btn-outline, #logotype.form-group.image-upload label.btn-tertiary.btn-outline, .form-group.image-upload label.btn-tertiary.btn-outline, .btn.btn-white.btn-outline, #logotype.form-group.image-upload label.btn-white.btn-outline, .form-group.image-upload label.btn-white.btn-outline {
  background: none;
  color: #ffffff;
}

/* line 90, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary.btn-outline:hover, #logotype.form-group.image-upload label.btn-tertiary.btn-outline:hover, .form-group.image-upload label.btn-tertiary.btn-outline:hover, .btn.btn-white.btn-outline:hover, #logotype.form-group.image-upload label.btn-white.btn-outline:hover, .form-group.image-upload label.btn-white.btn-outline:hover {
  background: rgba(0, 0, 0, 0.1);
}

/* line 93, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-tertiary.btn-outline:active, #logotype.form-group.image-upload label.btn-tertiary.btn-outline:active, .form-group.image-upload label.btn-tertiary.btn-outline:active, .btn.btn-tertiary.btn-outline.active, #logotype.form-group.image-upload label.btn-tertiary.btn-outline.active, .form-group.image-upload label.btn-tertiary.btn-outline.active, .btn.btn-white.btn-outline:active, #logotype.form-group.image-upload label.btn-white.btn-outline:active, .form-group.image-upload label.btn-white.btn-outline:active, .btn.btn-white.btn-outline.active, #logotype.form-group.image-upload label.btn-white.btn-outline.active, .form-group.image-upload label.btn-white.btn-outline.active {
  background: rgba(0, 0, 0, 0.4);
}

/* line 96, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger, #logotype.form-group.image-upload label.btn-danger, .form-group.image-upload label.btn-danger, .btn.btn-red, #logotype.form-group.image-upload label.btn-red, .form-group.image-upload label.btn-red {
  background-color: #CE5947;
  border-color: #CE5947;
  color: #ffffff;
}

/* line 101, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger:hover, #logotype.form-group.image-upload label.btn-danger:hover, .form-group.image-upload label.btn-danger:hover, .btn.btn-danger.hover, #logotype.form-group.image-upload label.btn-danger.hover, .form-group.image-upload label.btn-danger.hover, .btn.btn-red:hover, #logotype.form-group.image-upload label.btn-red:hover, .form-group.image-upload label.btn-red:hover, .btn.btn-red.hover, #logotype.form-group.image-upload label.btn-red.hover, .form-group.image-upload label.btn-red.hover {
  background-color: #D87C6E;
  border-color: #D87C6E;
}

/* line 105, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger:active, #logotype.form-group.image-upload label.btn-danger:active, .form-group.image-upload label.btn-danger:active, .btn.btn-danger.active, #logotype.form-group.image-upload label.btn-danger.active, .form-group.image-upload label.btn-danger.active, .btn.btn-red:active, #logotype.form-group.image-upload label.btn-red:active, .form-group.image-upload label.btn-red:active, .btn.btn-red.active, #logotype.form-group.image-upload label.btn-red.active, .form-group.image-upload label.btn-red.active {
  background-color: #AF4636;
  border-color: #AF4636;
}

/* line 109, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger.btn-outline, #logotype.form-group.image-upload label.btn-danger.btn-outline, .form-group.image-upload label.btn-danger.btn-outline, .btn.btn-red.btn-outline, #logotype.form-group.image-upload label.btn-red.btn-outline, .form-group.image-upload label.btn-red.btn-outline {
  background: none;
  color: #CE5947;
}

/* line 113, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger.btn-outline:hover, #logotype.form-group.image-upload label.btn-danger.btn-outline:hover, .form-group.image-upload label.btn-danger.btn-outline:hover, .btn.btn-red.btn-outline:hover, #logotype.form-group.image-upload label.btn-red.btn-outline:hover, .form-group.image-upload label.btn-red.btn-outline:hover {
  border-color: #D87C6E;
}

/* line 116, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-danger.btn-outline:active, #logotype.form-group.image-upload label.btn-danger.btn-outline:active, .form-group.image-upload label.btn-danger.btn-outline:active, .btn.btn-danger.btn-outline.active, #logotype.form-group.image-upload label.btn-danger.btn-outline.active, .form-group.image-upload label.btn-danger.btn-outline.active, .btn.btn-red.btn-outline:active, #logotype.form-group.image-upload label.btn-red.btn-outline:active, .form-group.image-upload label.btn-red.btn-outline:active, .btn.btn-red.btn-outline.active, #logotype.form-group.image-upload label.btn-red.btn-outline.active, .form-group.image-upload label.btn-red.btn-outline.active {
  border-color: #AF4636;
}

/* line 119, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning, #logotype.form-group.image-upload label.btn-warning, .form-group.image-upload label.btn-warning, .btn.btn-orange, #logotype.form-group.image-upload label.btn-orange, .form-group.image-upload label.btn-orange {
  background-color: #E4AE56;
  border-color: #E4AE56;
  color: #ffffff;
}

/* line 124, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning:hover, #logotype.form-group.image-upload label.btn-warning:hover, .form-group.image-upload label.btn-warning:hover, .btn.btn-warning.hover, #logotype.form-group.image-upload label.btn-warning.hover, .form-group.image-upload label.btn-warning.hover, .btn.btn-orange:hover, #logotype.form-group.image-upload label.btn-orange:hover, .form-group.image-upload label.btn-orange:hover, .btn.btn-orange.hover, #logotype.form-group.image-upload label.btn-orange.hover, .form-group.image-upload label.btn-orange.hover {
  background-color: #EBC484;
  border-color: #EBC484;
}

/* line 128, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning:active, #logotype.form-group.image-upload label.btn-warning:active, .form-group.image-upload label.btn-warning:active, .btn.btn-warning.active, #logotype.form-group.image-upload label.btn-warning.active, .form-group.image-upload label.btn-warning.active, .btn.btn-orange:active, #logotype.form-group.image-upload label.btn-orange:active, .form-group.image-upload label.btn-orange:active, .btn.btn-orange.active, #logotype.form-group.image-upload label.btn-orange.active, .form-group.image-upload label.btn-orange.active {
  background-color: #B97F22;
  border-color: #B97F22;
}

/* line 132, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning.btn-outline, #logotype.form-group.image-upload label.btn-warning.btn-outline, .form-group.image-upload label.btn-warning.btn-outline, .btn.btn-orange.btn-outline, #logotype.form-group.image-upload label.btn-orange.btn-outline, .form-group.image-upload label.btn-orange.btn-outline {
  background: none;
  color: #E4AE56;
}

/* line 136, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning.btn-outline:hover, #logotype.form-group.image-upload label.btn-warning.btn-outline:hover, .form-group.image-upload label.btn-warning.btn-outline:hover, .btn.btn-orange.btn-outline:hover, #logotype.form-group.image-upload label.btn-orange.btn-outline:hover, .form-group.image-upload label.btn-orange.btn-outline:hover {
  border-color: #EBC484;
}

/* line 139, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-warning.btn-outline:active, #logotype.form-group.image-upload label.btn-warning.btn-outline:active, .form-group.image-upload label.btn-warning.btn-outline:active, .btn.btn-warning.btn-outline.active, #logotype.form-group.image-upload label.btn-warning.btn-outline.active, .form-group.image-upload label.btn-warning.btn-outline.active, .btn.btn-orange.btn-outline:active, #logotype.form-group.image-upload label.btn-orange.btn-outline:active, .form-group.image-upload label.btn-orange.btn-outline:active, .btn.btn-orange.btn-outline.active, #logotype.form-group.image-upload label.btn-orange.btn-outline.active, .form-group.image-upload label.btn-orange.btn-outline.active {
  border-color: #B97F22;
}

/* line 142, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-lg, #logotype.form-group.image-upload label.btn-lg, .form-group.image-upload label.btn-lg, .btn.btn-large, #logotype.form-group.image-upload label.btn-large, .form-group.image-upload label.btn-large, .btn.btn-big, #logotype.form-group.image-upload label.btn-big, .form-group.image-upload label.btn-big {
  font-size: 1rem;
  padding: 0 1.25rem;
  height: 3rem;
}

/* line 147, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-lg i, #logotype.form-group.image-upload label.btn-lg i, .form-group.image-upload label.btn-lg i, .btn.btn-large i, #logotype.form-group.image-upload label.btn-large i, .form-group.image-upload label.btn-large i, .btn.btn-big i, #logotype.form-group.image-upload label.btn-big i, .form-group.image-upload label.btn-big i {
  font-size: 0.625rem;
}

/* line 150, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-sm, #logotype.form-group.image-upload label.btn-sm, .form-group.image-upload label, .btn.btn-small, #logotype.form-group.image-upload label.btn-small, .btn.btn-xs, #logotype.form-group.image-upload label.btn-xs {
  font-size: 0.875rem;
  padding: 0 1.0625rem;
}

/* line 154, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-sm, #logotype.form-group.image-upload label.btn-sm, .form-group.image-upload label, .btn.btn-small, #logotype.form-group.image-upload label.btn-small {
  height: 2.5rem;
}

/* line 157, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-xs, #logotype.form-group.image-upload label.btn-xs, .form-group.image-upload label.btn-xs {
  height: 2rem;
}

/* line 160, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-xs i, #logotype.form-group.image-upload label.btn-xs i, .form-group.image-upload label.btn-xs i {
  font-size: 0.75rem;
}

/* line 163, app/assets/stylesheets/common/_buttons.sass */
.btn.disabled, #logotype.form-group.image-upload label.disabled, .form-group.image-upload label.disabled, .btn.btn-disabled, #logotype.form-group.image-upload label.btn-disabled, .form-group.image-upload label.btn-disabled, .btn:disabled, #logotype.form-group.image-upload label:disabled, .form-group.image-upload label:disabled, .btn.inactive, #logotype.form-group.image-upload label.inactive, .form-group.image-upload label.inactive {
  background-color: #D6D2CC;
  border-color: #D6D2CC;
  color: #8F8C88;
  cursor: not-allowed;
}

/* line 172, app/assets/stylesheets/common/_buttons.sass */
.btn i, #logotype.form-group.image-upload label i, .form-group.image-upload label i {
  -webkit-align-self: center;
  align-self: center;
  line-height: 1;
  font-size: 0.75rem;
  margin-right: 0.3125rem;
}

/* line 178, app/assets/stylesheets/common/_buttons.sass */
.btn i::before, #logotype.form-group.image-upload label i::before, .form-group.image-upload label i::before {
  display: block;
}

/* line 181, app/assets/stylesheets/common/_buttons.sass */
.btn span + i, #logotype.form-group.image-upload label span + i, .form-group.image-upload label span + i {
  margin: 0 0 0 0.3125rem;
}

/* line 184, app/assets/stylesheets/common/_buttons.sass */
.btn span, #logotype.form-group.image-upload label span, .form-group.image-upload label span {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* line 190, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-icon i, #logotype.form-group.image-upload label.btn-icon i, .form-group.image-upload label.btn-icon i, .btn.btn-icon span, #logotype.form-group.image-upload label.btn-icon span, .form-group.image-upload label.btn-icon span {
  margin-right: 0;
  font-size: 1rem;
}

/* line 194, app/assets/stylesheets/common/_buttons.sass */
.btn-margin-right {
  margin-right: 10px;
}

/* line 197, app/assets/stylesheets/common/_buttons.sass */
.btn-margin-left {
  margin-left: 10px;
}

/* line 200, app/assets/stylesheets/common/_buttons.sass */
.btn-loader {
  margin-left: 10px;
}

/* line 202, app/assets/stylesheets/common/_buttons.sass */
.btn-loader, .btn-loader[class^="wui-icon-"] {
  font-size: 23px;
  color: #737373;
}

/* line 206, app/assets/stylesheets/common/_buttons.sass */
.btn-link {
  padding: 6px 8px;
}

/* line 208, app/assets/stylesheets/common/_buttons.sass */
.btn-link, .btn-link:hover {
  background: none;
  border-color: transparent;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  box-shadow: none;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  -ms-border-radius: 0;
  -o-border-radius: 0;
  border-radius: 0;
}

/* line 213, app/assets/stylesheets/common/_buttons.sass */
.btn-link span {
  border-bottom: 1px solid rgba(255, 255, 255, 0.5);
  -webkit-transition: border-color 0.3s false;
  -moz-transition: border-color 0.3s false false;
  -o-transition: border-color 0.3s false false;
  transition: border-color 0.3s;
}

/* line 217, app/assets/stylesheets/common/_buttons.sass */
.btn-link:hover span {
  border-color: #ffffff;
}

/* line 220, app/assets/stylesheets/common/_buttons.sass */
.btn-social {
  display: inline-block;
  padding-top: 0;
  padding-left: 0;
  padding-bottom: 0;
  text-decoration: none !important;
  -webkit-border-radius: 2px;
  -moz-border-radius: 2px;
  -ms-border-radius: 2px;
  -o-border-radius: 2px;
  border-radius: 2px;
  -webkit-transition: background-color 0.3s false;
  -moz-transition: background-color 0.3s false false;
  -o-transition: background-color 0.3s false false;
  transition: background-color 0.3s;
}

/* line 228, app/assets/stylesheets/common/_buttons.sass */
.btn-social i {
  border-right: 1px solid rgba(255, 255, 255, 0.2);
}

/* line 230, app/assets/stylesheets/common/_buttons.sass */
.btn-social i, .btn-social span {
  padding: 20px;
}

/* line 234, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-linkedin, #logotype.form-group.image-upload label.btn-linkedin, .form-group.image-upload label.btn-linkedin {
  background: #0077b5;
}

/* line 236, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-linkedin:hover, #logotype.form-group.image-upload label.btn-linkedin:hover, .form-group.image-upload label.btn-linkedin:hover {
  background: #00659a;
}

/* line 238, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-linkedin:active, #logotype.form-group.image-upload label.btn-linkedin:active, .form-group.image-upload label.btn-linkedin:active {
  background: #005f91;
}

/* line 241, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-github, #logotype.form-group.image-upload label.btn-github, .form-group.image-upload label.btn-github {
  background: #333333;
}

/* line 243, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-github:hover, #logotype.form-group.image-upload label.btn-github:hover, .form-group.image-upload label.btn-github:hover {
  background: #2b2b2b;
}

/* line 245, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-github:active, #logotype.form-group.image-upload label.btn-github:active, .form-group.image-upload label.btn-github:active {
  background: #292929;
}

/* line 248, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-stackoverflow, #logotype.form-group.image-upload label.btn-stackoverflow, .form-group.image-upload label.btn-stackoverflow {
  background: #E07E08;
}

/* line 250, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-stackoverflow:hover, #logotype.form-group.image-upload label.btn-stackoverflow:hover, .form-group.image-upload label.btn-stackoverflow:hover {
  background: #be6b07;
}

/* line 252, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-stackoverflow:active, #logotype.form-group.image-upload label.btn-stackoverflow:active, .form-group.image-upload label.btn-stackoverflow:active {
  background: #b36506;
}

/* line 255, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-dribbble, #logotype.form-group.image-upload label.btn-dribbble, .form-group.image-upload label.btn-dribbble {
  background: #c81d60;
}

/* line 257, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-dribbble:hover, #logotype.form-group.image-upload label.btn-dribbble:hover, .form-group.image-upload label.btn-dribbble:hover {
  background: #aa1952;
}

/* line 259, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-dribbble:active, #logotype.form-group.image-upload label.btn-dribbble:active, .form-group.image-upload label.btn-dribbble:active {
  background: #a0174d;
}

/* line 262, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-behance, #logotype.form-group.image-upload label.btn-behance, .form-group.image-upload label.btn-behance {
  background: #2b2b2b;
}

/* line 264, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-behance:hover, #logotype.form-group.image-upload label.btn-behance:hover, .form-group.image-upload label.btn-behance:hover {
  background: #252525;
}

/* line 266, app/assets/stylesheets/common/_buttons.sass */
.btn.btn-behance:active, #logotype.form-group.image-upload label.btn-behance:active, .form-group.image-upload label.btn-behance:active {
  background: #222222;
}

/* line 3, app/assets/stylesheets/common/_callout.sass */
.callout {
  display: block;
  max-width: 56.25rem;
  padding: 1rem;
  margin: 1.5rem auto;
  background: #ffffff;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
}

/* line 12, app/assets/stylesheets/common/_callout.sass */
.callout.callout-with-cta {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
}

/* line 16, app/assets/stylesheets/common/_callout.sass */
.callout.callout-with-cta div {
  flex: 1;
}

/* line 19, app/assets/stylesheets/common/_callout.sass */
.callout h4 {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  font-size: 1rem;
  font-weight: 600;
  color: #000000;
  margin: 0 0 1rem;
  padding: 0;
}

/* line 28, app/assets/stylesheets/common/_callout.sass */
.callout h4:last-child {
  margin-bottom: 0;
}

/* line 31, app/assets/stylesheets/common/_callout.sass */
.callout h4 i {
  margin-right: 0.3125rem;
  font-size: 1.25rem;
}

/* line 35, app/assets/stylesheets/common/_callout.sass */
.callout p {
  font-size: 0.875rem;
  font-weight: 400;
  color: rgba(0, 0, 0, 0.7);
  line-height: 1.5;
}

/* line 41, app/assets/stylesheets/common/_callout.sass */
.callout.callout-default {
  background-color: #EDF3FE;
  border-color: #4b9bf1;
}

/* line 45, app/assets/stylesheets/common/_callout.sass */
.callout.callout-default h4 {
  color: #106dd1;
}

/* line 48, app/assets/stylesheets/common/_callout.sass */
.callout.flex {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
}

/* line 52, app/assets/stylesheets/common/_callout.sass */
.callout.flex .callout-inner {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  margin-right: 1.5rem;
}

/* line 56, app/assets/stylesheets/common/_callout.sass */
.block .callout {
  margin-left: 1.75rem;
  margin-right: 1.75rem;
}

/* line 60, app/assets/stylesheets/common/_callout.sass */
.callout p:last-child {
  margin-bottom: 0;
}

/* line 63, app/assets/stylesheets/common/_callout.sass */
.callout code {
  border-radius: 3px;
}

/* line 66, app/assets/stylesheets/common/_callout.sass */
.callout + .callout {
  margin-top: -5px;
}

/* line 69, app/assets/stylesheets/common/_callout.sass */
.callout-primary {
  border-color: #FFCD00;
}

/* line 72, app/assets/stylesheets/common/_callout.sass */
.callout-primary h4 {
  color: #FFCD00;
}

/* line 75, app/assets/stylesheets/common/_callout.sass */
.callout-primary p a {
  color: #E5B800;
}

/* line 78, app/assets/stylesheets/common/_callout.sass */
.callout-success {
  border-color: #00875C;
  background-color: #E3F0EC;
}

/* line 82, app/assets/stylesheets/common/_callout.sass */
.callout-success h4 {
  color: #FFCD00;
}

/* line 85, app/assets/stylesheets/common/_callout.sass */
.callout-success p a {
  color: #FFCD00;
}

/* line 88, app/assets/stylesheets/common/_callout.sass */
.callout-danger {
  border-color: #CE5947;
  background-color: #FFE7E7;
}

/* line 92, app/assets/stylesheets/common/_callout.sass */
.callout-danger h4 {
  color: #CE5947;
}

/* line 95, app/assets/stylesheets/common/_callout.sass */
.callout-danger p a {
  color: #CE5947;
}

/* line 98, app/assets/stylesheets/common/_callout.sass */
.callout-warning {
  border-color: #E4AE56;
  background-color: #FFF2DC;
}

/* line 102, app/assets/stylesheets/common/_callout.sass */
.callout-warning h4 {
  color: #E4AE56;
}

/* line 105, app/assets/stylesheets/common/_callout.sass */
.callout-warning p a {
  color: #000000;
}

/* line 108, app/assets/stylesheets/common/_callout.sass */
.callout-info, .callout-defaut {
  border-color: #4b9bf1;
  background-color: #EDF3FE;
}

/* line 112, app/assets/stylesheets/common/_callout.sass */
.callout-info h4, .callout-defaut h4 {
  color: #106dd1;
}

/* line 115, app/assets/stylesheets/common/_callout.sass */
.callout-info p a, .callout-defaut p a {
  color: #106dd1;
}

/* line 1, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker {
  box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506);
  background: #fff;
  border-bottom: 1px solid #bbb;
  border-left: 1px solid #ccc;
  border-right: 1px solid #ccc;
  border-top: 1px solid #ccc;
  color: #333;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  padding: 8px;
  padding-left: 0;
  padding-top: 2px;
  position: absolute;
  z-index: 9999;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  display: none;
}

/* line 19, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_rtl {
  padding: 8px 0 8px 8px;
}

/* line 23, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker iframe {
  position: absolute;
  left: 0;
  top: 0;
  width: 75px;
  height: 210px;
  background: transparent;
  border: none;
}

/*For IE8 or lower*/
/* line 34, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker button {
  border: none !important;
}

/* line 38, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_noselect {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -o-user-select: none;
  user-select: none;
}

/* line 48, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_noselect::selection {
  background: transparent;
}

/* line 49, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_noselect::-moz-selection {
  background: transparent;
}

/* line 51, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_inline {
  display: inline-block;
  position: static;
  box-shadow: none;
}

/* line 57, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker * {
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}

/* line 64, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {
  display: none;
}

/* line 68, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {
  display: block;
}

/* line 72, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_datepicker {
  width: 224px;
  float: left;
  margin-left: 8px;
}

/* line 77, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker {
  float: right;
  margin-right: 8px;
  margin-left: 0;
}

/* line 83, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker {
  width: 256px;
}

/* line 87, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_timepicker {
  width: 58px;
  float: left;
  text-align: center;
  margin-left: 8px;
  margin-top: 0;
}

/* line 94, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker {
  float: right;
  margin-right: 8px;
  margin-left: 0;
}

/* line 100, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_datepicker.active + .xdsoft_timepicker {
  margin-top: 8px;
  margin-bottom: 3px;
}

/* line 105, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_monthpicker {
  position: relative;
  text-align: center;
}

/* line 110, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label i,
.xdsoft_datetimepicker .xdsoft_prev,
.xdsoft_datetimepicker .xdsoft_next,
.xdsoft_datetimepicker .xdsoft_today_button {
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC);
}

/* line 117, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label i {
  opacity: 0.5;
  background-position: -92px -19px;
  display: inline-block;
  width: 9px;
  height: 20px;
  vertical-align: middle;
}

/* line 126, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_prev {
  float: left;
  background-position: -20px 0;
}

/* line 130, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_today_button {
  float: left;
  background-position: -70px 0;
  margin-left: 5px;
}

/* line 136, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_next {
  float: right;
  background-position: 0 0;
}

/* line 141, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_next,
.xdsoft_datetimepicker .xdsoft_prev,
.xdsoft_datetimepicker .xdsoft_today_button {
  background-color: transparent;
  background-repeat: no-repeat;
  border: 0 none;
  cursor: pointer;
  display: block;
  height: 30px;
  opacity: 0.5;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  outline: medium none;
  overflow: hidden;
  padding: 0;
  position: relative;
  text-indent: 100%;
  white-space: nowrap;
  width: 20px;
  min-width: 0;
}

/* line 162, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {
  float: none;
  background-position: -40px -15px;
  height: 15px;
  width: 30px;
  display: block;
  margin-left: 14px;
  margin-top: 7px;
}

/* line 172, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev,
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next {
  float: none;
  margin-left: 0;
  margin-right: 14px;
}

/* line 179, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {
  background-position: -40px 0;
  margin-bottom: 7px;
  margin-top: 0;
}

/* line 185, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
  height: 151px;
  overflow: hidden;
  border-bottom: 1px solid #ddd;
}

/* line 191, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div {
  background: #f5f5f5;
  border-top: 1px solid #ddd;
  color: #666;
  font-size: 12px;
  text-align: center;
  border-collapse: collapse;
  cursor: pointer;
  border-bottom-width: 0;
  height: 25px;
  line-height: 25px;
}

/* line 204, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:first-child {
  border-top-width: 0;
}

/* line 208, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_today_button:hover,
.xdsoft_datetimepicker .xdsoft_next:hover,
.xdsoft_datetimepicker .xdsoft_prev:hover {
  opacity: 1;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
}

/* line 215, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label {
  display: inline;
  position: relative;
  z-index: 9999;
  margin: 0;
  padding: 5px 3px;
  font-size: 14px;
  line-height: 20px;
  font-weight: bold;
  background-color: #fff;
  float: left;
  width: 182px;
  text-align: center;
  cursor: pointer;
}

/* line 231, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label:hover > span {
  text-decoration: underline;
}

/* line 235, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label:hover i {
  opacity: 1.0;
}

/* line 239, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {
  border: 1px solid #ccc;
  position: absolute;
  right: 0;
  top: 30px;
  z-index: 101;
  display: none;
  background: #fff;
  max-height: 160px;
  overflow-y: hidden;
}

/* line 251, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect {
  right: -7px;
}

/* line 252, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect {
  right: 2px;
}

/* line 253, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
  color: #fff;
  background: #ff8000;
}

/* line 258, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {
  padding: 2px 10px 2px 5px;
  text-decoration: none !important;
}

/* line 263, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
  background: #33aaff;
  box-shadow: #178fe5 0 1px 3px 0 inset;
  color: #fff;
  font-weight: 700;
}

/* line 270, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_month {
  width: 100px;
  text-align: right;
}

/* line 275, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar {
  clear: both;
}

/* line 279, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_year {
  width: 48px;
  margin-left: 5px;
}

/* line 284, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar table {
  border-collapse: collapse;
  width: 100%;
}

/* line 290, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td > div {
  padding-right: 5px;
}

/* line 294, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar th {
  height: 25px;
}

/* line 298, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td, .xdsoft_datetimepicker .xdsoft_calendar th {
  width: 14.2857142%;
  background: #f5f5f5;
  border: 1px solid #ddd;
  color: #666;
  font-size: 12px;
  text-align: right;
  vertical-align: middle;
  padding: 0;
  border-collapse: collapse;
  cursor: pointer;
  height: 25px;
}

/* line 311, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td, .xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th {
  width: 12.5%;
}

/* line 315, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar th {
  background: #f1f1f1;
}

/* line 319, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
  color: #33aaff;
}

/* line 323, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default {
  background: #ffe9d2;
  box-shadow: #ffb871 0 1px 4px 0 inset;
  color: #000;
}

/* line 328, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint {
  background: #c1ffc9;
  box-shadow: #00dd1c 0 1px 4px 0 inset;
  color: #000;
}

/* line 334, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
  background: #33aaff;
  box-shadow: #178fe5 0 1px 3px 0 inset;
  color: #fff;
  font-weight: 700;
}

/* line 343, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
.xdsoft_datetimepicker .xdsoft_time_box > div > div.xdsoft_disabled {
  opacity: 0.5;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  cursor: default;
}

/* line 351, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {
  opacity: 0.2;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
}

/* line 356, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
  color: #fff !important;
  background: #ff8000 !important;
  box-shadow: none !important;
}

/* line 363, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current.xdsoft_disabled:hover {
  background: #33aaff !important;
  box-shadow: #178fe5 0 1px 3px 0 inset !important;
  color: #fff !important;
}

/* line 370, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_disabled:hover {
  color: inherit	!important;
  background: inherit !important;
  box-shadow: inherit !important;
}

/* line 377, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_calendar th {
  font-weight: 700;
  text-align: center;
  color: #999;
  cursor: default;
}

/* line 384, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_copyright {
  color: #ccc !important;
  font-size: 10px;
  clear: both;
  float: none;
  margin-left: 8px;
}

/* line 392, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_copyright a {
  color: #eee !important;
}

/* line 393, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_copyright a:hover {
  color: #aaa !important;
}

/* line 395, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_time_box {
  position: relative;
  border: 1px solid #ccc;
}

/* line 399, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_scrollbar > .xdsoft_scroller {
  background: #ccc !important;
  height: 20px;
  border-radius: 3px;
}

/* line 404, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_scrollbar {
  position: absolute;
  width: 7px;
  right: 0;
  top: 0;
  bottom: 0;
  cursor: pointer;
}

/* line 412, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar {
  left: 0;
  right: auto;
}

/* line 416, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_scroller_box {
  position: relative;
}

/* line 420, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark {
  box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506);
  background: #000;
  border-bottom: 1px solid #444;
  border-left: 1px solid #333;
  border-right: 1px solid #333;
  border-top: 1px solid #333;
  color: #ccc;
}

/* line 430, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box {
  border-bottom: 1px solid #222;
}

/* line 433, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box > div > div {
  background: #0a0a0a;
  border-top: 1px solid #222;
  color: #999;
}

/* line 439, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label {
  background-color: #000;
}

/* line 442, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select {
  border: 1px solid #333;
  background: #000;
}

/* line 447, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
  color: #000;
  background: #007fff;
}

/* line 452, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
  background: #cc5500;
  box-shadow: #b03e00 0 1px 3px 0 inset;
  color: #000;
}

/* line 458, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button {
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==);
}

/* line 465, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
  background: #0a0a0a;
  border: 1px solid #222;
  color: #999;
}

/* line 472, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
  background: #0e0e0e;
}

/* line 476, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today {
  color: #cc5500;
}

/* line 480, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default {
  background: #ffe9d2;
  box-shadow: #ffb871 0 1px 4px 0 inset;
  color: #000;
}

/* line 485, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint {
  background: #c1ffc9;
  box-shadow: #00dd1c 0 1px 4px 0 inset;
  color: #000;
}

/* line 491, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
  background: #cc5500;
  box-shadow: #b03e00 0 1px 3px 0 inset;
  color: #000;
}

/* line 499, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box > div > div:hover {
  color: #000 !important;
  background: #007fff !important;
}

/* line 505, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
  color: #666;
}

/* line 509, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright {
  color: #333 !important;
}

/* line 510, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a {
  color: #111 !important;
}

/* line 511, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover {
  color: #555 !important;
}

/* line 513, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_dark .xdsoft_time_box {
  border: 1px solid #333;
}

/* line 517, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_dark .xdsoft_scrollbar > .xdsoft_scroller {
  background: #333 !important;
}

/* line 520, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .xdsoft_save_selected {
  display: block;
  border: 1px solid #dddddd !important;
  margin-top: 5px;
  width: 100%;
  color: #454551;
  font-size: 13px;
}

/* line 528, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .blue-gradient-button {
  font-family: "museo-sans", "Book Antiqua", sans-serif;
  font-size: 12px;
  font-weight: 300;
  color: #82878c;
  height: 28px;
  position: relative;
  padding: 4px 17px 4px 33px;
  border: 1px solid #d7d8da;
  background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa));
  /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  /* Opera 11.10+ */
  background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  /* IE10+ */
  background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%);
  /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 );
  /* IE6-9 */
}

/* line 552, node_modules/jquery-datetimepicker/jquery.datetimepicker.css */
.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span {
  color: #454551;
  background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF));
  /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  /* Opera 11.10+ */
  background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  /* IE10+ */
  background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%);
  /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 );
  /* IE6-9 */
}

/* line 4, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker {
  font-family: "welcome-font", sans-serif;
  border-radius: 0 0 4px 4px;
}

/* line 7, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div:hover,
body .xdsoft_datetimepicker .xdsoft_calendar td:hover {
  background-color: #969696 !important;
}

/* line 11, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current:hover,
body .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
body .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
body .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,
body .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current,
body .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
  background-color: #E5B800 !important;
  box-shadow: #00875C 0 1px 3px 0 inset;
}

/* line 21, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_calendar th, body .xdsoft_datetimepicker .xdsoft_calendar td {
  background-color: transparent;
  border: none;
}

/* line 24, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_calendar th {
  font-weight: 600;
  color: #000000;
}

/* line 27, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_calendar td {
  text-align: center;
  transition: none;
}

/* line 30, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
  color: #E5B800;
}

/* line 32, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today.xdsoft_current {
  color: #ffffff;
}

/* line 34, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_calendar td div {
  padding: 0;
}

/* line 37, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_label {
  font-size: 11px;
  font-weight: normal;
}

/* line 41, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
  background-color: #969696;
}

/* line 44, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
  border-radius: 3px;
}

/* line 46, app/assets/stylesheets/common/_datetimepicker.sass */
body .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div {
  background-color: transparent;
}

/* line 1, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown {
  position: relative;
}

/* line 4, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-toggle:focus {
  outline: 0;
}

/* line 7, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  min-width: 15.625rem;
  padding: 0;
  margin: 0;
  list-style: none;
  font-size: 0.875rem;
  text-align: left;
  background-color: #ffffff;
  border: 1px solid #000000;
  border-top: none;
  background-clip: padding-box;
}

/* line 24, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu.dark {
  background-color: #2B2B2B;
  border-color: #1B1B1B;
}

/* line 27, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu.dark .divider {
  background-color: rgba(255, 255, 255, 0.1);
}

/* line 30, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu.dark .dropdown-link {
  background-color: #2B2B2B;
  color: #ffffff;
}

/* line 33, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu.dark .dropdown-link:hover {
  background-color: #1B1B1B;
  color: #ffffff;
}

/* line 36, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu.dark .dropdown-link i {
  color: #ffffff;
}

/* line 40, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu.pull-right {
  right: 0;
  left: auto;
}

/* line 44, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .dropdown-link {
  display: block;
  background: #ffffff;
  color: rgba(0, 0, 0, 0.7);
  padding: 0.625rem 1rem;
  text-decoration: none;
  -webkit-transition: background 0.3s false, color 0.3s false;
  -moz-transition: background 0.3s false false, color 0.3s false false;
  -o-transition: background 0.3s false false, color 0.3s false false;
  transition: background 0.3s, color 0.3s;
}

/* line 52, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .dropdown-link:hover {
  background: #FFF8D9;
  color: #000000;
}

/* line 56, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .dropdown-link i {
  color: #737373;
  margin-right: 5px;
}

/* line 60, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .profile {
  color: rgba(0, 0, 0, 0.7);
  padding: 15px 10px;
  line-height: 20px;
}

/* line 65, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .profile img {
  float: left;
  margin-right: 10px;
}

/* line 69, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .profile span {
  font-weight: 600;
  line-height: 16px;
}

/* line 73, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .divider {
  height: 1px;
  margin: 0;
  overflow: hidden;
  background-color: #E1E1E1;
}

/* line 80, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .subitem .dropdown-link {
  padding-left: 15px;
}

@media (max-width: 850px) {
  /* line 80, app/assets/stylesheets/common/_dropdowns.sass */
  .dropdown .dropdown-menu .subitem .dropdown-link {
    padding-left: 30px;
  }
}

/* line 84, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu .subitem i {
  font-size: 6px;
  vertical-align: middle;
}

/* line 88, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu form {
  padding: 10px;
}

/* line 90, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu form .form-inputs {
  padding: 0;
}

/* line 92, app/assets/stylesheets/common/_dropdowns.sass */
.dropdown .dropdown-menu form .form-actions {
  padding: 10px 0 0 0;
  margin-top: 10px;
}

/* line 97, app/assets/stylesheets/common/_dropdowns.sass */
.application-selector .dropdown-menu {
  width: 320px;
}

/* line 1, app/assets/stylesheets/common/_form-group-toggle.sass */
.form-group-toggle {
  margin-bottom: 20px;
}

/* line 5, app/assets/stylesheets/common/_form-group-toggle.sass */
.form-group-toggle.hidden-content label i {
  -webkit-transform: rotate(180deg);
  -moz-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  -o-transform: rotate(180deg);
  transform: rotate(180deg);
}

/* line 7, app/assets/stylesheets/common/_form-group-toggle.sass */
.form-group-toggle.hidden-content .form-group-input {
  display: none;
}

/* line 11, app/assets/stylesheets/common/_form-group-toggle.sass */
.form-group-toggle .form-group label {
  display: block;
  cursor: pointer;
}

/* line 14, app/assets/stylesheets/common/_form-group-toggle.sass */
.form-group-toggle .form-group label i {
  font-size: 17px;
  margin-left: 5px;
}

/* line 20, app/assets/stylesheets/common/_form-group-toggle.sass */
.grouped_select .ms-selection .ms-list {
  height: 300px;
}

/* line 23, app/assets/stylesheets/common/_form-group-toggle.sass */
.grouped_select .ms-selectable .ms-list {
  height: 300px;
}

/* line 26, app/assets/stylesheets/common/_form-group-toggle.sass */
.grouped_select .ms-selectable .ms-optgroup-label::after {
  content: '▶';
  font-size: 8px;
  margin-left: 5px;
}

/* line 30, app/assets/stylesheets/common/_form-group-toggle.sass */
.grouped_select .ms-selectable .ms-optgroup-label ~ li {
  display: none;
}

/* line 33, app/assets/stylesheets/common/_form-group-toggle.sass */
.grouped_select .ms-selectable .ms-optgroup-label.expanded::after {
  content: '▼';
}

/* line 35, app/assets/stylesheets/common/_form-group-toggle.sass */
.grouped_select .ms-selectable .ms-optgroup-label.expanded ~ li {
  display: list-item;
}

/* line 37, app/assets/stylesheets/common/_form-group-toggle.sass */
.grouped_select .ms-selectable .ms-optgroup-label.expanded ~ li.ms-selected {
  display: none;
}

/* line 4, app/assets/stylesheets/common/_forms.sass */
form .error_notification,
form .error_notifications li {
  font: 600 11px/16px "welcome-font", sans-serif;
  color: #AF4636;
  margin: 10px;
}

/* line 9, app/assets/stylesheets/common/_forms.sass */
form .error_notifications {
  margin-bottom: 20px;
}

/* line 12, app/assets/stylesheets/common/_forms.sass */
form .alert {
  margin: 0 0 1.5rem;
}

/* line 15, app/assets/stylesheets/common/_forms.sass */
form .alert:last-child {
  margin-bottom: 0;
}

/* line 20, app/assets/stylesheets/common/_forms.sass */
input, textarea, select, button, .with-prefix .form-control-wrapper, .with-suffix .form-control-wrapper, .StripeElement {
  display: block;
  width: 100%;
  background: #ffffff;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
  font-family: "Work Sans", sans-serif;
  font-weight: 400;
  font-size: 0.875rem;
  outline: none;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-transition: border-color 0.2s false;
  -moz-transition: border-color 0.2s false false;
  -o-transition: border-color 0.2s false false;
  transition: border-color 0.2s;
}

/* line 33, app/assets/stylesheets/common/_forms.sass */
input:focus, input.focus, textarea:focus, textarea.focus, select:focus, select.focus, button:focus, button.focus, .with-prefix .form-control-wrapper:focus, .with-prefix .form-control-wrapper.focus, .with-suffix .form-control-wrapper:focus, .with-suffix .form-control-wrapper.focus, .StripeElement:focus, .StripeElement.focus {
  border-color: #FFCD00;
}

/* line 36, app/assets/stylesheets/common/_forms.sass */
input.full-width, textarea.full-width, select.full-width, button.full-width, .with-prefix .form-control-wrapper.full-width, .with-suffix .form-control-wrapper.full-width, .StripeElement.full-width {
  max-width: 100%;
  width: 100%;
}

/* line 40, app/assets/stylesheets/common/_forms.sass */
.col input, .col textarea, .col select, .col button, .col .with-prefix .form-control-wrapper, .col .with-suffix .form-control-wrapper, .col .StripeElement {
  max-width: 100%;
}

/* line 43, app/assets/stylesheets/common/_forms.sass */
input, textarea, .with-prefix .form-control-wrapper, .with-suffix .form-control-wrapper, .StripeElement {
  max-width: 25rem;
  padding: 0.625rem;
}

@media (max-width: 600px) {
  /* line 43, app/assets/stylesheets/common/_forms.sass */
  input, textarea, .with-prefix .form-control-wrapper, .with-suffix .form-control-wrapper, .StripeElement {
    width: 100%;
    max-width: none;
  }
}

/* line 52, app/assets/stylesheets/common/_forms.sass */
input.input-mini {
  width: 100px !important;
}

/* line 54, app/assets/stylesheets/common/_forms.sass */
input.input-small {
  width: 200px !important;
}

/* line 56, app/assets/stylesheets/common/_forms.sass */
input.input-big {
  max-width: 100% !important;
}

/* line 59, app/assets/stylesheets/common/_forms.sass */
input[disabled] {
  cursor: not-allowed;
  background-color: #F6F3EF;
}

/* line 63, app/assets/stylesheets/common/_forms.sass */
textarea {
  line-height: 18px;
  max-width: 700px;
  width: 100%;
  min-height: 70px;
}

/* line 68, app/assets/stylesheets/common/_forms.sass */
textarea.textarea-medium {
  min-height: 110px;
}

/* line 70, app/assets/stylesheets/common/_forms.sass */
textarea.textarea-big {
  min-height: 150px;
  max-width: 100%;
}

/* line 74, app/assets/stylesheets/common/_forms.sass */
input[type='text'],
input[type='email'],
input[type='tel'],
input[type='url'],
input[type='password'] {
  width: 100%;
}

@media (max-width: 850px) {
  /* line 81, app/assets/stylesheets/common/_forms.sass */
  input:not([type]),
input[type='text'],
input[type='email'],
input[type='tel'],
input[type='url'],
input[type='password'],
textarea {
    -webkit-appearance: none;
    font-size: 15px;
    min-width: auto;
  }
}

/* line 93, app/assets/stylesheets/common/_forms.sass */
input[type='file'] {
  border: none;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  box-shadow: none;
}

/* line 97, app/assets/stylesheets/common/_forms.sass */
select {
  display: block;
  width: 100%;
  -webkit-appearance: none;
  padding: 0.625rem;
}

/* line 104, app/assets/stylesheets/common/_forms.sass */
.StripeElement {
  padding-top: 13px;
  padding-bottom: 7px;
}

/* line 108, app/assets/stylesheets/common/_forms.sass */
.StripeElement--focus {
  border-color: #106dd1;
}

/* line 110, app/assets/stylesheets/common/_forms.sass */
.StripeElement--invalid {
  border-color: #AF4636;
}

/* line 115, app/assets/stylesheets/common/_forms.sass */
.form-inputs {
  padding: 0 1.75rem;
  margin: 0 0 1.5rem;
}

/* line 119, app/assets/stylesheets/common/_forms.sass */
.form-inputs:last-child {
  margin-bottom: 1.75rem;
}

@media (max-width: 600px) {
  /* line 115, app/assets/stylesheets/common/_forms.sass */
  .form-inputs {
    padding: 0 15px;
  }
}

/* line 125, app/assets/stylesheets/common/_forms.sass */
.form-inputs-inline {
  display: -webkit-flex;
  display: flex;
  margin-bottom: 1.5rem;
}

/* line 129, app/assets/stylesheets/common/_forms.sass */
.form-inputs-inline .form-group {
  -webkit-flex: 1 1 0;
  flex: 1 1 0;
  margin-right: 1.5rem;
  margin-bottom: 0;
}

/* line 134, app/assets/stylesheets/common/_forms.sass */
.form-group {
  margin: 0 0 1.5rem;
}

/* line 137, app/assets/stylesheets/common/_forms.sass */
.form-group:last-child {
  margin-bottom: 0;
}

/* line 140, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox {
  display: -webkit-flex;
  display: flex;
}

/* line 144, app/assets/stylesheets/common/_forms.sass */
.form-group.select .form-control-wrapper.wui-select-wrapper:after {
  top: 1.25rem;
}

/* line 148, app/assets/stylesheets/common/_forms.sass */
.form-group.select .form-control-wrapper.wui-select-wrapper wui-select input {
  border-color: #e0e0e0;
}

/* line 150, app/assets/stylesheets/common/_forms.sass */
.form-group.select .form-control-wrapper.wui-select-wrapper wui-select button {
  display: none;
}

/* line 154, app/assets/stylesheets/common/_forms.sass */
.form-group.datetime input {
  min-width: 200px;
  cursor: pointer;
}

/* line 159, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input.xl .icheckbox {
  width: 20px;
  height: 20px;
}

/* line 162, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input.xl .icheckbox::after {
  width: 18px;
  height: 18px;
  font-size: 15px;
  line-height: 18px;
}

/* line 167, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input.xl label {
  line-height: 24px;
}

/* line 169, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input .icheckbox {
  position: absolute;
  left: 0;
}

/* line 172, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input input {
  position: absolute;
  width: 0;
  height: 0;
  padding: 0;
  border: none;
  background-color: transparent;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* line 180, app/assets/stylesheets/common/_forms.sass */
.form-group.checkbox-input label {
  padding-left: 30px;
  line-height: 18px;
}

/* line 184, app/assets/stylesheets/common/_forms.sass */
.form-group.boolean {
  position: relative;
}

/* line 188, app/assets/stylesheets/common/_forms.sass */
.form-group.text.small .CodeMirror, .form-group.text.small .CodeMirror-scroll {
  min-height: 70px !important;
}

/* line 191, app/assets/stylesheets/common/_forms.sass */
.form-group.attached-image {
  margin-left: 10px;
  padding: 5px;
}

/* line 194, app/assets/stylesheets/common/_forms.sass */
.form-group.attached-image .remove-image {
  font-size: 11px;
  line-height: 16px;
  font-weight: 400;
  margin-top: 10px;
}

/* line 199, app/assets/stylesheets/common/_forms.sass */
.form-group.attached-image img {
  max-height: 300px;
  max-width: 300px;
}

/* line 202, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image {
  position: relative;
  height: 110px;
}

/* line 205, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .form-group {
  margin: 0;
}

/* line 207, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image {
  position: absolute;
  top: 0;
  left: 0;
  padding: 0 15px;
}

/* line 212, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image img {
  max-height: 100px;
  max-width: 100px;
  vertical-align: middle;
}

/* line 216, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image img[src=""] {
  display: none;
}

/* line 218, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image .attached-image .none {
  background: #E1E1E1;
  height: 40px;
}

/* line 221, app/assets/stylesheets/common/_forms.sass */
.form-group.left-attached-image > .form-group {
  margin-left: 145px;
}

/* line 224, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error label {
  color: #AF4636;
}

/* line 226, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error input, .form-group.has-error textarea, .form-group.has-error select {
  border-color: #AF4636;
}

/* line 228, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error span.help-block {
  color: #AF4636;
  font-weight: 600;
  padding-left: 5px;
}

/* line 232, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error.text span.help-block {
  display: block;
}

/* line 236, app/assets/stylesheets/common/_forms.sass */
.form-group.organization_slug input {
  width: 150px !important;
}

/* line 238, app/assets/stylesheets/common/_forms.sass */
.form-group.organization_slug .help-block {
  font-size: 13px;
}

/* line 242, app/assets/stylesheets/common/_forms.sass */
.form-group.check_boxes .form-control-wrapper {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  margin-top: 1rem;
}

/* line 247, app/assets/stylesheets/common/_forms.sass */
.form-group.check_boxes .checkbox {
  -webkit-flex: 1 1 50%;
  flex: 1 1 50%;
  padding: 0 0.625rem 0.625rem 0;
}

/* line 251, app/assets/stylesheets/common/_forms.sass */
.form-group.check_boxes .checkbox label {
  font-weight: 400;
}

/* line 255, app/assets/stylesheets/common/_forms.sass */
.form-group.radio_buttons .form-control-wrapper {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  margin-top: 1rem;
}

/* line 260, app/assets/stylesheets/common/_forms.sass */
.form-group.radio_buttons span.radio {
  -webkit-flex: 1 1 50%;
  flex: 1 1 50%;
  padding: 0 0.625rem 0.625rem 0;
}

/* line 264, app/assets/stylesheets/common/_forms.sass */
.form-group.radio_buttons span.radio label {
  font-weight: 400;
}

/* line 267, app/assets/stylesheets/common/_forms.sass */
.form-group.has-error[class*="organization_media"] {
  border-color: transparent;
}

/* line 270, app/assets/stylesheets/common/_forms.sass */
.form-group[src=""] {
  display: none;
}

/* line 274, app/assets/stylesheets/common/_forms.sass */
.form-group.image-upload input {
  display: none;
}

/* line 285, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.has-error, .form-group.with-suffix.has-error {
  border-color: transparent;
}

/* line 288, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.has-error .form-control-wrapper, .form-group.with-suffix.has-error .form-control-wrapper {
  border-color: #AF4636;
}

/* line 291, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.has-error p.help-block, .form-group.with-suffix.has-error p.help-block {
  padding: 5px 0;
  color: #969696;
  font-weight: normal;
}

/* line 297, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.disabled .form-control-wrapper, .form-group.with-suffix.disabled .form-control-wrapper {
  cursor: not-allowed;
  background-color: #F6F3EF;
}

/* line 301, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix.disabled .form-control, .form-group.with-suffix.disabled .form-control {
  cursor: not-allowed;
}

/* line 304, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix .form-control-wrapper, .form-group.with-suffix .form-control-wrapper {
  display: -webkit-flex;
  display: flex;
  padding: 0;
}

/* line 308, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix .form-control-wrapper label, .form-group.with-suffix .form-control-wrapper label {
  -webkit-flex: none;
  flex: none;
  margin: 0.3125rem;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  padding: 0.3125rem;
  color: rgba(0, 0, 0, 0.55);
  font-size: 0.875rem;
  background-color: #EFEAE4;
  font-weight: 400;
}

/* line 319, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix input, .form-group.with-suffix input {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  height: auto;
  padding: 0.625rem;
  border: none;
}

/* line 326, app/assets/stylesheets/common/_forms.sass */
.form-group.with-prefix input {
  padding-left: 0;
}

/* line 329, app/assets/stylesheets/common/_forms.sass */
.form-group label {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  color: rgba(0, 0, 0, 0.55);
  font-size: 0.875rem;
  font-weight: 500;
  margin-bottom: 0.3125rem;
}

/* line 337, app/assets/stylesheets/common/_forms.sass */
.form-group label.btn, .form-group.image-upload label, #logotype.form-group.image-upload label {
  display: -webkit-inline-flex;
  display: inline-flex;
}

/* line 340, app/assets/stylesheets/common/_forms.sass */
.form-group label:last-child {
  margin-bottom: 0;
}

/* line 343, app/assets/stylesheets/common/_forms.sass */
.form-group label img {
  vertical-align: middle;
  margin-right: 5px;
}

/* line 347, app/assets/stylesheets/common/_forms.sass */
.form-group label a {
  position: relative;
  color: #000000;
  margin: .4em;
}

/* line 352, app/assets/stylesheets/common/_forms.sass */
.form-group label a::after {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background-color: #FFCD00;
  content: " ";
}

/* line 361, app/assets/stylesheets/common/_forms.sass */
.form-group label a:first-child {
  margin-left: 0;
}

/* line 364, app/assets/stylesheets/common/_forms.sass */
.form-group label a:last-child {
  margin-right: 0;
}

/* line 367, app/assets/stylesheets/common/_forms.sass */
.form-group label.required abbr,
.form-group label abbr.required {
  color: #AF4636;
}

/* line 371, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block {
  color: rgba(0, 0, 0, 0.4);
  font-size: 0.75rem;
  margin-top: 0.3125rem;
  text-align: left;
}

/* line 377, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block a {
  color: rgba(0, 0, 0, 0.4);
  font-weight: 500;
  text-decoration: underline;
  -webkit-transition: color 0.2s false;
  -moz-transition: color 0.2s false false;
  -o-transition: color 0.2s false false;
  transition: color 0.2s;
}

/* line 383, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block a:hover {
  color: #737373;
}

/* line 386, app/assets/stylesheets/common/_forms.sass */
.form-group .help-block.error-message {
  color: #CE5947;
}

/* line 389, app/assets/stylesheets/common/_forms.sass */
.form-group .input-wrapper {
  position: relative;
  display: inline-block;
}

/* line 393, app/assets/stylesheets/common/_forms.sass */
.form-group .input-wrapper input[type='search'], .form-group .input-wrapper input[type='text'] {
  padding-right: 20px;
}

/* line 395, app/assets/stylesheets/common/_forms.sass */
.form-group .input-wrapper i {
  position: absolute;
  top: 0;
  right: 10px;
  color: #737373;
  bottom: 0;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
}

/* line 405, app/assets/stylesheets/common/_forms.sass */
.form-group .minicolors .minicolors-input {
  height: 36px;
  padding-left: 34px;
}

/* line 408, app/assets/stylesheets/common/_forms.sass */
.form-group .minicolors .minicolors-swatch {
  height: 24px;
  width: 24px;
}

/* line 411, app/assets/stylesheets/common/_forms.sass */
.form-group .minicolors .minicolors-panel {
  top: -115px !important;
  left: 100px !important;
}

/* line 415, app/assets/stylesheets/common/_forms.sass */
.form-actions {
  border-top: 1px solid #AFAFAF;
  padding: 20px;
}

/* line 419, app/assets/stylesheets/common/_forms.sass */
.autocomplete {
  border: 1px solid #e0e0e0;
  max-width: 400px;
}

@media (max-width: 600px) {
  /* line 419, app/assets/stylesheets/common/_forms.sass */
  .autocomplete {
    width: 100%;
    max-width: none;
  }
}

/* line 427, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item {
  padding: 0.3125rem 0.625rem;
  border-bottom: 1px solid #e0e0e0;
}

/* line 431, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item:last-child {
  border-bottom: none;
}

/* line 434, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item.active, .autocomplete .autocomplete-item:hover {
  color: #FFF8D9;
}

/* line 437, app/assets/stylesheets/common/_forms.sass */
.autocomplete .autocomplete-item em, .autocomplete .autocomplete-item strong {
  color: #FFCD00;
}

/* line 440, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper {
  position: relative;
}

/* line 444, app/assets/stylesheets/common/_forms.sass */
.select.without-icon .form-control-wrapper:after {
  display: none;
}

/* line 448, app/assets/stylesheets/common/_forms.sass */
.select.autoheight .form-control-wrapper select {
  height: auto;
}

/* line 451, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper .select {
  padding-right: 1.5625rem;
}

/* line 454, app/assets/stylesheets/common/_forms.sass */
.select .form-control-wrapper {
  max-width: 25rem;
}

/* line 457, app/assets/stylesheets/common/_forms.sass */
.select .form-control-wrapper::after {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  right: 0.625rem;
  font-family: "welcome-icon-font", sans-serif;
  font-size: 0.6875rem;
  pointer-events: none;
  color: #000000;
  content: '\132';
}

/* line 469, app/assets/stylesheets/common/_forms.sass */
.select.disabled .form-control-wrapper::after {
  color: #8F8C88;
}

/* line 473, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon, .form-control-wrapper.with-icon-after .form-control-icon {
  -webkit-appearance: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 1.25rem;
  text-align: center;
  font-size: 1rem;
  color: rgba(0, 0, 0, 0.55);
  padding: 0;
  border: none;
  background: none;
}

/* line 486, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon i, .form-control-wrapper.with-icon-after .form-control-icon i {
  display: block;
}

/* line 489, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon.icon-before, .form-control-wrapper.with-icon-after .form-control-icon.icon-before {
  left: 0.625rem;
}

/* line 492, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-icon.icon-after, .form-control-wrapper.with-icon-after .form-control-icon.icon-after {
  right: 0.625rem;
}

/* line 495, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control-reset, .form-control-wrapper.with-icon-after .form-control-reset {
  width: 1.25rem;
  height: 1.25rem;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  font-size: 0.5rem;
}

/* line 506, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-before .form-control {
  padding-left: calc(0.625rem + 0.3125rem + 1.25rem);
}

/* line 510, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper.with-icon-after .form-control {
  padding-right: calc(0.625rem + 0.3125rem + 1.25rem);
}

/* line 513, app/assets/stylesheets/common/_forms.sass */
.form-control-wrapper .disabled-icon {
  position: absolute;
  top: 50%;
  left: 100%;
  margin-left: 0.625rem;
  transform: translateY(-50%);
  font-size: 1rem;
  color: rgba(0, 0, 0, 0.4);
}

/* line 522, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal {
  margin-bottom: 20px;
}

/* line 524, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group {
  margin: 10px 0;
  max-width: none;
}

/* line 527, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group label {
  display: inline-block;
  width: 135px;
}

/* line 530, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group input[type='text'] {
  width: initial;
}

/* line 532, app/assets/stylesheets/common/_forms.sass */
form.form-horizontal .form-group .help-block {
  display: inline-block;
}

/* line 536, app/assets/stylesheets/common/_forms.sass */
form.form-hidden-buttons .form-actions {
  display: none;
}

/* line 540, app/assets/stylesheets/common/_forms.sass */
.CodeMirror .cm-comment {
  font-family: monospace;
  display: inline-block;
  padding: 0 0.25em;
}

/* line 545, app/assets/stylesheets/common/_forms.sass */
.g-recaptcha {
  margin-bottom: 1.5rem;
}

/* line 548, app/assets/stylesheets/common/_forms.sass */
.g-recaptcha:last-child {
  margin-bottom: 0;
}

/* line 551, app/assets/stylesheets/common/_forms.sass */
.control-label {
  display: block;
  line-height: 1.3;
  color: #737373;
  font-size: 0.875rem;
  font-weight: 500;
  user-select: none;
  font-family: "Work Sans", sans-serif;
  margin-bottom: 0.625rem;
}

/* line 2, app/assets/stylesheets/common/_google-places-autocomplete-reset.sass */
.pac-container::after {
  display: none;
}

/* line 1, app/assets/stylesheets/common/_grid.sass */
.flex-container {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: flex-start;
  align-items: flex-start;
}

/* line 5, app/assets/stylesheets/common/_grid.sass */
.flex-container.stretch {
  -webkit-align-items: stretch;
  align-items: stretch;
}

/* line 8, app/assets/stylesheets/common/_grid.sass */
.grid {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
}

/* line 12, app/assets/stylesheets/common/_grid.sass */
.grid .col {
  box-sizing: border-box;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 1);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns > .col-double {
  width: calc(200% / 1);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns.with-separator > .col:nth-child(1n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns.with-separator > .col:nth-child(1n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 1);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-1-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 2);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns > .col-double {
  width: calc(200% / 2);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns.with-separator > .col:nth-child(2n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns.with-separator > .col:nth-child(2n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 2);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-2-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 3);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns > .col-double {
  width: calc(200% / 3);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns.with-separator > .col:nth-child(3n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns.with-separator > .col:nth-child(3n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 3);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-3-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 4);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns > .col-double {
  width: calc(200% / 4);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns.with-separator > .col:nth-child(4n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns.with-separator > .col:nth-child(4n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 4);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-4-columns.with-separator > .col:first-child::before {
  display: none;
}

/* line 17, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns > .col {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  width: calc(100% / 5);
}

/* line 21, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns > .col-full {
  width: 100%;
}

/* line 24, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns > .col-double {
  width: calc(200% / 5);
}

/* line 29, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns.with-separator > .col:nth-child(5n)::after {
  opacity: 0;
}

/* line 33, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns.with-separator > .col:nth-child(5n+1)::before {
  position: absolute;
  top: 0;
  left: 0;
  width: calc(100% * 5);
  height: 1px;
  background-color: #000000;
  content: " ";
}

/* line 43, app/assets/stylesheets/common/_grid.sass */
.grid.with-5-columns.with-separator > .col:first-child::before {
  display: none;
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 1);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-tablet > .col-double {
    width: calc(200% / 1);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 2);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-tablet > .col-double {
    width: calc(200% / 2);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 3);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-tablet > .col-double {
    width: calc(200% / 3);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 4);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-tablet > .col-double {
    width: calc(200% / 4);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 850px) {
  /* line 49, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-tablet > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 5);
  }
  /* line 52, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-tablet > .col-double {
    width: calc(200% / 5);
  }
  /* line 54, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-tablet > .col-full {
    width: 100%;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 1);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col-double {
    width: calc(200% / 1);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter, .grid.with-1-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter > .col, .grid.with-1-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:nth-child(1n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:nth-child(1n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 1) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 2);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile > .col-double {
    width: calc(200% / 2);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-gutter, .grid.with-2-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-gutter > .col, .grid.with-2-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-separator > .col:nth-child(2n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-separator > .col:nth-child(2n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 2) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-2-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 3);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile > .col-double {
    width: calc(200% / 3);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-gutter, .grid.with-3-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-gutter > .col, .grid.with-3-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-separator > .col:nth-child(3n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-separator > .col:nth-child(3n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 3) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-3-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 4);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile > .col-double {
    width: calc(200% / 4);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-gutter, .grid.with-4-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-gutter > .col, .grid.with-4-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-separator > .col:nth-child(4n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-separator > .col:nth-child(4n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 4) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-4-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

@media (max-width: 600px) {
  /* line 60, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile > .col {
    -webkit-flex: 0 0 auto;
    flex: 0 0 auto;
    width: calc(100% / 5);
  }
  /* line 64, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile > .col-double {
    width: calc(200% / 5);
  }
  /* line 66, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile > .col-full {
    width: 100%;
  }
  /* line 69, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-gutter, .grid.with-5-columns-mobile.with-gutter-lg {
    margin-left: -1.5rem !important;
    margin-right: -1.5rem !important;
  }
  /* line 73, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-gutter > .col, .grid.with-5-columns-mobile.with-gutter-lg > .col {
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
  }
  /* line 79, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-separator > .col:nth-child(5n)::after {
    opacity: 0;
  }
  /* line 83, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-separator > .col:nth-child(5n+1)::before {
    position: absolute;
    top: 0;
    left: 1.5rem;
    width: calc((100% * 5) - (1.5rem * 2));
    height: 1px;
    background-color: #000000;
    content: " ";
  }
  /* line 93, app/assets/stylesheets/common/_grid.sass */
  .grid.with-5-columns-mobile.with-separator > .col:first-child::before {
    display: none;
  }
}

/* line 96, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter {
  margin: -1.5rem;
}

/* line 99, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter > .col {
  padding: 1.5rem;
}

/* line 103, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter.with-separator > .col::after {
  top: 1.5rem;
  bottom: 1.5rem;
}

/* line 107, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-sm {
  margin: -1rem;
  margin-bottom: 0;
}

/* line 111, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-sm > .col {
  padding: 1rem;
}

/* line 115, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-sm.with-separator > .col::after {
  top: 1rem;
  bottom: 1rem;
}

/* line 119, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xs {
  margin: -0.625rem;
}

/* line 122, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xs > .col {
  padding: 0.625rem;
}

/* line 126, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xs.with-separator > .col::after {
  top: 0.625rem;
  bottom: 0.625rem;
}

/* line 130, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-lg {
  margin: -1.75rem;
}

/* line 133, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-lg > .col {
  padding: 1.75rem;
}

/* line 137, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-lg.with-separator > .col::after {
  top: 1.75rem;
  bottom: 1.75rem;
}

/* line 141, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xl {
  margin: -3.125rem;
}

/* line 144, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xl > .col {
  padding: 3.125rem;
}

/* line 148, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xl.with-separator > .col::after {
  top: 3.125rem;
  bottom: 3.125rem;
}

/* line 152, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xxl {
  margin: 0 -4.375rem;
}

/* line 155, app/assets/stylesheets/common/_grid.sass */
.grid.with-gutter-xxl > .col {
  padding: 0 4.375rem;
}

/* line 159, app/assets/stylesheets/common/_grid.sass */
.grid.with-separator > .col {
  position: relative;
}

/* line 162, app/assets/stylesheets/common/_grid.sass */
.grid.with-separator > .col::after {
  position: absolute;
  top: 0;
  right: 0;
  width: 1px;
  background-color: #000000;
  content: " ";
}

/* line 170, app/assets/stylesheets/common/_grid.sass */
.grid.align-center {
  -webkit-align-items: center;
  align-items: center;
}

/* line 174, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col {
  -webkit-flex: none;
  flex: none;
}

/* line 177, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col:first-child {
  width: 65%;
}

/* line 180, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col:last-child {
  width: 35%;
}

/* line 183, app/assets/stylesheets/common/_grid.sass */
.grid.with-column-right > .col:last-child::after {
  display: none;
}

@media (max-width: 600px) {
  /* line 186, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  /* line 191, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile > .col {
    width: 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

@media (max-width: 600px) {
  /* line 197, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter {
    margin: 0;
  }
  /* line 200, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter > .col {
    padding: 0 0 1.75rem;
  }
  /* line 203, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter > .col:last-child {
    padding-bottom: 0;
  }
  /* line 206, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-lg {
    margin: 0;
  }
  /* line 209, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-lg > .col {
    padding: 0 0 1.5rem;
  }
  /* line 212, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-lg > .col:last-child {
    padding-bottom: 0;
  }
  /* line 215, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xl {
    margin: 0;
  }
  /* line 218, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xl > .col {
    padding: 0 0 1.75rem;
  }
  /* line 221, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xl > .col:last-child {
    padding-bottom: 0;
  }
  /* line 224, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xxl {
    margin: 0;
  }
  /* line 227, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xxl > .col {
    padding: 0 0 1.75rem;
  }
  /* line 230, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-gutter-xxl > .col:last-child {
    padding-bottom: 0;
  }
  /* line 234, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col {
    margin-bottom: 1.5rem;
  }
  /* line 237, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col::after {
    top: auto;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 1px;
  }
  /* line 245, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:last-child {
    margin-bottom: 0;
  }
  /* line 248, app/assets/stylesheets/common/_grid.sass */
  .grid.with-1-columns-mobile.with-separator > .col:last-child::after {
    display: none;
  }
}

/* line 251, app/assets/stylesheets/common/_grid.sass */
.grid > .col-right {
  margin-left: auto;
}

/* line 254, app/assets/stylesheets/common/_grid.sass */
.col-md-1, .col-md-2, .col-md-3, .col-md-4,
.col-md-5, .col-md-6, .col-md-7, .col-md-8,
.col-md-9, .col-md-10, .col-md-11 {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/* line 259, app/assets/stylesheets/common/_grid.sass */
.col-md-1 {
  width: 8.3333333333%;
}

/* line 261, app/assets/stylesheets/common/_grid.sass */
.col-md-2 {
  width: 16.6666666667%;
}

/* line 263, app/assets/stylesheets/common/_grid.sass */
.col-md-3 {
  width: 25%;
}

/* line 265, app/assets/stylesheets/common/_grid.sass */
.col-md-4 {
  width: 33.3333333333%;
}

/* line 267, app/assets/stylesheets/common/_grid.sass */
.col-md-5 {
  width: 41.6666666667%;
}

/* line 269, app/assets/stylesheets/common/_grid.sass */
.col-md-6 {
  width: 50%;
}

/* line 271, app/assets/stylesheets/common/_grid.sass */
.col-md-7 {
  width: 58.3333333333%;
}

/* line 273, app/assets/stylesheets/common/_grid.sass */
.col-md-8 {
  width: 66.6666666667%;
}

/* line 275, app/assets/stylesheets/common/_grid.sass */
.col-md-9 {
  width: 75%;
}

/* line 277, app/assets/stylesheets/common/_grid.sass */
.col-md-10 {
  width: 83.3333333333%;
}

/* line 279, app/assets/stylesheets/common/_grid.sass */
.col-md-11 {
  width: 91.6666666667%;
}

/* line 1, app/assets/stylesheets/common/_highcharts.sass */
.highcharts-tooltip {
  background: #ffffff;
}

/* line 4, app/assets/stylesheets/common/_highcharts.sass */
.highcharts-tooltip .highcharts-tooltip-title {
  background: #E1E1E1;
  font-size: 0.75rem;
  color: rgba(0, 0, 0, 0.7);
  margin: 0;
  padding: 7px;
  text-align: center;
  border-radius: 0;
}

/* line 13, app/assets/stylesheets/common/_highcharts.sass */
.highcharts-tooltip .highcharts-tooltip-table {
  width: 100%;
  margin: 0;
  padding: 0;
  background: #ffffff;
  border-radius: 0;
}

/* line 20, app/assets/stylesheets/common/_highcharts.sass */
.highcharts-tooltip .highcharts-tooltip-label,
.highcharts-tooltip .highcharts-tooltip-value {
  padding: 5px 10px;
  color: rgba(0, 0, 0, 0.7);
  font: 200 10px/11px "welcome-font", sans-serif;
  border-bottom: 1px solid #e0e0e0;
}

/* line 27, app/assets/stylesheets/common/_highcharts.sass */
.highcharts-tooltip .highcharts-tooltip-value {
  border-left: 1px solid #e0e0e0;
  text-align: right;
}

/* line 31, app/assets/stylesheets/common/_highcharts.sass */
.highcharts-area {
  fill-opacity: 1 !important;
  stoke: 'transparent' !important;
}

/* line 1, app/assets/stylesheets/common/_hint.sass */
[data-hint]::after {
  background: #000000;
  color: #ffffff;
}

/* line 5, app/assets/stylesheets/common/_hint.sass */
.hint--top::before {
  border-top-color: #000000;
}

/* line 1, app/assets/stylesheets/common/_hot-loader-error.sass */
.react-hot-loader-error-overlay > div {
  z-index: 9999;
}

/* line 3, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox,
.iradio {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0 0.625rem 0 0;
  padding: 0;
  flex: none;
  width: 1.25rem;
  height: 1.25rem;
  border: 1px solid #e0e0e0;
  cursor: pointer;
  transition: all 0.2s ease;
}

/* line 17, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox input,
.iradio input {
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  opacity: 0;
}

/* line 25, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox:after,
.iradio:after {
  display: block;
  color: #000000;
  text-align: center;
  transition: all 0.2s ease;
}

/* line 31, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.hover,
.iradio.hover {
  border-color: #FFCD00;
}

/* line 34, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.checked,
.iradio.checked {
  border-color: #FFCD00;
  background-color: #FFCD00;
}

/* line 38, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.checked:after,
.iradio.checked:after {
  display: block;
}

/* line 41, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox.disabled,
.iradio.disabled {
  cursor: not-allowed;
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
  opacity: 0.5;
}

/* line 45, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox + .form-label,
.iradio + .form-label {
  padding-left: 0;
}

/* line 48, app/assets/stylesheets/common/_icheck-inputs.sass */
.iradio {
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

/* line 50, app/assets/stylesheets/common/_icheck-inputs.sass */
.iradio:after {
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

/* line 53, app/assets/stylesheets/common/_icheck-inputs.sass */
.icheckbox:after {
  content: "\119";
  font-size: 0.75rem;
  font-family: "welcome-icon-font", sans-serif;
  display: none;
}

/* line 60, app/assets/stylesheets/common/_icheck-inputs.sass */
.checkbox-input input:checked + .icheckbox {
  border-color: #FFCD00;
  background-color: #FFCD00;
}

/* line 64, app/assets/stylesheets/common/_icheck-inputs.sass */
.checkbox-input input:checked + .icheckbox:after {
  display: block;
}

/* line 68, app/assets/stylesheets/common/_icheck-inputs.sass */
.boolean .control-label {
  margin-bottom: 0.3125rem;
}

/* line 72, app/assets/stylesheets/common/_icheck-inputs.sass */
.boolean.switch .control-label {
  margin: 0;
  padding-left: 15px;
  line-height: 32px;
}

/* line 77, app/assets/stylesheets/common/_icheck-inputs.sass */
.boolean.switch .control-label + .form-control-wrapper {
  float: left;
}

/* Ion.RangeSlider
// css version 2.0.3
// © 2013-2014 Denis Ineshin | IonDen.com
// ===================================================================================================================*/
/* =====================================================================================================================
// RangeSlider */
/* line 9, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs {
  position: relative;
  display: block;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

/* line 18, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-line {
  position: relative;
  display: block;
  overflow: hidden;
  outline: none !important;
}

/* line 23, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-line-left, .irs-line-mid, .irs-line-right {
  position: absolute;
  display: block;
  top: 0;
}

/* line 27, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-line-left {
  left: 0;
  width: 11%;
}

/* line 30, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-line-mid {
  left: 9%;
  width: 82%;
}

/* line 33, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-line-right {
  right: 0;
  width: 11%;
}

/* line 37, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-bar {
  position: absolute;
  display: block;
  left: 0;
  width: 0;
}

/* line 41, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-bar-edge {
  position: absolute;
  display: block;
  top: 0;
  left: 0;
}

/* line 46, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-shadow {
  position: absolute;
  display: none;
  left: 0;
  width: 0;
}

/* line 51, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-slider {
  position: absolute;
  display: block;
  cursor: default;
  z-index: 1;
}

/* line 65, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-slider.type_last {
  z-index: 2;
}

/* line 69, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-min {
  position: absolute;
  display: block;
  left: 0;
  cursor: default;
}

/* line 74, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-max {
  position: absolute;
  display: block;
  right: 0;
  cursor: default;
}

/* line 80, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-from, .irs-to, .irs-single {
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  cursor: default;
  white-space: nowrap;
}

/* line 87, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-grid {
  position: absolute;
  display: none;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 20px;
}

/* line 92, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-with-grid .irs-grid {
  display: block;
}

/* line 95, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-grid-pol {
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 8px;
  background: #000;
}

/* line 101, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-grid-pol.small {
  height: 4px;
}

/* line 104, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-grid-text {
  position: absolute;
  bottom: 0;
  left: 0;
  white-space: nowrap;
  text-align: center;
  font-size: 9px;
  line-height: 9px;
  padding: 0 3px;
  color: #000;
}

/* line 114, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-disable-mask {
  position: absolute;
  display: block;
  top: 0;
  left: -1%;
  width: 102%;
  height: 100%;
  cursor: default;
  background: rgba(0, 0, 0, 0);
  z-index: 2;
}

/* line 122, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.lt-ie9 .irs-disable-mask {
  background: #000;
  filter: alpha(opacity=0);
  cursor: not-allowed;
}

/* line 128, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-disabled {
  opacity: 0.4;
}

/* line 133, node_modules/ion-rangeslider/css/ion.rangeSlider.css */
.irs-hidden-input {
  position: absolute !important;
  display: block !important;
  top: 0 !important;
  left: 0 !important;
  width: 0 !important;
  height: 0 !important;
  font-size: 0 !important;
  line-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  outline: none !important;
  z-index: -9999 !important;
  background: none !important;
  border-style: solid !important;
  border-color: transparent !important;
}

/* line 3, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs {
  height: 50px;
}

/* line 6, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-with-grid {
  height: 60px;
}

/* line 9, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-line {
  height: 1px;
  top: 35px;
  background: #C8C8C8;
}

/* line 13, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-line .irs-line-left {
  height: 2px;
}

/* line 15, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-line .irs-line-mid {
  height: 2px;
}

/* line 17, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-line .irs-line-right {
  height: 2px;
}

/* line 20, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-bar {
  height: 2px;
  top: 35px;
  background: #E5B800;
}

/* line 24, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-bar .irs-bar-edge {
  top: 35px;
  height: 2px;
  width: 9px;
}

/* line 29, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-shadow {
  height: 3px;
  top: 34px;
  background: #000;
}

/* line 34, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-slider {
  width: 12px;
  height: 12px;
  top: 30px;
  cursor: move;
  background: #E5B800;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

/* line 42, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-min, .irs-max {
  color: #737373;
  font: 14px/18px "welcome-font", sans-serif;
  text-shadow: none;
  top: 0;
  padding: 1px 3px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
}

/* line 50, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-from, .irs-to, .irs-single {
  color: #fff;
  cursor: move;
  font: 14px/18px "welcome-font", sans-serif;
  text-shadow: none;
  padding: 1px 5px;
  background: #E5B800;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
}

/* line 59, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-from:after, .irs-to:after, .irs-single:after {
  position: absolute;
  display: block;
  content: "";
  bottom: -6px;
  left: 50%;
  width: 0;
  height: 0;
  margin-left: -3px;
  overflow: hidden;
  border: 3px solid transparent;
  border-top-color: #E5B800;
}

/* line 72, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-grid-pol {
  background: #e1e4e9;
}

/* line 75, app/assets/stylesheets/common/_ion-rangeslider.sass */
.irs-grid-text {
  color: #999;
}

/* line 1, app/assets/stylesheets/common/_labels.sass */
code, .label {
  display: -webkit-inline-flex;
  display: inline-flex;
  -webkit-align-items: center;
  align-items: center;
  font-size: 0.75rem;
  padding: 0.3125rem;
  min-height: 1.75rem;
  line-height: 1;
  border: 1px solid rgba(0, 0, 0, 0.1);
  color: #8F8C88;
  background-color: #EFEAE4;
  border-radius: 0;
  font-weight: 400 !important;
}

/* line 14, app/assets/stylesheets/common/_labels.sass */
code i:not(:only-child), .label i:not(:only-child) {
  margin-right: 5px;
}

/* line 17, app/assets/stylesheets/common/_labels.sass */
code.label-small, code.label-sm, .label.label-small, .label.label-sm {
  font-size: 0.6875rem;
  height: 1.375rem;
}

/* line 21, app/assets/stylesheets/common/_labels.sass */
code.label-big, code.label-lg, .label.label-big, .label.label-lg {
  font-size: 0.875rem;
  font-weight: 500;
}

/* line 25, app/assets/stylesheets/common/_labels.sass */
code.label-green, code.label-success, .label.label-green, .label.label-success {
  color: #00875C;
  border-color: #00A772;
  background-color: #E3F0EC;
}

/* line 30, app/assets/stylesheets/common/_labels.sass */
code.label-red, code.label-danger, .label.label-red, .label.label-danger {
  color: #CE5947;
  border-color: #CE5947;
  background-color: #FFE7E7;
}

/* line 35, app/assets/stylesheets/common/_labels.sass */
code.label-blue, code.label-info, .label.label-blue, .label.label-info {
  color: #106dd1;
  border-color: #106dd1;
  background-color: #EDF3FE;
}

/* line 40, app/assets/stylesheets/common/_labels.sass */
code.label-orange, code.label-warning, .label.label-orange, .label.label-warning {
  color: #E4AE56;
  border-color: #EBC484;
  background-color: #FFF2DC;
}

/* line 45, app/assets/stylesheets/common/_labels.sass */
code.label-primary, .label.label-primary {
  color: #000000;
  border-color: rgba(0, 0, 0, 0.1);
  background-color: #FFCD00;
}

/* line 50, app/assets/stylesheets/common/_labels.sass */
code.label-mode-mandatory, .label.label-mode-mandatory {
  background: #FFCD00;
}

/* line 53, app/assets/stylesheets/common/_labels.sass */
code.label-mode-optional, .label.label-mode-optional {
  background: #FFCD00;
}

/* line 56, app/assets/stylesheets/common/_labels.sass */
code.label-mode-disabled, .label.label-mode-disabled {
  background: #FFCD00;
}

/* line 59, app/assets/stylesheets/common/_labels.sass */
.labels-list code, .labels-list .label {
  margin: 0 0.625rem 0.625rem 0;
}

/* line 62, app/assets/stylesheets/common/_labels.sass */
.labels-list {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  margin-bottom: -0.625rem;
}

/* line 1, app/assets/stylesheets/common/_links.sass */
a {
  color: #19aee5;
  padding: 2px;
  text-decoration: underline;
  -webkit-transition: color 0.2s false, background 0.2s false;
  -moz-transition: color 0.2s false false, background 0.2s false false;
  -o-transition: color 0.2s false false, background 0.2s false false;
  transition: color 0.2s, background 0.2s;
}

/* line 6, app/assets/stylesheets/common/_links.sass */
a:hover {
  color: #000000;
  text-decoration: none;
}

/* line 9, app/assets/stylesheets/common/_links.sass */
a i {
  margin-right: 5px;
}

/**
 * simplemde v1.11.2
 * Copyright Next Step Webs, Inc.
 * @link https://github.com/NextStepWebs/simplemde-markdown-editor
 * @license MIT
 */
/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror {
  color: #000;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-lines {
  padding: 4px 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror pre {
  padding: 0 4px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler {
  background-color: #fff;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutters {
  border-right: 1px solid #ddd;
  background-color: #f7f7f7;
  white-space: nowrap;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-linenumber {
  padding: 0 3px 0 5px;
  min-width: 20px;
  text-align: right;
  color: #999;
  white-space: nowrap;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-guttermarker {
  color: #000;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-guttermarker-subtle {
  color: #999;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-cursor {
  border-left: 1px solid #000;
  border-right: none;
  width: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror div.CodeMirror-secondarycursor {
  border-left: 1px solid silver;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-fat-cursor .CodeMirror-cursor {
  width: auto;
  border: 0 !important;
  background: #7e7;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-fat-cursor div.CodeMirror-cursors {
  z-index: 1;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-animate-fat-cursor {
  width: auto;
  border: 0;
  -webkit-animation: blink 1.06s steps(1) infinite;
  -moz-animation: blink 1.06s steps(1) infinite;
  animation: blink 1.06s steps(1) infinite;
  background-color: #7e7;
}

@-moz-keyframes blink {
  50% {
    background-color: transparent;
  }
}

@-webkit-keyframes blink {
  50% {
    background-color: transparent;
  }
}

@keyframes blink {
  50% {
    background-color: transparent;
  }
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-tab {
  display: inline-block;
  text-decoration: inherit;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-ruler {
  border-left: 1px solid #ccc;
  position: absolute;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-header {
  color: #00f;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-quote {
  color: #090;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-negative {
  color: #d44;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-positive {
  color: #292;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-header, .cm-strong {
  font-weight: 700;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-em {
  font-style: italic;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-link {
  text-decoration: underline;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-strikethrough {
  text-decoration: line-through;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-keyword {
  color: #708;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-atom {
  color: #219;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-number {
  color: #164;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-def {
  color: #00f;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-variable-2 {
  color: #05a;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-variable-3 {
  color: #085;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-comment {
  color: #a50;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-string {
  color: #a11;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-string-2 {
  color: #f50;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-meta, .cm-s-default .cm-qualifier {
  color: #555;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-builtin {
  color: #30a;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-bracket {
  color: #997;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-tag {
  color: #170;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-attribute {
  color: #00c;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-hr {
  color: #999;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-s-default .cm-link {
  color: #00c;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-invalidchar, .cm-s-default .cm-error {
  color: red;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-composing {
  border-bottom: 2px solid;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
div.CodeMirror span.CodeMirror-matchingbracket {
  color: #0f0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
div.CodeMirror span.CodeMirror-nonmatchingbracket {
  color: #f22;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-matchingtag {
  background: rgba(255, 150, 0, 0.3);
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-activeline-background {
  background: #e8f2ff;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror {
  position: relative;
  overflow: hidden;
  background: #fff;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-scroll {
  overflow: scroll !important;
  margin-bottom: -30px;
  margin-right: -30px;
  padding-bottom: 30px;
  height: 100%;
  outline: 0;
  position: relative;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-sizer {
  position: relative;
  border-right: 30px solid transparent;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar {
  position: absolute;
  z-index: 6;
  display: none;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-vscrollbar {
  right: 0;
  top: 0;
  overflow-x: hidden;
  overflow-y: scroll;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-hscrollbar {
  bottom: 0;
  left: 0;
  overflow-y: hidden;
  overflow-x: scroll;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-scrollbar-filler {
  right: 0;
  bottom: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter-filler {
  left: 0;
  bottom: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutters {
  position: absolute;
  left: 0;
  top: 0;
  min-height: 100%;
  z-index: 3;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter {
  white-space: normal;
  height: 100%;
  display: inline-block;
  vertical-align: top;
  margin-bottom: -30px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter-wrapper {
  position: absolute;
  z-index: 4;
  background: 0 0 !important;
  border: none !important;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter-background {
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 4;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter-elt {
  position: absolute;
  cursor: default;
  z-index: 4;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-lines {
  cursor: text;
  min-height: 1px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror pre {
  -moz-border-radius: 0;
  -webkit-border-radius: 0;
  border-radius: 0;
  border-width: 0;
  background: 0 0;
  font-family: inherit;
  font-size: inherit;
  margin: 0;
  white-space: pre;
  word-wrap: normal;
  line-height: inherit;
  color: inherit;
  z-index: 2;
  position: relative;
  overflow: visible;
  -webkit-tap-highlight-color: transparent;
  -webkit-font-variant-ligatures: none;
  font-variant-ligatures: none;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-wrap pre {
  word-wrap: break-word;
  white-space: pre-wrap;
  word-break: normal;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-linebackground {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-linewidget {
  position: relative;
  z-index: 2;
  overflow: auto;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-code {
  outline: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber, .CodeMirror-scroll, .CodeMirror-sizer {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-measure {
  position: absolute;
  width: 100%;
  height: 0;
  overflow: hidden;
  visibility: hidden;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-cursor {
  position: absolute;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-measure pre {
  position: static;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
div.CodeMirror-cursors {
  visibility: hidden;
  position: relative;
  z-index: 3;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-focused div.CodeMirror-cursors, div.CodeMirror-dragcursors {
  visibility: visible;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-selected {
  background: #d9d9d9;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-focused .CodeMirror-selected, .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection {
  background: #d7d4f0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-crosshair {
  cursor: crosshair;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection {
  background: #d7d4f0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-searching {
  background: #ffa;
  background: rgba(255, 255, 0, 0.4);
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-force-border {
  padding-right: .1px;
}

@media print {
  /* line 7, node_modules/simplemde/dist/simplemde.min.css */
  .CodeMirror div.CodeMirror-cursors {
    visibility: hidden;
  }
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.cm-tab-wrap-hack:after {
  content: '';
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
span.CodeMirror-selectedtext {
  background: 0 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror {
  height: auto;
  min-height: 300px;
  border: 1px solid #ddd;
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
  padding: 10px;
  font: inherit;
  z-index: 1;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-scroll {
  min-height: 300px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-fullscreen {
  background: #fff;
  position: fixed !important;
  top: 50px;
  left: 0;
  right: 0;
  bottom: 0;
  height: auto;
  z-index: 9;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror-sided {
  width: 50% !important;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar {
  position: relative;
  opacity: .6;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -o-user-select: none;
  user-select: none;
  padding: 0 10px;
  border-top: 1px solid #bbb;
  border-left: 1px solid #bbb;
  border-right: 1px solid #bbb;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar:after, .editor-toolbar:before {
  display: block;
  content: ' ';
  height: 1px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar:before {
  margin-bottom: 8px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar:after {
  margin-top: 8px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar:hover, .editor-wrapper input.title:focus, .editor-wrapper input.title:hover {
  opacity: .8;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar.fullscreen {
  width: 100%;
  height: 50px;
  overflow-x: auto;
  overflow-y: hidden;
  white-space: nowrap;
  padding-top: 10px;
  padding-bottom: 10px;
  box-sizing: border-box;
  background: #fff;
  border: 0;
  position: fixed;
  top: 0;
  left: 0;
  opacity: 1;
  z-index: 9;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar.fullscreen::before {
  width: 20px;
  height: 50px;
  background: -moz-linear-gradient(left, white 0, rgba(255, 255, 255, 0) 100%);
  background: -webkit-gradient(linear, left top, right top, color-stop(0, white), color-stop(100%, rgba(255, 255, 255, 0)));
  background: -webkit-linear-gradient(left, white 0, rgba(255, 255, 255, 0) 100%);
  background: -o-linear-gradient(left, white 0, rgba(255, 255, 255, 0) 100%);
  background: -ms-linear-gradient(left, white 0, rgba(255, 255, 255, 0) 100%);
  background: linear-gradient(to right, white 0, rgba(255, 255, 255, 0) 100%);
  position: fixed;
  top: 0;
  left: 0;
  margin: 0;
  padding: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar.fullscreen::after {
  width: 20px;
  height: 50px;
  background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0, white 100%);
  background: -webkit-gradient(linear, left top, right top, color-stop(0, rgba(255, 255, 255, 0)), color-stop(100%, white));
  background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0, white 100%);
  background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0, white 100%);
  background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0, white 100%);
  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0, white 100%);
  position: fixed;
  top: 0;
  right: 0;
  margin: 0;
  padding: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a {
  display: inline-block;
  text-align: center;
  text-decoration: none !important;
  color: #2c3e50 !important;
  width: 30px;
  height: 30px;
  margin: 0;
  border: 1px solid transparent;
  border-radius: 3px;
  cursor: pointer;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a.active, .editor-toolbar a:hover {
  background: #fcfcfc;
  border-color: #95a5a6;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a:before {
  line-height: 30px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar i.separator {
  display: inline-block;
  width: 0;
  border-left: 1px solid #d9d9d9;
  border-right: 1px solid #fff;
  color: transparent;
  text-indent: -10px;
  margin: 0 6px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a.fa-header-x:after {
  font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;
  font-size: 65%;
  vertical-align: text-bottom;
  position: relative;
  top: 2px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a.fa-header-1:after {
  content: "1";
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a.fa-header-2:after {
  content: "2";
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a.fa-header-3:after {
  content: "3";
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a.fa-header-bigger:after {
  content: "▲";
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar a.fa-header-smaller:after {
  content: "▼";
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-toolbar.disabled-for-preview a:not(.no-disable) {
  pointer-events: none;
  background: #fff;
  border-color: transparent;
  text-shadow: inherit;
}

@media only screen and (max-width: 700px) {
  /* line 7, node_modules/simplemde/dist/simplemde.min.css */
  .editor-toolbar a.no-mobile {
    display: none;
  }
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-statusbar {
  padding: 8px 10px;
  font-size: 12px;
  color: #959694;
  text-align: right;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-statusbar span {
  display: inline-block;
  min-width: 4em;
  margin-left: 1em;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-preview, .editor-preview-side {
  padding: 10px;
  background: #fafafa;
  overflow: auto;
  display: none;
  box-sizing: border-box;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-statusbar .lines:before {
  content: 'lines: ';
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-statusbar .words:before {
  content: 'words: ';
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-statusbar .characters:before {
  content: 'characters: ';
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-preview {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: 7;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-preview-side {
  position: fixed;
  bottom: 0;
  width: 50%;
  top: 50px;
  right: 0;
  z-index: 9;
  border: 1px solid #ddd;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-preview-active, .editor-preview-active-side {
  display: block;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-preview-side > p, .editor-preview > p {
  margin-top: 0;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-preview pre, .editor-preview-side pre {
  background: #eee;
  margin-bottom: 10px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.editor-preview table td, .editor-preview table th, .editor-preview-side table td, .editor-preview-side table th {
  border: 1px solid #ddd;
  padding: 5px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-tag {
  color: #63a35c;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-attribute {
  color: #795da3;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-string {
  color: #183691;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-selected {
  background: #d9d9d9;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-header-1 {
  font-size: 200%;
  line-height: 200%;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-header-2 {
  font-size: 160%;
  line-height: 160%;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-header-3 {
  font-size: 125%;
  line-height: 125%;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-header-4 {
  font-size: 110%;
  line-height: 110%;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-comment {
  background: rgba(0, 0, 0, 0.05);
  border-radius: 2px;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-link {
  color: #7f8c8d;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-url {
  color: #aab2b3;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-code .cm-strikethrough {
  text-decoration: line-through;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .CodeMirror-placeholder {
  opacity: .5;
}

/* line 7, node_modules/simplemde/dist/simplemde.min.css */
.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word) {
  background: rgba(255, 0, 0, 0.15);
}

/* line 3, app/assets/stylesheets/common/_markdown-editor.sass */
.CodeMirror {
  border: 1px solid #e0e0e0;
  -webkit-transition: border-color 0.2s false;
  -moz-transition: border-color 0.2s false false;
  -o-transition: border-color 0.2s false false;
  transition: border-color 0.2s;
  border-radius: 0;
}

/* line 8, app/assets/stylesheets/common/_markdown-editor.sass */
.CodeMirror.CodeMirror-focused {
  border-color: #FFCD00;
}

/* line 11, app/assets/stylesheets/common/_markdown-editor.sass */
.CodeMirror, .CodeMirror-scroll {
  cursor: text;
  min-height: 9.375rem !important;
}

/* line 15, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-preview {
  z-index: 50 !important;
}

/* line 18, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-preview p {
  margin: 5px 0;
  padding: 0;
}

/* line 22, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-preview ul {
  margin: 5px 0 5px 25px;
}

/* line 25, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-preview ul li {
  margin: 0 0 5px 0;
  list-style: circle;
}

/* line 29, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-toolbar {
  display: -webkit-flex;
  display: flex;
  padding: 0.3125rem;
  border: 1px solid #e0e0e0;
  border-bottom-width: 0;
  border-radius: 0;
}

/* line 36, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-toolbar, .editor-toolbar:hover {
  opacity: 1;
}

/* line 39, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-toolbar::before {
  margin-bottom: 2px;
}

/* line 42, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-toolbar::after {
  margin-top: 2px;
}

/* line 45, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-toolbar a {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  -webkit-transition: background-color 0.2s false, border-color 0.2s false, color 0.2s false;
  -moz-transition: background-color 0.2s false false, border-color 0.2s false false, color 0.2s false false;
  -o-transition: background-color 0.2s false false, border-color 0.2s false false, color 0.2s false false;
  transition: background-color 0.2s, border-color 0.2s, color 0.2s;
  border-radius: 0;
}

/* line 52, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-toolbar a:hover, .editor-toolbar a.active {
  border-color: #e0e0e0;
}

/* line 55, app/assets/stylesheets/common/_markdown-editor.sass */
.editor-toolbar.fullscreen {
  top: 50px !important;
}

/* line 58, app/assets/stylesheets/common/_markdown-editor.sass */
.CodeMirror-fullscreen {
  top: 92px !important;
}

/* line 4, app/assets/stylesheets/common/_minicolors.sass */
form .form-group .minicolors .minicolors-input {
  height: 36px;
  padding-left: 34px;
}

/* line 7, app/assets/stylesheets/common/_minicolors.sass */
form .form-group .minicolors .minicolors-swatch {
  height: 24px;
  width: 24px;
}

/* line 10, app/assets/stylesheets/common/_minicolors.sass */
form .form-group .minicolors .minicolors-panel {
  top: -115px !important;
  left: 100px !important;
}

/* line 1, app/assets/stylesheets/common/_modals.sass */
.modal-overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.7);
  overflow-y: auto;
  z-index: 1001;
}

@media (max-width: 600px) {
  /* line 1, app/assets/stylesheets/common/_modals.sass */
  .modal-overlay {
    top: 120px;
  }
}

/* line 14, app/assets/stylesheets/common/_modals.sass */
.modal {
  position: relative;
  background: #F6F3EF;
  min-height: 34.375rem;
  max-width: 53.125rem;
  margin: 3.125rem auto;
  padding: 1.75rem;
  -webkit-border-radius: 2px;
  -moz-border-radius: 2px;
  -ms-border-radius: 2px;
  -o-border-radius: 2px;
  border-radius: 2px;
}

/* line 23, app/assets/stylesheets/common/_modals.sass */
.modal .modal-close {
  position: absolute;
  border: none;
  color: rgba(0, 0, 0, 0.7);
  font-size: 23px;
  top: 10px;
  right: 10px;
  z-index: 100;
  -webkit-transition: color 0.3s false;
  -moz-transition: color 0.3s false false;
  -o-transition: color 0.3s false false;
  transition: color 0.3s;
}

/* line 33, app/assets/stylesheets/common/_modals.sass */
.modal .modal-close:hover {
  color: #000000;
}

/* line 36, app/assets/stylesheets/common/_modals.sass */
.modal .modal-header {
  margin: -1.75rem;
  bottom: 0;
  background-color: #ffffff;
  padding: 1rem;
  border-bottom: 1px solid #e0e0e0;
}

/* line 43, app/assets/stylesheets/common/_modals.sass */
.modal .modal-title {
  font-size: 1.5rem;
  font-family: "welcome-font", sans-serif;
  font-weight: 500;
  color: #000000;
  margin: 0;
}

/* line 50, app/assets/stylesheets/common/_modals.sass */
.modal .modal-title strong {
  font-weight: 600;
}

/* line 20, app/assets/stylesheets/common/_parity-slider.sass */
.parity-wrapper.admin {
  margin-bottom: 15px;
}

/* line 22, app/assets/stylesheets/common/_parity-slider.sass */
.parity-wrapper.admin .parity-slider {
  max-width: 500px;
}

/* line 24, app/assets/stylesheets/common/_parity-slider.sass */
.parity-wrapper.admin .form-group {
  margin-top: 0;
}

/* line 26, app/assets/stylesheets/common/_parity-slider.sass */
.parity-wrapper .form-group {
  margin-top: -30px;
}

/* line 28, app/assets/stylesheets/common/_parity-slider.sass */
.parity-wrapper .switchery {
  margin-left: 15px;
}

/* line 32, app/assets/stylesheets/common/_parity-slider.sass */
label[for=parity] .switchery {
  margin-left: 5px;
}

/* line 35, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider {
  position: relative;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
  height: 0;
  max-width: 400px;
  margin-top: 10px;
  padding-top: 0;
  overflow: hidden;
  transition: 0.2s;
}

/* line 45, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider.expanded {
  height: 52px;
  overflow: visible;
}

/* line 48, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider.expanded .labels {
  height: 22px;
}

/* line 50, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider:active output::before {
  zoom: 1.1;
}

/* line 52, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider .labels {
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  height: 0;
  overflow: hidden;
  transition: 0.2s;
}

/* line 58, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider .labels .men {
  color: #4B9BF1;
}

/* line 60, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider .labels .women {
  color: #D87C6E;
}

/* line 62, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider .outputs {
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: stretch;
  align-items: stretch;
  height: 30px;
  font-size: 11px;
  font-weight: 600;
  color: #ffffff;
}

/* line 70, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider output {
  position: relative;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  padding: 0;
  font: inherit;
  color: inherit;
  transition: 0.1s;
}

/* line 80, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider output.parity-women {
  background-color: #D87C6E;
  border-right: 1px solid #e0e0e0;
}

/* line 83, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider output.parity-women::before {
  right: -1px;
  -webkit-transform: translateX(50%);
  -moz-transform: translateX(50%);
  -ms-transform: translateX(50%);
  -o-transform: translateX(50%);
  transform: translateX(50%);
}

/* line 87, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider output.parity-men {
  background-color: #4B9BF1;
  border-left: 1px solid #e0e0e0;
}

/* line 90, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider output.parity-men::before {
  left: -1px;
  -webkit-transform: translateX(-50%);
  -moz-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  -o-transform: translateX(-50%);
  transform: translateX(-50%);
}

/* line 93, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider output::before {
  content: "";
  position: absolute;
  width: 14px;
  height: 14px;
  font-size: 11px;
  font-weight: 400;
  border-radius: 50%;
  background-color: #ffffff;
  border: 1px solid #969696;
  box-sizing: content-box;
  transition: zoom 0.2s;
}

/* line 105, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider output::after {
  content: "%";
}

/* line 108, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider input {
  position: absolute;
  top: 22px;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: auto;
  padding: 0;
  background-color: transparent;
  border: none;
  border-radius: 0;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  outline: none;
}

/* line 12, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider input::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 30px;
  height: 30px;
  background: transparent;
  cursor: pointer;
}

/* line 14, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider input::-moz-range-thumb {
  -webkit-appearance: none;
  width: 30px;
  height: 30px;
  background: transparent;
  cursor: pointer;
}

/* line 16, app/assets/stylesheets/common/_parity-slider.sass */
.parity-slider input::-ms-thumb {
  -webkit-appearance: none;
  width: 30px;
  height: 30px;
  background: transparent;
  cursor: pointer;
}

/* line 1, app/assets/stylesheets/common/_tables.sass */
table {
  width: calc(100% - 1rem * 2);
  border-collapse: collapse;
  margin: 0 1rem 1.5rem 1rem;
}

/* line 6, app/assets/stylesheets/common/_tables.sass */
table th, table td {
  padding: 1rem 0.625rem;
  text-align: left;
}

/* line 10, app/assets/stylesheets/common/_tables.sass */
table th {
  border: none;
  color: rgba(0, 0, 0, 0.55);
  font-weight: 500;
  font-size: 0.875rem;
  border-bottom: 1px solid #000000;
}

/* line 18, app/assets/stylesheets/common/_tables.sass */
table tbody th, table tbody td {
  border-bottom: 1px solid #e0e0e0;
}

/* line 22, app/assets/stylesheets/common/_tables.sass */
table tbody tr:last-child th, table tbody tr:last-child td {
  border-bottom: none;
}

/* line 25, app/assets/stylesheets/common/_tables.sass */
table tbody td {
  vertical-align: middle;
  transition: all 0.2s ease;
  font-weight: 400;
  font-size: 0.875rem;
  line-height: 1.5;
}

/* line 32, app/assets/stylesheets/common/_tables.sass */
table tbody tr[data-link]:hover td {
  background: #fafafa;
  cursor: pointer;
}

/* line 1, app/assets/stylesheets/common/_text.sass */
::selection {
  background: #FFCD00;
  color: #000000;
}

/* line 7, app/assets/stylesheets/common/_text.sass */
html {
  letter-spacing: -0.01875rem;
  color: rgba(0, 0, 0, 0.7);
  font-family: "Work Sans", sans-serif;
}

/* line 12, app/assets/stylesheets/common/_text.sass */
h1, h2, h3, h4 {
  font-family: "welcome-font", sans-serif;
}

/* line 15, app/assets/stylesheets/common/_text.sass */
h1 {
  font-size: 1.5rem;
  margin-bottom: 1rem;
}

/* line 19, app/assets/stylesheets/common/_text.sass */
h1 span {
  color: #969696;
}

/* line 22, app/assets/stylesheets/common/_text.sass */
h2 {
  font-size: 1.25rem;
  font-weight: 500;
  margin: 1rem 0;
}

/* line 27, app/assets/stylesheets/common/_text.sass */
h3 {
  font-size: 1rem;
  margin: 1rem 0;
}

/* line 33, app/assets/stylesheets/common/_text.sass */
strong {
  font-weight: 500;
}

/* line 36, app/assets/stylesheets/common/_text.sass */
small {
  font-size: 0.75rem;
}

/* line 39, app/assets/stylesheets/common/_text.sass */
p, li {
  font-size: 0.875rem;
  font-family: "Work Sans", sans-serif;
  font-weight: 400;
  letter-spacing: -0.01875rem;
}

/* line 45, app/assets/stylesheets/common/_text.sass */
pre {
  padding: 20px;
}

/* line 48, app/assets/stylesheets/common/_text.sass */
.inline-link, .formatted-text a:not(.btn) {
  color: currentColor;
  transition: all 0.2s ease;
  background-image: linear-gradient(0deg, #FFCD00, #FFCD00 100%);
  background-size: 100% 50%;
  background-position-y: calc(200% - 1px);
  background-repeat: no-repeat;
  transition: background-position-y 0.25s ease 0s;
}

/* line 57, app/assets/stylesheets/common/_text.sass */
.inline-link:hover, .formatted-text a:hover:not(.btn) {
  background-position-y: 100%;
}

/* line 63, app/assets/stylesheets/common/_text.sass */
ul.inline-list li {
  display: inline-block;
  margin-right: 10px;
}

/* line 68, app/assets/stylesheets/common/_text.sass */
.page-content {
  padding: 0 15px;
  margin-top: 80px;
}

/* line 74, app/assets/stylesheets/common/_text.sass */
.text-light {
  color: rgba(0, 0, 0, 0.7);
}

/* line 77, app/assets/stylesheets/common/_text.sass */
.text-xlight {
  color: rgba(0, 0, 0, 0.55);
}

/* line 80, app/assets/stylesheets/common/_text.sass */
.text-xxlight {
  color: rgba(0, 0, 0, 0.4);
}

/* line 83, app/assets/stylesheets/common/_text.sass */
.text-blue {
  color: #106dd1;
}

/* line 86, app/assets/stylesheets/common/_text.sass */
.text-black {
  color: #111111;
}

/* line 89, app/assets/stylesheets/common/_text.sass */
.text-green {
  color: #00875C;
}

/* line 92, app/assets/stylesheets/common/_text.sass */
.text-grey {
  color: #2B2B2B;
}

/* line 95, app/assets/stylesheets/common/_text.sass */
.text-light-grey {
  color: #969696;
}

/* line 98, app/assets/stylesheets/common/_text.sass */
.text-orange {
  color: #B97F22;
}

/* line 101, app/assets/stylesheets/common/_text.sass */
.text-red {
  color: #AF4636;
}

/* line 104, app/assets/stylesheets/common/_text.sass */
.text-yellow {
  color: #E5B800;
}

/* line 108, app/assets/stylesheets/common/_text.sass */
.text-blue i, .text-green i, .text-light-grey i, .text-orange i, .text-red i, .text-yellow i {
  margin-right: 5px;
}

/* line 111, app/assets/stylesheets/common/_text.sass */
.formatted-text {
  font-size: 0.875rem;
  line-height: 1.5;
}

/* line 115, app/assets/stylesheets/common/_text.sass */
.formatted-text p, .formatted-text ul, .formatted-text ol, .formatted-text h1, .formatted-text h2, .formatted-text h3, .formatted-text h4, .formatted-text h5, .formatted-text h6, .formatted-text blockquote, .formatted-text pre {
  margin: 1rem 0;
}

/* line 118, app/assets/stylesheets/common/_text.sass */
.formatted-text p:first-child, .formatted-text ul:first-child, .formatted-text ol:first-child, .formatted-text h1:first-child, .formatted-text h2:first-child, .formatted-text h3:first-child, .formatted-text h4:first-child, .formatted-text h5:first-child, .formatted-text h6:first-child, .formatted-text blockquote:first-child, .formatted-text pre:first-child {
  margin-top: 0;
}

/* line 121, app/assets/stylesheets/common/_text.sass */
.formatted-text p:last-child, .formatted-text ul:last-child, .formatted-text ol:last-child, .formatted-text h1:last-child, .formatted-text h2:last-child, .formatted-text h3:last-child, .formatted-text h4:last-child, .formatted-text h5:last-child, .formatted-text h6:last-child, .formatted-text blockquote:last-child, .formatted-text pre:last-child {
  margin-bottom: 0;
}

/* line 124, app/assets/stylesheets/common/_text.sass */
.formatted-text h1, .formatted-text h2, .formatted-text h3, .formatted-text h4, .formatted-text h5, .formatted-text h6 {
  font-family: "welcome-font", sans-serif;
  font-weight: 500;
  color: #000000;
}

/* line 129, app/assets/stylesheets/common/_text.sass */
.formatted-text h1, .formatted-text .title-lg {
  font-size: 1.5rem;
  font-weight: 600;
}

/* line 133, app/assets/stylesheets/common/_text.sass */
.formatted-text h2 {
  font-size: 1.25rem;
  font-weight: 600;
}

/* line 137, app/assets/stylesheets/common/_text.sass */
.formatted-text h3 {
  font-size: 1.125rem;
  font-weight: 600;
}

/* line 141, app/assets/stylesheets/common/_text.sass */
.formatted-text h4 {
  font-size: 1rem;
  font-weight: 500;
}

/* line 145, app/assets/stylesheets/common/_text.sass */
.formatted-text h5 {
  font-size: 0.875rem;
  color: rgba(0, 0, 0, 0.7);
  font-weight: 500;
}

/* line 150, app/assets/stylesheets/common/_text.sass */
.formatted-text h6 {
  font-size: 0.75rem;
  color: rgba(0, 0, 0, 0.7);
  font-weight: 500;
}

/* line 155, app/assets/stylesheets/common/_text.sass */
.formatted-text p, .formatted-text li {
  color: rgba(0, 0, 0, 0.7);
  font-weight: 400;
  font-family: "Work Sans", sans-serif;
  font-size: inherit;
}

/* line 161, app/assets/stylesheets/common/_text.sass */
.formatted-text blockquote {
  position: relative;
  padding-left: 1rem;
  font-size: 1rem;
}

/* line 166, app/assets/stylesheets/common/_text.sass */
.formatted-text blockquote::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 4px;
  height: 100%;
  background-color: #FFCD00;
  content: " ";
}

/* line 175, app/assets/stylesheets/common/_text.sass */
.formatted-text strong, .formatted-text b {
  font-weight: 600;
}

/* line 178, app/assets/stylesheets/common/_text.sass */
.formatted-text i, .formatted-text em {
  font-style: italic;
}

/* line 181, app/assets/stylesheets/common/_text.sass */
.formatted-text a:not(.btn) {
  color: #000000;
}

/* line 185, app/assets/stylesheets/common/_text.sass */
.formatted-text ul, .formatted-text ol {
  list-style: none;
  counter-reset: list-counter;
  padding: 0;
}

/* line 190, app/assets/stylesheets/common/_text.sass */
.formatted-text li {
  margin-bottom: 0.3125rem;
  position: relative;
  padding: 0 0 0 1rem;
  counter-increment: list-counter;
  list-style: none;
}

/* line 197, app/assets/stylesheets/common/_text.sass */
.formatted-text li:last-child {
  margin-bottom: 0;
}

/* line 200, app/assets/stylesheets/common/_text.sass */
.formatted-text li::before {
  position: absolute;
}

/* line 204, app/assets/stylesheets/common/_text.sass */
.formatted-text ul li::before {
  top: .5em;
  left: 0;
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 50%;
  background-color: #FFCD00;
  content: " ";
}

/* line 214, app/assets/stylesheets/common/_text.sass */
.formatted-text ol li::before {
  top: 0;
  left: 0;
  font-size: 0.875rem;
  font-weight: 600;
  border-radius: 50%;
  color: #FFCD00;
  content: counter(list-counter) ".";
}

/* line 223, app/assets/stylesheets/common/_text.sass */
.formatted-text pre {
  background-color: #E1E1E1;
  padding: 0.625rem;
  white-space: pre-wrap;
}

/* line 1, app/assets/stylesheets/common/_wttj-icons.sass */
i[class^="wui-icon-"]:before, i[class*=" wui-icon-"]::before {
  font-style: normal;
  font-weight: normal !important;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* line 10, app/assets/stylesheets/common/_wttj-icons.sass */
.zmdi-hc-spin {
  animation-name: spin;
  animation-duration: 1000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* line 1, app/assets/stylesheets/dashboard/_blocks.sass */
.block {
  position: relative;
  background: #ffffff;
  margin: 1.75rem auto;
  max-width: 56.25rem;
  border: 1px solid #e0e0e0;
  border-radius: 4px;
  padding-top: 1.5rem;
}

/* line 10, app/assets/stylesheets/dashboard/_blocks.sass */
.block-content {
  padding: 1.5rem;
}

/* line 13, app/assets/stylesheets/dashboard/_blocks.sass */
.block.transparent {
  background: none;
  border: none;
  padding: 0;
}

/* line 18, app/assets/stylesheets/dashboard/_blocks.sass */
.block:empty {
  display: none;
}

/* line 21, app/assets/stylesheets/dashboard/_blocks.sass */
.block .none {
  padding: 20px;
  color: #737373;
}

/* line 24, app/assets/stylesheets/dashboard/_blocks.sass */
.block .none p:last-child {
  margin-top: 20px;
}

/* line 27, app/assets/stylesheets/dashboard/_blocks.sass */
.block > .block-buttons {
  position: absolute;
  right: 1rem;
  top: 0.6875rem;
  z-index: 10;
}

/* line 33, app/assets/stylesheets/dashboard/_blocks.sass */
.block > .block-buttons .btn-loader {
  vertical-align: middle;
  font-size: 17px;
  line-height: 34px;
  margin-right: 10px;
}

/* line 39, app/assets/stylesheets/dashboard/_blocks.sass */
.block > .block-buttons ul {
  margin: 0;
}

/* line 42, app/assets/stylesheets/dashboard/_blocks.sass */
.block > .block-buttons ul li {
  display: inline-block;
  margin-left: 5px;
}

/* line 46, app/assets/stylesheets/dashboard/_blocks.sass */
.block > .block-buttons + h2 {
  margin-top: -1.5rem;
}

/* line 49, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2 {
  position: relative;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  min-height: 4rem;
  margin: 0 0 1.5rem;
  padding: 0.625rem 1.5rem;
  border-bottom: 1px solid #e0e0e0;
  z-index: 5;
}

/* line 59, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2 + .block-content {
  padding-top: 0;
}

/* line 62, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2:first-child {
  margin-top: -1.5rem;
}

/* line 65, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2, .block h2 a {
  color: #000000;
  font-weight: 600;
  font-family: "welcome-font", sans-serif;
}

/* line 70, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2 i, .block h2 img {
  vertical-align: middle;
  margin-right: 10px;
}

/* line 73, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2 i {
  color: #FFCD00;
  font-size: 17px;
  text-align: center;
}

/* line 78, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2 .icheckbox {
  top: 15px;
}

/* line 80, app/assets/stylesheets/dashboard/_blocks.sass */
.block h2 .switchery {
  margin-right: 10px;
}

/* line 83, app/assets/stylesheets/dashboard/_blocks.sass */
.block > h3, .block > h4, .block > h5, .block > h6 {
  color: #2B2B2B;
  margin-bottom: 1rem;
  padding: 0 1.5rem;
}

/* line 89, app/assets/stylesheets/dashboard/_blocks.sass */
.block > h1 .label-light-grey, .block > h2 .label-light-grey, .block > h3 .label-light-grey, .block > h4 .label-light-grey, .block > h5 .label-light-grey, .block > h6 .label-light-grey {
  margin-left: 10px;
}

/* line 92, app/assets/stylesheets/dashboard/_blocks.sass */
.block > p {
  margin: 0 1.5rem 1.5rem;
}

/* line 95, app/assets/stylesheets/dashboard/_blocks.sass */
.block > .recruiters {
  margin: 0 1.5rem 1.5rem;
}

/* line 98, app/assets/stylesheets/dashboard/_blocks.sass */
.block > ul {
  margin: 0 1.5rem 1.5rem;
}

/* line 101, app/assets/stylesheets/dashboard/_blocks.sass */
.block > ul li {
  margin-bottom: 1.5rem;
}

/* line 105, app/assets/stylesheets/dashboard/_blocks.sass */
.block > ul.stats li > strong {
  display: inline-block;
  color: #2B2B2B;
  font-size: 15px;
  margin-right: 10px;
  min-width: 30px;
  text-align: center;
}

/* line 112, app/assets/stylesheets/dashboard/_blocks.sass */
.block > ul.stats li > span {
  color: #FFCD00;
}

/* line 115, app/assets/stylesheets/dashboard/_blocks.sass */
.block .block-links {
  border-top: 1px solid #E1E1E1;
}

/* line 117, app/assets/stylesheets/dashboard/_blocks.sass */
.block .block-links a {
  color: #737373;
  display: block;
  border: none;
  font-size: 11px;
  padding: 10px 15px;
  text-decoration: none;
}

/* line 124, app/assets/stylesheets/dashboard/_blocks.sass */
.block .block-links a:hover {
  background: #E1E1E1;
  color: #1B1B1B;
}

/* line 127, app/assets/stylesheets/dashboard/_blocks.sass */
.block .block-links a i {
  margin-right: 5px;
}

/* line 130, app/assets/stylesheets/dashboard/_blocks.sass */
.block-warning {
  background: #fcf6dc;
  color: #655f55;
}

/* line 135, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-without-content h2 {
  border: none;
  margin-bottom: 0;
}

/* line 140, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-proper-text ul, .block.block-proper-text ol {
  margin: 0 25px 20px 40px;
}

/* line 143, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-proper-text ul li {
  list-style: circle;
  margin: 5px 0;
}

/* line 146, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-proper-text ol {
  margin-left: 25px;
  list-style-type: none;
}

/* line 149, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-proper-text ol li {
  counter-increment: item;
}

/* line 151, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-proper-text ol li:before {
  content: counter(item) ".";
  margin-right: 8px;
  color: #FFCD00;
}

/* line 155, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-proper-text ol li:first-child {
  counter-reset: item;
}

/* line 157, app/assets/stylesheets/dashboard/_blocks.sass */
.block.block-proper-text pre {
  margin: 0 25px 25px 25px;
  padding: 20px;
  border: 1px solid #C8C8C8;
  background: #E1E1E1;
  overflow: auto;
  word-wrap: normal;
  word-break: break-all;
  white-space: pre-wrap;
}

/* line 169, app/assets/stylesheets/dashboard/_blocks.sass */
.slack-help-block {
  margin-top: -1.5rem;
}

/* line 172, app/assets/stylesheets/dashboard/_blocks.sass */
.slack-help-block .link-toggle {
  font-size: 0.75rem;
}

/* line 175, app/assets/stylesheets/dashboard/_blocks.sass */
.block-help {
  background: #F6F3EF;
  margin-top: 1rem;
  padding: 1rem;
}

/* line 180, app/assets/stylesheets/dashboard/_blocks.sass */
.block-help img {
  display: block;
  border: 1px solid #e0e0e0;
  max-width: 100%;
}

/* line 185, app/assets/stylesheets/dashboard/_blocks.sass */
.block-help .block-help-step {
  margin-bottom: 1.5rem;
}

/* line 188, app/assets/stylesheets/dashboard/_blocks.sass */
.block-help .block-help-step:last-child {
  margin-bottom: 0;
}

/* line 193, app/assets/stylesheets/dashboard/_blocks.sass */
.with-search-area h2 {
  margin-bottom: 0;
}

/* line 196, app/assets/stylesheets/dashboard/_blocks.sass */
.block-search-area {
  background-color: #EFEAE4;
}

/* line 199, app/assets/stylesheets/dashboard/_blocks.sass */
.block-search-area form {
  display: flex;
  padding: 1rem;
  border-bottom: 1px solid #e0e0e0;
}

/* line 204, app/assets/stylesheets/dashboard/_blocks.sass */
.block-search-area .search-input {
  display: -webkit-flex;
  display: flex;
}

/* line 207, app/assets/stylesheets/dashboard/_blocks.sass */
.block-search-area .search-input .form-control {
  width: 22.5rem;
  max-width: 100%;
  -webkit-flex: 1 0 auto;
  flex: 1 0 auto;
}

/* line 212, app/assets/stylesheets/dashboard/_blocks.sass */
.block-search-area .search-input .block-buttons {
  position: static;
  -webkit-flex: none;
  flex: none;
}

/* line 216, app/assets/stylesheets/dashboard/_blocks.sass */
.block-search-area .search-input .block-buttons .btn, .block-search-area .search-input .block-buttons .form-group.image-upload label, .form-group.image-upload .block-search-area .search-input .block-buttons label, .block-search-area .search-input .block-buttons #logotype.form-group.image-upload label, #logotype.form-group.image-upload .block-search-area .search-input .block-buttons label {
  height: 100%;
  width: 2.5rem;
}

@media (max-width: 850px) {
  /* line 221, app/assets/stylesheets/dashboard/_blocks.sass */
  .block-organization-locked {
    max-width: calc(100% - 40px);
    margin: 15px auto;
  }
}

/* line 225, app/assets/stylesheets/dashboard/_blocks.sass */
.block-organization-locked p:first-child {
  padding-top: 25px;
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jYW5kaWRhdGVzLWZvcm0uY3NzIiwKCSJzb3VyY2VzIjogWwoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NhbmRpZGF0ZXMtZm9ybS5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9fY29tcGFzcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL19hbmltYXRlLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvX2NvbXBhc3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19mdW5jdGlvbnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29uc3RhbnRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29sb3JzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX2NvbG9yLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvY29sb3IvX2NvbnRyYXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX2dlbmVyYWwuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL190YWctY2xvdWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19taW4uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fc3ByaXRlcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX2Jhc2Uuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9zcHJpdGVzL19zcHJpdGUtaW1nLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX3RhYmxlcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYm9yZGVycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fc2NhZmZvbGRpbmcuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19ob3Zlci1saW5rLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19saW5rLWNvbG9ycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2hvcml6b250YWwtbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fY2xlYXJmaXguc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9yZXNldC9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1ibG9jay1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19ob3Jpem9udGFsLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvX2lubGluZS1ibG9jay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fdGV4dC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19lbGxpcHNpcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0Ly4uLy4uL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0Ly4uLy4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fbm93cmFwLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX3JlcGxhY2VtZW50LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL190eXBvZ3JhcGh5LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L19saW5rcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fbGluay1jb2xvcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX3Vuc3R5bGVkLWxpbmsuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19ob3Jpem9udGFsLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19pbmxpbmUtYmxvY2stbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL3Jlc2V0L191dGlsaXRpZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzL19pbmxpbmUtYmxvY2suc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fZWxsaXBzaXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC8uLi8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC8uLi8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19yZXBsYWNlbWVudC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19mb3JjZS13cmFwLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L192ZXJ0aWNhbF9yaHl0aG0uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0L19ncmlkLWJhY2tncm91bmQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvX2ltYWdlcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9fZnVuY3Rpb25zLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fY29uc3RhbnRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fZGlzcGxheS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9mdW5jdGlvbnMvX2NvbG9ycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy9fYmFja2dyb3VuZC1zaXplLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19jc3MzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3JkZXItcmFkaXVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19vcGFjaXR5LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fdGV4dC1zaGFkb3cuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fY29sdW1ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2l6aW5nLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbWFnZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX2Z1bmN0aW9ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2xpc3RzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fZ3JhZGllbnRfc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2NvbnN0YW50cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2Rpc3BsYXkuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vZnVuY3Rpb25zL19jb2xvcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtY2xpcC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLW9yaWdpbi5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLXNpemUuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZm9udC1mYWNlLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zZm9ybS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2l0aW9uLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2FwcGVhcmFuY2Uuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fcmVnaW9ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19oeXBoZW5hdGlvbi5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19maWx0ZXIuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fcGllLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL191c2VyLWludGVyZmFjZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mbGV4Ym94LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vX2NvcmUuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9fYW5pbWF0ZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL19hdHRlbnRpb24tc2Vla2Vycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL19ib3VuY2luZy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL2JvdW5jaW5nL19ib3VuY2luZy1leGl0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL2JvdW5jaW5nL19ib3VuY2luZy1lbnRyYW5jZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9fZmFkaW5nLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0aW9uL2FuaW1hdGUvZmFkaW5nL19mYWRpbmctZXhpdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9mYWRpbmcvX2ZhZGluZy1lbnRyYW5jZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9fZmxpcHBlcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9fbGlnaHRzcGVlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL19yb3RhdGluZy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL3JvdGF0aW5nL19yb3RhdGluZy1leGl0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2FuaW1hdGlvbi9hbmltYXRlL3JvdGF0aW5nL19yb3RhdGluZy1lbnRyYW5jZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9hbmltYXRpb24vYW5pbWF0ZS9fc3BlY2lhbHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9fY29tcGFzcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvX2Z1bmN0aW9ucy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fZ3JhZGllbnRfc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fZGlzcGxheS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb2xvcnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL191dGlsaXRpZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fY29sb3Iuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9jb2xvci9fY29udHJhc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fZ2VuZXJhbC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9yZXNldC9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fY2xlYXJmaXguc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3RhZy1jbG91ZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX21pbi5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19zcHJpdGVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvc3ByaXRlcy9fYmFzZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX3Nwcml0ZS1pbWcuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fdGFibGVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19hbHRlcm5hdGluZy1yb3dzLWFuZC1jb2x1bW5zLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19ib3JkZXJzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19zY2FmZm9sZGluZy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fbGlua3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2hvdmVyLWxpbmsuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL191bnN0eWxlZC1saW5rLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L19saXN0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL3Jlc2V0L191dGlsaXRpZXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19pbmxpbmUtbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2hvcml6b250YWwtbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fY2xlYXJmaXguc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9yZXNldC9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy9faW5saW5lLWJsb2NrLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L190ZXh0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvLi4vLi4vY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvLi4vLi4vY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19ub3dyYXAuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fZm9yY2Utd3JhcC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvX3R5cG9ncmFwaHkuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19ob3Zlci1saW5rLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19saW5rLWNvbG9ycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2hvcml6b250YWwtbGlzdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fY2xlYXJmaXguc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9yZXNldC9fdXRpbGl0aWVzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1ibG9jay1saXN0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19ob3Jpem9udGFsLWxpc3Quc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvLi4vLi4vcmVzZXQvX3V0aWxpdGllcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzLy4uLy4uL2NzczMvX2lubGluZS1ibG9jay5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy8uLi8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvLi4vLi4vY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fdGV4dC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19lbGxpcHNpcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0Ly4uLy4uL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0Ly4uLy4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fbm93cmFwLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX3JlcGxhY2VtZW50LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3ZlcnRpY2FsX3JoeXRobS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvX2dyaWQtYmFja2dyb3VuZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy9faW1hZ2VzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL3V0aWxpdGllcy9nZW5lcmFsLy4uLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL19mdW5jdGlvbnMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19saXN0cy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9mdW5jdGlvbnMvX2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19jb25zdGFudHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvLi4vZnVuY3Rpb25zL19kaXNwbGF5LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzLy4uL2Z1bmN0aW9ucy9fY29sb3JzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5Ly4uL2xheW91dC8uLi9jc3MzL19iYWNrZ3JvdW5kLXNpemUuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvLi4vbGF5b3V0Ly4uL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS8uLi9sYXlvdXQvLi4vY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvX2NzczMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JvcmRlci1yYWRpdXMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9faW5saW5lLWJsb2NrLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX29wYWNpdHkuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYm94LXNoYWRvdy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190ZXh0LXNoYWRvdy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19jb2x1bW5zLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaXppbmcuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYm94LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ltYWdlcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi91dGlsaXRpZXMvZ2VuZXJhbC8uLi8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fZnVuY3Rpb25zLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fbGlzdHMuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fY29uc3RhbnRzLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL2Z1bmN0aW9ucy9fZGlzcGxheS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9mdW5jdGlvbnMvX2NvbG9ycy5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1jbGlwLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtb3JpZ2luLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mb250LWZhY2Uuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fdHJhbnNmb3JtLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zaXRpb24uc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYXBwZWFyYW5jZS5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19yZWdpb25zLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2h5cGhlbmF0aW9uLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ZpbHRlci5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzLy4uL19zdXBwb3J0LnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19waWUuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3VzZXItaW50ZXJmYWNlLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvY29tcGFzcy1zYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ZsZXhib3guc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvLi4vX3N1cHBvcnQuc2FzcyIsCgkJIm5vZGVfbW9kdWxlcy9jb21wYXNzLXNhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2NvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy8uLi9fc3VwcG9ydC5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9taXhpbnMvX2FuaW1hdGlvbnMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvbWl4aW5zL19icmVha3BvaW50LnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL21peGlucy9fbGluZS10aHJvdWdoLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9fX3ZhcmlhYmxlcy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2FsZXJ0cy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2JhY2tncm91bmRzLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9fYnV0dG9ucy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2NhbGxvdXQuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL19kYXRldGltZXBpY2tlci5zYXNzIiwKCQkibm9kZV9tb2R1bGVzL2pxdWVyeS1kYXRldGltZXBpY2tlci9qcXVlcnkuZGF0ZXRpbWVwaWNrZXIuY3NzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2Ryb3Bkb3ducy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2Zvcm0tZ3JvdXAtdG9nZ2xlLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9fZm9ybXMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL19nb29nbGUtcGxhY2VzLWF1dG9jb21wbGV0ZS1yZXNldC5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2dyaWQuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL19oaWdoY2hhcnRzLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9faGludC5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2hvdC1sb2FkZXItZXJyb3Iuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL19pY2hlY2staW5wdXRzLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9faW9uLXJhbmdlc2xpZGVyLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvaW9uLXJhbmdlc2xpZGVyL2Nzcy9pb24ucmFuZ2VTbGlkZXIuY3NzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2xhYmVscy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX2xpbmtzLnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9fbWFya2Rvd24tZWRpdG9yLnNhc3MiLAoJCSJub2RlX21vZHVsZXMvc2ltcGxlbWRlL2Rpc3Qvc2ltcGxlbWRlLm1pbi5jc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9fbWluaWNvbG9ycy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX21vZGFscy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jb21tb24vX3Bhcml0eS1zbGlkZXIuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL190YWJsZXMuc2FzcyIsCgkJImFwcC9hc3NldHMvc3R5bGVzaGVldHMvY29tbW9uL190ZXh0LnNhc3MiLAoJCSJhcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NvbW1vbi9fd3R0ai1pY29ucy5zYXNzIiwKCQkiYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9kYXNoYm9hcmQvX2Jsb2Nrcy5zYXNzIgoJXSwKCSJzb3VyY2VzQ29udGVudCI6IFsKCQkiQGltcG9ydCBcImNvbXBhc3NcIjtcblxuLy8gTWl4aW5zXG5AaW1wb3J0IFwibWl4aW5zLypcIjtcblxuLy8gQ29tbW9uIHN0eWxlc1xuQGltcG9ydCBcImNvbW1vbi8qXCI7XG5cbkBpbXBvcnQgXCJkYXNoYm9hcmQvYmxvY2tzXCI7XG4iLAoJCSJAaW1wb3J0IFwiY29tcGFzcy1zYXNzLW1peGlucy9saWIvYW5pbWF0ZVwiO1xuQGltcG9ydCBcImNvbXBhc3Mtc2Fzcy1taXhpbnMvbGliL2NvbXBhc3NcIjtcblxuQG1peGluIGtleWZyYW1lcygkbmFtZSkge1xuICBALXdlYmtpdC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgIEBjb250ZW50OyB9XG4gIEAtbW96LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgQGNvbnRlbnQ7IH1cbiAgQC1tcy1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgIEBjb250ZW50OyB9XG4gIEBrZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgIEBjb250ZW50OyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJjb21wYXNzXCI7XG5AaW1wb3J0IFwiYW5pbWF0aW9uL2NvcmVcIjtcbkBpbXBvcnQgXCJhbmltYXRpb24vYW5pbWF0ZVwiO1xuIiwKCQkiQGltcG9ydCBcImNvbXBhc3MvZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiY29tcGFzcy91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJjb21wYXNzL3R5cG9ncmFwaHlcIjtcbkBpbXBvcnQgXCJjb21wYXNzL2NzczNcIjtcbiIsCgkJIkBpbXBvcnQgXCJmdW5jdGlvbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29uc3RhbnRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Rpc3BsYXlcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3JzXCI7XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGxpc3QgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9saXN0cy5yYlxuLy9cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxOyB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTsgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTsgfVxuXG4vLyBjb21wYXNzX2xpc3QgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaW4gc2FzcyBzY3JpcHRcblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNwYWNlLWxpc3QoJGl0ZW0xLCAkaXRlbTI6IG51bGwsICRpdGVtMzogbnVsbCwgJGl0ZW00OiBudWxsLCAkaXRlbTU6IG51bGwsICRpdGVtNjogbnVsbCwgJGl0ZW03OiBudWxsLCAkaXRlbTg6IG51bGwsICRpdGVtOTogbnVsbCkge1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRpdGVtMSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTsgfVxuICBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTsgfVxuICAkZnVsbDogZmlyc3QtdmFsdWUtb2YoJGl0ZW1zKTtcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGl0ZW1zKSB7XG4gICAgJGl0ZW06IG50aCgkaXRlbXMsICRpKTtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGl0ZW07IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpOyB9XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zbGljZSgkbGlzdCwgJHN0YXJ0LCAkZW5kOiBmYWxzZSkge1xuICBAaWYgJGVuZCA9PSBmYWxzZSB7XG4gICAgJGVuZDogbGVuZ3RoKCRsaXN0KTsgfVxuICAkZnVsbDogbnRoKCRsaXN0LCAkc3RhcnQpO1xuICBAZm9yICRpIGZyb20gJHN0YXJ0ICsgMSB0aHJvdWdoICRlbmQge1xuICAgICRmdWxsOiAkZnVsbCwgbnRoKCRsaXN0LCAkaSk7IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gcmVqZWN0KCRsaXN0LCAkcmVqZWN0MSwgJHJlamVjdDI6IG51bGwsICRyZWplY3QzOiBudWxsLCAkcmVqZWN0NDogbnVsbCwgJHJlamVjdDU6IG51bGwsICRyZWplY3Q2OiBudWxsLCAkcmVqZWN0NzogbnVsbCwgJHJlamVjdDg6IG51bGwsICRyZWplY3Q5OiBudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuICAkZnVsbDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgaW5kZXgoJHJlamVjdHMsICRpdGVtKSB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkZnVsbCB7XG4gICAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07IH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiBmaXJzdC12YWx1ZS1vZigkbGlzdCkge1xuICBAcmV0dXJuIG50aCgkbGlzdCwgMSk7IH1cblxuLy9AaWYgbm90IGZ1bmN0aW9uLWV4aXN0cyhjb21wYWN0KVxuQGZ1bmN0aW9uIGNvbXBhY3QoJHZhcnMuLi4pIHtcbiAgJGxpc3Q6ICgpO1xuICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICBAaWYgJHZhciB7XG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkdmFyLCBjb21tYSk7IH0gfVxuICBAcmV0dXJuICRsaXN0OyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIHByZWZpeGVkKCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gICRwcmVmaXhlZDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJzdHJpbmdcIiB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sIFwidXJsXCIpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgXCJyZ2JcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcIiNcIikgIT0gMTsgfVxuICAgIEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IFwiY29sb3JcIiB7fVxuICAgIEBlbHNlIGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlOyB9IH1cbiAgQHJldHVybiAkcHJlZml4ZWQ7IH1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiBcIlwiO1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09IFwibGlzdFwiIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTE7IH1cbiAgQGVsc2Uge1xuICAgIC8vIFBhc3NpbmcgbXVsdGlwbGUgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTsgfVxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07IH1cbiAgICAgIEBpZiAkcHJvcHMge1xuICAgICAgICAkcHJvcHM6ICRwcm9wcywgJGl0ZW07IH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHByb3BzOiAkaXRlbTsgfSB9IH1cbiAgQHJldHVybiAkcHJvcHM7IH1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1zdmdcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vd2dcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi13ZWJraXRcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1tb3pcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItb1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXBpZVwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBncmFkaWVudCBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2IvdjAuMTIuMi9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnQucmJcbi8vXG5cbkBmdW5jdGlvbiBjb2xvci1zdG9wcygkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vL1xuXG5AZnVuY3Rpb24gb3Bwb3NpdGUtcG9zaXRpb24oJGZyb20pIHtcbiAgQGlmICRmcm9tID09IHRvcCB7XG4gICAgQHJldHVybiBib3R0b207IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gYm90dG9tIHtcbiAgICBAcmV0dXJuIHRvcDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBsZWZ0IHtcbiAgICBAcmV0dXJuIHJpZ2h0OyB9XG4gIEBlbHNlIGlmICRmcm9tID09IHJpZ2h0IHtcbiAgICBAcmV0dXJuIGxlZnQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gY2VudGVyIHtcbiAgICBAcmV0dXJuIGNlbnRlcjsgfSB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy9cblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpIHtcbiAgQGlmICR0eXBlID09IGJsb2NrIHtcbiAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUge1xuICAgIEByZXR1cm4gYSwgYWJiciwgYWNyb255bSwgYXVkaW8sIGIsIGJhc2Vmb250LCBiZG8sIGJpZywgYnIsIGNhbnZhcywgY2l0ZSwgY29kZSwgY29tbWFuZCwgZGF0YWxpc3QsIGRmbiwgZW0sIGVtYmVkLCBmb250LCBpLCBpbWcsIGlucHV0LCBrZXlnZW4sIGtiZCwgbGFiZWwsIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBxLCBycCwgcnQsIHJ1YnksIHMsIHNhbXAsIHNlbGVjdCwgc21hbGwsIHNwYW4sIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdGV4dGFyZWEsIHRpbWUsIHR0LCB1LCB2YXIsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaW5saW5lLWJsb2NrIHtcbiAgICBAcmV0dXJuIGltZzsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZSB7XG4gICAgQHJldHVybiB0YWJsZTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0LWl0ZW0ge1xuICAgIEByZXR1cm4gbGk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtcm93LWdyb3VwIHtcbiAgICBAcmV0dXJuIHRib2R5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCB7XG4gICAgQHJldHVybiB0aGVhZDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXAge1xuICAgIEByZXR1cm4gdGZvb3Q7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtcm93IHtcbiAgICBAcmV0dXJuIHRyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWNlbGwge1xuICAgIEByZXR1cm4gdGgsIHRkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWJsb2NrIHtcbiAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNS1pbmxpbmUge1xuICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0ZXh0LWlucHV0IHtcbiAgICBAcmV0dXJuIGlucHV0LCB0ZXh0YXJlYTsgfSB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpOyB9XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpOyB9XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpOyB9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAwMDAsICRjb2xvciwgJHBlcmNlbnRhZ2UpOyB9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoI2ZmZmZmZiwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cbiIsCgkJIkBpbXBvcnQgXCJ1dGlsaXRpZXMvY29sb3JcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvZ2VuZXJhbFwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9zcHJpdGVzXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3RhYmxlc1wiO1xuXG4vLyBkZXByZWNhdGVkXG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saW5rc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlzdHNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3RleHRcIjtcbiIsCgkJIkBpbXBvcnQgXCJjb2xvci9jb250cmFzdFwiO1xuIiwKCQkiJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0OiAjMDAwICFkZWZhdWx0O1xuJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdDogI2ZmZiAhZGVmYXVsdDtcbiRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQ6IDMwJSAhZGVmYXVsdDtcblxuLy8gUmV0dXJucyB0aGUgYCRsaWdodGAgY29sb3Igd2hlbiB0aGUgYCRjb2xvcmAgaXMgZGFya1xuLy8gYW5kIHRoZSBgJGRhcmtgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGxpZ2h0LlxuLy8gVGhlIGAkdGhyZXNob2xkYCBpcyBhIHBlcmNlbnQgYmV0d2VlbiBgMCVgIGFuZCBgMTAwJWAgYW5kIGl0IGRldGVybWluZXNcbi8vIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBgJGNvbG9yYCBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLlxuQGZ1bmN0aW9uIGNvbnRyYXN0LWNvbG9yKCRjb2xvciwgJGRhcms6ICRjb250cmFzdGVkLWRhcmstZGVmYXVsdCwgJGxpZ2h0OiAkY29udHJhc3RlZC1saWdodC1kZWZhdWx0LCAkdGhyZXNob2xkOiAkY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkKSB7XG4gIEByZXR1cm4gaWYobGlnaHRuZXNzKCRjb2xvcikgPCAkdGhyZXNob2xkLCAkbGlnaHQsICRkYXJrKTsgfVxuXG4vLyBTZXRzIHRoZSBzcGVjaWZpZWQgYmFja2dyb3VuZCBjb2xvciBhbmQgY2FsY3VsYXRlcyBhIGRhcmsgb3IgbGlnaHQgY29udHJhc3RlZCB0ZXh0IGNvbG9yLlxuLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIFtjb250cmFzdC1jb2xvciBmdW5jdGlvbl0oI2Z1bmN0aW9uLWNvbnRyYXN0LWNvbG9yKS5cbkBtaXhpbiBjb250cmFzdGVkKCRiYWNrZ3JvdW5kLWNvbG9yLCAkZGFyazogJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0LCAkbGlnaHQ6ICRjb250cmFzdGVkLWxpZ2h0LWRlZmF1bHQsICR0aHJlc2hvbGQ6ICRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIGNvbG9yOiBjb250cmFzdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgJGRhcmssICRsaWdodCwgJHRocmVzaG9sZCk7IH1cbiIsCgkJIkBpbXBvcnQgXCJnZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImdlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL3RhZy1jbG91ZFwiO1xuQGltcG9ydCBcImdlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL21pblwiO1xuIiwKCQkiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwKCQkiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiLy8gRW1pdHMgc3R5bGVzIGZvciBhIHRhZyBjbG91ZFxuQG1peGluIHRhZy1jbG91ZCgkYmFzZS1zaXplOiAxZW0pIHtcbiAgZm9udC1zaXplOiAkYmFzZS1zaXplO1xuICBsaW5lLWhlaWdodDogMS4yICogJGJhc2Utc2l6ZTtcbiAgLnh4cywgLnhzLCAucywgLmwsIC54bCwgLnh4bCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuMiAqICRiYXNlLXNpemU7IH1cbiAgLnh4cyB7XG4gICAgZm9udC1zaXplOiAkYmFzZS1zaXplIC8gMjsgfVxuICAueHMge1xuICAgIGZvbnQtc2l6ZTogMiAqICRiYXNlLXNpemUgLyAzOyB9XG4gIC5zIHtcbiAgICBmb250LXNpemU6IDMgKiAkYmFzZS1zaXplIC8gNDsgfVxuICAubCB7XG4gICAgZm9udC1zaXplOiA0ICogJGJhc2Utc2l6ZSAvIDM7IH1cbiAgLnhsIHtcbiAgICBmb250LXNpemU6IDMgKiAkYmFzZS1zaXplIC8gMjsgfVxuICAueHhsIHtcbiAgICBmb250LXNpemU6IDIgKiAkYmFzZS1zaXplOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiaGFja3NcIjtcblxuLy8qKlxuLy8gQ3Jvc3MgYnJvd3NlciBtaW4taGVpZ2h0IG1peGluLlxuQG1peGluIG1pbi1oZWlnaHQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGhhY2tlZC1taW5pbXVtKGhlaWdodCwgJHZhbHVlKTsgfVxuXG4vLyoqXG4vLyBDcm9zcyBicm93c2VyIG1pbi13aWR0aCBtaXhpbi5cbkBtaXhpbiBtaW4td2lkdGgoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGhhY2tlZC1taW5pbXVtKHdpZHRoLCAkdmFsdWUpOyB9XG5cbi8vIEBwcml2YXRlIFRoaXMgbWl4aW4gaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHkuXG5AbWl4aW4gaGFja2VkLW1pbmltdW0oJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgbWluLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICBAaW5jbHVkZSBiYW5nLWhhY2soJHByb3BlcnR5LCBhdXRvLCAkdmFsdWUpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNwcml0ZXMvYmFzZVwiO1xuQGltcG9ydCBcInNwcml0ZXMvc3ByaXRlLWltZ1wiO1xuIiwKCQkiLy8gRGV0ZXJtaW5lcyB0aG9zZSBzdGF0ZXMgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGVuYWJsZSBtYWdpYyBzcHJpdGUgc2VsZWN0b3JzXG4kc3ByaXRlLXNlbGVjdG9yczogaG92ZXIsIHRhcmdldCwgYWN0aXZlICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYW4gZWxlbWVudCB0byB0aGUgb3JpZ2luYWxcbi8vIGRpbWVuc2lvbnMgb2YgYW4gaW1hZ2UgYmVmb3JlIGl0IHdhcyBpbmNsdWRlZCBpbiB0aGUgc3ByaXRlLlxuQG1peGluIHNwcml0ZS1kaW1lbnNpb25zKCRtYXAsICRzcHJpdGUpIHtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoc3ByaXRlLWZpbGUoJG1hcCwgJHNwcml0ZSkpO1xuICB3aWR0aDogaW1hZ2Utd2lkdGgoc3ByaXRlLWZpbGUoJG1hcCwgJHNwcml0ZSkpOyB9XG5cbi8vIFNldCB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gc3ByaXRlIGAkbWFwYCB0byBkaXNwbGF5IHRoZVxuLy8gc3ByaXRlIG9mIHRoZSBnaXZlbiBgJHNwcml0ZWAgbmFtZS4gWW91IGNhbiBtb3ZlIHRoZSBpbWFnZSByZWxhdGl2ZSB0byBpdHNcbi8vIG5hdHVyYWwgcG9zaXRpb24gYnkgcGFzc2luZyBgJG9mZnNldC14YCBhbmQgYCRvZmZzZXQteWAuXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogc3ByaXRlLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTsgfVxuXG4vLyBEZXRlcm1pbmVzIGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgbWFnaWMgc2VsZWN0b3JzIGluIHlvdXIgc3ByaXRlc1xuJGRpc2FibGUtbWFnaWMtc3ByaXRlLXNlbGVjdG9yczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEluY2x1ZGUgdGhlIHBvc2l0aW9uIGFuZCAob3B0aW9uYWxseSkgZGltZW5zaW9ucyBvZiB0aGlzIGAkc3ByaXRlYFxuLy8gaW4gdGhlIGdpdmVuIHNwcml0ZSBgJG1hcGAuIFRoZSBzcHJpdGUgdXJsIHNob3VsZCBjb21lIGZyb20gZWl0aGVyIGEgYmFzZVxuLy8gY2xhc3Mgb3IgeW91IGNhbiBzcGVjaWZ5IHRoZSBgc3ByaXRlLXVybGAgZXhwbGljaXRseSBsaWtlIHRoaXM6XG4vL1xuLy8gICAgIGJhY2tncm91bmQ6ICRtYXAgbm8tcmVwZWF0O1xuQG1peGluIHNwcml0ZSgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9uczogZmFsc2UsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgQGlmICRkaW1lbnNpb25zIHtcbiAgICBAaW5jbHVkZSBzcHJpdGUtZGltZW5zaW9ucygkbWFwLCAkc3ByaXRlKTsgfVxuICBAaWYgbm90ICRkaXNhYmxlLW1hZ2ljLXNwcml0ZS1zZWxlY3RvcnMge1xuICAgIEBpbmNsdWRlIHNwcml0ZS1zZWxlY3RvcnMoJG1hcCwgJHNwcml0ZSwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyB9IH1cblxuLy8gSW5jbHVkZSB0aGUgc2VsZWN0b3JzIGZvciB0aGUgYCRzcHJpdGVgIGdpdmVuIHRoZSBgJG1hcGAgYW5kIHRoZVxuLy8gYCRmdWxsLXNwcml0ZS1uYW1lYFxuLy8gQHByaXZhdGVcbkBtaXhpbiBzcHJpdGUtc2VsZWN0b3JzKCRtYXAsICRzcHJpdGUtbmFtZSwgJGZ1bGwtc3ByaXRlLW5hbWUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBlYWNoICRzZWxlY3RvciBpbiAkc3ByaXRlLXNlbGVjdG9ycyB7XG4gICAgQGlmIHNwcml0ZV9oYXNfc2VsZWN0b3IoJG1hcCwgJHNwcml0ZS1uYW1lLCAkc2VsZWN0b3IpIHtcbiAgICAgICY6I3skc2VsZWN0b3J9LCAmLiN7JGZ1bGwtc3ByaXRlLW5hbWV9XyN7JHNlbGVjdG9yfSwgJi4jeyRmdWxsLXNwcml0ZS1uYW1lfS0jeyRzZWxlY3Rvcn0ge1xuICAgICAgICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCBcIiN7JHNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn1cIiwgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyB9IH0gfSB9XG5cbi8vIEdlbmVyYXRlcyBhIGNsYXNzIGZvciBlYWNoIHNwYWNlIHNlcGFyYXRlZCBuYW1lIGluIGAkc3ByaXRlLW5hbWVzYC5cbi8vIFRoZSBjbGFzcyB3aWxsIGJlIG9mIHRoZSBmb3JtIC48bWFwLW5hbWU+LTxzcHJpdGUtbmFtZT4uXG4vL1xuLy8gSWYgYSBiYXNlIGNsYXNzIGlzIHByb3ZpZGVkLCB0aGVuIGVhY2ggY2xhc3Mgd2lsbCBleHRlbmQgaXQuXG4vL1xuLy8gSWYgYCRkaW1lbnNpb25zYCBpcyBgdHJ1ZWAsIHRoZSBzcHJpdGUgZGltZW5zaW9ucyB3aWxsIHNwZWNpZmllZC5cbkBtaXhpbiBzcHJpdGVzKCRtYXAsICRzcHJpdGUtbmFtZXMsICRiYXNlLWNsYXNzOiBmYWxzZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkcHJlZml4OiBzcHJpdGUtbWFwLW5hbWUoJG1hcCksICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBlYWNoICRzcHJpdGUtbmFtZSBpbiAkc3ByaXRlLW5hbWVzIHtcbiAgICBAaWYgc3ByaXRlX2RvZXNfbm90X2hhdmVfcGFyZW50KCRtYXAsICRzcHJpdGUtbmFtZSkge1xuICAgICAgJGZ1bGwtc3ByaXRlLW5hbWU6IFwiI3skcHJlZml4fS0jeyRzcHJpdGUtbmFtZX1cIjtcbiAgICAgIC4jeyRmdWxsLXNwcml0ZS1uYW1lfSB7XG4gICAgICAgIEBpZiAkYmFzZS1jbGFzcyB7XG4gICAgICAgICAgQGV4dGVuZCAjeyRiYXNlLWNsYXNzfTsgfVxuICAgICAgICBAaW5jbHVkZSBzcHJpdGUoJG1hcCwgJHNwcml0ZS1uYW1lLCAkZGltZW5zaW9ucywgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyB9IH0gfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXhhbXBsZSAxOlxuLy9cbi8vICAgICBhLnR3aXR0ZXJcbi8vICAgICAgICtzcHJpdGUtaW1nKFwiaWNvbnMtMzIucG5nXCIsIDEpXG4vLyAgICAgYS5mYWNlYm9va1xuLy8gICAgICAgK3Nwcml0ZS1pbWcoXCJpY29ucy0zMnBuZ1wiLCAyKVxuLy9cbi8vIEV4YW1wbGUgMjpcbi8vXG4vLyAgICAgYVxuLy8gICAgICAgK3Nwcml0ZS1iYWNrZ3JvdW5kKFwiaWNvbnMtMzIucG5nXCIpXG4vLyAgICAgICBhLnR3aXR0ZXJcbi8vICAgICAgICAgK3Nwcml0ZS1jb2x1bW4oMSlcbi8vICAgICAgIGEuZmFjZWJvb2tcbi8vICAgICAgICAgK3Nwcml0ZS1yb3coMilcbi8vIEBkb2Mgb25cblxuJHNwcml0ZS1kZWZhdWx0LXNpemU6IDMycHggIWRlZmF1bHQ7XG5cbiRzcHJpdGUtZGVmYXVsdC1tYXJnaW46IDBweCAhZGVmYXVsdDtcblxuJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoOiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSAhZGVmYXVsdDtcblxuJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodDogJHNwcml0ZS1kZWZhdWx0LXNpemUgIWRlZmF1bHQ7XG5cbi8vIFNldHMgYWxsIHRoZSBydWxlcyBmb3IgYSBzcHJpdGUgZnJvbSBhIGdpdmVuIHNwcml0ZSBpbWFnZSB0byBzaG93IGp1c3Qgb25lIG9mIHRoZSBzcHJpdGVzLlxuLy8gVG8gcmVkdWNlIGR1cGxpY2F0aW9uIHVzZSBhIHNwcml0ZS1iZyBtaXhpbiBmb3IgY29tbW9uIHByb3BlcnRpZXMgYW5kIGEgc3ByaXRlLXNlbGVjdCBtaXhpbiBmb3IgcG9zaXRpb25pbmcuXG5AbWl4aW4gc3ByaXRlLWltZygkaW1nLCAkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZCgkaW1nLCAkd2lkdGgsICRoZWlnaHQpO1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oJGNvbCwgJHJvdywgJHdpZHRoLCAkaGVpZ2h0LCAkbWFyZ2luKTsgfVxuXG4vLyBTZXRzIHJ1bGVzIGNvbW1vbiBmb3IgYWxsIHNwcml0ZXMsIGFzc3VtZXMgeW91IHdhbnQgYSBzcXVhcmUsIGJ1dCBhbGxvd3MgYSByZWN0YW5ndWxhciByZWdpb24uXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoOiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSwgJGhlaWdodDogJHdpZHRoKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGgsICRoZWlnaHQpOyB9XG5cbi8vIFNldHMgcnVsZXMgY29tbW9uIGZvciBhbGwgc3ByaXRlcywgYXNzdW1lcyBhIHJlY3Rhbmd1bGFyIHJlZ2lvbi5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZC1yZWN0YW5nbGUoJGltZywgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQpIHtcbiAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRpbWcpIG5vLXJlcGVhdDtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi8vIEFsbG93cyBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBvcHRpbWl6ZWQgZm9yIGEgc2luZ2xlIHJvdyBvZiBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1jb2x1bW4oJGNvbCwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRjb2wsIDEsICR3aWR0aCwgMHB4LCAkbWFyZ2luKTsgfVxuXG4vLyBBbGxvd3MgdmVydGljYWwgc3ByaXRlIHBvc2l0aW9uaW5nIG9wdGltaXplZCBmb3IgYSBzaW5nbGUgY29sdW1uIG9mIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLXJvdygkcm93LCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigxLCAkcm93LCAwcHgsICRoZWlnaHQsICRtYXJnaW4pOyB9XG5cbi8vIEFsbG93cyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzcHJpdGUgcG9zaXRpb25pbmcgZnJvbSBhIGdyaWQgb2YgZXF1YWwgZGltZW5zaW9uZWQgc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtcG9zaXRpb24oJGNvbCwgJHJvdzogMSwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgJHg6ICgkY29sIC0gMSkgKiAtJHdpZHRoIC0gKCRjb2wgLSAxKSAqICRtYXJnaW47XG4gICR5OiAoJHJvdyAtIDEpICogLSRoZWlnaHQgLSAoJHJvdyAtIDEpICogJG1hcmdpbjtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogJHggJHk7IH1cblxuLy8gU2ltaWxhciB0byAnc3ByaXRlLXJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMnIGJ1dCBkb2VzIG5vdCBhdXRtYXRpY2x5IHNldCB0aGUgZGVtZW5zaW9uc1xuQG1peGluIHNwcml0ZS1yZXBsYWNlLXRleHQoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9ucywgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkbWFwO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9XG5cbi8vIFNpbWlsYXIgdG8gJ3JlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMnIGJ1dCB3aXRoIHNwcml0ZXNcbi8vIFRvIHVzZSwgY3JlYXRlIHlvdXIgc3ByaXRlIGFuZCB0aGVuIHBhc3MgaXQgaW4gdGhlIGAkbWFwYCBwYXJhbVxuLy8gVGhlIG5hbWUgb2YgdGhlIGltYWdlIGluIHRoZSBzcHJpdGUgZm9sZGVyIHNob3VsZCBiZSBgJGltZy1uYW1lYFxuQG1peGluIHNwcml0ZS1yZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1yZXBsYWNlLXRleHQoJG1hcCwgJHNwcml0ZSwgdHJ1ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyB9XG4iLAoJCSJAaW1wb3J0IFwidGFibGVzL2FsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJ0YWJsZXMvYm9yZGVyc1wiO1xuQGltcG9ydCBcInRhYmxlcy9zY2FmZm9sZGluZ1wiO1xuIiwKCQkiQG1peGluIGFsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnMoJGV2ZW4tcm93LWNvbG9yLCAkb2RkLXJvdy1jb2xvciwgJGRhcmstaW50ZXJzZWN0aW9uLCAkaGVhZGVyLWNvbG9yOiB3aGl0ZSwgJGZvb3Rlci1jb2xvcjogd2hpdGUpIHtcbiAgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItY29sb3I7XG4gICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9XG4gIHRyIHtcbiAgICAmLm9kZCwgJjpudGgtY2hpbGQoMm4rMSkge1xuICAgICAgdGQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2RkLXJvdy1jb2xvcjtcbiAgICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfSB9XG4gIHRyLmV2ZW4ge1xuICAgIHRkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVuLXJvdy1jb2xvcjtcbiAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW4tcm93LWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfVxuICB0Zm9vdCB7XG4gICAgdGgsIHRkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItY29sb3I7XG4gICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9IH1cbiIsCgkJIkBtaXhpbiBvdXRlci10YWJsZS1ib3JkZXJzKCR3aWR0aDogMnB4LCAkY29sb3I6IGJsYWNrKSB7XG4gIGJvcmRlcjogJHdpZHRoIHNvbGlkICRjb2xvcjtcbiAgdGhlYWQge1xuICAgIHRoIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkY29sb3I7IH0gfVxuICB0Zm9vdCB7XG4gICAgdGgsIHRkIHtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkY29sb3I7IH0gfVxuICB0aCB7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkY29sb3I7IH0gfSB9XG5cbkBtaXhpbiBpbm5lci10YWJsZS1ib3JkZXJzKCR3aWR0aDogMnB4LCAkY29sb3I6IGJsYWNrKSB7XG4gIHRoLCB0ZCB7XG4gICAgYm9yZGVyOiB7XG4gICAgICByaWdodDogJHdpZHRoIHNvbGlkICRjb2xvcjtcbiAgICAgIGJvdHRvbTogJHdpZHRoIHNvbGlkICRjb2xvcjtcbiAgICAgIGxlZnQtd2lkdGg6IDBweDtcbiAgICAgIHRvcC13aWR0aDogMHB4OyB9XG4gICAgJjpsYXN0LWNoaWxkLFxuICAgICYubGFzdCB7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDBweDsgfSB9XG4gIC8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbiAgLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4gIHRib2R5LCB0Zm9vdCB7XG4gICAgdHI6bGFzdC1jaGlsZCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfVxuICAgIHRyLmxhc3Qge1xuICAgICAgdGgsIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4OyB9IH0gfSB9XG4iLAoJCSJAbWl4aW4gdGFibGUtc2NhZmZvbGRpbmcge1xuICB0aCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gIHRkLFxuICB0aCB7XG4gICAgcGFkZGluZzogMnB4O1xuICAgICYubnVtZXJpYyB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDsgfSB9IH1cbiIsCgkJIkBpbXBvcnQgXCJsaW5rcy9ob3Zlci1saW5rXCI7XG5AaW1wb3J0IFwibGlua3MvbGluay1jb2xvcnNcIjtcbkBpbXBvcnQgXCJsaW5rcy91bnN0eWxlZC1saW5rXCI7XG4iLAoJCSIvLyBhIGxpbmsgdGhhdCBvbmx5IGhhcyBhbiB1bmRlcmxpbmUgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdFxuQG1peGluIGhvdmVyLWxpbmsge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IH1cbiIsCgkJIi8vIFNldCBhbGwgdGhlIGNvbG9ycyBmb3IgYSBsaW5rIHdpdGggb25lIG1peGluIGNhbGwuXG4vLyBPcmRlciBvZiBhcmd1bWVudHMgaXM6XG4vL1xuLy8gMS4gbm9ybWFsXG4vLyAyLiBob3ZlclxuLy8gMy4gYWN0aXZlXG4vLyA0LiB2aXNpdGVkXG4vLyA1LiBmb2N1c1xuLy9cbi8vIFRob3NlIHN0YXRlcyBub3Qgc3BlY2lmaWVkIHdpbGwgaW5oZXJpdC5cbi8vIE1peGluIHRvIGFuIGFuY2hvciBsaW5rIGxpa2Ugc286XG4vLyAgICAgYVxuLy8gICAgICAgK2xpbmstY29sb3JzKCMwMGMsICMwY2MsICNjMGMsICNjY2MsICNjYzApXG5cbkBtaXhpbiBsaW5rLWNvbG9ycygkbm9ybWFsLCAkaG92ZXI6IGZhbHNlLCAkYWN0aXZlOiBmYWxzZSwgJHZpc2l0ZWQ6IGZhbHNlLCAkZm9jdXM6IGZhbHNlKSB7XG4gIGNvbG9yOiAkbm9ybWFsO1xuICBAaWYgJHZpc2l0ZWQge1xuICAgICY6dmlzaXRlZCB7XG4gICAgICBjb2xvcjogJHZpc2l0ZWQ7IH0gfVxuICBAaWYgJGZvY3VzIHtcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkZm9jdXM7IH0gfVxuICBAaWYgJGhvdmVyIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkaG92ZXI7IH0gfVxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjphY3RpdmUge1xuICAgICAgY29sb3I6ICRhY3RpdmU7IH0gfSB9XG4iLAoJCSIvLyBBIGxpbmsgdGhhdCBsb29rcyBhbmQgYWN0cyBsaWtlIHRoZSB0ZXh0IGl0IGlzIGNvbnRhaW5lZCB3aXRoaW5cbkBtaXhpbiB1bnN0eWxlZC1saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgY3Vyc29yOiBpbmhlcml0O1xuICAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwibGlzdHMvaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtYmxvY2stbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2J1bGxldHNcIjtcbiIsCgkJIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7XG4gICAgICBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwKCQkiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiLy8gbWFrZXMgYSBsaXN0IGlubGluZS5cblxuQG1peGluIGlubGluZS1saXN0IHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAmLCAmIGxpIHtcbiAgICBtYXJnaW46IDBweDtcbiAgICBwYWRkaW5nOiAwcHg7XG4gICAgZGlzcGxheTogaW5saW5lOyB9IH1cblxuLy8gbWFrZXMgYW4gaW5saW5lIGxpc3QgZGVsaW1pdGVkIHdpdGggdGhlIHBhc3NlZCBzdHJpbmcuXG4vLyBEZWZhdWx0cyB0byBtYWtpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC5cbi8vXG4vLyBQbGVhc2UgbWFrZSBub3RlIG9mIHRoZSBicm93c2VyIHN1cHBvcnQgaXNzdWVzIGJlZm9yZSB1c2luZyB0aGlzIG1peGluOlxuLy9cbi8vIHVzZSBvZiBgY29udGVudGAgYW5kIGA6YWZ0ZXJgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQgaW4gYWxsIGJyb3dzZXJzLlxuLy8gU2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDE1KVxuLy9cbi8vIGA6bGFzdC1jaGlsZGAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZC5cbi8vIHNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSkuXG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG5cbkBtaXhpbiBkZWxpbWl0ZWQtbGlzdCgkc2VwYXJhdG9yOiBcIiwgXCIpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWxpc3Q7XG4gIGxpIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRzZXBhcmF0b3I7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7IH0gfVxuICAgICYubGFzdCB7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjsgfSB9IH0gfVxuXG4vLyBTZWUgW2RlbGltaXRlZC1saXN0XSgjbWl4aW4tZGVsaW1pdGVkLWxpc3QpXG4vLyBAZGVwcmVjYXRlZFxuQG1peGluIGNvbW1hLWRlbGltaXRlZC1saXN0IHtcbiAgQHdhcm4gXCJjb21tYS1kZWxpbWl0ZWQtbGlzdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGRlbGltaXRlZC1saXN0IGluc3RlYWQuXCI7XG4gIEBpbmNsdWRlIGRlbGltaXRlZC1saXN0OyB9XG4iLAoJCSIvLyBJbmxpbmUtQmxvY2sgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW1wb3J0IGlubGluZS1ibG9jay1saXN0O1xuLy8gICAgIH1cbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyYCBvbiB5b3VyIHVsL29sIGFuZFxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW1gIG9uIHlvdXIgbGkuIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nXG4vLyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuLy8gICAgICAgPiBsaSB7XG4vLyAgICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW07XG4vLyAgICAgICB9XG4vLyAgICAgfVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcImhvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5AaW1wb3J0IFwiLi4vLi4vY3NzMy9pbmxpbmUtYmxvY2tcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhbiBpbmxpbmUtYmxvY2sgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgaW5saW5lLWJsb2NrIGFuZCB3b24ndCB3cmFwLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0KCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3Qge1xuICAgICAgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3Qge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsCgkJIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrOyB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7IH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcInRleHQvZWxsaXBzaXNcIjtcbkBpbXBvcnQgXCJ0ZXh0L25vd3JhcFwiO1xuQGltcG9ydCBcInRleHQvcmVwbGFjZW1lbnRcIjtcbkBpbXBvcnQgXCJ0ZXh0L2ZvcmNlLXdyYXBcIjtcbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9jc3MzL3NoYXJlZFwiO1xuXG4vLyBUbyBnZXQgZnVsbCBmaXJlZm94IHN1cHBvcnQsIHlvdSBtdXN0IGluc3RhbGwgdGhlIGVsbGlwc2lzIHBhdHRlcm46XG4vL1xuLy8gICAgIGNvbXBhc3MgaW5zdGFsbCBjb21wYXNzL2VsbGlwc2lzXG4kdXNlLW1vemlsbGEtZWxsaXBzaXMtYmluZGluZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoaXMgdGVjaG5pcXVlLCBieSBbSnVzdGluIE1heHdlbGxdKGh0dHA6Ly9jb2RlNDA0LmNvbS8pLCB3YXMgb3JpZ2luYWxseVxuLy8gcHVibGlzaGVkIFtoZXJlXShodHRwOi8vbWF0dHNuaWRlci5jb20vY3NzL2Nzcy1zdHJpbmctdHJ1bmNhdGlvbi13aXRoLWVsbGlwc2lzLykuXG4vLyBGaXJlZm94IGltcGxlbWVudGF0aW9uIGJ5IFtSaWtrZXJ0IEtvcHBlc10oaHR0cDovL3d3dy5yaWtrZXJ0a29wcGVzLmNvbS90aG91Z2h0cy8yMDA4LzYvKS5cbkBtaXhpbiBlbGxpcHNpcygkbm8td3JhcDogdHJ1ZSkge1xuICBAaWYgJG5vLXdyYXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRleHQtb3ZlcmZsb3csIGVsbGlwc2lzLCBub3QgLW1veiwgbm90IC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFdoZW4gcmVtZW1iZXJpbmcgd2hldGhlciBvciBub3QgdGhlcmUncyBhIGh5cGhlbiBpbiB3aGl0ZS1zcGFjZSBpcyB0b28gaGFyZFxuQG1peGluIG5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiIsCgkJIi8vIEluZGljYXRlcyB0aGUgZGlyZWN0aW9uIHlvdSBwcmVmZXIgdG8gbW92ZSB5b3VyIHRleHRcbi8vIHdoZW4gaGlkaW5nIGl0LlxuLy9cbi8vIGBsZWZ0YCBpcyBtb3JlIHJvYnVzdCwgZXNwZWNpYWxseSBpbiBvbGRlciBicm93c2Vycy5cbi8vIGByaWdodGAgc2VlbXMgaGF2ZSBiZXR0ZXIgcnVudGltZSBwZXJmb3JtYW5jZS5cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiBsZWZ0ICFkZWZhdWx0O1xuXG4vLyBIaWRlcyBodG1sIHRleHQgYW5kIHJlcGxhY2VzIGl0IHdpdGggYW4gaW1hZ2UuXG4vLyBJZiB5b3UgdXNlIHRoaXMgb24gYW4gaW5saW5lIGVsZW1lbnQsIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBkaXNwbGF5IHRvIGJsb2NrIG9yIGlubGluZS1ibG9jay5cbi8vIEFsc28sIGlmIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBkaWZmZXJzIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZm9udCBzaXplLCB5b3UnbGwgbmVlZCB0byBzZXQgdGhlIHdpZHRoIGFuZC9vciBoZWlnaHQuXG4vL1xuLy8gUGFyYW1ldGVyczpcbi8vXG4vLyAqIGBpbWdgIC0tIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHByb2plY3QgaW1hZ2UgZGlyZWN0b3J5IHRvIHRoZSBpbWFnZSwgb3IgYSB1cmwgbGl0ZXJhbC5cbi8vICogYHhgIC0tIHRoZSB4IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuLy8gKiBgeWAgLS0gdGhlIHkgcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG5AbWl4aW4gcmVwbGFjZS10ZXh0KCRpbWcsICR4OiA1MCUsICR5OiA1MCUpIHtcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgQGlmIGlzLXVybCgkaW1nKSB7XG4gICAgICBpbWFnZTogdXJsKCRpbWcpOyB9XG4gICAgQGVsc2Uge1xuICAgICAgaW1hZ2U6IGltYWdlLXVybCgkaW1nKTsgfVxuICAgIHJlcGVhdDogbm8tcmVwZWF0O1xuICAgIHBvc2l0aW9uOiAkeCAkeTsgfSB9XG5cbi8vIExpa2UgdGhlIGByZXBsYWNlLXRleHRgIG1peGluLCBidXQgYWxzbyBzZXRzIHRoZSB3aWR0aFxuLy8gYW5kIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhY2NvcmRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlLlxuLy9cbi8vIElmIHlvdSBzZXQgYCRpbmxpbmVgIHRvIHRydWUsIHRoZW4gYW4gaW5saW5lIGltYWdlIChkYXRhIHVyaSkgd2lsbCBiZSB1c2VkLlxuQG1peGluIHJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJGltZywgJHg6IDUwJSwgJHk6IDUwJSwgJGlubGluZTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmVwbGFjZS10ZXh0KGlmKCRpbmxpbmUsIGlubGluZS1pbWFnZSgkaW1nKSwgJGltZyksICR4LCAkeSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aCgkaW1nKTtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGltZyk7IH1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IHNvIHlvdSBjYW4gc2VlIHRoZSBiYWNrZ3JvdW5kLlxuLy9cbi8vIFRoZSBkaXJlY3Rpb24gaW5kaWNhdGVzIGhvdyB0aGUgdGV4dCBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIHZpZXcuXG4vL1xuLy8gU2VlIGAkaGlkZS10ZXh0LWRpcmVjdGlvbmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIHNldCB0aGlzIGdsb2JhbGx5XG4vLyBmb3IgeW91ciBhcHBsaWNhdGlvbi5cbkBtaXhpbiBoaWRlLXRleHQoJGRpcmVjdGlvbjogJGhpZGUtdGV4dC1kaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJGFwcHJveGltYXRlLWVtLXZhbHVlOiAxMnB4O1xuICAgICR3aWRlci10aGFuLWFueS1zY3JlZW46IC05OTk5O1xuICAgIHRleHQtaW5kZW50OiAkd2lkZXItdGhhbi1hbnktc2NyZWVuICogJGFwcHJveGltYXRlLWVtLXZhbHVlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICBAZWxzZSB7XG4gICAgLy8gc2xpZ2h0bHkgd2lkZXIgdGhhbiB0aGUgYm94IHByZXZlbnRzIGlzc3VlcyB3aXRoIGlubGluZS1ibG9jayBlbGVtZW50c1xuICAgIHRleHQtaW5kZW50OiAxMTAlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfSB9XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBieSBzcXVpc2hpbmcgdGhlIHRleHQgaW50byBvYmxpdmlvbi5cbi8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGhpZGUgdGV4dCBjb250YWluZWQgaW4gYW4gaW5saW5lIGVsZW1lbnRcbi8vIGJ1dCBzdGlsbCBoYXZlIGl0IHJlYWQgYnkgYSBzY3JlZW4gcmVhZGVyLlxuQG1peGluIHNxdWlzaC10ZXh0IHtcbiAgZm9udDogMC8wIHNlcmlmO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6IHRyYW5zcGFyZW50OyB9XG4iLAoJCSIvLyBQcmV2ZW50IGxvbmcgdXJscyBhbmQgdGV4dCBmcm9tIGJyZWFraW5nIGxheW91dHNcbi8vIFtvcmlnaW5hbGx5IGZyb20gcGVyaXNoYWJsZXByZXNzLmNvbV0oaHR0cDovL3BlcmlzaGFibGVwcmVzcy5jb20vcHJlc3MvMjAxMC8wNi8wMS93cmFwcGluZy1jb250ZW50LylcbkBtaXhpbiBmb3JjZS13cmFwIHtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgLy8gQ1NTIDIuMFxuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIC8vIENTUyAyLjFcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xuICAvLyBDU1MgMy4wXG4gIHdoaXRlLXNwYWNlOiAtcHJlLXdyYXA7XG4gIC8vIE9wZXJhIDQtNlxuICB3aGl0ZS1zcGFjZTogLW8tcHJlLXdyYXA7XG4gIC8vIE9wZXJhIDdcbiAgd2hpdGUtc3BhY2U6IC1tb3otcHJlLXdyYXA7XG4gIC8vIE1vemlsbGFcbiAgd2hpdGUtc3BhY2U6IC1ocC1wcmUtd3JhcDtcbiAgLy8gSFAgUHJpbnRlcnNcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuIH0gIC8vIElFIDUrXG4iLAoJCSJAaW1wb3J0IFwidHlwb2dyYXBoeS9saW5rc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlzdHNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3RleHRcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3ZlcnRpY2FsX3JoeXRobVwiO1xuIiwKCQkiQGltcG9ydCBcImxpbmtzL2hvdmVyLWxpbmtcIjtcbkBpbXBvcnQgXCJsaW5rcy9saW5rLWNvbG9yc1wiO1xuQGltcG9ydCBcImxpbmtzL3Vuc3R5bGVkLWxpbmtcIjtcbiIsCgkJIi8vIGEgbGluayB0aGF0IG9ubHkgaGFzIGFuIHVuZGVybGluZSB3aGVuIHlvdSBob3ZlciBvdmVyIGl0XG5AbWl4aW4gaG92ZXItbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuIiwKCQkiLy8gU2V0IGFsbCB0aGUgY29sb3JzIGZvciBhIGxpbmsgd2l0aCBvbmUgbWl4aW4gY2FsbC5cbi8vIE9yZGVyIG9mIGFyZ3VtZW50cyBpczpcbi8vXG4vLyAxLiBub3JtYWxcbi8vIDIuIGhvdmVyXG4vLyAzLiBhY3RpdmVcbi8vIDQuIHZpc2l0ZWRcbi8vIDUuIGZvY3VzXG4vL1xuLy8gVGhvc2Ugc3RhdGVzIG5vdCBzcGVjaWZpZWQgd2lsbCBpbmhlcml0LlxuLy8gTWl4aW4gdG8gYW4gYW5jaG9yIGxpbmsgbGlrZSBzbzpcbi8vICAgICBhXG4vLyAgICAgICArbGluay1jb2xvcnMoIzAwYywgIzBjYywgI2MwYywgI2NjYywgI2NjMClcblxuQG1peGluIGxpbmstY29sb3JzKCRub3JtYWwsICRob3ZlcjogZmFsc2UsICRhY3RpdmU6IGZhbHNlLCAkdmlzaXRlZDogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgY29sb3I6ICRub3JtYWw7XG4gIEBpZiAkdmlzaXRlZCB7XG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAkdmlzaXRlZDsgfSB9XG4gIEBpZiAkZm9jdXMge1xuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRmb2N1czsgfSB9XG4gIEBpZiAkaG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRob3ZlcjsgfSB9XG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGFjdGl2ZTsgfSB9IH1cbiIsCgkJIi8vIEEgbGluayB0aGF0IGxvb2tzIGFuZCBhY3RzIGxpa2UgdGhlIHRleHQgaXQgaXMgY29udGFpbmVkIHdpdGhpblxuQG1peGluIHVuc3R5bGVkLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJsaXN0cy9ob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1ibG9jay1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvYnVsbGV0c1wiO1xuIiwKCQkiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBtYWtlcyBhIGxpc3QgaW5saW5lLlxuXG5AbWl4aW4gaW5saW5lLWxpc3Qge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICYsICYgbGkge1xuICAgIG1hcmdpbjogMHB4O1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJHNlcGFyYXRvcjsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjsgfSB9XG4gICAgJi5sYXN0IHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiOyB9IH0gfSB9XG5cbi8vIFNlZSBbZGVsaW1pdGVkLWxpc3RdKCNtaXhpbi1kZWxpbWl0ZWQtbGlzdClcbi8vIEBkZXByZWNhdGVkXG5AbWl4aW4gY29tbWEtZGVsaW1pdGVkLWxpc3Qge1xuICBAd2FybiBcImNvbW1hLWRlbGltaXRlZC1saXN0IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZGVsaW1pdGVkLWxpc3QgaW5zdGVhZC5cIjtcbiAgQGluY2x1ZGUgZGVsaW1pdGVkLWxpc3Q7IH1cbiIsCgkJIi8vIElubGluZS1CbG9jayBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbXBvcnQgaW5saW5lLWJsb2NrLWxpc3Q7XG4vLyAgICAgfVxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXJgIG9uIHlvdXIgdWwvb2wgYW5kXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbWAgb24geW91ciBsaS4gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmdcbi8vIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4vLyAgICAgICA+IGxpIHtcbi8vICAgICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbTtcbi8vICAgICAgIH1cbi8vICAgICB9XG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCIuLi8uLi9jc3MzL2lubGluZS1ibG9ja1wiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGFuIGlubGluZS1ibG9jayBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7XG4gICAgICBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwKCQkiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7IH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDsgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwidGV4dC9lbGxpcHNpc1wiO1xuQGltcG9ydCBcInRleHQvbm93cmFwXCI7XG5AaW1wb3J0IFwidGV4dC9yZXBsYWNlbWVudFwiO1xuQGltcG9ydCBcInRleHQvZm9yY2Utd3JhcFwiO1xuIiwKCQkiQGltcG9ydCBcIi4uLy4uL2NzczMvc2hhcmVkXCI7XG5cbi8vIFRvIGdldCBmdWxsIGZpcmVmb3ggc3VwcG9ydCwgeW91IG11c3QgaW5zdGFsbCB0aGUgZWxsaXBzaXMgcGF0dGVybjpcbi8vXG4vLyAgICAgY29tcGFzcyBpbnN0YWxsIGNvbXBhc3MvZWxsaXBzaXNcbiR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhpcyB0ZWNobmlxdWUsIGJ5IFtKdXN0aW4gTWF4d2VsbF0oaHR0cDovL2NvZGU0MDQuY29tLyksIHdhcyBvcmlnaW5hbGx5XG4vLyBwdWJsaXNoZWQgW2hlcmVdKGh0dHA6Ly9tYXR0c25pZGVyLmNvbS9jc3MvY3NzLXN0cmluZy10cnVuY2F0aW9uLXdpdGgtZWxsaXBzaXMvKS5cbi8vIEZpcmVmb3ggaW1wbGVtZW50YXRpb24gYnkgW1Jpa2tlcnQgS29wcGVzXShodHRwOi8vd3d3LnJpa2tlcnRrb3BwZXMuY29tL3Rob3VnaHRzLzIwMDgvNi8pLlxuQG1peGluIGVsbGlwc2lzKCRuby13cmFwOiB0cnVlKSB7XG4gIEBpZiAkbm8td3JhcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCAkdXNlLW1vemlsbGEtZWxsaXBzaXMtYmluZGluZyB7XG4gICAgLW1vei1iaW5kaW5nOiBzdHlsZXNoZWV0LXVybCh1bnF1b3RlKFwieG1sL2VsbGlwc2lzLnhtbCNlbGxpcHNpc1wiKSk7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwKCQkiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7IH1cbiAgICBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpOyB9XG4gICAgcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgcG9zaXRpb246ICR4ICR5OyB9IH1cblxuLy8gTGlrZSB0aGUgYHJlcGxhY2UtdGV4dGAgbWl4aW4sIGJ1dCBhbHNvIHNldHMgdGhlIHdpZHRoXG4vLyBhbmQgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IGFjY29yZGluZyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UuXG4vL1xuLy8gSWYgeW91IHNldCBgJGlubGluZWAgdG8gdHJ1ZSwgdGhlbiBhbiBpbmxpbmUgaW1hZ2UgKGRhdGEgdXJpKSB3aWxsIGJlIHVzZWQuXG5AbWl4aW4gcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucygkaW1nLCAkeDogNTAlLCAkeTogNTAlLCAkaW5saW5lOiBmYWxzZSkge1xuICBAaW5jbHVkZSByZXBsYWNlLXRleHQoaWYoJGlubGluZSwgaW5saW5lLWltYWdlKCRpbWcpLCAkaW1nKSwgJHgsICR5KTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKCRpbWcpO1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodCgkaW1nKTsgfVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgc28geW91IGNhbiBzZWUgdGhlIGJhY2tncm91bmQuXG4vL1xuLy8gVGhlIGRpcmVjdGlvbiBpbmRpY2F0ZXMgaG93IHRoZSB0ZXh0IHNob3VsZCBiZSBtb3ZlZCBvdXQgb2Ygdmlldy5cbi8vXG4vLyBTZWUgYCRoaWRlLXRleHQtZGlyZWN0aW9uYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgdG8gc2V0IHRoaXMgZ2xvYmFsbHlcbi8vIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuQG1peGluIGhpZGUtdGV4dCgkZGlyZWN0aW9uOiAkaGlkZS10ZXh0LWRpcmVjdGlvbikge1xuICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAkYXBwcm94aW1hdGUtZW0tdmFsdWU6IDEycHg7XG4gICAgJHdpZGVyLXRoYW4tYW55LXNjcmVlbjogLTk5OTk7XG4gICAgdGV4dC1pbmRlbnQ6ICR3aWRlci10aGFuLWFueS1zY3JlZW4gKiAkYXBwcm94aW1hdGUtZW0tdmFsdWU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gIEBlbHNlIHtcbiAgICAvLyBzbGlnaHRseSB3aWRlciB0aGFuIHRoZSBib3ggcHJldmVudHMgaXNzdWVzIHdpdGggaW5saW5lLWJsb2NrIGVsZW1lbnRzXG4gICAgdGV4dC1pbmRlbnQ6IDExMCU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9IH1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiIsCgkJIi8vIFByZXZlbnQgbG9uZyB1cmxzIGFuZCB0ZXh0IGZyb20gYnJlYWtpbmcgbGF5b3V0c1xuLy8gW29yaWdpbmFsbHkgZnJvbSBwZXJpc2hhYmxlcHJlc3MuY29tXShodHRwOi8vcGVyaXNoYWJsZXByZXNzLmNvbS9wcmVzcy8yMDEwLzA2LzAxL3dyYXBwaW5nLWNvbnRlbnQvKVxuQG1peGluIGZvcmNlLXdyYXAge1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICAvLyBDU1MgMi4wXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgLy8gQ1NTIDIuMVxuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG4gIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDtcbiAgLy8gT3BlcmEgNC02XG4gIHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDtcbiAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDtcbiAgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwO1xuICAvLyBIUCBQcmludGVyc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gfSAgLy8gSUUgNStcbiIsCgkJIkBpbXBvcnQgXCIuLi9sYXlvdXQvZ3JpZC1iYWNrZ3JvdW5kXCI7XG5cbi8vIFRoZSBiYXNlIGZvbnQgc2l6ZS5cbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8gVGhlIGJhc2UgbGluZSBoZWlnaHQgZGV0ZXJtaW5lcyB0aGUgYmFzaWMgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0uXG4kYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBkZWZhdWx0IGJvcmRlciBzdHlsZSBmb3Igcmh5dGhtIGJvcmRlcnMuXG4kZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlOiBzb2xpZCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiRicm93c2VyLWRlZmF1bHQtZm9udC1zaXplOiAxNnB4O1xuXG4vLyBTZXQgdG8gZmFsc2UgaWYgeW91IHdhbnQgdG8gdXNlIGFic29sdXRlIHBpeGVscyBpbiBzaXppbmcgeW91ciB0eXBvZ3JhcGh5LlxuJHJlbGF0aXZlLWZvbnQtc2l6aW5nOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBBbGxvd3MgdGhlIGBhZGp1c3QtZm9udC1zaXplLXRvYCBtaXhpbiBhbmQgdGhlIGBsaW5lcy1mb3ItZm9udC1zaXplYCBmdW5jdGlvblxuLy8gdG8gcm91bmQgdGhlIGxpbmUgaGVpZ2h0IHRvIHRoZSBuZWFyZXN0IGhhbGYgbGluZSBoZWlnaHQgaW5zdGVhZCBvZiB0aGVcbi8vIG5lYXJlc3QgaW50ZWdyYWwgbGluZSBoZWlnaHQgdG8gYXZvaWQgbGFyZ2Ugc3BhY2luZyBiZXR3ZWVuIGxpbmVzLlxuJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRW5zdXJlIHRoZXJlIGlzIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhlbHNcbi8vIG9mIHZlcnRpY2FsIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSB0ZXh0LlxuJG1pbi1saW5lLXBhZGRpbmc6IDJweCAhZGVmYXVsdDtcblxuLy8gJGJhc2UtZm9udC1zaXplIGJ1dCBpbiB5b3VyIG91dHB1dCB1bml0IG9mIGNob2ljZS5cbi8vIERlZmF1bHRzIHRvIDFlbSB3aGVuIGAkcmVsYXRpdmUtZm9udC1zaXppbmdgIGlzIHRydWUuXG4kZm9udC11bml0OiBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsIDFlbSwgJGJhc2UtZm9udC1zaXplKSAhZGVmYXVsdDtcblxuLy8gVGhlIGJhc2ljIHVuaXQgb2YgZm9udCByaHl0aG0uXG4kYmFzZS1yaHl0aG0tdW5pdDogJGJhc2UtbGluZS1oZWlnaHQgLyAkYmFzZS1mb250LXNpemUgKiAkZm9udC11bml0O1xuXG4vLyBUaGUgbGVhZGVyIGlzIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBpbiBhIGxpbmUuXG4vLyBJdCBtaWdodCBiZSB1c2VmdWwgaW4geW91ciBjYWxjdWxhdGlvbnMuXG4kYmFzZS1sZWFkZXI6ICgkYmFzZS1saW5lLWhlaWdodCAtICRiYXNlLWZvbnQtc2l6ZSkgKiAkZm9udC11bml0IC8gJGJhc2UtZm9udC1zaXplO1xuXG4vLyBUaGUgaGFsZi1sZWFkZXIgaXMgdGhlIGFtb3VudCBvZiB3aGl0ZXNwYWNlIGFib3ZlIGFuZCBiZWxvdyBhIGxpbmUuXG4vLyBJdCBtaWdodCBiZSB1c2VmdWwgaW4geW91ciBjYWxjdWxhdGlvbnMuXG4kYmFzZS1oYWxmLWxlYWRlcjogJGJhc2UtbGVhZGVyIC8gMjtcblxuLy8gVHJ1ZSBpZiBhIG51bWJlciBoYXMgYSByZWxhdGl2ZSB1bml0LlxuQGZ1bmN0aW9uIHJlbGF0aXZlLXVuaXQoJG51bWJlcikge1xuICBAcmV0dXJuIHVuaXQoJG51bWJlcikgPT0gXCIlXCIgb3IgdW5pdCgkbnVtYmVyKSA9PSBcImVtXCIgb3IgdW5pdCgkbnVtYmVyKSA9PSBcInJlbVwiOyB9XG5cbi8vIFRydWUgaWYgYSBudW1iZXIgaGFzIGFuIGFic29sdXRlIHVuaXQuXG5AZnVuY3Rpb24gYWJzb2x1dGUtdW5pdCgkbnVtYmVyKSB7XG4gIEByZXR1cm4gbm90IChyZWxhdGl2ZS11bml0KCRudW1iZXIpIG9yIHVuaXRsZXNzKCRudW1iZXIpKTsgfVxuXG5AaWYgJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGFuZCBub3QgcmVsYXRpdmUtdW5pdCgkZm9udC11bml0KSB7XG4gIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIHRydWUgYnV0ICRmb250LXVuaXQgaXMgc2V0IHRvICN7JGZvbnQtdW5pdH0gd2hpY2ggaXMgbm90IGEgcmVsYXRpdmUgdW5pdC5cIjsgfVxuXG4vLyBFc3RhYmxpc2hlcyBhIGZvbnQgYmFzZWxpbmUgZm9yIHRoZSBnaXZlbiBmb250LXNpemUuXG5AbWl4aW4gZXN0YWJsaXNoLWJhc2VsaW5lKCRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICAvLyBJRSA2IHJlZnVzZXMgdG8gcmVzaXplIGZvbnRzIHNldCBpbiBwaXhlbHMgYW5kIGl0IHdlaXJkbHkgcmVzaXplcyBmb250c1xuICAvLyB3aG9zZSByb290IGlzIHNldCBpbiBlbXMuIFNvIHdlIHNldCB0aGUgcm9vdCBmb250IHNpemUgaW4gcGVyY2VudGFnZXMgb2ZcbiAgLy8gdGhlIGRlZmF1bHQgZm9udCBzaXplLlxuICAqIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTAwJSAqICRmb250LXNpemUgLyAkYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTsgfVxuICBodG1sIHtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkZm9udC1zaXplLCAkYmFzZS1mb250LXNpemUpKTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgbGluZS1oZWlnaHQgdG8gMSB2ZXJ0aWNhbCByaHl0aG0gdW5pdC5cbi8vIERvZXMgbm90IHdvcmsgb24gZWxlbWVudHMgd2hvc2UgZm9udC1zaXplIGlzIGRpZmZlcmVudCBmcm9tICRiYXNlLWZvbnQtc2l6ZS5cbi8vXG4vLyBAZGVwcmVjYXRlZCBUaGlzIG1peGluIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLlxuLy8gUGxlYXNlIHVzZSB0aGUgYGFkanVzdC1sZWFkaW5nLXRvYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIHJlc2V0LWJhc2VsaW5lIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkYmFzZS1mb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpOyB9XG5cbi8vIFNob3cgYSBiYWNrZ3JvdW5kIGltYWdlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVidWcgeW91ciBhbGlnbm1lbnRzLlxuLy8gSW5jbHVkZSB0aGUgJGltZyBhcmd1bWVudCBpZiB5b3Ugd291bGQgcmF0aGVyIHVzZSB5b3VyIG93biBpbWFnZSB0aGFuIHRoZVxuLy8gQ29tcGFzcyBkZWZhdWx0IGdyYWRpZW50IGltYWdlLlxuQG1peGluIGRlYnVnLXZlcnRpY2FsLWFsaWdubWVudCgkaW1nOiBmYWxzZSkge1xuICBAaWYgJGltZyB7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRpbWcpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYXNlbGluZS1ncmlkLWJhY2tncm91bmQoJGJhc2Utcmh5dGhtLXVuaXQpOyB9IH1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBhIGRpZmZlcmVudCBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IHRvIG1haW50YWluIHRoZVxuLy8gcmh5dGhtLiAkbGluZXMgc3BlY2lmaWVzIGhvdyBtYW55IG11bHRpcGxlcyBvZiB0aGUgYmFzZWxpbmUgcmh5dGhtIGVhY2ggbGluZVxuLy8gb2YgdGhpcyBmb250IHNob3VsZCB1c2UgdXAuIEl0IGRvZXMgbm90IGhhdmUgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0XG4vLyBkZWZhdWx0cyB0byB0aGUgc21hbGxlc3QgaW50ZWdlciB0aGF0IGlzIGxhcmdlIGVub3VnaCB0byBmaXQgdGhlIGZvbnQuXG4vLyBVc2UgJGZyb20tc2l6ZSB0byBhZGp1c3QgZnJvbSBhIGZvbnQtc2l6ZSBvdGhlciB0aGFuIHRoZSBiYXNlIGZvbnQtc2l6ZS5cbkBtaXhpbiBhZGp1c3QtZm9udC1zaXplLXRvKCR0by1zaXplLCAkbGluZXM6IGxpbmVzLWZvci1mb250LXNpemUoJHRvLXNpemUpLCAkZnJvbS1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGlmIG5vdCAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kICRmcm9tLXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhZGp1c3QtZm9udC1zaXplLXRvXCI7IH1cbiAgZm9udC1zaXplOiAkZm9udC11bml0ICogJHRvLXNpemUgLyAkZnJvbS1zaXplO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHRvLXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpOyB9XG5cbi8vIEFkanVzdCBhIGJsb2NrIHRvIGhhdmUgZGlmZmVyZW50IGxpbmUgaGVpZ2h0IHRvIG1haW50YWluIHRoZSByaHl0aG0uXG4vLyAkbGluZXMgc3BlY2lmaWVzIGhvdyBtYW55IG11bHRpcGxlcyBvZiB0aGUgYmFzZWxpbmUgcmh5dGhtIGVhY2ggbGluZSBvZiB0aGlzXG4vLyBmb250IHNob3VsZCB1c2UgdXAuIEl0IGRvZXMgbm90IGhhdmUgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0IGRlZmF1bHRzIHRvIHRoZVxuLy8gc21hbGxlc3QgaW50ZWdlciB0aGF0IGlzIGxhcmdlIGVub3VnaCB0byBmaXQgdGhlIGZvbnQuXG5AbWl4aW4gYWRqdXN0LWxlYWRpbmctdG8oJGxpbmVzLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbGluZS1oZWlnaHQ6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIENhbGN1bGF0ZSByaHl0aG0gdW5pdHMuXG5AZnVuY3Rpb24gcmh5dGhtKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkb2Zmc2V0OiAwKSB7XG4gIEBpZiBub3QgJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gdGhlIHJoeXRobSBmdW5jdGlvblwiOyB9XG4gICRyaHl0aG06ICRmb250LXVuaXQgKiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkb2Zmc2V0KSAvICRmb250LXNpemU7XG4gIC8vIFJvdW5kIHRoZSBwaXhlbHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuXG4gIEBpZiB1bml0KCRyaHl0aG0pID09IHB4IHtcbiAgICAkcmh5dGhtOiBmbG9vcigkcmh5dGhtKTsgfVxuICBAcmV0dXJuICRyaHl0aG07IH1cblxuLy8gQ2FsY3VsYXRlIHRoZSBtaW5pbXVtIG11bHRpcGxlIG9mIHJoeXRobSB1bml0cyBuZWVkZWQgdG8gY29udGFpbiB0aGUgZm9udC1zaXplLlxuQGZ1bmN0aW9uIGxpbmVzLWZvci1mb250LXNpemUoJGZvbnQtc2l6ZSkge1xuICAkbGluZXM6IGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgY2VpbCgyICogJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KSAvIDIsIGNlaWwoJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KSk7XG4gIEBpZiAkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRmb250LXNpemUgPCAkbWluLWxpbmUtcGFkZGluZyAqIDIge1xuICAgICRsaW5lczogJGxpbmVzICsgaWYoJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lLCAwLjUsIDEpOyB9XG4gIEByZXR1cm4gJGxpbmVzOyB9XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gbGVhZGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkcHJvcGVydHk6IG1hcmdpbikge1xuICAjeyRwcm9wZXJ0eX0tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tbGVhZGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIG1hcmdpbi10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFRoZSAkcHJvcGVydHkgY2FuIGJlIG1hcmdpbiBvciBwYWRkaW5nLlxuQG1peGluIHRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgbWFyZ2luLlxuQG1peGluIG1hcmdpbi10cmFpbGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIG1hcmdpbi1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIFNob3J0aGFuZCBtaXhpbiB0byBhcHBseSB3aGl0ZXNwYWNlIGZvciB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIGFuZCBwYWRkaW5nLlxuQG1peGluIHJoeXRobSgkbGVhZGVyOiAwLCAkcGFkZGluZy1sZWFkZXI6IDAsICRwYWRkaW5nLXRyYWlsZXI6IDAsICR0cmFpbGVyOiAwLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgbGVhZGVyKCRsZWFkZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSBwYWRkaW5nLWxlYWRlcigkcGFkZGluZy1sZWFkZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSBwYWRkaW5nLXRyYWlsZXIoJHBhZGRpbmctdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHRyYWlsZXIoJHRyYWlsZXIsICRmb250LXNpemUpOyB9XG5cbi8vIEFwcGx5IGEgYm9yZGVyIGFuZCB3aGl0ZXNwYWNlIHRvIGFueSBzaWRlIHdpdGhvdXQgZGVzdHJveWluZyB0aGUgdmVydGljYWxcbi8vIHJoeXRobS4gVGhlIHdoaXRlc3BhY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuXG5AbWl4aW4gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKCRzaWRlLCAkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXJcIjsgfVxuICBib3JkZXItI3skc2lkZX0tc3R5bGU6ICRib3JkZXItc3R5bGU7XG4gIGJvcmRlci0jeyRzaWRlfS13aWR0aDogJGZvbnQtdW5pdCAqICR3aWR0aCAvICRmb250LXNpemU7XG4gIHBhZGRpbmctI3skc2lkZX06IHJoeXRobSgkbGluZXMsICRmb250LXNpemUsICRvZmZzZXQ6ICR3aWR0aCk7IH1cblxuLy8gQXBwbHkgYm9yZGVycyBhbmQgd2hpdGVzcGFjZSBlcXVhbGx5IHRvIGFsbCBzaWRlcy5cbkBtaXhpbiByaHl0aG0tYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byByaHl0aG0tYm9yZGVyc1wiOyB9XG4gIGJvcmRlcjoge1xuICAgIHN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICAgIHdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTsgfVxuICBwYWRkaW5nOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplLCAkb2Zmc2V0OiAkd2lkdGgpOyB9XG5cbi8vIEFwcGx5IGEgbGVhZGluZyBib3JkZXIuXG5AbWl4aW4gbGVhZGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcih0b3AsICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTsgfVxuXG4vLyBBcHBseSBhIHRyYWlsaW5nIGJvcmRlci5cbkBtaXhpbiB0cmFpbGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcihib3R0b20sICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTsgfVxuXG4vLyBBcHBseSBib3RoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJvcmRlcnMuXG5AbWl4aW4gaG9yaXpvbnRhbC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBsZWFkaW5nLWJvcmRlcigkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7XG4gIEBpbmNsdWRlIHRyYWlsaW5nLWJvcmRlcigkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7IH1cblxuLy8gQWxpYXMgZm9yIGBob3Jpem9udGFsLWJvcmRlcnNgIG1peGluLlxuQG1peGluIGgtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1ib3JkZXJzKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL2NzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiLi4vY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yOiByZ2JhKDEwMCwgMTAwLCAyMjUsIDAuMjUpICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgZ3V0dGVyc1xuJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMCkgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4geW91ciBncmlkXG4kZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnM6IDI0ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHdpZHRoIG9mIHlvdXIgY29sdW1uc1xuJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGg6IDMwcHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aDogMTBweCAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBvZmZzZXQsIGlmIHlvdXIgY29sdW1ucyBhcmUgcGFkZGVkIGluIGZyb20gdGhlIGNvbnRhaW5lciBlZGdlXG4kZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgYmFzZWxpbmVcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KSAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBoZWlnaHQgb2YgeW91ciBiYXNlbGluZSBncmlkXG4kZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodDogMS41ZW0gIWRlZmF1bHQ7XG5cbi8vIHRvZ2dsZSB5b3VyIGNvbHVtbnMgZ3JpZHMgb24gYW5kIG9mZlxuJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIHRvZ2dsZSB5b3VyIHZlcnRpY2FsIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIHRvZ2dsZSBhbGwgeW91ciBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1ncmlkLWJhY2tncm91bmRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBvcHRpb25hbGx5IGZvcmNlIHlvdXIgZ3JpZC1pbWFnZSB0byByZW1haW4gZmx1aWRcbi8vIG5vIG1hdHRlciB3aGF0IHVuaXRzIHlvdSB1c2VkIHRvIGRlY2xhcmVkIHlvdXIgZ3JpZC5cbiRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBDcmVhdGUgdGhlIGdyYWRpZW50IG5lZWRlZCBmb3IgYmFzZWxpbmUgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtYmFzZWxpbmUtZ3JhZGllbnQoJGNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yKSB7XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGNvbG9yIDUlLCByZ2JhKCRjb2xvciwgMCkgNSUpO1xuICBAcmV0dXJuICRncmFkaWVudDsgfVxuXG4vLyBDcmVhdGUgdGhlIGNvbG9yLXN0b3BzIG5lZWRlZCBmb3IgaG9yaXpvbnRhbCBncmlkc1xuQGZ1bmN0aW9uIGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWw6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucywgJGNvbHVtbjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsICRndXR0ZXI6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLCAkb2Zmc2V0OiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCwgJGNvbHVtbi1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3I6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yKSB7XG4gICRncmlkOiBjb21wYWN0KCk7XG4gICRncmlkOiBhcHBlbmQoJGdyaWQsICRndXR0ZXItY29sb3IgJG9mZnNldCwgY29tbWEpO1xuICBAZm9yICRpIGZyb20gMCB0byAkdG90YWwge1xuICAgIC8vICRhIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgY29sdW1uLCBpbml0aWFsbHkgZXF1YWwgdG8gdGhlIG9mZnNldFxuICAgICRhOiAkb2Zmc2V0O1xuICAgIEBpZiAkaSA+IDAge1xuICAgICAgJGE6ICRhICsgKCRjb2x1bW4gKyAkZ3V0dGVyKSAqICRpOyB9XG4gICAgLy8gJGcgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgdGhpcyBndXR0ZXIsIGVxdWFsIHRvICRhIHBsdXMgb25lIGNvbHVtbi13aWR0aFxuICAgICRnOiAkYSArICRjb2x1bW47XG4gICAgLy8gJHogcmVwcmVzZW50cyB0aGUgZW5kIG9mIGEgZ3V0dGVyLCBlcXVhbCB0byAkZyBwbHVzIG9uZSBndXR0ZXItd2lkdGhcbiAgICAkejogJGcgKyAkZ3V0dGVyO1xuICAgIEBpZiB1bml0KCRhKSA9PSBcIiVcIiBhbmQgJGkgPT0gJHRvdGFsIC0gMSB7XG4gICAgICAkejogMTAwJTsgfVxuICAgIC8vIGFuZCB3ZSBhZGQgdGhpcyBjb2x1bW4vZ3V0dGVyIHBhaXIgdG8gb3VyIGdyaWRcbiAgICAkZ3JpZDogam9pbigkZ3JpZCwgKCRjb2x1bW4tY29sb3IgJGEsICRjb2x1bW4tY29sb3IgJGcsICRndXR0ZXItY29sb3IgJGcsICRndXR0ZXItY29sb3IgJHopKTsgfVxuICBAcmV0dXJuICRncmlkOyB9XG5cbi8vIFJldHVybiB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBob3Jpem9udGFsIGdyaWRzXG5AZnVuY3Rpb24gZ2V0LWNvbHVtbi1ncmFkaWVudCgkdG90YWw6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucywgJGNvbHVtbjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsICRndXR0ZXI6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLCAkb2Zmc2V0OiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCwgJGNvbHVtbi1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3I6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQ6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWQpIHtcbiAgJGdyaWQ6IHVucXVvdGUoXCJcIik7XG4gIC8vIGRvbid0IGZvcmNlIGZsdWlkIGdyaWRzIHdoZW4gdGhleSBhcmUgYWxyZWFkeSBmbHVpZC5cbiAgQGlmIHVuaXQoJGNvbHVtbikgPT0gXCIlXCIge1xuICAgICRmb3JjZS1mbHVpZDogZmFsc2U7IH1cbiAgQGlmICRmb3JjZS1mbHVpZCB7XG4gICAgJGdyaWQ6IGdldC1jb2x1bW4tZmx1aWQtZ3JpZCgkdG90YWwsICRjb2x1bW4sICRndXR0ZXIsICRvZmZzZXQsICRjb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3IpOyB9XG4gIEBlbHNlIHtcbiAgICAkZ3JpZDogYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcik7IH1cbiAgLy8gcmV0dXJuIHRoZSBob3Jpem9udGFsIGdyaWQgYXMgYSBncmFkaWVudFxuICAkZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudChsZWZ0LCAkZ3JpZCk7XG4gIEByZXR1cm4gJGdyYWRpZW50OyB9XG5cbi8vIENvbnZlcnQgYSBncmlkIGZyb20gZml4ZWQgdW5pdHMgaW50byBwZXJjZW50YWdlcy5cbkBmdW5jdGlvbiBnZXQtY29sdW1uLWZsdWlkLWdyaWQoJHRvdGFsOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsICRjb2x1bW46ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLCAkZ3V0dGVyOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCwgJG9mZnNldDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsICRjb2x1bW4tY29sb3I6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcikge1xuICAkY29udGV4dDogJGNvbHVtbiAqICR0b3RhbCArICRndXR0ZXIgKiAoJHRvdGFsIC0gMSkgKyAkb2Zmc2V0ICogMjtcbiAgJG9mZnNldDogJG9mZnNldCAvICRjb250ZXh0ICogMTAwJTtcbiAgJGNvbHVtbjogJGNvbHVtbiAvICRjb250ZXh0ICogMTAwJTtcbiAgJGd1dHRlcjogJGd1dHRlciAvICRjb250ZXh0ICogMTAwJTtcbiAgLy8gcmV0dXJuIHRoZSBob3Jpem9udGFsIGdyaWQgYXMgYSBzZXQgb2YgY29sb3Itc3RvcHNcbiAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsICRjb2x1bW4sICRndXR0ZXIsICRvZmZzZXQsICRjb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3IpO1xuICBAcmV0dXJuICRncmlkOyB9XG5cbi8vIEFkZCBqdXN0IHRoZSBiYXNlbGluZSBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlbGluZTogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQsICRjb2xvcjogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcikge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShnZXQtYmFzZWxpbmUtZ3JhZGllbnQoJGNvbG9yKSk7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKDEwMCUgJGJhc2VsaW5lKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsgfSB9XG5cbi8vIEFkZCBqdXN0IHRoZSBob3Jpem9udGFsIGdyaWQgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLCAkY29sdW1uOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCwgJGd1dHRlcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsICRvZmZzZXQ6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LCAkY29sdW1uLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCkge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoZ2V0LWNvbHVtbi1ncmFkaWVudCgkdG90YWwsICRjb2x1bW4sICRndXR0ZXIsICRvZmZzZXQsICRjb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZCkpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOyB9IH1cblxuLy8gQWRkIGJvdGggaG9yaXpvbnRhbCBhbmQgYmFzZWxpbmUgZ3JpZHMgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBncmlkLWJhY2tncm91bmQoJHRvdGFsOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsICRjb2x1bW46ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLCAkZ3V0dGVyOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCwgJGJhc2VsaW5lOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCwgJG9mZnNldDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsICRjb2x1bW4tY29sb3I6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciwgJGJhc2VsaW5lLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAkZm9yY2UtZmx1aWQ6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWQpIHtcbiAgQGlmICRzaG93LWdyaWQtYmFja2dyb3VuZHMge1xuICAgIEBpZiAkc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1iYXNlbGluZS1ncmFkaWVudCgkYmFzZWxpbmUtY29sb3IpLCBnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKSk7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUsIGF1dG8pO1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBiYXNlbGluZS1ncmlkLWJhY2tncm91bmQoJGJhc2VsaW5lLCAkYmFzZWxpbmUtY29sb3IpO1xuICAgICAgQGluY2x1ZGUgY29sdW1uLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsICRjb2x1bW4sICRndXR0ZXIsICRvZmZzZXQsICRjb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZCk7IH0gfSB9XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yOiBmYWxzZSwgJGJhY2tncm91bmQtMzogZmFsc2UsICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLCAkYmFja2dyb3VuZC01OiBmYWxzZSwgJGJhY2tncm91bmQtNjogZmFsc2UsICRiYWNrZ3JvdW5kLTc6IGZhbHNlLCAkYmFja2dyb3VuZC04OiBmYWxzZSwgJGJhY2tncm91bmQtOTogZmFsc2UsICRiYWNrZ3JvdW5kLTEwOiBmYWxzZSkge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtbW96KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtbygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSBhbmQgJGFkZC1waWUtYmcge1xuICAgIC1waWUtYmFja2dyb3VuZDogLXBpZSgkYmFja2dyb3VuZHMpOyB9XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kczsgfVxuXG5AbWl4aW4gYmFja2dyb3VuZC13aXRoLWNzczItZmFsbGJhY2soJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMjogZmFsc2UsICRiYWNrZ3JvdW5kLTM6IGZhbHNlLCAkYmFja2dyb3VuZC00OiBmYWxzZSwgJGJhY2tncm91bmQtNTogZmFsc2UsICRiYWNrZ3JvdW5kLTY6IGZhbHNlLCAkYmFja2dyb3VuZC03OiBmYWxzZSwgJGJhY2tncm91bmQtODogZmFsc2UsICRiYWNrZ3JvdW5kLTk6IGZhbHNlLCAkYmFja2dyb3VuZC0xMDogZmFsc2UpIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRzaW1wbGUtYmFja2dyb3VuZDogaWYoJG11bHQtYmdzIG9yIHByZWZpeGVkKC1jc3MyLCAkYmFja2dyb3VuZHMpLCAtY3NzMigtY29tcGFzcy1udGgoJGJhY2tncm91bmRzLCBsYXN0KSksIGZhbHNlKTtcbiAgQGlmIG5vdCBibGFuaygkc2ltcGxlLWJhY2tncm91bmQpIHtcbiAgICBiYWNrZ3JvdW5kOiAkc2ltcGxlLWJhY2tncm91bmQ7IH1cbiAgQGluY2x1ZGUgYmFja2dyb3VuZCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7IH1cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UtMSwgJGltYWdlLTI6IGZhbHNlLCAkaW1hZ2UtMzogZmFsc2UsICRpbWFnZS00OiBmYWxzZSwgJGltYWdlLTU6IGZhbHNlLCAkaW1hZ2UtNjogZmFsc2UsICRpbWFnZS03OiBmYWxzZSwgJGltYWdlLTg6IGZhbHNlLCAkaW1hZ2UtOTogZmFsc2UsICRpbWFnZS0xMDogZmFsc2UpIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgJGltYWdlcykgb3IgLWNvbXBhc3MtbGlzdC1zaXplKCRpbWFnZXMpID4gMTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXN2ZygkaW1hZ2VzKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW93ZygkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSBhbmQgJGFkZC1waWUtYmcge1xuICAgIEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIjsgfVxuICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2VzOyB9XG5cbi8vIEVtaXQgYSBJRS1TcGVjaWZpYyBmaWx0ZXJzIHRoYXQgcmVuZGVycyBhIHNpbXBsZSBsaW5lYXIgZ3JhZGllbnQuXG4vLyBGb3IgdXNlIGluIElFIDYgLSA4LiBCZXN0IHByYWN0aWNlIHdvdWxkIGhhdmUgeW91IGFwcGx5IHRoaXMgdmlhIGFcbi8vIGNvbmRpdGlvbmFsIElFIHN0eWxlc2hlZXQsIGJ1dCBpZiB5b3UgbXVzdCwgeW91IHNob3VsZCBwbGFjZSB0aGlzIGJlZm9yZVxuLy8gYW55IGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydGllcyB0aGF0IHlvdSBoYXZlIHNwZWNpZmllZC5cbi8vXG4vLyBGb3IgdGhlIGAkb3JpZW50YXRpb25gIHBhcmFtZXRlciwgeW91IGNhbiBwYXNzIGB2ZXJ0aWNhbGAgb3IgYGhvcml6b250YWxgLlxuQG1peGluIGZpbHRlci1ncmFkaWVudCgkc3RhcnQtY29sb3IsICRlbmQtY29sb3IsICRvcmllbnRhdGlvbjogdmVydGljYWwpIHtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbiAgJGdyYWRpZW50LXR5cGU6IGlmKCRvcmllbnRhdGlvbiA9PSB2ZXJ0aWNhbCwgMCwgMSk7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllOCB7XG4gICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZ3JhZGllbnRUeXBlPSN7JGdyYWRpZW50LXR5cGV9LCBzdGFydENvbG9yc3RyPScje2llLWhleC1zdHIoJHN0YXJ0LWNvbG9yKX0nLCBlbmRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRlbmQtY29sb3IpfScpOyB9IH1cblxuLy8gQm9yZGVyIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgcHJvcGVydGllcyBhbmQgdmFsdWVzLlxuQG1peGluIGJvcmRlci1pbWFnZSgkdmFsdWUpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei1ib3JkZXItaW1hZ2U6IC1tb3oocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyB7XG4gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC1vd2cocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby1ib3JkZXItaW1hZ2U6IC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcge1xuICAgIGJvcmRlci1pbWFnZTogLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgYm9yZGVyLWltYWdlOiAkdmFsdWU7IH1cblxuLy8gTGlzdCBzdHlsZSBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZS1pbWFnZSgkaW1hZ2UpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW1veigkaW1hZ2UpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW8oJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1zdmcoJGltYWdlKTsgfVxuICBsaXN0LXN0eWxlLWltYWdlOiAkaW1hZ2U7IH1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtc3ZnKCR2YWx1ZSk7IH1cbiAgbGlzdC1zdHlsZS1pbWFnZTogJHZhbHVlOyB9XG5cbi8vIGNvbnRlbnQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGNvbnRlbnQoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJHZhbHVlKSB7XG4gICAgY29udGVudDogLXN2ZygkdmFsdWUpOyB9XG4gIGNvbnRlbnQ6ICR2YWx1ZTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJmdW5jdGlvbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29uc3RhbnRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Rpc3BsYXlcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3JzXCI7XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGxpc3QgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9saXN0cy5yYlxuLy9cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxOyB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTsgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTsgfVxuXG4vLyBjb21wYXNzX2xpc3QgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaW4gc2FzcyBzY3JpcHRcblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNwYWNlLWxpc3QoJGl0ZW0xLCAkaXRlbTI6IG51bGwsICRpdGVtMzogbnVsbCwgJGl0ZW00OiBudWxsLCAkaXRlbTU6IG51bGwsICRpdGVtNjogbnVsbCwgJGl0ZW03OiBudWxsLCAkaXRlbTg6IG51bGwsICRpdGVtOTogbnVsbCkge1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRpdGVtMSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTsgfVxuICBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTsgfVxuICAkZnVsbDogZmlyc3QtdmFsdWUtb2YoJGl0ZW1zKTtcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGl0ZW1zKSB7XG4gICAgJGl0ZW06IG50aCgkaXRlbXMsICRpKTtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGl0ZW07IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpOyB9XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zbGljZSgkbGlzdCwgJHN0YXJ0LCAkZW5kOiBmYWxzZSkge1xuICBAaWYgJGVuZCA9PSBmYWxzZSB7XG4gICAgJGVuZDogbGVuZ3RoKCRsaXN0KTsgfVxuICAkZnVsbDogbnRoKCRsaXN0LCAkc3RhcnQpO1xuICBAZm9yICRpIGZyb20gJHN0YXJ0ICsgMSB0aHJvdWdoICRlbmQge1xuICAgICRmdWxsOiAkZnVsbCwgbnRoKCRsaXN0LCAkaSk7IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gcmVqZWN0KCRsaXN0LCAkcmVqZWN0MSwgJHJlamVjdDI6IG51bGwsICRyZWplY3QzOiBudWxsLCAkcmVqZWN0NDogbnVsbCwgJHJlamVjdDU6IG51bGwsICRyZWplY3Q2OiBudWxsLCAkcmVqZWN0NzogbnVsbCwgJHJlamVjdDg6IG51bGwsICRyZWplY3Q5OiBudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuICAkZnVsbDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgaW5kZXgoJHJlamVjdHMsICRpdGVtKSB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkZnVsbCB7XG4gICAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07IH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiBmaXJzdC12YWx1ZS1vZigkbGlzdCkge1xuICBAcmV0dXJuIG50aCgkbGlzdCwgMSk7IH1cblxuLy9AaWYgbm90IGZ1bmN0aW9uLWV4aXN0cyhjb21wYWN0KVxuQGZ1bmN0aW9uIGNvbXBhY3QoJHZhcnMuLi4pIHtcbiAgJGxpc3Q6ICgpO1xuICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICBAaWYgJHZhciB7XG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkdmFyLCBjb21tYSk7IH0gfVxuICBAcmV0dXJuICRsaXN0OyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIHByZWZpeGVkKCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gICRwcmVmaXhlZDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJzdHJpbmdcIiB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sIFwidXJsXCIpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgXCJyZ2JcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcIiNcIikgIT0gMTsgfVxuICAgIEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IFwiY29sb3JcIiB7fVxuICAgIEBlbHNlIGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlOyB9IH1cbiAgQHJldHVybiAkcHJlZml4ZWQ7IH1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiBcIlwiO1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09IFwibGlzdFwiIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTE7IH1cbiAgQGVsc2Uge1xuICAgIC8vIFBhc3NpbmcgbXVsdGlwbGUgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTsgfVxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07IH1cbiAgICAgIEBpZiAkcHJvcHMge1xuICAgICAgICAkcHJvcHM6ICRwcm9wcywgJGl0ZW07IH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHByb3BzOiAkaXRlbTsgfSB9IH1cbiAgQHJldHVybiAkcHJvcHM7IH1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1zdmdcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vd2dcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi13ZWJraXRcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1tb3pcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItb1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXBpZVwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBncmFkaWVudCBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2IvdjAuMTIuMi9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnQucmJcbi8vXG5cbkBmdW5jdGlvbiBjb2xvci1zdG9wcygkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vL1xuXG5AZnVuY3Rpb24gb3Bwb3NpdGUtcG9zaXRpb24oJGZyb20pIHtcbiAgQGlmICRmcm9tID09IHRvcCB7XG4gICAgQHJldHVybiBib3R0b207IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gYm90dG9tIHtcbiAgICBAcmV0dXJuIHRvcDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBsZWZ0IHtcbiAgICBAcmV0dXJuIHJpZ2h0OyB9XG4gIEBlbHNlIGlmICRmcm9tID09IHJpZ2h0IHtcbiAgICBAcmV0dXJuIGxlZnQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gY2VudGVyIHtcbiAgICBAcmV0dXJuIGNlbnRlcjsgfSB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy9cblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpIHtcbiAgQGlmICR0eXBlID09IGJsb2NrIHtcbiAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUge1xuICAgIEByZXR1cm4gYSwgYWJiciwgYWNyb255bSwgYXVkaW8sIGIsIGJhc2Vmb250LCBiZG8sIGJpZywgYnIsIGNhbnZhcywgY2l0ZSwgY29kZSwgY29tbWFuZCwgZGF0YWxpc3QsIGRmbiwgZW0sIGVtYmVkLCBmb250LCBpLCBpbWcsIGlucHV0LCBrZXlnZW4sIGtiZCwgbGFiZWwsIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBxLCBycCwgcnQsIHJ1YnksIHMsIHNhbXAsIHNlbGVjdCwgc21hbGwsIHNwYW4sIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdGV4dGFyZWEsIHRpbWUsIHR0LCB1LCB2YXIsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaW5saW5lLWJsb2NrIHtcbiAgICBAcmV0dXJuIGltZzsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZSB7XG4gICAgQHJldHVybiB0YWJsZTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0LWl0ZW0ge1xuICAgIEByZXR1cm4gbGk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtcm93LWdyb3VwIHtcbiAgICBAcmV0dXJuIHRib2R5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCB7XG4gICAgQHJldHVybiB0aGVhZDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXAge1xuICAgIEByZXR1cm4gdGZvb3Q7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtcm93IHtcbiAgICBAcmV0dXJuIHRyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWNlbGwge1xuICAgIEByZXR1cm4gdGgsIHRkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWJsb2NrIHtcbiAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNS1pbmxpbmUge1xuICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0ZXh0LWlucHV0IHtcbiAgICBAcmV0dXJuIGlucHV0LCB0ZXh0YXJlYTsgfSB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpOyB9XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpOyB9XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpOyB9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAwMDAsICRjb2xvciwgJHBlcmNlbnRhZ2UpOyB9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoI2ZmZmZmZiwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gIG92ZXJyaWRlIHRvIGNoYW5nZSB0aGUgZGVmYXVsdFxuJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG8gIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgc2l6ZSBvZiBiYWNrZ3JvdW5kIGltYWdlcyB1c2luZyBweCwgd2lkdGggYW5kIGhlaWdodCwgb3IgcGVyY2VudGFnZXMuXG4vLyBDdXJyZW50bHkgc3VwcG9ydGVkIGluOiBPcGVyYSwgR2Vja28sIFdlYmtpdC5cbi8vXG4vLyAqIHBlcmNlbnRhZ2VzIGFyZSByZWxhdGl2ZSB0byB0aGUgYmFja2dyb3VuZC1vcmlnaW4gKGRlZmF1bHQgPSBwYWRkaW5nLWJveClcbi8vICogbWl4aW4gZGVmYXVsdHMgdG86IGAkZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemVgXG5AbWl4aW4gYmFja2dyb3VuZC1zaXplKCRzaXplLTE6ICRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZSwgJHNpemUtMjogZmFsc2UsICRzaXplLTM6IGZhbHNlLCAkc2l6ZS00OiBmYWxzZSwgJHNpemUtNTogZmFsc2UsICRzaXplLTY6IGZhbHNlLCAkc2l6ZS03OiBmYWxzZSwgJHNpemUtODogZmFsc2UsICRzaXplLTk6IGZhbHNlLCAkc2l6ZS0xMDogZmFsc2UpIHtcbiAgJHNpemUtMTogaWYodHlwZS1vZigkc2l6ZS0xKSA9PSBzdHJpbmcsIHVucXVvdGUoJHNpemUtMSksICRzaXplLTEpO1xuICAkc2l6ZXM6IGNvbXBhY3QoJHNpemUtMSwgJHNpemUtMiwgJHNpemUtMywgJHNpemUtNCwgJHNpemUtNSwgJHNpemUtNiwgJHNpemUtNywgJHNpemUtOCwgJHNpemUtOSwgJHNpemUtMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1zaXplLCAkc2l6ZXMsIC1tb3osIC13ZWJraXQsIC1vLCBub3QgLW1zLCBub3QgLWtodG1sKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcImNzczMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImNzczMvaW5saW5lLWJsb2NrXCI7XG5AaW1wb3J0IFwiY3NzMy9vcGFjaXR5XCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2hhZG93XCI7XG5AaW1wb3J0IFwiY3NzMy90ZXh0LXNoYWRvd1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcImNzczMvYm94XCI7XG5AaW1wb3J0IFwiY3NzMy9pbWFnZXNcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtY2xpcFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1vcmlnaW5cIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtc2l6ZVwiO1xuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2Zvcm1cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zaXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL3JlZ2lvbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2h5cGhlbmF0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcbkBpbXBvcnQgXCJjc3MzL3BpZVwiO1xuQGltcG9ydCBcImNzczMvdXNlci1pbnRlcmZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2ZsZXhib3hcIjtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuJGRlZmF1bHQtYm9yZGVyLXJhZGl1czogNXB4ICFkZWZhdWx0O1xuXG4vLyBSb3VuZCBhbGwgY29ybmVycyBieSBhIHNwZWNpZmljIGFtb3VudCwgZGVmYXVsdHMgdG8gdmFsdWUgb2YgYCRkZWZhdWx0LWJvcmRlci1yYWRpdXNgLlxuLy9cbi8vIFdoZW4gdHdvIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgZmlyc3QgaXMgdGhlIGhvcml6b250YWwgcmFkaXVzXG4vLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdmVydGljYWwgcmFkaXVzLlxuLy9cbi8vIE5vdGU6IHdlYmtpdCBkb2VzIG5vdCBzdXBwb3J0IHNob3J0aGFuZCBzeW50YXggZm9yIHNldmVyYWwgY29ybmVycyBhdCBvbmNlLlxuLy8gU28gaW4gdGhlIGNhc2Ugd2hlcmUgeW91IHBhc3Mgc2V2ZXJhbCB2YWx1ZXMgb25seSB0aGUgZmlyc3Qgd2lsbCBiZSBwYXNzZWQgdG8gd2Via2l0LlxuLy9cbi8vIEV4YW1wbGVzOlxuLy9cbi8vICAgICAuc2ltcGxlICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDRweCwgNHB4KTsgfVxuLy8gICAgIC5jb21wb3VuZCB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMnB4IDVweCwgM3B4IDZweCk7IH1cbi8vICAgICAuY3JhenkgICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDFweCAzcHggNXB4IDdweCwgMnB4IDRweCA2cHggOHB4KX1cbi8vXG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gICAgLnNpbXBsZSB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4IDRweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAvIDRweDsgfVxuLy9cbi8vICAgIC5jb21wb3VuZCB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4IDNweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDsgfVxuLy9cbi8vICAgIC5jcmF6eSB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMXB4IDJweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxcHggM3B4IDVweCA3cHggLyAycHggNHB4IDZweCA4cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiAxcHggM3B4IDVweCA3cHggLyAycHggNHB4IDZweCA4cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDsgfVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzLCAkdmVydGljYWwtcmFkaXVzOiBmYWxzZSkge1xuICBAaWYgJHZlcnRpY2FsLXJhZGl1cyB7XG4gICAgLy8gV2Via2l0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgb2ZmaWNpYWwgc2hvcnRoYW5kIHN5bnRheCBmb3Igc3BlY2lmeWluZ1xuICAgIC8vIGEgdmVydGljYWwgcmFkaXVzIHVubGVzcyBzbyBpbiBjYXNlIHRoZXJlJ3Mgc2V2ZXJhbCB3ZSBvbmx5IHRha2UgdGhlIGZpcnN0LlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3JkZXItcmFkaXVzLCBmaXJzdC12YWx1ZS1vZigkcmFkaXVzKSBmaXJzdC12YWx1ZS1vZigkdmVydGljYWwtcmFkaXVzKSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgbm90IG9mZmljaWFsKTtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItcmFkaXVzXCIsICRyYWRpdXMgdW5xdW90ZShcIi9cIikgJHZlcnRpY2FsLXJhZGl1cywgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3JkZXItcmFkaXVzLCAkcmFkaXVzKTsgfSB9XG5cbi8vIFJvdW5kIHJhZGl1cyBhdCBwb3NpdGlvbiBieSBhbW91bnQuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yIGAkdmVydGA6IGB0b3BgLCBgYm90dG9tYFxuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yIGAkaG9yemA6IGBsZWZ0YCwgYHJpZ2h0YFxuXG5AbWl4aW4gYm9yZGVyLWNvcm5lci1yYWRpdXMoJHZlcnQsICRob3J6LCAkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIC8vIFN1cHBvcnQgZm9yIG1vemlsbGEncyBzeW50YXggZm9yIHNwZWNpZnlpbmcgYSBjb3JuZXJcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHVucXVvdGUoXCJib3JkZXItcmFkaXVzLSN7JHZlcnR9I3skaG9yen1cIiksICRyYWRpdXMsIC1tb3osIG5vdCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci0jeyR2ZXJ0fS0jeyRob3J6fS1yYWRpdXNcIiwgJHJhZGl1cywgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gUm91bmQgdG9wLWxlZnQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyh0b3AsIGxlZnQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIHRvcC1yaWdodCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyh0b3AsIHJpZ2h0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3R0b20tbGVmdCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKGJvdHRvbSwgbGVmdCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90dG9tLXJpZ2h0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKGJvdHRvbSwgcmlnaHQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggdG9wIGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIHJpZ2h0IGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIGJvdHRvbSBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCBsZWZ0IGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTZXQgYCRpbmxpbmUtYmxvY2stYWxpZ25tZW50YCB0byBgbm9uZWAgb3IgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBvdXRwdXRcbi8vIG9mIGEgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgaW4gdGhlIGlubGluZS1ibG9jayBtaXhpbi5cbi8vIE9yIHNldCBpdCB0byBhIGxlZ2FsIHZhbHVlIGZvciBgdmVydGljYWwtYWxpZ25gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cbiRpbmxpbmUtYmxvY2stYWxpZ25tZW50OiBtaWRkbGUgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGEgY3Jvc3MtYnJvd3NlciBtZXRob2QgdG8gaW1wbGVtZW50IGBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7YFxuQG1peGluIGlubGluZS1ibG9jaygkYWxpZ25tZW50OiAkaW5saW5lLWJsb2NrLWFsaWdubWVudCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjazsgfVxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpZiAkYWxpZ25tZW50IGFuZCAkYWxpZ25tZW50ICE9IG5vbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiAkYWxpZ25tZW50OyB9XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAqdmVydGljYWwtYWxpZ246IGF1dG87XG4gICAgem9vbTogMTtcbiAgICAqZGlzcGxheTogaW5saW5lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBDU1Mgb3BhY2l0eS4gVGFrZXMgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxIGFzIHRoZSBhcmd1bWVudCwgZS5nLiAwLjUgZm9yIDUwJSBvcGFjaXR5LlxuLy9cbi8vICAgICBAcGFyYW0gJG9wYWNpdHlcbi8vICAgICAgICAgQSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLCB3aGVyZSAwIGlzIHRyYW5zcGFyZW50IGFuZCAxIGlzIG9wYXF1ZS5cblxuQG1peGluIG9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHVucXVvdGUoXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0je3JvdW5kKCRvcGFjaXR5ICogMTAwKX0pXCIpOyB9XG4gIG9wYWNpdHk6ICRvcGFjaXR5OyB9XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IHRyYW5zcGFyZW50LlxuQG1peGluIHRyYW5zcGFyZW50IHtcbiAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuXG4vLyBNYWtlIGFuIGVsZW1lbnQgY29tcGxldGVseSBvcGFxdWUuXG5AbWl4aW4gb3BhcXVlIHtcbiAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgYmVmb3JlIGltcG9ydGluZy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGUgZGVmYXVsdCBjb2xvciBmb3IgYm94IHNoYWRvd3NcbiRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3I6ICMzMzMzMzMgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGhvcml6b250YWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyB0byB0aGUgcmlnaHQuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHZlcnRpY2FsIG9mZnNldC4gUG9zaXRpdmUgaXMgZG93bi5cbiRkZWZhdWx0LWJveC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYmx1ciBsZW5ndGguXG4kZGVmYXVsdC1ib3gtc2hhZG93LWJsdXI6IDVweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc3ByZWFkIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc2hhZG93IGluc2V0OiBpbnNldCBvciBmYWxzZSAoZm9yIHN0YW5kYXJkIHNoYWRvdykuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0OiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMgYm94IHNoYWRvd3Mgd2hlbiBvbmUgb3IgbW9yZSBib3hcbi8vIHNoYWRvd3MgYXJlIG5lZWRlZC5cbi8vIEVhY2ggc2hhZG93IGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIGJveC1zaGFkb3cgcHJvcGVydHkuXG5AbWl4aW4gYm94LXNoYWRvdygkc2hhZG93LTE6IGRlZmF1bHQsICRzaGFkb3ctMjogZmFsc2UsICRzaGFkb3ctMzogZmFsc2UsICRzaGFkb3ctNDogZmFsc2UsICRzaGFkb3ctNTogZmFsc2UsICRzaGFkb3ctNjogZmFsc2UsICRzaGFkb3ctNzogZmFsc2UsICRzaGFkb3ctODogZmFsc2UsICRzaGFkb3ctOTogZmFsc2UsICRzaGFkb3ctMTA6IGZhbHNlKSB7XG4gIEBpZiAkc2hhZG93LTEgPT0gZGVmYXVsdCB7XG4gICAgJHNoYWRvdy0xOiAtY29tcGFzcy1zcGFjZS1saXN0KGNvbXBhY3QoaWYoJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldCwgaW5zZXQsIGZhbHNlKSwgJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldCwgJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldCwgJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLCAkZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZCwgJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcikpOyB9XG4gICRzaGFkb3c6IGNvbXBhY3QoJHNoYWRvdy0xLCAkc2hhZG93LTIsICRzaGFkb3ctMywgJHNoYWRvdy00LCAkc2hhZG93LTUsICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2hhZG93LCAkc2hhZG93LCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBQcm92aWRlcyBhIHNpbmdsZSBjcm9zcy1icm93c2VyIENTUyBib3ggc2hhZG93IGZvciBXZWJraXQsIEdlY2tvLCBhbmQgQ1NTMy5cbi8vIEluY2x1ZGVzIGRlZmF1bHQgYXJndW1lbnRzIGZvciBob3Jpem9udGFsIG9mZnNldCwgdmVydGljYWwgb2Zmc2V0LCBibHVyIGxlbmd0aCwgc3ByZWFkIGxlbmd0aCwgY29sb3IgYW5kIGluc2V0LlxuQG1peGluIHNpbmdsZS1ib3gtc2hhZG93KCRob2ZmOiAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LCAkdm9mZjogJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldCwgJGJsdXI6ICRkZWZhdWx0LWJveC1zaGFkb3ctYmx1ciwgJHNwcmVhZDogJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQsICRjb2xvcjogJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvciwgJGluc2V0OiAkZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0KSB7XG4gIEBpZiBub3QgKCRpbnNldCA9PSB0cnVlIG9yICRpbnNldCA9PSBmYWxzZSBvciAkaW5zZXQgPT0gaW5zZXQpIHtcbiAgICBAd2FybiBcIiRpbnNldCBleHBlY3RlZCB0byBiZSB0cnVlIG9yIHRoZSBpbnNldCBrZXl3b3JkLiBHb3QgI3skaW5zZXR9IGluc3RlYWQuIFVzaW5nOiBpbnNldFwiOyB9XG4gIEBpZiAkY29sb3IgPT0gbm9uZSB7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTsgfVxuICBAZWxzZSB7XG4gICAgJGZ1bGw6ICRob2ZmICR2b2ZmO1xuICAgIEBpZiAkYmx1ciB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGJsdXI7IH1cbiAgICBAaWYgJHNwcmVhZCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJHNwcmVhZDsgfVxuICAgIEBpZiAkY29sb3Ige1xuICAgICAgJGZ1bGw6ICRmdWxsICRjb2xvcjsgfVxuICAgIEBpZiAkaW5zZXQge1xuICAgICAgJGZ1bGw6IGluc2V0ICRmdWxsOyB9XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkZnVsbCk7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGVzZSBkZWZhdWx0cyBtYWtlIHRoZSBhcmd1bWVudHMgb3B0aW9uYWwgZm9yIHRoaXMgbWl4aW5cbi8vIElmIHlvdSBsaWtlLCBzZXQgZGlmZmVyZW50IGRlZmF1bHRzIGluIHlvdXIgcHJvamVjdFxuXG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcjogI2FhYSAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldDogMHB4ICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1cjogMXB4ICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciB0ZXh0IHNoYWRvd3Mgd2hlbiBvbmUgb3IgbW9yZSBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyB0ZXh0LXNoYWRvdyBwcm9wZXJ0eS5cbi8vXG4vLyBOb3RlOiBpZiBhbnkgc2hhZG93IGhhcyBhIHNwcmVhZCBwYXJhbWV0ZXIsIHRoaXMgd2lsbCBjYXVzZSB0aGUgbWl4aW5cbi8vIHRvIGVtaXQgdGhlIHNoYWRvdyBkZWNsYXJhdGlvbiB0d2ljZSwgZmlyc3Qgd2l0aG91dCB0aGUgc3ByZWFkLFxuLy8gdGhlbiB3aXRoIHRoZSBzcHJlYWQgaW5jbHVkZWQuIFRoaXMgYWxsb3dzIHlvdSB0byBwcm9ncmVzc2l2ZWx5XG4vLyBlbmhhbmNlIHRoZSBicm93c2VycyB0aGF0IGRvIHN1cHBvcnQgdGhlIHNwcmVhZCBwYXJhbWV0ZXIuXG5AbWl4aW4gdGV4dC1zaGFkb3coJHNoYWRvdy0xOiBkZWZhdWx0LCAkc2hhZG93LTI6IGZhbHNlLCAkc2hhZG93LTM6IGZhbHNlLCAkc2hhZG93LTQ6IGZhbHNlLCAkc2hhZG93LTU6IGZhbHNlLCAkc2hhZG93LTY6IGZhbHNlLCAkc2hhZG93LTc6IGZhbHNlLCAkc2hhZG93LTg6IGZhbHNlLCAkc2hhZG93LTk6IGZhbHNlLCAkc2hhZG93LTEwOiBmYWxzZSkge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMTogY29tcGFjdCgkZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldCAkZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyICRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcik7IH1cbiAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGpvaW4oKCksICgpLCBjb21tYSk7XG4gICRzaGFkb3dzOiBqb2luKCgpLCAoKSwgY29tbWEpO1xuICAkaGFzLXNwcmVhZDogZmFsc2U7XG4gIEBlYWNoICRzaGFkb3cgaW4gY29tcGFjdCgkc2hhZG93LTEsICRzaGFkb3ctMiwgJHNoYWRvdy0zLCAkc2hhZG93LTQsICRzaGFkb3ctNSwgJHNoYWRvdy02LCAkc2hhZG93LTcsICRzaGFkb3ctOCwgJHNoYWRvdy05LCAkc2hhZG93LTEwKSB7XG4gICAgQGlmIGxlbmd0aCgkc2hhZG93KSA+IDQge1xuICAgICAgJGhhcy1zcHJlYWQ6IHRydWU7XG4gICAgICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogYXBwZW5kKCRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkLCBudGgoJHNoYWRvdywgMSkgbnRoKCRzaGFkb3csIDIpIG50aCgkc2hhZG93LCAzKSBudGgoJHNoYWRvdywgNSkpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7IH1cbiAgICBlbHNlIHtcbiAgICAgICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBhcHBlbmQoJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQsICRzaGFkb3cpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7IH0gfVxuICBAaWYgJGhhcy1zcHJlYWQge1xuICAgIHRleHQtc2hhZG93OiAkc2hhZG93cy13aXRob3V0LXNwcmVhZDsgfVxuICB0ZXh0LXNoYWRvdzogJHNoYWRvd3M7IH1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgdGV4dCBzaGFkb3cuXG4vL1xuLy8gUHJvdmlkZXMgc2Vuc2libGUgZGVmYXVsdHMgZm9yIHRoZSBjb2xvciwgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciwgYW5kIHNwcmVhZFxuLy8gYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmF0aW9uIGRlZmF1bHRzIGFib3ZlLlxuQG1peGluIHNpbmdsZS10ZXh0LXNoYWRvdygkaG9mZjogZmFsc2UsICR2b2ZmOiBmYWxzZSwgJGJsdXI6IGZhbHNlLCAkc3ByZWFkOiBmYWxzZSwgJGNvbG9yOiBmYWxzZSkge1xuICAvLyBBIGxvdCBvZiBwZW9wbGUgdGhpbmsgdGhlIGNvbG9yIGNvbWVzIGZpcnN0LiBJdCBkb2Vzbid0LlxuICBAaWYgdHlwZS1vZigkaG9mZikgPT0gY29sb3Ige1xuICAgICR0ZW1wLWNvbG9yOiAkaG9mZjtcbiAgICAkaG9mZjogJHZvZmY7XG4gICAgJHZvZmY6ICRibHVyO1xuICAgICRibHVyOiAkc3ByZWFkO1xuICAgICRzcHJlYWQ6ICRjb2xvcjtcbiAgICAkY29sb3I6ICR0ZW1wLWNvbG9yOyB9XG4gIC8vIENhbid0IHJlbHkgb24gZGVmYXVsdCBhc3NpZ25tZW50IHdpdGggbXVsdGlwbGUgc3VwcG9ydGVkIGFyZ3VtZW50IG9yZGVycy5cbiAgJGhvZmY6IGlmKCRob2ZmLCAkaG9mZiwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQpO1xuICAkdm9mZjogaWYoJHZvZmYsICR2b2ZmLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldCk7XG4gICRibHVyOiBpZigkYmx1ciwgJGJsdXIsICRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXIpO1xuICAkc3ByZWFkOiBpZigkc3ByZWFkLCAkc3ByZWFkLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQpO1xuICAkY29sb3I6IGlmKCRjb2xvciwgJGNvbG9yLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcik7XG4gIC8vIFdlIGRvbid0IG5lZWQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoaXMgcHJvcGVydHkuXG4gIEBpZiAkY29sb3IgPT0gbm9uZSBvciAkaG9mZiA9PSBub25lIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhub25lKTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaGFkb3coY29tcGFjdCgkaG9mZiAkdm9mZiAkYmx1ciAkc3ByZWFkICRjb2xvcikpOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU3BlY2lmeSB0aGUgc2hvcnRoYW5kIGBjb2x1bW5zYCBwcm9wZXJ0eS5cbi8vXG4vLyBFeGFtcGxlOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW5zKDIwZW0gMilcbkBtaXhpbiBjb2x1bW5zKCR3aWR0aC1hbmQtY291bnQpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbnMsICR3aWR0aC1hbmQtY291bnQsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgY29sdW1uc1xuQG1peGluIGNvbHVtbi1jb3VudCgkY291bnQpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1jb3VudCwgJGNvdW50LCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU3BlY2lmeSB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucyBlLmcuIGAyMHB4YFxuQG1peGluIGNvbHVtbi1nYXAoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tZ2FwLCAkd2lkdGgsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiBjb2x1bW5zIGUuZy4gYDEwMHB4YFxuQG1peGluIGNvbHVtbi13aWR0aCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi13aWR0aCwgJHdpZHRoLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU3BlY2lmeSB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYDFweGBcbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLXdpZHRoLCAkd2lkdGgsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSBzdHlsZSBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgZG90dGVkYC5cbi8vIFRoaXMgd29ya3MgbGlrZSBib3JkZXItc3R5bGUuXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS1zdHlsZSwgdW5xdW90ZSgkc3R5bGUpLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU3BlY2lmeSB0aGUgY29sb3Igb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGJsdWVgLlxuLy8gVGhpcyB3b3JrcyBsaWtlIGJvcmRlci1jb2xvci5cbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBNaXhpbiBlbmNvbXBhc3NpbmcgYWxsIGNvbHVtbiBydWxlIHByb3BlcnRpZXNcbi8vIEZvciBleGFtcGxlOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW4tcnVsZSgxcHgsIHNvbGlkLCAjYzAwKVxuLy9cbi8vIE9yIHRoZSB2YWx1ZXMgY2FuIGJlIHNwYWNlIHNlcGFyYXRlZDpcbi8vXG4vLyAgICAgQGluY2x1ZGUgY29sdW1uLXJ1bGUoMXB4IHNvbGlkICNjMDApXG5AbWl4aW4gY29sdW1uLXJ1bGUoJHdpZHRoLCAkc3R5bGU6IGZhbHNlLCAkY29sb3I6IGZhbHNlKSB7XG4gICRmdWxsOiAtY29tcGFzcy1zcGFjZS1saXN0KGNvbXBhY3QoJHdpZHRoLCAkc3R5bGUsICRjb2xvcikpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUsICRmdWxsLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWJlZm9yZVxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTpcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWJlZm9yZShhbHdheXMpO31cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOlxuLy9cbi8vICBoMi5iZWZvcmUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7fVxuQG1peGluIGNvbHVtbi1icmVhay1iZWZvcmUoJHZhbHVlOiBhdXRvKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tYnJlYWstYmVmb3JlLCAkdmFsdWUsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstYWZ0ZXJcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWFmdGVyKGFsd2F5cyk7IH1cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOlxuLy9cbi8vICBoMi5hZnRlciB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7IH1cbkBtaXhpbiBjb2x1bW4tYnJlYWstYWZ0ZXIoJHZhbHVlOiBhdXRvKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tYnJlYWstYWZ0ZXIsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1pbnNpZGVcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYXZvaWQsIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOlxuLy8gICAgaDIuaW5zaWRlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstaW5zaWRlKCk7fVxuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vXG4vLyAgaDIuaW5zaWRlIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcbi8vICAgIGNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87fVxuQG1peGluIGNvbHVtbi1icmVhay1pbnNpZGUoJHZhbHVlOiBhdXRvKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tYnJlYWstaW5zaWRlLCAkdmFsdWUsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBBbGwtcHVycG9zZSBtaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4gYnJlYWtzLlxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IGJlZm9yZSwgYWZ0ZXIsIGluc2lkZVxuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICckdmFsdWUnIGFyZSBkZXBlbmRlbnQgb24gJHR5cGVcbi8vICAgICogd2hlbiAkdHlwZSA9IGJlZm9yZSwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICAgICogd2hlbiAkdHlwZSA9IGFmdGVyLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gaW5zaWRlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZXM6XG4vLyAgICBoMi5iZWZvcmUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhiZWZvcmUsIGFsd2F5cyk7fVxuLy8gICAgaDIuYWZ0ZXIge0BpbmNsdWRlIGNvbHVtbi1icmVhayhhZnRlciwgYWx3YXlzKTsgfVxuLy8gICAgaDIuaW5zaWRlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoaW5zaWRlKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgaDIuYmVmb3JlIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO31cbi8vXG4vLyAgaDIuYWZ0ZXIge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyB9XG4vL1xuLy8gIGgyLmluc2lkZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XG4vLyAgICBjb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO31cblxuQG1peGluIGNvbHVtbi1icmVhaygkdHlwZTogYmVmb3JlLCAkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiY29sdW1uLWJyZWFrLSN7JHR5cGV9XCIsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYm94IG1vZGVsIGZvciBNb3ppbGxhLCBXZWJraXQsIElFOCBhbmQgdGhlIGZ1dHVyZVxuLy9cbi8vIEBwYXJhbSAkYnNcbi8vICAgWyBjb250ZW50LWJveCB8IGJvcmRlci1ib3ggXVxuXG5AbWl4aW4gYm94LXNpemluZygkYnMpIHtcbiAgJGJzOiB1bnF1b3RlKCRicyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2l6aW5nLCAkYnMsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIGRpc3BsYXk6Ym94OyBtdXN0IGJlIHVzZWQgZm9yIGFueSBvZiB0aGUgb3RoZXIgZmxleGJveCBtaXhpbnMgdG8gd29yayBwcm9wZXJseVxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsLXZhbHVlKGRpc3BsYXksIGJveCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBEZWZhdWx0IGJveCBvcmllbnRhdGlvbiwgYXNzdW1pbmcgdGhhdCB0aGUgdXNlciB3YW50cyBzb21ldGhpbmcgbGVzcyBibG9jay1saWtlXG4kZGVmYXVsdC1ib3gtb3JpZW50OiBob3Jpem9udGFsICFkZWZhdWx0O1xuXG4vLyBCb3ggb3JpZW50YXRpb24gWyBob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMgfCBpbmhlcml0IF1cbkBtaXhpbiBib3gtb3JpZW50KCRvcmllbnRhdGlvbjogJGRlZmF1bHQtYm94LW9yaWVudCkge1xuICAkb3JpZW50YXRpb246IHVucXVvdGUoJG9yaWVudGF0aW9uKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmllbnQsICRvcmllbnRhdGlvbiwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBEZWZhdWx0IGJveC1hbGlnblxuJGRlZmF1bHQtYm94LWFsaWduOiBzdHJldGNoICFkZWZhdWx0O1xuXG4vLyBCb3ggYWxpZ24gWyBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaCBdXG5AbWl4aW4gYm94LWFsaWduKCRhbGlnbm1lbnQ6ICRkZWZhdWx0LWJveC1hbGlnbikge1xuICAkYWxpZ25tZW50OiB1bnF1b3RlKCRhbGlnbm1lbnQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWFsaWduLCAkYWxpZ25tZW50LCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERlZmF1bHQgYm94IGZsZXhcbiRkZWZhdWx0LWJveC1mbGV4OiAwICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIGJveCBmbGV4LiBBcHBseSB0aGlzIHRvIHRoZSBjaGlsZHJlbiBpbnNpZGUgdGhlIGJveC5cbi8vXG4vLyBGb3IgZXhhbXBsZTogXCJkaXYuZGlzcGxheS1ib3ggPiBkaXYuY2hpbGQtYm94XCIgd291bGQgZ2V0IHRoZSBib3ggZmxleCBtaXhpbi5cbkBtaXhpbiBib3gtZmxleCgkZmxleDogJGRlZmF1bHQtYm94LWZsZXgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1mbGV4LCAkZmxleCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBEZWZhdWx0IGZsZXggZ3JvdXBcbiRkZWZhdWx0LWJveC1mbGV4LWdyb3VwOiAxICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIGZsZXhpYmxlIGdyb3VwaW5nXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGdyb3VwOiAkZGVmYXVsdC1ib3gtZmxleC1ncm91cCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWZsZXgtZ3JvdXAsICRncm91cCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBkZWZhdWx0IGZvciBvcmRpbmFsIGdyb3VwXG4kZGVmYXVsdC1ib3gtb3JkaW5hbC1ncm91cDogMSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBvcmRpbmFsIGdyb3VwaW5nIGFuZCByZWFycmFuZ2luZyB0aGUgb3JkZXJcbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkZ3JvdXA6ICRkZWZhdWx0LW9yZGluYWwtZmxleC1ncm91cCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LW9yZGluYWwtZ3JvdXAsICRncm91cCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBCb3ggZGlyZWN0aW9uIGRlZmF1bHQgdmFsdWVcbiRkZWZhdWx0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveC1kaXJlY3Rpb24gWyBub3JtYWwgfCByZXZlcnNlIHwgaW5oZXJpdCBdXG5AbWl4aW4gYm94LWRpcmVjdGlvbigkZGlyZWN0aW9uOiAkZGVmYXVsdC1ib3gtZGlyZWN0aW9uKSB7XG4gICRkaXJlY3Rpb246IHVucXVvdGUoJGRpcmVjdGlvbik7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIGRlZmF1bHQgZm9yIGJveCBsaW5lc1xuJGRlZmF1bHQtYm94LWxpbmVzOiBzaW5nbGUgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3ggbGluZXMgWyBzaW5nbGUgfCBtdWx0aXBsZSBdXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogJGRlZmF1bHQtYm94LWxpbmVzKSB7XG4gICRsaW5lczogdW5xdW90ZSgkbGluZXMpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWxpbmVzLCAkbGluZXMsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gZGVmYXVsdCBmb3IgYm94IHBhY2tcbiRkZWZhdWx0LWJveC1wYWNrOiBzdGFydCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveCBwYWNrIFsgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IF1cbkBtaXhpbiBib3gtcGFjaygkcGFjazogJGRlZmF1bHQtYm94LXBhY2spIHtcbiAgJHBhY2s6IHVucXVvdGUoJHBhY2spO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXBhY2ssICRwYWNrLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yOiBmYWxzZSwgJGJhY2tncm91bmQtMzogZmFsc2UsICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLCAkYmFja2dyb3VuZC01OiBmYWxzZSwgJGJhY2tncm91bmQtNjogZmFsc2UsICRiYWNrZ3JvdW5kLTc6IGZhbHNlLCAkYmFja2dyb3VuZC04OiBmYWxzZSwgJGJhY2tncm91bmQtOTogZmFsc2UsICRiYWNrZ3JvdW5kLTEwOiBmYWxzZSkge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtbW96KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkYmFja2dyb3VuZHMpIHtcbiAgICBiYWNrZ3JvdW5kOiAtbygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSBhbmQgJGFkZC1waWUtYmcge1xuICAgIC1waWUtYmFja2dyb3VuZDogLXBpZSgkYmFja2dyb3VuZHMpOyB9XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kczsgfVxuXG5AbWl4aW4gYmFja2dyb3VuZC13aXRoLWNzczItZmFsbGJhY2soJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMjogZmFsc2UsICRiYWNrZ3JvdW5kLTM6IGZhbHNlLCAkYmFja2dyb3VuZC00OiBmYWxzZSwgJGJhY2tncm91bmQtNTogZmFsc2UsICRiYWNrZ3JvdW5kLTY6IGZhbHNlLCAkYmFja2dyb3VuZC03OiBmYWxzZSwgJGJhY2tncm91bmQtODogZmFsc2UsICRiYWNrZ3JvdW5kLTk6IGZhbHNlLCAkYmFja2dyb3VuZC0xMDogZmFsc2UpIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRzaW1wbGUtYmFja2dyb3VuZDogaWYoJG11bHQtYmdzIG9yIHByZWZpeGVkKC1jc3MyLCAkYmFja2dyb3VuZHMpLCAtY3NzMigtY29tcGFzcy1udGgoJGJhY2tncm91bmRzLCBsYXN0KSksIGZhbHNlKTtcbiAgQGlmIG5vdCBibGFuaygkc2ltcGxlLWJhY2tncm91bmQpIHtcbiAgICBiYWNrZ3JvdW5kOiAkc2ltcGxlLWJhY2tncm91bmQ7IH1cbiAgQGluY2x1ZGUgYmFja2dyb3VuZCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7IH1cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UtMSwgJGltYWdlLTI6IGZhbHNlLCAkaW1hZ2UtMzogZmFsc2UsICRpbWFnZS00OiBmYWxzZSwgJGltYWdlLTU6IGZhbHNlLCAkaW1hZ2UtNjogZmFsc2UsICRpbWFnZS03OiBmYWxzZSwgJGltYWdlLTg6IGZhbHNlLCAkaW1hZ2UtOTogZmFsc2UsICRpbWFnZS0xMDogZmFsc2UpIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgJGltYWdlcykgb3IgLWNvbXBhc3MtbGlzdC1zaXplKCRpbWFnZXMpID4gMTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXN2ZygkaW1hZ2VzKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW93ZygkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSBhbmQgJGFkZC1waWUtYmcge1xuICAgIEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIjsgfVxuICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2VzOyB9XG5cbi8vIEVtaXQgYSBJRS1TcGVjaWZpYyBmaWx0ZXJzIHRoYXQgcmVuZGVycyBhIHNpbXBsZSBsaW5lYXIgZ3JhZGllbnQuXG4vLyBGb3IgdXNlIGluIElFIDYgLSA4LiBCZXN0IHByYWN0aWNlIHdvdWxkIGhhdmUgeW91IGFwcGx5IHRoaXMgdmlhIGFcbi8vIGNvbmRpdGlvbmFsIElFIHN0eWxlc2hlZXQsIGJ1dCBpZiB5b3UgbXVzdCwgeW91IHNob3VsZCBwbGFjZSB0aGlzIGJlZm9yZVxuLy8gYW55IGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydGllcyB0aGF0IHlvdSBoYXZlIHNwZWNpZmllZC5cbi8vXG4vLyBGb3IgdGhlIGAkb3JpZW50YXRpb25gIHBhcmFtZXRlciwgeW91IGNhbiBwYXNzIGB2ZXJ0aWNhbGAgb3IgYGhvcml6b250YWxgLlxuQG1peGluIGZpbHRlci1ncmFkaWVudCgkc3RhcnQtY29sb3IsICRlbmQtY29sb3IsICRvcmllbnRhdGlvbjogdmVydGljYWwpIHtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbiAgJGdyYWRpZW50LXR5cGU6IGlmKCRvcmllbnRhdGlvbiA9PSB2ZXJ0aWNhbCwgMCwgMSk7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllOCB7XG4gICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZ3JhZGllbnRUeXBlPSN7JGdyYWRpZW50LXR5cGV9LCBzdGFydENvbG9yc3RyPScje2llLWhleC1zdHIoJHN0YXJ0LWNvbG9yKX0nLCBlbmRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRlbmQtY29sb3IpfScpOyB9IH1cblxuLy8gQm9yZGVyIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgcHJvcGVydGllcyBhbmQgdmFsdWVzLlxuQG1peGluIGJvcmRlci1pbWFnZSgkdmFsdWUpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei1ib3JkZXItaW1hZ2U6IC1tb3oocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyB7XG4gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC1vd2cocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby1ib3JkZXItaW1hZ2U6IC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcge1xuICAgIGJvcmRlci1pbWFnZTogLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgYm9yZGVyLWltYWdlOiAkdmFsdWU7IH1cblxuLy8gTGlzdCBzdHlsZSBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZS1pbWFnZSgkaW1hZ2UpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW1veigkaW1hZ2UpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW8oJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRpbWFnZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1zdmcoJGltYWdlKTsgfVxuICBsaXN0LXN0eWxlLWltYWdlOiAkaW1hZ2U7IH1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkdmFsdWUpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtc3ZnKCR2YWx1ZSk7IH1cbiAgbGlzdC1zdHlsZS1pbWFnZTogJHZhbHVlOyB9XG5cbi8vIGNvbnRlbnQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGNvbnRlbnQoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJHZhbHVlKSB7XG4gICAgY29udGVudDogLXN2ZygkdmFsdWUpOyB9XG4gIGNvbnRlbnQ6ICR2YWx1ZTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJmdW5jdGlvbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29uc3RhbnRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Rpc3BsYXlcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3JzXCI7XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGxpc3QgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9saXN0cy5yYlxuLy9cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxOyB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTsgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTsgfVxuXG4vLyBjb21wYXNzX2xpc3QgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaW4gc2FzcyBzY3JpcHRcblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNwYWNlLWxpc3QoJGl0ZW0xLCAkaXRlbTI6IG51bGwsICRpdGVtMzogbnVsbCwgJGl0ZW00OiBudWxsLCAkaXRlbTU6IG51bGwsICRpdGVtNjogbnVsbCwgJGl0ZW03OiBudWxsLCAkaXRlbTg6IG51bGwsICRpdGVtOTogbnVsbCkge1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRpdGVtMSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTsgfVxuICBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTsgfVxuICAkZnVsbDogZmlyc3QtdmFsdWUtb2YoJGl0ZW1zKTtcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGl0ZW1zKSB7XG4gICAgJGl0ZW06IG50aCgkaXRlbXMsICRpKTtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGl0ZW07IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpOyB9XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zbGljZSgkbGlzdCwgJHN0YXJ0LCAkZW5kOiBmYWxzZSkge1xuICBAaWYgJGVuZCA9PSBmYWxzZSB7XG4gICAgJGVuZDogbGVuZ3RoKCRsaXN0KTsgfVxuICAkZnVsbDogbnRoKCRsaXN0LCAkc3RhcnQpO1xuICBAZm9yICRpIGZyb20gJHN0YXJ0ICsgMSB0aHJvdWdoICRlbmQge1xuICAgICRmdWxsOiAkZnVsbCwgbnRoKCRsaXN0LCAkaSk7IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuXG5AZnVuY3Rpb24gcmVqZWN0KCRsaXN0LCAkcmVqZWN0MSwgJHJlamVjdDI6IG51bGwsICRyZWplY3QzOiBudWxsLCAkcmVqZWN0NDogbnVsbCwgJHJlamVjdDU6IG51bGwsICRyZWplY3Q2OiBudWxsLCAkcmVqZWN0NzogbnVsbCwgJHJlamVjdDg6IG51bGwsICRyZWplY3Q5OiBudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuICAkZnVsbDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgaW5kZXgoJHJlamVjdHMsICRpdGVtKSB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkZnVsbCB7XG4gICAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07IH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiBmaXJzdC12YWx1ZS1vZigkbGlzdCkge1xuICBAcmV0dXJuIG50aCgkbGlzdCwgMSk7IH1cblxuLy9AaWYgbm90IGZ1bmN0aW9uLWV4aXN0cyhjb21wYWN0KVxuQGZ1bmN0aW9uIGNvbXBhY3QoJHZhcnMuLi4pIHtcbiAgJGxpc3Q6ICgpO1xuICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICBAaWYgJHZhciB7XG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkdmFyLCBjb21tYSk7IH0gfVxuICBAcmV0dXJuICRsaXN0OyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIHByZWZpeGVkKCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gICRwcmVmaXhlZDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJzdHJpbmdcIiB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sIFwidXJsXCIpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgXCJyZ2JcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcIiNcIikgIT0gMTsgfVxuICAgIEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IFwiY29sb3JcIiB7fVxuICAgIEBlbHNlIGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlOyB9IH1cbiAgQHJldHVybiAkcHJlZml4ZWQ7IH1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiBcIlwiO1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09IFwibGlzdFwiIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTE7IH1cbiAgQGVsc2Uge1xuICAgIC8vIFBhc3NpbmcgbXVsdGlwbGUgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTsgfVxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07IH1cbiAgICAgIEBpZiAkcHJvcHMge1xuICAgICAgICAkcHJvcHM6ICRwcm9wcywgJGl0ZW07IH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHByb3BzOiAkaXRlbTsgfSB9IH1cbiAgQHJldHVybiAkcHJvcHM7IH1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1zdmdcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vd2dcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi13ZWJraXRcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1tb3pcIiwgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7IH1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItb1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXBpZVwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBncmFkaWVudCBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2IvdjAuMTIuMi9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnQucmJcbi8vXG5cbkBmdW5jdGlvbiBjb2xvci1zdG9wcygkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vL1xuXG5AZnVuY3Rpb24gb3Bwb3NpdGUtcG9zaXRpb24oJGZyb20pIHtcbiAgQGlmICRmcm9tID09IHRvcCB7XG4gICAgQHJldHVybiBib3R0b207IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gYm90dG9tIHtcbiAgICBAcmV0dXJuIHRvcDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBsZWZ0IHtcbiAgICBAcmV0dXJuIHJpZ2h0OyB9XG4gIEBlbHNlIGlmICRmcm9tID09IHJpZ2h0IHtcbiAgICBAcmV0dXJuIGxlZnQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gY2VudGVyIHtcbiAgICBAcmV0dXJuIGNlbnRlcjsgfSB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy9cblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpIHtcbiAgQGlmICR0eXBlID09IGJsb2NrIHtcbiAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUge1xuICAgIEByZXR1cm4gYSwgYWJiciwgYWNyb255bSwgYXVkaW8sIGIsIGJhc2Vmb250LCBiZG8sIGJpZywgYnIsIGNhbnZhcywgY2l0ZSwgY29kZSwgY29tbWFuZCwgZGF0YWxpc3QsIGRmbiwgZW0sIGVtYmVkLCBmb250LCBpLCBpbWcsIGlucHV0LCBrZXlnZW4sIGtiZCwgbGFiZWwsIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBxLCBycCwgcnQsIHJ1YnksIHMsIHNhbXAsIHNlbGVjdCwgc21hbGwsIHNwYW4sIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdGV4dGFyZWEsIHRpbWUsIHR0LCB1LCB2YXIsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaW5saW5lLWJsb2NrIHtcbiAgICBAcmV0dXJuIGltZzsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZSB7XG4gICAgQHJldHVybiB0YWJsZTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0LWl0ZW0ge1xuICAgIEByZXR1cm4gbGk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtcm93LWdyb3VwIHtcbiAgICBAcmV0dXJuIHRib2R5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCB7XG4gICAgQHJldHVybiB0aGVhZDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXAge1xuICAgIEByZXR1cm4gdGZvb3Q7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtcm93IHtcbiAgICBAcmV0dXJuIHRyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWNlbGwge1xuICAgIEByZXR1cm4gdGgsIHRkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWJsb2NrIHtcbiAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNS1pbmxpbmUge1xuICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0ZXh0LWlucHV0IHtcbiAgICBAcmV0dXJuIGlucHV0LCB0ZXh0YXJlYTsgfSB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpOyB9XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpOyB9XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpOyB9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAwMDAsICRjb2xvciwgJHBlcmNlbnRhZ2UpOyB9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoI2ZmZmZmZiwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYHBhZGRpbmctYm94YCAtLSB0aGUgYm94IG1vZGVsIHVzZWQgYnkgbW9kZXJuIGJyb3dzZXJzLlxuLy9cbi8vIElmIHlvdSB3aXNoIHRvIGRvIHNvLCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbnN0YW50IHdpdGggYGJvcmRlci1ib3hgXG4vL1xuLy8gVG8gb3ZlcnJpZGUgdG8gdGhlIGRlZmF1bHQgYm9yZGVyLWJveCBtb2RlbCwgdXNlIHRoaXMgY29kZTpcbi8vICAgICAkZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3hcblxuJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveCAhZGVmYXVsdDtcblxuLy8gQ2xpcCB0aGUgYmFja2dyb3VuZCAoaW1hZ2UgYW5kIGNvbG9yKSBhdCB0aGUgZWRnZSBvZiB0aGUgcGFkZGluZyBvciBib3JkZXIuXG4vL1xuLy8gTGVnYWwgVmFsdWVzOlxuLy9cbi8vICAgKiBwYWRkaW5nLWJveFxuLy8gICAqIGJvcmRlci1ib3hcbi8vICAgKiB0ZXh0XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLWNsaXAoJGNsaXA6ICRkZWZhdWx0LWJhY2tncm91bmQtY2xpcCkge1xuICAvLyB3ZWJraXQgYW5kIG1vemlsbGEgdXNlIHRoZSBkZXByZWNhdGVkIHNob3J0IFtib3JkZXIgfCBwYWRkaW5nXVxuICAkY2xpcDogdW5xdW90ZSgkY2xpcCk7XG4gICRkZXByZWNhdGVkOiAkY2xpcDtcbiAgQGlmICRjbGlwID09IHBhZGRpbmctYm94IHtcbiAgICAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJGNsaXAgPT0gYm9yZGVyLWJveCB7XG4gICAgJGRlcHJlY2F0ZWQ6IGJvcmRlcjsgfVxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1jbGlwLCAkZGVwcmVjYXRlZCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1jbGlwLCAkY2xpcCwgbm90IC1tb3osIG5vdCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBPdmVycmlkZSBgJGRlZmF1bHQtYmFja2dyb3VuZC1vcmlnaW5gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbjogY29udGVudC1ib3ggIWRlZmF1bHQ7XG5cbi8vIFBvc2l0aW9uIHRoZSBiYWNrZ3JvdW5kIG9mZiB0aGUgZWRnZSBvZiB0aGUgcGFkZGluZywgYm9yZGVyIG9yIGNvbnRlbnRcbi8vXG4vLyAqIFBvc3NpYmxlIHZhbHVlczpcbi8vICAgKiBgcGFkZGluZy1ib3hgXG4vLyAgICogYGJvcmRlci1ib3hgXG4vLyAgICogYGNvbnRlbnQtYm94YFxuLy8gKiBicm93c2VyIGRlZmF1bHRzIHRvIGBwYWRkaW5nLWJveGBcbi8vICogbWl4aW4gZGVmYXVsdHMgdG8gYGNvbnRlbnQtYm94YFxuXG5AbWl4aW4gYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbjogJGRlZmF1bHQtYmFja2dyb3VuZC1vcmlnaW4pIHtcbiAgJG9yaWdpbjogdW5xdW90ZSgkb3JpZ2luKTtcbiAgLy8gd2Via2l0IGFuZCBtb3ppbGxhIHVzZSB0aGUgZGVwcmVjYXRlZCBzaG9ydCBbYm9yZGVyIHwgcGFkZGluZyB8IGNvbnRlbnRdXG4gICRkZXByZWNhdGVkOiAkb3JpZ2luO1xuICBAaWYgJG9yaWdpbiA9PSBwYWRkaW5nLWJveCB7XG4gICAgJGRlcHJlY2F0ZWQ6IHBhZGRpbmc7IH1cbiAgQGlmICRvcmlnaW4gPT0gYm9yZGVyLWJveCB7XG4gICAgJGRlcHJlY2F0ZWQ6IGJvcmRlcjsgfVxuICBAaWYgJG9yaWdpbiA9PSBjb250ZW50LWJveCB7XG4gICAgJGRlcHJlY2F0ZWQ6IGNvbnRlbnQ7IH1cbiAgLy8gU3VwcG9ydCBmb3Igd2Via2l0IGFuZCBtb3ppbGxhJ3MgdXNlIG9mIHRoZSBkZXByZWNhdGVkIHNob3J0IGZvcm1cbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtb3JpZ2luLCAkZGVwcmVjYXRlZCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRvcmlnaW4sIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgLW8sIC1tcywgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gIG92ZXJyaWRlIHRvIGNoYW5nZSB0aGUgZGVmYXVsdFxuJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG8gIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgc2l6ZSBvZiBiYWNrZ3JvdW5kIGltYWdlcyB1c2luZyBweCwgd2lkdGggYW5kIGhlaWdodCwgb3IgcGVyY2VudGFnZXMuXG4vLyBDdXJyZW50bHkgc3VwcG9ydGVkIGluOiBPcGVyYSwgR2Vja28sIFdlYmtpdC5cbi8vXG4vLyAqIHBlcmNlbnRhZ2VzIGFyZSByZWxhdGl2ZSB0byB0aGUgYmFja2dyb3VuZC1vcmlnaW4gKGRlZmF1bHQgPSBwYWRkaW5nLWJveClcbi8vICogbWl4aW4gZGVmYXVsdHMgdG86IGAkZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemVgXG5AbWl4aW4gYmFja2dyb3VuZC1zaXplKCRzaXplLTE6ICRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZSwgJHNpemUtMjogZmFsc2UsICRzaXplLTM6IGZhbHNlLCAkc2l6ZS00OiBmYWxzZSwgJHNpemUtNTogZmFsc2UsICRzaXplLTY6IGZhbHNlLCAkc2l6ZS03OiBmYWxzZSwgJHNpemUtODogZmFsc2UsICRzaXplLTk6IGZhbHNlLCAkc2l6ZS0xMDogZmFsc2UpIHtcbiAgJHNpemUtMTogaWYodHlwZS1vZigkc2l6ZS0xKSA9PSBzdHJpbmcsIHVucXVvdGUoJHNpemUtMSksICRzaXplLTEpO1xuICAkc2l6ZXM6IGNvbXBhY3QoJHNpemUtMSwgJHNpemUtMiwgJHNpemUtMywgJHNpemUtNCwgJHNpemUtNSwgJHNpemUtNiwgJHNpemUtNywgJHNpemUtOCwgJHNpemUtOSwgJHNpemUtMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1zaXplLCAkc2l6ZXMsIC1tb3osIC13ZWJraXQsIC1vLCBub3QgLW1zLCBub3QgLWtodG1sKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDcm9zcy1icm93c2VyIHN1cHBvcnQgZm9yIEBmb250LWZhY2UuIFN1cHBvcnRzIElFLCBHZWNrbywgV2Via2l0LCBPcGVyYS5cbi8vXG4vLyAqICRuYW1lIGlzIHJlcXVpcmVkLCBhcmJpdHJhcnksIGFuZCB3aGF0IHlvdSB3aWxsIHVzZSBpbiBmb250IHN0YWNrcy5cbi8vICogJGZvbnQtZmlsZXMgaXMgcmVxdWlyZWQgdXNpbmcgZm9udC1maWxlcygncmVsYXRpdmUvbG9jYXRpb24nLCAnZm9ybWF0JykuXG4vLyAgIGZvciBiZXN0IHJlc3VsdHMgdXNlIHRoaXMgb3JkZXI6IHdvZmYsIG9wZW50eXBlL3RydWV0eXBlLCBzdmdcbi8vICogJGVvdCBpcyByZXF1aXJlZCBieSBJRSwgYW5kIGlzIGEgcmVsYXRpdmUgbG9jYXRpb24gb2YgdGhlIGVvdCBmaWxlLlxuLy8gKiAkd2VpZ2h0IHNob3dzIGlmIHRoZSBmb250IGlzIGJvbGQsIGRlZmF1bHRzIHRvIG5vcm1hbFxuLy8gKiAkc3R5bGUgZGVmYXVsdHMgdG8gbm9ybWFsLCBtaWdodCBiZSBhbHNvIGl0YWxpY1xuLy8gKiBGb3IgYW5kcm9pZCAyLjIgQ29tcGF0aWJsaXR5LCBwbGVhc2UgZW5zdXJlIHRoYXQgeW91ciB3ZWIgcGFnZSBoYXNcbi8vICAgYSBtZXRhIHZpZXdwb3J0IHRhZy5cbi8vICogVG8gc3VwcG9ydCBpT1MgPCA0LjIsIGFuIFNWRyBmaWxlIG11c3QgYmUgcHJvdmlkZWRcbi8vXG4vLyBJZiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBvdGhlciBmb3JtYXRzIGNoZWNrIG91dCB0aGUgRm9udCBTcXVpcnJlbFxuLy8gW2ZvbnQgZ2VuZXJhdG9yXShodHRwOi8vd3d3LmZvbnRzcXVpcnJlbC5jb20vZm9udGZhY2UvZ2VuZXJhdG9yKVxuLy9cblxuLy8gSW4gb3JkZXIgdG8gcmVmZXIgdG8gYSBzcGVjaWZpYyBzdHlsZSBvZiB0aGUgZm9udCBpbiB5b3VyIHN0eWxlc2hlZXRzIGFzXG4vLyBlLmcuIFwiZm9udC1zdHlsZTogaXRhbGljO1wiLCAgeW91IG1heSBhZGQgYSBjb3VwbGUgb2YgQGZvbnQtZmFjZSBpbmNsdWRlc1xuLy8gY29udGFpbmluZyB0aGUgcmVzcGVjdGl2ZSBmb250IGZpbGVzIGZvciBlYWNoIHN0eWxlIGFuZCBzcGVjeWluZ1xuLy8gcmVzcGVjdGl2ZSB0aGUgJHN0eWxlIHBhcmFtZXRlci5cblxuLy8gT3JkZXIgb2YgdGhlIGluY2x1ZGVzIG1hdHRlcnMsIGFuZCBpdCBpczogbm9ybWFsLCBib2xkLCBpdGFsaWMsIGJvbGQraXRhbGljLlxuXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZm9udC1maWxlcywgJGVvdDogZmFsc2UsICR3ZWlnaHQ6IGZhbHNlLCAkc3R5bGU6IGZhbHNlKSB7XG4gICRpZWZvbnQ6IHVucXVvdGUoXCIjeyRlb3R9PyNpZWZpeFwiKTtcbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IHF1b3RlKCRuYW1lKTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6IGZvbnQtdXJsKCRlb3QpO1xuICAgICAgJGZvbnQtZmlsZXM6IGZvbnQtdXJsKCRpZWZvbnQpIHVucXVvdGUoXCJmb3JtYXQoJ2VvdCcpXCIpLCAkZm9udC1maWxlczsgfVxuICAgIHNyYzogJGZvbnQtZmlsZXM7XG4gICAgQGlmICR3ZWlnaHQge1xuICAgICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7IH1cbiAgICBAaWYgJHN0eWxlIHtcbiAgICAgIGZvbnQtc3R5bGU6ICRzdHlsZTsgfSB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQGRvYyBvZmZcbi8vIE5vdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2FmYXJpLCBDaHJvbWUsIGFuZCBGaXJlZm94IGFsbCBzdXBwb3J0IDNEIHRyYW5zZm9ybXMuIEhvd2V2ZXIsXG4vLyBvbmx5IGluIHRoZSBtb3N0IHJlY2VudCBidWlsZHMuIFlvdSBzaG91bGQgYWxzbyBwcm92aWRlIGZhbGxiYWNrIDJkIHN1cHBvcnQgZm9yXG4vLyBPcGVyYSBhbmQgSUUuIElFMTAgaXMgc2xhdGVkIHRvIGhhdmUgM2QgZW5hYmxlZCwgYnV0IGlzIGN1cnJlbnRseSB1bnJlbGVhc2VkLlxuLy8gVG8gbWFrZSB0aGF0IGVhc3ksIGFsbCAyRCB0cmFuc2Zvcm1zIGluY2x1ZGUgYW4gYnJvd3Nlci10YXJnZXRpbmcgdG9nZ2xlICgkb25seTNkKVxuLy8gdG8gc3dpdGNoIGJldHdlZW4gdGhlIHR3byBzdXBwb3J0IGxpc3RzLiBUaGUgdG9nZ2xlIGRlZmF1bHRzIHRvICdmYWxzZScgKDJEKSxcbi8vIGFuZCBhbHNvIGFjY2VwdHMgJ3RydWUnICgzRCkuIEN1cnJlbnRseSB0aGUgbGlzdHMgYXJlIGFzIGZvbGxvd3M6XG4vLyAyRDogTW96aWxsYSwgV2Via2l0LCBPcGVyYSwgT2ZmaWNpYWxcbi8vIDNEOiBXZWJraXQsIEZpcmVmb3guXG5cbi8vIEF2YWlsYWJsZSBUcmFuc2Zvcm1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBTY2FsZSAoMmQgYW5kIDNkKVxuLy8gLSBSb3RhdGUgKDJkIGFuZCAzZClcbi8vIC0gVHJhbnNsYXRlICgyZCBhbmQgM2QpXG4vLyAtIFNrZXcgKDJkIG9ubHkpXG5cbi8vIFRyYW5zZm9ybSBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBUcmFuc2Zvcm0gT3JpZ2luICgyZCBhbmQgM2QpXG4vLyAtIFBlcnNwZWN0aXZlICgzZClcbi8vIC0gUGVyc3BlY3RpdmUgT3JpZ2luICgzZClcbi8vIC0gVHJhbnNmb3JtIFN0eWxlICgzZClcbi8vIC0gQmFja2ZhY2UgVmlzaWJpbGl0eSAoM2QpXG5cbi8vIE1peGlucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gdHJhbnNmb3JtLW9yaWdpblxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNmb3JtLW9yaWdpbjJkLCB0cmFuc2Zvcm0tb3JpZ2luM2Rcbi8vICAtIGhlbHBlcnM6ICAgIGFwcGx5LW9yaWdpblxuLy8gdHJhbnNmb3JtXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2Zvcm0yZCwgdHJhbnNmb3JtM2Rcbi8vICAtIGhlbHBlcnM6ICAgIHNpbXBsZS10cmFuc2Zvcm0sIGNyZWF0ZS10cmFuc2Zvcm1cbi8vIHBlcnNwZWN0aXZlXG4vLyAgLSBoZWxwZXJzOiAgICBwZXJzcGVjdGl2ZS1vcmlnaW5cbi8vIHRyYW5zZm9ybS1zdHlsZVxuLy8gYmFja2ZhY2UtdmlzaWJpbGl0eVxuLy8gc2NhbGVcbi8vICAtIHNob3J0Y3V0czogIHNjYWxlWCwgc2NhbGVZLCBzY2FsZVosIHNjYWxlM2Rcbi8vIHJvdGF0ZVxuLy8gIC0gc2hvcnRjdXRzOiAgcm90YXRlWCwgcm90YXRlWSwgcm90YXRlM2Rcbi8vIHRyYW5zbGF0ZVxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWiwgdHJhbnNsYXRlM2Rcbi8vIHNrZXdcbi8vICAtIHNob3J0Y3V0czogIHNrZXdYLCBza2V3WVxuXG4vLyBEZWZhdWx0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gVGhlIGRlZmF1bHQgeC1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi14OiA1MCUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHktb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teTogNTAlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB6LW9yaWdpbiBmb3IgdHJhbnNmb3Jtc1xuJGRlZmF1bHQtb3JpZ2luLXo6IDUwJSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeC1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS14OiAxLjI1ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB5LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXk6ICRkZWZhdWx0LXNjYWxlLXggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHotbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUtejogJGRlZmF1bHQtc2NhbGUteCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYW5nbGUgZm9yIHJvdGF0aW9uc1xuJGRlZmF1bHQtcm90YXRlOiA0NWRlZyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeC12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXg6IDEgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHktdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci15OiAxICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB6LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3ItejogMSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeC1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXg6IDFlbSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeS1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS14ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB6LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUtejogJGRlZmF1bHQtdHJhbnNsYXRlLXggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHgtYW5nbGUgZm9yIHNrZXdpbmdcbiRkZWZhdWx0LXNrZXcteDogNWRlZyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeS1hbmdsZSBmb3Igc2tld2luZ1xuJGRlZmF1bHQtc2tldy15OiA1ZGVnICFkZWZhdWx0O1xuXG4vLyAqKlRyYW5zZm9ybS1vcmlnaW4qKlxuLy8gVHJhbnNmb3JtLW9yaWdpbiBzZW50IGFzIGEgY29tcGxldGUgc3RyaW5nXG4vL1xuLy8gICAgIEBpbmNsdWRlIGFwcGx5LW9yaWdpbiggb3JpZ2luIFssIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgJ29yaWdpbicgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBjb250YWluaW5nIDEtMyAoeC95L3opIGNvb3JkaW5hdGVzXG4vLyBpbiBwZXJjZW50YWdlcywgYWJzb2x1dGUgKHB4LCBjbSwgaW4sIGVtIGV0Yy4uKSBvciByZWxhdGl2ZVxuLy8gKGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgY2VudGVyKSB1bml0c1xuLy9cbi8vIEBwYXJhbSBvbmx5M2QgU2V0IHRoaXMgdG8gdHJ1ZSB0byBvbmx5IGFwcGx5IHRoaXNcbi8vIG1peGluIHdoZXJlIGJyb3dzZXJzIGhhdmUgM0Qgc3VwcG9ydC5cbkBtaXhpbiBhcHBseS1vcmlnaW4oJG9yaWdpbiwgJG9ubHkzZCkge1xuICAkb25seTNkOiAkb25seTNkIG9yIC1jb21wYXNzLWxpc3Qtc2l6ZSgtY29tcGFzcy1saXN0KCRvcmlnaW4pKSA+IDI7XG4gIEBpZiAkb25seTNkIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLW9yaWdpbiwgJG9yaWdpbiwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLW9yaWdpbiwgJG9yaWdpbiwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9IH1cblxuLy8gVHJhbnNmb3JtLW9yaWdpbiBzZW50IGFzIGluZGl2aWR1YWwgYXJndW1lbnRzOlxuLy9cbi8vICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKCBbIG9yaWdpbi14LCBvcmlnaW4teSwgb3JpZ2luLXosIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlIDMgJ29yaWdpbi0nIGFyZ3VtZW50cyByZXByZXNlbnQgeC95L3ogY29vcmRpbmF0ZXMuXG4vL1xuLy8gKipOT1RFOioqIHNldHRpbmcgeiBjb29yZGluYXRlcyB0cmlnZ2VycyAzRCBzdXBwb3J0IGxpc3QsIGxlYXZlIGZhbHNlIGZvciAyRCBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtLW9yaWdpbigkb3JpZ2luLXg6ICRkZWZhdWx0LW9yaWdpbi14LCAkb3JpZ2luLXk6ICRkZWZhdWx0LW9yaWdpbi15LCAkb3JpZ2luLXo6IGZhbHNlLCAkb25seTNkOiBpZigkb3JpZ2luLXosIHRydWUsIGZhbHNlKSkge1xuICAkb3JpZ2luOiB1bnF1b3RlKFwiXCIpO1xuICBAaWYgJG9yaWdpbi14IG9yICRvcmlnaW4teSBvciAkb3JpZ2luLXoge1xuICAgIEBpZiAkb3JpZ2luLXgge1xuICAgICAgJG9yaWdpbjogJG9yaWdpbi14OyB9XG4gICAgQGVsc2Uge1xuICAgICAgJG9yaWdpbjogNTAlOyB9XG4gICAgQGlmICRvcmlnaW4teSB7XG4gICAgICAkb3JpZ2luOiAkb3JpZ2luICRvcmlnaW4teTsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkb3JpZ2luLXoge1xuICAgICAgICAkb3JpZ2luOiAkb3JpZ2luIDUwJTsgfSB9XG4gICAgQGlmICRvcmlnaW4teiB7XG4gICAgICAkb3JpZ2luOiAkb3JpZ2luICRvcmlnaW4tejsgfVxuICAgIEBpbmNsdWRlIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKTsgfSB9XG5cbi8vIFRyYW5zZm9ybSBzZW50IGFzIGEgY29tcGxldGUgc3RyaW5nOlxuLy9cbi8vICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oIHRyYW5zZm9ybXMgWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAndHJhbnNmb3JtcycgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBhbGwgdGhlIHRyYW5zZm9ybXMgdG8gYmUgYXBwbGllZC5cbkBtaXhpbiB0cmFuc2Zvcm0oJHRyYW5zZm9ybSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0sICR0cmFuc2Zvcm0sIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybSwgJHRyYW5zZm9ybSwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9IH1cblxuLy8gU2hvcnRjdXQgdG8gdGFyZ2V0IGFsbCBicm93c2VycyB3aXRoIDJEIHRyYW5zZm9ybSBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtMmQoJHRyYW5zKSB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsIGZhbHNlKTsgfVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgb25seSBicm93c2VycyB3aXRoIDNEIHRyYW5zZm9ybSBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtM2QoJHRyYW5zKSB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsIHRydWUpOyB9XG5cbi8vIEBkb2Mgb2ZmXG4vLyAzRCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2V0IHRoZSBwZXJzcGVjdGl2ZSBvZiAzRCB0cmFuc2Zvcm1zIG9uIHRoZSBjaGlsZHJlbiBvZiBhbiBlbGVtZW50OlxuLy9cbi8vICAgICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoIHBlcnNwZWN0aXZlIClcbi8vXG4vLyB3aGVyZSAncGVyc3BlY3RpdmUnIGlzIGEgdW5pdGxlc3MgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgZGVwdGggb2YgdGhlXG4vLyB6LWF4aXMuIFRoZSBoaWdoZXIgdGhlIHBlcnNwZWN0aXZlLCB0aGUgbW9yZSBleGFnZ2VyYXRlZCB0aGUgZm9yZXNob3J0ZW5pbmcuXG4vLyB2YWx1ZXMgZnJvbSA1MDAgdG8gMTAwMCBhcmUgbW9yZS1vci1sZXNzIFwibm9ybWFsXCIgLSBhIGdvb2Qgc3RhcnRpbmctcG9pbnQuXG5AbWl4aW4gcGVyc3BlY3RpdmUoJHApIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHBlcnNwZWN0aXZlLCAkcCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNldCB0aGUgb3JpZ2luIHBvc2l0aW9uIGZvciB0aGUgcGVyc3BlY3RpdmVcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlLW9yaWdpbihvcmlnaW4teCBbb3JpZ2luLXldKVxuLy9cbi8vIHdoZXJlIHRoZSB0d28gYXJndW1lbnRzIHJlcHJlc2VudCB4L3kgY29vcmRpbmF0ZXNcbkBtaXhpbiBwZXJzcGVjdGl2ZS1vcmlnaW4oJG9yaWdpbjogNTAlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZS1vcmlnaW4sICRvcmlnaW4sIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBEZXRlcm1pbmUgd2hldGhlciBhIDNEIG9iamVjdHMgY2hpbGRyZW4gYWxzbyBsaXZlIGluIHRoZSBnaXZlbiAzRCBzcGFjZVxuLy9cbi8vICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKCBbIHN0eWxlIF0gKVxuLy9cbi8vIHdoZXJlIGBzdHlsZWAgY2FuIGJlIGVpdGhlciBgZmxhdGAgb3IgYHByZXNlcnZlLTNkYC5cbi8vIEJyb3dzZXJzIGRlZmF1bHQgdG8gYGZsYXRgLCBtaXhpbiBkZWZhdWx0cyB0byBgcHJlc2VydmUtM2RgLlxuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGU6IHByZXNlcnZlLTNkKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tc3R5bGUsICRzdHlsZSwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERldGVybWluZSB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IHdoZW4gaXQncyBiYWNrIGlzIHR1cm5lZFxuLy9cbi8vICAgICBAaW5jbHVkZSBiYWNrZmFjZS12aXNpYmlsaXR5KCBbIHZpc2liaWxpdHkgXSApXG4vL1xuLy8gd2hlcmUgYHZpc2liaWxpdHlgIGNhbiBiZSBlaXRoZXIgYHZpc2libGVgIG9yIGBoaWRkZW5gLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byB2aXNpYmxlLCBtaXhpbiBkZWZhdWx0cyB0byBoaWRkZW5cbkBtaXhpbiBiYWNrZmFjZS12aXNpYmlsaXR5KCR2aXNpYmlsaXR5OiBoaWRkZW4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tmYWNlLXZpc2liaWxpdHksICR2aXNpYmlsaXR5LCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIFRyYW5zZm9ybSBQYXJ0aWFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhlc2Ugd29yayB3ZWxsIG9uIHRoZWlyIG93biwgYnV0IHRoZXkgZG9uJ3QgYWRkIHRvIGVhY2ggb3RoZXIsIHRoZXkgb3ZlcnJpZGUuXG4vLyBVc2UgYWxvbmcgd2l0aCB0cmFuc2Zvcm0gcGFyYW1ldGVyIG1peGlucyB0byBhZGp1c3Qgb3JpZ2luLCBwZXJzcGVjdGl2ZSBhbmQgc3R5bGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTY2FsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IGFuZCB5IGF4aXM6XG4vL1xuLy8gICAgICBAaW5jbHVkZSBzY2FsZSggWyBzY2FsZS14LCBzY2FsZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgJ3NjYWxlLScgYXJndW1lbnRzIGFyZSB1bml0bGVzcyBtdWx0aXBsaWVycyBvZiB0aGUgeCBhbmQgeSBkaW1lbnNpb25zXG4vLyBhbmQgcGVyc3BlY3RpdmUsIHdoaWNoIHdvcmtzIHRoZSBzYW1lIGFzIHRoZSBzdGFuZC1hbG9uZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS9taXhpblxuLy8gYnV0IGFwcGxpZXMgdG8gdGhlIGluZGl2aWR1YWwgZWxlbWVudCAobXVsdGlwbGllZCB3aXRoIGFueSBwYXJlbnQgcGVyc3BlY3RpdmUpXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlKCRzY2FsZS14OiAkZGVmYXVsdC1zY2FsZS14LCAkc2NhbGUteTogJHNjYWxlLXgsICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2NhbGUoJHNjYWxlLXgsICRzY2FsZS15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGVYKCBbIHNjYWxlLXgsIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZVgoJHNjYWxlOiAkZGVmYXVsdC1zY2FsZS14LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHNjYWxlWCgkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVkoIFsgc2NhbGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWSgkc2NhbGU6ICRkZWZhdWx0LXNjYWxlLXksICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2NhbGVZKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB6IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWiggWyBzY2FsZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVaKCRzY2FsZTogJGRlZmF1bHQtc2NhbGUteiwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHNjYWxlWigkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gU2NhbGUgYW5kIG9iamVjdCBhbG9uZyBhbGwgdGhyZWUgYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGUzZCggWyBzY2FsZS14LCBzY2FsZS15LCBzY2FsZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUzZCgkc2NhbGUteDogJGRlZmF1bHQtc2NhbGUteCwgJHNjYWxlLXk6ICRkZWZhdWx0LXNjYWxlLXksICRzY2FsZS16OiAkZGVmYXVsdC1zY2FsZS16LCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIEBkb2Mgb2ZmXG4vLyBSb3RhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHogYXhpcyAgKDJEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vIHdoZXJlICdyb3RhdGlvbicgaXMgYW4gYW5nbGUgc2V0IGluIGRlZ3JlZXMgKGRlZykgb3IgcmFkaWFuIChyYWQpIHVuaXRzXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZSgkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogcm90YXRlKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIEEgbG9uZ2N1dCBmb3IgJ3JvdGF0ZScgaW4gY2FzZSB5b3UgZm9yZ2V0IHRoYXQgJ3onIGlzIGltcGxpZWRcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWigkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHJvdGF0ZSgkcm90YXRlLCAkcGVyc3BlY3RpdmUsICRvbmx5M2QpOyB9XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB4IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlWCggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVgoJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogcm90YXRlWCgkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB5IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWSgkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiByb3RhdGVZKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgYW4gYXJiaXRyYXJ5IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHZlY3Rvci14LCB2ZWN0b3IteSwgdmVjdG9yLXosIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vIHdoZXJlIHRoZSAndmVjdG9yLScgYXJndW1lbnRzIGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLlxuLy8gVGhlc2UgbnVtYmVycyBhcmUgbm90IGltcG9ydGFudCBvbiB0aGVpciBvd24sIGJ1dCBpbiByZWxhdGlvbiB0byBvbmUgYW5vdGhlclxuLy8gY3JlYXRpbmcgYW4gYXhpcyBmcm9tIHlvdXIgdHJhbnNmb3JtLW9yaWdpbiwgYWxvbmcgdGhlIGF4aXMgb2YgWHggPSBZeSA9IFp6LlxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGUzZCgkdmVjdG9yLXg6ICRkZWZhdWx0LXZlY3Rvci14LCAkdmVjdG9yLXk6ICRkZWZhdWx0LXZlY3Rvci15LCAkdmVjdG9yLXo6ICRkZWZhdWx0LXZlY3Rvci16LCAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiByb3RhdGUzZCgkdmVjdG9yLXgsICR2ZWN0b3IteSwgJHZlY3Rvci16LCAkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIEBkb2Mgb2ZmXG4vLyBUcmFuc2xhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggb3IgeSBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgdHJhbnNsYXRlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgdGhlICd0cmFuc2xhdGUtJyBhcmd1bWVudHMgYWNjZXB0IGFueSBkaXN0YW5jZSBpbiBwZXJjZW50YWdlcyBvciBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIHVuaXRzLlxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGUoJHRyYW5zbGF0ZS14OiAkZGVmYXVsdC10cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15OiAkZGVmYXVsdC10cmFuc2xhdGUteSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGUoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWCgkdHJhbnMteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWCgkdHJhbnMteCk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHkgYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVZKCR0cmFucy15OiAkZGVmYXVsdC10cmFuc2xhdGUteSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVZKCR0cmFucy15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVooJHRyYW5zLXo6ICRkZWZhdWx0LXRyYW5zbGF0ZS16LCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWigkdHJhbnMteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCwgeSBhbmQgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgdHJhbnNsYXRlLXksIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlM2QoJHRyYW5zbGF0ZS14OiAkZGVmYXVsdC10cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15OiAkZGVmYXVsdC10cmFuc2xhdGUteSwgJHRyYW5zbGF0ZS16OiAkZGVmYXVsdC10cmFuc2xhdGUteiwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15LCAkdHJhbnNsYXRlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIFNrZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTa2V3IGFuIGVsZW1lbnQ6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy14LCBza2V3LXksIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlICdza2V3LScgYXJndW1lbnRzIGFjY2VwdCBjc3MgYW5nbGVzIGluIGRlZ3JlZXMgKGRlZykgb3IgcmFkaWFuIChyYWQpIHVuaXRzLlxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3KCRza2V3LXg6ICRkZWZhdWx0LXNrZXcteCwgJHNrZXcteTogJGRlZmF1bHQtc2tldy15LCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHNrZXcoJHNrZXcteCwgJHNrZXcteSk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIFNrZXcgYW4gZWxlbWVudCBhbG9uZyB0aGUgeCBheGl6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy14LCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3WCgkc2tldy14OiAkZGVmYXVsdC1za2V3LXgsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2tld1goJHNrZXcteCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIFNrZXcgYW4gZWxlbWVudCBhbG9uZyB0aGUgeSBheGlzXG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy15LCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3WSgkc2tldy15OiAkZGVmYXVsdC1za2V3LXksICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2tld1koJHNrZXcteSk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIEZ1bGwgdHJhbnNmb3JtIG1peGluc1xuLy8gRm9yIHNldHRpbmdzIGFueSBjb21iaW5hdGlvbiBvZiB0cmFuc2Zvcm1zIGFzIGFyZ3VtZW50c1xuLy8gVGhlc2UgYXJlIGNvbXBsZXggYW5kIG5vdCBoaWdobHkgcmVjb21tZW5kZWQgZm9yIGRhaWx5IHVzZS4gVGhleSBhcmUgbWFpbmx5XG4vLyBoZXJlIGZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHB1cnBvc2VzLlxuLy9cbi8vICogdGhleSBpbmNsdWRlIG9yaWdpbiBhZGp1c3RtZW50c1xuLy8gKiBzY2FsZSB0YWtlcyBhIG11bHRpcGxpZXIgKHVuaXRsZXNzKSwgcm90YXRlIGFuZCBza2V3IHRha2UgZGVncmVlcyAoZGVnKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBjcmVhdGUtdHJhbnNmb3JtKCRwZXJzcGVjdGl2ZTogZmFsc2UsICRzY2FsZS14OiBmYWxzZSwgJHNjYWxlLXk6IGZhbHNlLCAkc2NhbGUtejogZmFsc2UsICRyb3RhdGUteDogZmFsc2UsICRyb3RhdGUteTogZmFsc2UsICRyb3RhdGUtejogZmFsc2UsICRyb3RhdGUzZDogZmFsc2UsICR0cmFucy14OiBmYWxzZSwgJHRyYW5zLXk6IGZhbHNlLCAkdHJhbnMtejogZmFsc2UsICRza2V3LXg6IGZhbHNlLCAkc2tldy15OiBmYWxzZSwgJG9yaWdpbi14OiBmYWxzZSwgJG9yaWdpbi15OiBmYWxzZSwgJG9yaWdpbi16OiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiB1bnF1b3RlKFwiXCIpO1xuICAvLyBwZXJzcGVjdGl2ZVxuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSk7IH1cbiAgLy8gc2NhbGVcbiAgQGlmICRzY2FsZS14IGFuZCAkc2NhbGUteSB7XG4gICAgQGlmICRzY2FsZS16IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNjYWxlM2QoJHNjYWxlLXgsICRzY2FsZS15LCAkc2NhbGUteik7IH1cbiAgICBAZWxzZSB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBzY2FsZSgkc2NhbGUteCwgJHNjYWxlLXkpOyB9IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkc2NhbGUteCB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBzY2FsZVgoJHNjYWxlLXgpOyB9XG4gICAgQGlmICRzY2FsZS15IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNjYWxlWSgkc2NhbGUteSk7IH1cbiAgICBAaWYgJHNjYWxlLXoge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2NhbGVaKCRzY2FsZS16KTsgfSB9XG4gIC8vIHJvdGF0ZVxuICBAaWYgJHJvdGF0ZS14IHtcbiAgICAkdHJhbnM6ICR0cmFucyByb3RhdGVYKCRyb3RhdGUteCk7IH1cbiAgQGlmICRyb3RhdGUteSB7XG4gICAgJHRyYW5zOiAkdHJhbnMgcm90YXRlWSgkcm90YXRlLXkpOyB9XG4gIEBpZiAkcm90YXRlLXoge1xuICAgICR0cmFuczogJHRyYW5zIHJvdGF0ZVooJHJvdGF0ZS16KTsgfVxuICBAaWYgJHJvdGF0ZTNkIHtcbiAgICAkdHJhbnM6ICR0cmFucyByb3RhdGUzZCgkcm90YXRlM2QpOyB9XG4gIC8vIHRyYW5zbGF0ZVxuICBAaWYgJHRyYW5zLXggYW5kICR0cmFucy15IHtcbiAgICBAaWYgJHRyYW5zLXoge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlM2QoJHRyYW5zLXgsICR0cmFucy15LCAkdHJhbnMteik7IH1cbiAgICBAZWxzZSB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGUoJHRyYW5zLXgsICR0cmFucy15KTsgfSB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHRyYW5zLXgge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWCgkdHJhbnMteCk7IH1cbiAgICBAaWYgJHRyYW5zLXkge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWSgkdHJhbnMteSk7IH1cbiAgICBAaWYgJHRyYW5zLXoge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWigkdHJhbnMteik7IH0gfVxuICAvLyBza2V3XG4gIEBpZiAkc2tldy14IGFuZCAkc2tldy15IHtcbiAgICAkdHJhbnM6ICR0cmFucyBza2V3KCRza2V3LXgsICRza2V3LXkpOyB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHNrZXcteCB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBza2V3WCgkc2tldy14KTsgfVxuICAgIEBpZiAkc2tldy15IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNrZXdZKCRza2V3LXkpOyB9IH1cbiAgLy8gYXBwbHkgaXQhXG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKCRvcmlnaW4teCwgJG9yaWdpbi15LCAkb3JpZ2luLXosICRvbmx5M2QpOyB9XG5cbi8vIEEgc2ltcGxpZmllZCBzZXQgb2Ygb3B0aW9uc1xuLy8gYmFja3dhcmRzLWNvbXBhdGlibGUgd2l0aCB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgJ3RyYW5zZm9ybScgbWl4aW5cbkBtaXhpbiBzaW1wbGUtdHJhbnNmb3JtKCRzY2FsZTogZmFsc2UsICRyb3RhdGU6IGZhbHNlLCAkdHJhbnMteDogZmFsc2UsICR0cmFucy15OiBmYWxzZSwgJHNrZXcteDogZmFsc2UsICRza2V3LXk6IGZhbHNlLCAkb3JpZ2luLXg6IGZhbHNlLCAkb3JpZ2luLXk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGNyZWF0ZS10cmFuc2Zvcm0oZmFsc2UsICRzY2FsZSwgJHNjYWxlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAkcm90YXRlLCBmYWxzZSwgJHRyYW5zLXgsICR0cmFucy15LCBmYWxzZSwgJHNrZXcteCwgJHNrZXcteSwgJG9yaWdpbi14LCAkb3JpZ2luLXksIGZhbHNlLCBmYWxzZSk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ1NTIFRyYW5zaXRpb25zXG4vLyBDdXJyZW50bHkgb25seSB3b3JrcyBpbiBXZWJraXQuXG4vL1xuLy8gKiBleHBlY3RlZCBpbiBDU1MzLCBGaXJlRm94IDMuNi83IGFuZCBPcGVyYSBQcmVzdG8gMi4zXG4vLyAqIFdlJ2xsIGJlIHByZXBhcmVkLlxuLy9cbi8vIEluY2x1ZGluZyB0aGlzIHN1Ym1vZHVsZSBzZXRzIGZvbGxvd2luZyBkZWZhdWx0cyBmb3IgdGhlIG1peGluczpcbi8vXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IGFsbFxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gOiAxc1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gOiBmYWxzZVxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkgICAgOiBmYWxzZVxuLy9cbi8vIE92ZXJyaWRlIHRoZW0gaWYgeW91IGxpa2UuIFRpbWluZy1mdW5jdGlvbiBhbmQgZGVsYXkgYXJlIHNldCB0byBmYWxzZSBmb3IgYnJvd3NlciBkZWZhdWx0cyAoZWFzZSwgMHMpLlxuXG4kZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGwgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246IDFzICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheTogZmFsc2UgIWRlZmF1bHQ7XG5cbiR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXM6IHRyYW5zZm9ybSwgdHJhbnNmb3JtLW9yaWdpbiAhZGVmYXVsdDtcblxuLy8gT25lIG9yIG1vcmUgcHJvcGVydGllcyB0byB0cmFuc2l0aW9uXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIGFsc28gYWNjZXB0cyBcImFsbFwiIG9yIFwibm9uZVwiXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0eS0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LCAkcHJvcGVydHktMjogZmFsc2UsICRwcm9wZXJ0eS0zOiBmYWxzZSwgJHByb3BlcnR5LTQ6IGZhbHNlLCAkcHJvcGVydHktNTogZmFsc2UsICRwcm9wZXJ0eS02OiBmYWxzZSwgJHByb3BlcnR5LTc6IGZhbHNlLCAkcHJvcGVydHktODogZmFsc2UsICRwcm9wZXJ0eS05OiBmYWxzZSwgJHByb3BlcnR5LTEwOiBmYWxzZSkge1xuICBAaWYgdHlwZS1vZigkcHJvcGVydHktMSkgPT0gc3RyaW5nIHtcbiAgICAkcHJvcGVydHktMTogdW5xdW90ZSgkcHJvcGVydHktMSk7IH1cbiAgJHByb3BlcnRpZXM6IGNvbXBhY3QoJHByb3BlcnR5LTEsICRwcm9wZXJ0eS0yLCAkcHJvcGVydHktMywgJHByb3BlcnR5LTQsICRwcm9wZXJ0eS01LCAkcHJvcGVydHktNiwgJHByb3BlcnR5LTcsICRwcm9wZXJ0eS04LCAkcHJvcGVydHktOSwgJHByb3BlcnR5LTEwKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC13ZWJraXQsICRwcm9wZXJ0aWVzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1tb3osICRwcm9wZXJ0aWVzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW8sICRwcm9wZXJ0aWVzKTsgfVxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkcHJvcGVydGllczsgfVxuXG4vLyBPbmUgb3IgbW9yZSBkdXJhdGlvbnMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkdXJhdGlvbnMgd2lsbCBhZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kdXJhdGlvbigkZHVyYXRpb24tMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbiwgJGR1cmF0aW9uLTI6IGZhbHNlLCAkZHVyYXRpb24tMzogZmFsc2UsICRkdXJhdGlvbi00OiBmYWxzZSwgJGR1cmF0aW9uLTU6IGZhbHNlLCAkZHVyYXRpb24tNjogZmFsc2UsICRkdXJhdGlvbi03OiBmYWxzZSwgJGR1cmF0aW9uLTg6IGZhbHNlLCAkZHVyYXRpb24tOTogZmFsc2UsICRkdXJhdGlvbi0xMDogZmFsc2UpIHtcbiAgQGlmIHR5cGUtb2YoJGR1cmF0aW9uLTEpID09IHN0cmluZyB7XG4gICAgJGR1cmF0aW9uLTE6IHVucXVvdGUoJGR1cmF0aW9uLTEpOyB9XG4gICRkdXJhdGlvbnM6IGNvbXBhY3QoJGR1cmF0aW9uLTEsICRkdXJhdGlvbi0yLCAkZHVyYXRpb24tMywgJGR1cmF0aW9uLTQsICRkdXJhdGlvbi01LCAkZHVyYXRpb24tNiwgJGR1cmF0aW9uLTcsICRkdXJhdGlvbi04LCAkZHVyYXRpb24tOSwgJGR1cmF0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZHVyYXRpb24sICRkdXJhdGlvbnMsIC1tb3osIC13ZWJraXQsIC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gT25lIG9yIG1vcmUgdGltaW5nIGZ1bmN0aW9uc1xuLy9cbi8vICogWyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoeDEsIHkxLCB4MiwgeTIpXVxuLy8gKiBGb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGVmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkZnVuY3Rpb24tMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiwgJGZ1bmN0aW9uLTI6IGZhbHNlLCAkZnVuY3Rpb24tMzogZmFsc2UsICRmdW5jdGlvbi00OiBmYWxzZSwgJGZ1bmN0aW9uLTU6IGZhbHNlLCAkZnVuY3Rpb24tNjogZmFsc2UsICRmdW5jdGlvbi03OiBmYWxzZSwgJGZ1bmN0aW9uLTg6IGZhbHNlLCAkZnVuY3Rpb24tOTogZmFsc2UsICRmdW5jdGlvbi0xMDogZmFsc2UpIHtcbiAgJGZ1bmN0aW9uLTE6IHVucXVvdGUoJGZ1bmN0aW9uLTEpO1xuICAkZnVuY3Rpb25zOiBjb21wYWN0KCRmdW5jdGlvbi0xLCAkZnVuY3Rpb24tMiwgJGZ1bmN0aW9uLTMsICRmdW5jdGlvbi00LCAkZnVuY3Rpb24tNSwgJGZ1bmN0aW9uLTYsICRmdW5jdGlvbi03LCAkZnVuY3Rpb24tOCwgJGZ1bmN0aW9uLTksICRmdW5jdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJGZ1bmN0aW9ucywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBPbmUgb3IgbW9yZSB0cmFuc2l0aW9uLWRlbGF5cyBpbiBzZWNvbmRzXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIHRoZXNlIGRlbGF5cyB3aWxsIGVmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5KCRkZWxheS0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5LCAkZGVsYXktMjogZmFsc2UsICRkZWxheS0zOiBmYWxzZSwgJGRlbGF5LTQ6IGZhbHNlLCAkZGVsYXktNTogZmFsc2UsICRkZWxheS02OiBmYWxzZSwgJGRlbGF5LTc6IGZhbHNlLCAkZGVsYXktODogZmFsc2UsICRkZWxheS05OiBmYWxzZSwgJGRlbGF5LTEwOiBmYWxzZSkge1xuICBAaWYgdHlwZS1vZigkZGVsYXktMSkgPT0gc3RyaW5nIHtcbiAgICAkZGVsYXktMTogdW5xdW90ZSgkZGVsYXktMSk7IH1cbiAgJGRlbGF5czogY29tcGFjdCgkZGVsYXktMSwgJGRlbGF5LTIsICRkZWxheS0zLCAkZGVsYXktNCwgJGRlbGF5LTUsICRkZWxheS02LCAkZGVsYXktNywgJGRlbGF5LTgsICRkZWxheS05LCAkZGVsYXktMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi1kZWxheSwgJGRlbGF5cywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBUcmFuc2l0aW9uIGFsbC1pbi1vbmUgc2hvcnRoYW5kXG5cbkBtaXhpbiBzaW5nbGUtdHJhbnNpdGlvbigkcHJvcGVydHk6ICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHksICRkdXJhdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbiwgJGZ1bmN0aW9uOiAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uLCAkZGVsYXk6ICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkpIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb21wYWN0KCRwcm9wZXJ0eSAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSkpOyB9XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLTE6IGRlZmF1bHQsICR0cmFuc2l0aW9uLTI6IGZhbHNlLCAkdHJhbnNpdGlvbi0zOiBmYWxzZSwgJHRyYW5zaXRpb24tNDogZmFsc2UsICR0cmFuc2l0aW9uLTU6IGZhbHNlLCAkdHJhbnNpdGlvbi02OiBmYWxzZSwgJHRyYW5zaXRpb24tNzogZmFsc2UsICR0cmFuc2l0aW9uLTg6IGZhbHNlLCAkdHJhbnNpdGlvbi05OiBmYWxzZSwgJHRyYW5zaXRpb24tMTA6IGZhbHNlKSB7XG4gIEBpZiAkdHJhbnNpdGlvbi0xID09IGRlZmF1bHQge1xuICAgICR0cmFuc2l0aW9uLTE6IGNvbXBhY3QoJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSk7IH1cbiAgJHRyYW5zaXRpb25zOiBmYWxzZTtcbiAgQGlmIHR5cGUtb2YoJHRyYW5zaXRpb24tMSkgPT0gbGlzdCBhbmQgdHlwZS1vZihudGgoJHRyYW5zaXRpb24tMSwgMSkpID09IGxpc3Qge1xuICAgICR0cmFuc2l0aW9uczogam9pbigkdHJhbnNpdGlvbi0xLCBjb21wYWN0KCR0cmFuc2l0aW9uLTIsICR0cmFuc2l0aW9uLTMsICR0cmFuc2l0aW9uLTQsICR0cmFuc2l0aW9uLTUsICR0cmFuc2l0aW9uLTYsICR0cmFuc2l0aW9uLTcsICR0cmFuc2l0aW9uLTgsICR0cmFuc2l0aW9uLTksICR0cmFuc2l0aW9uLTEwKSwgY29tbWEpOyB9XG4gIEBlbHNlIHtcbiAgICAkdHJhbnNpdGlvbnM6IGNvbXBhY3QoJHRyYW5zaXRpb24tMSwgJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApOyB9XG4gICRkZWxheXM6IGNvbW1hLWxpc3QoKTtcbiAgJGhhcy1kZWxheXM6IGZhbHNlO1xuICAkd2Via2l0LXZhbHVlOiBjb21tYS1saXN0KCk7XG4gICRtb3otdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG8tdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgLy8gVGhpcyBibG9jayBjYW4gYmUgbWFkZSBjb25zaWRlcmFibHkgc2ltcGxlciBhdCB0aGUgcG9pbnQgaW4gdGltZSB0aGF0XG4gIC8vIHdlIG5vIGxvbmdlciBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgZGlmZmVyZW5jZXMgaW4gaG93IGRlbGF5cyBhcmUgdHJlYXRlZC5cbiAgQGVhY2ggJHRyYW5zaXRpb24gaW4gJHRyYW5zaXRpb25zIHtcbiAgICAvLyBFeHRyYWN0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgbGlzdFxuICAgIC8vICh0aGlzIHdvdWxkIGJlIGNsZWFuZXIgaWYgbnRoIHRvb2sgYSAzcmQgYXJndW1lbnQgdG8gcHJvdmlkZSBhIGRlZmF1bHQgdmFsdWUpLlxuICAgICRwcm9wZXJ0eTogbnRoKCR0cmFuc2l0aW9uLCAxKTtcbiAgICAkZHVyYXRpb246IGZhbHNlO1xuICAgICR0aW1pbmctZnVuY3Rpb246IGZhbHNlO1xuICAgICRkZWxheTogZmFsc2U7XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAxIHtcbiAgICAgICRkdXJhdGlvbjogbnRoKCR0cmFuc2l0aW9uLCAyKTsgfVxuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMiB7XG4gICAgICAkdGltaW5nLWZ1bmN0aW9uOiBudGgoJHRyYW5zaXRpb24sIDMpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAzIHtcbiAgICAgICRkZWxheTogbnRoKCR0cmFuc2l0aW9uLCA0KTtcbiAgICAgICRoYXMtZGVsYXlzOiB0cnVlOyB9XG4gICAgLy8gSWYgYSBkZWxheSBpcyBwcm92aWRlZCB3aXRob3V0IGEgdGltaW5nIGZ1bmN0aW9uXG4gICAgQGlmIGlzLXRpbWUoJHRpbWluZy1mdW5jdGlvbikgYW5kIG5vdCAkZGVsYXkge1xuICAgICAgJGRlbGF5OiAkdGltaW5nLWZ1bmN0aW9uO1xuICAgICAgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7XG4gICAgICAkaGFzLWRlbGF5czogdHJ1ZTsgfVxuICAgIC8vIEtlZXAgYSBsaXN0IG9mIGRlbGF5cyBpbiBjYXNlIG9uZSBpcyBzcGVjaWZpZWRcbiAgICAkZGVsYXlzOiBhcHBlbmQoJGRlbGF5cywgaWYoJGRlbGF5LCAkZGVsYXksIDBzKSk7XG4gICAgJHdlYmtpdC12YWx1ZTogYXBwZW5kKCR3ZWJraXQtdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbikpO1xuICAgICRtb3otdmFsdWU6IGFwcGVuZCgkbW96LXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1tb3osICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KSk7XG4gICAgJG8tdmFsdWU6IGFwcGVuZCgkby12YWx1ZSwgY29tcGFjdChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbywgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbiAkZGVsYXkpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHdlYmtpdC12YWx1ZTtcbiAgICAvLyBvbGQgd2Via2l0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgZGVsYXkgcGFyYW1ldGVyIGluIHRoZSBzaG9ydGhhbmQgc28gd2UgcHJvZ3Jlc3NpdmVseSBlbmhhbmNlIGl0LlxuICAgIEBpZiAkaGFzLWRlbGF5cyB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6ICRkZWxheXM7IH0gfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LXRyYW5zaXRpb246ICRtb3otdmFsdWU7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLXRyYW5zaXRpb246ICRvLXZhbHVlOyB9XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uczsgfVxuXG4vLyBjb2VyY2UgYSBsaXN0IHRvIGJlIGNvbW1hIGRlbGltaXRlZCBvciBtYWtlIGEgbmV3LCBlbXB0eSBjb21tYSBkZWxpbWl0ZWQgbGlzdC5cbkBmdW5jdGlvbiBjb21tYS1saXN0KCRsaXN0OiAoKSkge1xuICBAcmV0dXJuIGpvaW4oKCksICRsaXN0LCBjb21tYSk7IH1cblxuLy8gUmV0dXJucyBgJHByb3BlcnR5YCB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaWYgaXQgaXMgZm91bmQgaW4gYCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXNgLlxuQGZ1bmN0aW9uIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICRwcm9wZXJ0eSkge1xuICBAaWYgdHlwZS1vZigkcHJvcGVydHkpID09IGxpc3Qge1xuICAgICRuZXctbGlzdDogY29tbWEtbGlzdCgpO1xuICAgIEBlYWNoICR2IGluICRwcm9wZXJ0eSB7XG4gICAgICAkbmV3LWxpc3Q6IGFwcGVuZCgkbmV3LWxpc3QsIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICR2KSk7IH1cbiAgICBAcmV0dXJuICRuZXctbGlzdDsgfVxuICBAZWxzZSB7XG4gICAgQGlmIGluZGV4KCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXMsICRwcm9wZXJ0eSkge1xuICAgICAgQHJldHVybiAjeyRwcmVmaXh9LSN7JHByb3BlcnR5fTsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gJHByb3BlcnR5OyB9IH0gfVxuXG4vLyBDaGVja3MgaWYgdGhlIHZhbHVlIGdpdmVuIGlzIGEgdW5pdCBvZiB0aW1lLlxuQGZ1bmN0aW9uIGlzLXRpbWUoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIHtcbiAgICBAcmV0dXJuIG5vdCBub3QgaW5kZXgocyBtcywgdW5pdCgkdmFsdWUpKTsgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYXBwZWFyYW5jZSBmb3IgTW96aWxsYSwgV2Via2l0IGFuZCBwb3NzaWJseSB0aGUgZnV0dXJlLlxuLy8gVGhlIGFwcGVhcmFuY2UgcHJvcGVydHkgaXMgY3VycmVudGx5IG5vdCBwcmVzZW50IGluIGFueSBuZXdlciBDU1Mgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGVyZSBpcyBubyBvZmZpY2lhbCBsaXN0IG9mIGFjY2VwdGVkIHZhbHVlcywgYnV0IHlvdSBtaWdodCBjaGVjayB0aGVzZSBzb3VyY2U6XG4vLyAgIE1vemlsbGEgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9DU1MvLW1vei1hcHBlYXJhbmNlXG4vLyAgIFdlYmtpdCAgOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avd2Via2l0LW1pcnJvci9zb3VyY2UvYnJvd3NlL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluP3NwZWM9c3ZuZjFhZWE1NTlkY2QwMjVhODk0NmFhN2RhNmU0ZTgzMDZmNWMxYjYwNCZyPTYzYzdkMWFmNDQ0MzBiMzE0MjMzZmVhMzQyYzNkZGIyYTA1MmUzNjVcbi8vICAgKHNlYXJjaCBmb3IgJ2FwcGVhcmFuY2UnIHdpdGhpbiB0aGUgcGFnZSlcblxuQG1peGluIGFwcGVhcmFuY2UoJGFwKSB7XG4gICRhcDogdW5xdW90ZSgkYXApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYXBwZWFyYW5jZSwgJGFwLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBXZWJraXQsIElFMTAgYW5kIGZ1dHVyZSBzdXBwb3J0IGZvciBbQ1NTIFJlZ2lvbnNdKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8pXG4vL1xuLy8gJHRhcmdldCBpcyBhIHZhbHVlIHlvdSB1c2UgdG8gbGluayB0d28gcmVnaW9ucyBvZiB5b3VyIGNzcy4gR2l2ZSB0aGUgc291cmNlIG9mIHlvdXIgY29udGVudCB0aGUgZmxvdy1pbnRvIHByb3BlcnR5LCBhbmQgZ2l2ZSB5b3VyIHRhcmdldCBjb250YWluZXIgdGhlIGZsb3ctZnJvbSBwcm9wZXJ0eS5cbi8vXG4vLyBGb3IgYSB2aXN1YWwgZXhwbGFuYXRpb24sIHNlZSB0aGUgZGlhZ3JhbXMgYXQgQ2hyaXMgQ295aWVyJ3Ncbi8vIFtDU1MtVHJpY2tzXShodHRwOi8vY3NzLXRyaWNrcy5jb20vY29udGVudC1mb2xkaW5nLylcblxuQG1peGluIGZsb3ctaW50bygkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWludG8sICR0YXJnZXQsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgbm90IG9mZmljaWFsKTsgfVxuXG5AbWl4aW4gZmxvdy1mcm9tKCR0YXJnZXQpIHtcbiAgJHRhcmdldDogdW5xdW90ZSgkdGFyZ2V0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZsb3ctZnJvbSwgJHRhcmdldCwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIE1peGlucyB0byBzdXBwb3J0IHNwZWNpZmljIENTUyBUZXh0IExldmVsIDMgZWxlbWVudHNcbi8vXG4vL1xuLy9cbi8vIE1peGluIGZvciB3b3JkLWJyZWFrIHByb3BlcnRpZXNcbi8vIGh0dHA6Ly93d3cudzMub3JnL2NzczMtdGV4dC8jd29yZC1icmVha1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogbm9ybWFsLCBrZWVwLWFsbCwgYnJlYWstYWxsXG4vL1xuLy8gRXhhbXBsZTpcbi8vICAgIHAud29yZEJyZWFrIHtAaW5jbHVkZSB3b3JkLWJyZWFrKGJyZWFrLWFsbCk7fVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIHAud29yZEJyZWFrIHtcbi8vICAgICAgLW1zLXdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO31cbi8vXG5AbWl4aW4gd29yZC1icmVhaygkdmFsdWU6IG5vcm1hbCkge1xuICBAaWYgJHZhbHVlID09IGJyZWFrLWFsbCB7XG4gICAgLy9Nb3N0IGJyb3dzZXJzIGhhbmRsZSB0aGUgYnJlYWstYWxsIGNhc2UgdGhlIHNhbWUuLi5cbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgJHZhbHVlLCBub3QgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7XG4gICAgLy9XZWJraXQgaGFuZGxlcyBicmVhay1hbGwgZGlmZmVyZW50bHkuLi4gYXMgYnJlYWstd29yZFxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCBicmVhay13b3JkLCBub3QgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgJHZhbHVlLCBub3QgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH0gfVxuXG4vLyBNaXhpbiBmb3IgdGhlIGh5cGhlbnMgcHJvcGVydHlcbi8vXG4vLyBXM0Mgc3BlY2lmaWNhdGlvbjogaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy10ZXh0LyNoeXBoZW5zXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJHR5cGUgOiBhdXRvLCBtYW51YWwsIG5vbmVcbi8vXG4vLyBFeGFtcGxlOlxuLy8gIHAge1xuLy8gICAgQGluY2x1ZGUgaHlwaGVucyhhdXRvKTt9XG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgcCB7XG4vLyAgICAtbW96LWh5cGhlbnM6IGF1dG87XG4vLyAgICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XG4vLyAgICBoeXBoZW5zOiBhdXRvO31cbi8vXG5AbWl4aW4gaHlwaGVucygkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGh5cGhlbnMsICR2YWx1ZSwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gTWl4aW4gZm9yIHgtYnJvd3NlciBoeXBoZW5hdGlvbiBiYXNlZCBvbiBAYXVjaGVuYmVyZydzIHBvc3Q6XG4vLyBSZW1vdmVzIHRoZSBuZWVkIGZvciB0aGUgPHdici8+IEhUTUwgdGFnXG4vLyBodHRwOi8vYmxvZy5rZW5uZXRoLmlvL2Jsb2cvMjAxMi8wMy8wNC93b3JkLXdyYXBwaW5nLWh5cGVybmF0aW9uLXVzaW5nLWNzcy9cbi8vXG4vLyAgRXhhbXBsZTpcbi8vICBkaXYge0BpbmNsdWRlIGh5cGhlbmF0aW9uO31cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOlxuLy8gICAgZGl2IHtcbi8vICAgICAgLW1zLXdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuLy8gICAgICAtbW96LWh5cGhlbnM6IGF1dG87XG4vLyAgICAgIC13ZWJraXQtaHlwaGVuczogYXV0bztcbi8vICAgICAgaHlwaGVuczogYXV0bzt9XG4vL1xuQG1peGluIGh5cGhlbmF0aW9uIHtcbiAgQGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO1xuICBAaW5jbHVkZSBoeXBoZW5zOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgc3VwcG9ydCBmb3IgdGhlIHVwY29taW5nICg/KSBjc3MzIGZpbHRlciBwcm9wZXJ0eS5cbi8vXG4vLyBFYWNoIGZpbHRlciBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyBmaWx0ZXIgcHJvcGVydHkuXG5AbWl4aW4gZmlsdGVyKCRmaWx0ZXItMSwgJGZpbHRlci0yOiBmYWxzZSwgJGZpbHRlci0zOiBmYWxzZSwgJGZpbHRlci00OiBmYWxzZSwgJGZpbHRlci01OiBmYWxzZSwgJGZpbHRlci02OiBmYWxzZSwgJGZpbHRlci03OiBmYWxzZSwgJGZpbHRlci04OiBmYWxzZSwgJGZpbHRlci05OiBmYWxzZSwgJGZpbHRlci0xMDogZmFsc2UpIHtcbiAgJGZpbHRlcjogY29tcGFjdCgkZmlsdGVyLTEsICRmaWx0ZXItMiwgJGZpbHRlci0zLCAkZmlsdGVyLTQsICRmaWx0ZXItNSwgJGZpbHRlci02LCAkZmlsdGVyLTcsICRmaWx0ZXItOCwgJGZpbHRlci05LCAkZmlsdGVyLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZpbHRlciwgJGZpbHRlciwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiB0cnVlO1xuXG4vLyBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgU2FzcydzIEBleHRlbmQgZGlyZWN0aXZlIHRvIGFwcGx5IHRoZSBiZWhhdmlvclxuLy8gdG8geW91ciBQSUUgZWxlbWVudHMuIFRvIGFzc2lzdCB5b3UsIENvbXBhc3MgcHJvdmlkZXMgdGhpcyB2YXJpYWJsZS5cbi8vIFdoZW4gc2V0LCBpdCB3aWxsIGNhdXNlIHRoZSBgQGluY2x1ZGUgcGllYCBtaXhpbiB0byBleHRlbmQgdGhpcyBjbGFzcy5cbi8vIFRoZSBjbGFzcyBuYW1lIHlvdSBwcm92aWRlIHNob3VsZCAqKm5vdCoqIGluY2x1ZGUgdGhlIGAuYC5cbiRwaWUtYmFzZS1jbGFzczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGFwcHJvYWNoIHRvIHVzaW5nIFBJRS5cbi8vIENhbiBiZSBvbmUgb2Y6XG4vL1xuLy8gKiByZWxhdGl2ZSAoZGVmYXVsdClcbi8vICogei1pbmRleFxuLy8gKiBub25lXG4kcGllLWRlZmF1bHQtYXBwcm9hY2g6IHJlbGF0aXZlICFkZWZhdWx0O1xuXG4vLyBUaGUgbG9jYXRpb24gb2YgeW91ciBQSUUgYmVoYXZpb3IgZmlsZVxuLy8gVGhpcyBzaG91bGQgYmUgcm9vdC1yZWxhdGl2ZSB0byB5b3VyIHdlYiBzZXJ2ZXJcbi8vIHJlbGF0aXZlIGFzc2V0cyBkb24ndCB3b3JrLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4vLyB5b3Ugc2V0IHRoaXMgeW91cnNlbGYuXG4kcGllLWJlaGF2aW9yOiBzdHlsZXNoZWV0LXVybChcIlBJRS5odGNcIikgIWRlZmF1bHQ7XG5cbi8vIFdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoZVxuLy8gZmlyc3QgYW5jZXN0b3Igb2YgdGhlIFBJRSBlbGVtZW50IGF0XG4vLyBvciBiZWZvcmUgdGhlIGNvbnRhaW5lcidzIG9wYXF1ZSBiYWNrZ3JvdW5kXG4vLyBzaG91bGQgaGF2ZSBhIHotaW5kZXggc2V0IGFzIHdlbGwgdG8gZW5zdXJlXG4vLyBwcm9wZXJ0IHotaW5kZXggc3RhY2tpbmcuXG4vL1xuLy8gVGhlIGAkcG9zaXRpb25gIGFyZ3VtZW50IG11c3QgYmUgc29tZSBub24tc3RhdGljXG4vLyB2YWx1ZSAoYWJzb2x1dGUsIHJlbGF0aXZlLCBldGMuKVxuQG1peGluIHBpZS1jb250YWluZXIoJHotaW5kZXg6IDAsICRwb3NpdGlvbjogcmVsYXRpdmUpIHtcbiAgei1pbmRleDogJHotaW5kZXg7XG4gIHBvc2l0aW9uOiAkcG9zaXRpb247IH1cblxuLy8gUElFIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGlzIGJlaGF2aW9yIGF0dGFjaGVkIHRvIHRoZW0uXG4vLyBJRSBpcyBicm9rZW4gLS0gaXQgZG9lc24ndCB0aGluayBvZiBiZWhhdmlvciB1cmxzIGFzXG4vLyByZWxhdGl2ZSB0byB0aGUgc3R5bGVzaGVldC4gSXQgY29uc2lkZXJzIHRoZW0gcmVsYXRpdmVcbi8vIHRvIHRoZSB3ZWJwYWdlLiBBcyBhIHJlc3VsdCwgeW91IGNhbm5vdCByZWxpYWJseSB1c2Vcbi8vIGNvbXBhc3MncyByZWxhdGl2ZV9hc3NldHMgd2l0aCBQSUUuXG4vL1xuLy8gKiBgJGFwcHJvYWNoYCAtIG9uZSBvZjogcmVsYXRpdmUsIHotaW5kZXgsIG9yIG5vbmVcbi8vICogYCR6LWluZGV4YCAtIHdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoaXNcbi8vICAgICAgICAgICAgICAgIGlzIHRoZSB6LWluZGV4IHRoYXQgaXMgYXBwbGllZC5cbkBtaXhpbiBwaWUtZWxlbWVudCgkYXBwcm9hY2g6ICRwaWUtZGVmYXVsdC1hcHByb2FjaCwgJHotaW5kZXg6IDApIHtcbiAgYmVoYXZpb3I6ICRwaWUtYmVoYXZpb3I7XG4gIEBpZiAkYXBwcm9hY2ggPT0gcmVsYXRpdmUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gei1pbmRleCB7XG4gICAgei1pbmRleDogJHotaW5kZXg7IH0gfVxuXG4vLyBhIHNtYXJ0IG1peGluIHRoYXQga25vd3MgdG8gZXh0ZW5kIG9yIGluY2x1ZGUgcGllLWVsZW1lbnQgYWNjb3JkaW5nXG4vLyB0byB5b3VyIHN0eWxlc2hlZXQncyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcy5cbkBtaXhpbiBwaWUoJGJhc2UtY2xhc3M6ICRwaWUtYmFzZS1jbGFzcykge1xuICBAaWYgJGJhc2UtY2xhc3Mge1xuICAgIEBleHRlbmQgLiN7JGJhc2UtY2xhc3N9OyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBwaWUtZWxlbWVudDsgfSB9XG5cbi8vIFdhdGNoIGAkbmAgbGV2ZWxzIG9mIGFuY2VzdG9ycyBmb3IgY2hhbmdlcyB0byB0aGVpciBjbGFzcyBhdHRyaWJ1dGVcbi8vIFNvIHRoYXQgY2FzY2FkaW5nIHN0eWxlcyB3aWxsIHdvcmsgY29ycmVjdGx5IG9uIHRoZSBQSUUgZWxlbWVudC5cbkBtaXhpbiBwaWUtd2F0Y2gtYW5jZXN0b3JzKCRuKSB7XG4gIC1waWUtd2F0Y2gtYW5jZXN0b3JzOiAkbjsgfVxuIiwKCQkiLy8gVXNlciBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY2FuIGJlIGV4cGFuZGVkIHRvIGhhbmRsZSBhbGwgdGhlIHVzZXIgaW50ZXJmYWNlIHByb3BlcnRpZXMgYXNcbi8vIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBicm93c2Vyczpcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvV0QtY3NzMy11c2VyaW50LTIwMDAwMjE2XG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoaXMgcHJvcGVydHkgY29udHJvbHMgdGhlIHNlbGVjdGlvbiBtb2RlbCBhbmQgZ3JhbnVsYXJpdHkgb2YgYW4gZWxlbWVudC5cbi8vXG4vLyBAcGFyYW0gJHNlbGVjdFxuLy8gICBbIG5vbmUgfCB0ZXh0IHwgdG9nZ2xlIHwgZWxlbWVudCB8IGVsZW1lbnRzIHwgYWxsIHwgaW5oZXJpdCBdXG5AbWl4aW4gdXNlci1zZWxlY3QoJHNlbGVjdCkge1xuICAkc2VsZWN0OiB1bnF1b3RlKCRzZWxlY3QpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodXNlci1zZWxlY3QsICRzZWxlY3QsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoaXMgaXMgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gZm9yIGFsbCB0aGUgb3RoZXIgbWl4aW5zIGluIHRoaXMgbW9kdWxlLlxuLy8gSXQgaXMgdGhlIG9ubHkgd2F5IHRvIGFjY2VzcyBwcmVmaXggc3VwcG9ydCBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgdGhlIHNwZWMuXG4vLyBEZXZpYXRlcyBmcm9tIGNhbm9uaWNhbCBDb21wYXNzIGltcGxlbWVudGF0aW9uIGJ5IGRyb3BwaW5nIHN1cHBvcnQgZm9yXG4vLyBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgRmxleGJveCBzcGVjLlxuLy9cbi8vIGAkcHJvcGVydGllc2A6IG1hcCBvZiBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0aGF0IHNob3VsZCBiZSBwcmVmaXhlZFxuQG1peGluIGZsZXhib3goJHByb3BlcnRpZXMpIHtcbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRwcm9wID09IGRpc3BsYXkge1xuICAgICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsLXZhbHVlKGRpc3BsYXksICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKCRwcm9wLCAkdmFsdWUsIG5vdCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfSB9IH1cblxuLy8gVmFsdWVzIGZvciAkZGlzcGxheSBhcmU6IGZsZXggKGRlZmF1bHQpLCBpbmxpbmUtZmxleFxuQG1peGluIGRpc3BsYXktZmxleCgkZGlzcGxheTogZmxleCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChkaXNwbGF5OiAkZGlzcGxheSkpOyB9XG5cbi8vIFZhbHVlczogcm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb24pIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb24pKTsgfVxuXG4vLyBWYWx1ZXM6IG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2VcbkBtaXhpbiBmbGV4LXdyYXAoJHdyYXApIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC13cmFwOiAkd3JhcCkpOyB9XG5cbi8vIFNob3J0aGFuZCBmb3IgZmxleC1kaXJlY3Rpb24gYW5kIGZsZXgtd3JhcC5cbkBtaXhpbiBmbGV4LWZsb3coJGZsb3cpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1mbG93OiAkZmxvdykpOyB9XG5cbi8vIEFjY2VwdHMgYW4gaW50ZWdlclxuQG1peGluIG9yZGVyKCRvcmRlcikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChvcmRlcjogJG9yZGVyKSk7IH1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWdyb3csIGZsZXgtc2hyaW5rIGFuZCBvcHRpb25hbGx5IGZsZXgtYmFzaXMuXG4vLyBTcGFjZSBzZXBhcmF0ZWQsIGluIHRoYXQgb3JkZXIuXG5AbWl4aW4gZmxleCgkZmxleCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4OiAkZmxleCkpOyB9XG5cbi8vIEFjY2VwdHMgYSBudW1iZXIuXG5AbWl4aW4gZmxleC1ncm93KCRmbGV4LWdyb3cpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1ncm93OiAkZmxleC1ncm93KSk7IH1cblxuLy8gQWNjZXB0cyBhIG51bWJlci5cbkBtaXhpbiBmbGV4LXNocmluaygkZmxleC1zaHJpbmspIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1zaHJpbms6ICRmbGV4LXNocmluaykpOyB9XG5cbi8vIEFjY2VwdHMgYW55IGxlZ2FsIHZhbHVlIGZvciB0aGUgd2lkdGggcHJvcGVydHkuXG5AbWl4aW4gZmxleC1iYXNpcygkZmxleC1iYXNpcykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWJhc2lzOiAkZmxleC1iYXNpcykpOyB9XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZFxuQG1peGluIGp1c3RpZnktY29udGVudCgkanVzdGlmeS1jb250ZW50KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGp1c3RpZnktY29udGVudDogJGp1c3RpZnktY29udGVudCkpOyB9XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24taXRlbXMoJGFsaWduLWl0ZW1zKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLWl0ZW1zOiAkYWxpZ24taXRlbXMpKTsgfVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGF1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1zZWxmKCRhbGlnbi1zZWxmKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLXNlbGY6ICRhbGlnbi1zZWxmKSk7IH1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLWNvbnRlbnQoJGFsaWduLWNvbnRlbnQpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24tY29udGVudDogJGFsaWduLWNvbnRlbnQpKTsgfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ1NTIEFuaW1hdGlvbnMuXG5cbi8vIEFwcGx5IGFuIGFuaW1hdGlvbiBwcm9wZXJ0eSBhbmQgdmFsdWUgd2l0aCB0aGUgY29ycmVjdCBicm93c2VyIHN1cHBvcnRcbkBtaXhpbiBhbmltYXRpb24tc3VwcG9ydCgkcHJvcGVydHksICR2YWx1ZSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBOYW1lIG9mIGFueSBhbmltYXRpb24gYXMgYSBzdHJpbmcuXG4kZGVmYXVsdC1hbmltYXRpb24tbmFtZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIER1cmF0aW9uIG9mIHRoZSBlbnRpcmUgYW5pbWF0aW9uIGluIHNlY29uZHMuXG4kZGVmYXVsdC1hbmltYXRpb24tZHVyYXRpb246IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBEZWxheSBmb3Igc3RhcnQgb2YgYW5pbWF0aW9uIGluIHNlY29uZHMuXG4kZGVmYXVsdC1hbmltYXRpb24tZGVsYXk6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgdGltaW5nIGZ1bmN0aW9uKHMpIHRvIGJlIHVzZWQgYmV0d2VlbiBrZXlmcmFtZXMuIFtlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoJG51bWJlciwgJG51bWJlciwgJG51bWJlciwgJG51bWJlcildXG4kZGVmYXVsdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBbaW5maW5pdGUgfCAkbnVtYmVyXVxuJGRlZmF1bHQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gc2hvdWxkIHBsYXkgaW4gcmV2ZXJzZSBvbiBhbHRlcm5hdGUgY3ljbGVzLiBbbm9ybWFsIHwgYWx0ZXJuYXRlXVxuJGRlZmF1bHQtYW5pbWF0aW9uLWRpcmVjdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFdoYXQgdmFsdWVzIGFyZSBhcHBsaWVkIGJ5IHRoZSBhbmltYXRpb24gb3V0c2lkZSB0aGUgdGltZSBpdCBpcyBleGVjdXRpbmcuIFtub25lIHwgZm9yd2FyZHMgfCBiYWNrd2FyZHMgfCBib3RoXVxuJGRlZmF1bHQtYW5pbWF0aW9uLWZpbGwtbW9kZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4gW3J1bm5pbmcgfCBwYXVzZWRdXG4kZGVmYXVsdC1hbmltYXRpb24tcGxheS1zdGF0ZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIENyZWF0ZSBhIG5hbWVkIGFuaW1hdGlvbiBzZXF1ZW5jZSB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGVsZW1lbnRzIGxhdGVyLlxuLy9cbi8vICAgICAkbmFtZSAgICAtIFRoZSBuYW1lIG9mIHlvdXIgYW5pbWF0aW9uLlxuLy8gICAgIEBjb250ZW50IC0gVGhlIGtleWZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLlxuQG1peGluIGtleWZyYW1lcygkbmFtZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkbW96IHtcbiAgICBAaW5jbHVkZSB3aXRoLW9ubHktc3VwcG9ydC1mb3IoJG1vejogdHJ1ZSkge1xuICAgICAgQC1tb3ota2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7IH0gfSB9XG4gIEBpZiAkd2Via2l0IHtcbiAgICBAaW5jbHVkZSB3aXRoLW9ubHktc3VwcG9ydC1mb3IoJHdlYmtpdDogdHJ1ZSkge1xuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7IH0gfSB9XG4gIEBpZiAkbyB7XG4gICAgQGluY2x1ZGUgd2l0aC1vbmx5LXN1cHBvcnQtZm9yKCRvOiB0cnVlKSB7XG4gICAgICBALW8ta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7IH0gfSB9XG4gIEBpZiAkbXMge1xuICAgIEBpbmNsdWRlIHdpdGgtb25seS1zdXBwb3J0LWZvcigkbXM6IHRydWUpIHtcbiAgICAgIEAtbXMta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7IH0gfSB9XG4gIEBpZiAka2h0bWwge1xuICAgIEBpbmNsdWRlIHdpdGgtb25seS1zdXBwb3J0LWZvcigka2h0bWw6IHRydWUpIHtcbiAgICAgIEAta2h0bWwta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7IH0gfSB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgIEBpbmNsdWRlIHdpdGgtb25seS1zdXBwb3J0LWZvciB7XG4gICAgICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgICAgQGNvbnRlbnQ7IH0gfSB9IH1cblxuLy8gQXBwbHkgMS0xMCBhbmltYXRpb24gbmFtZXMuXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUoJG5hbWUtMTogJGRlZmF1bHQtYW5pbWF0aW9uLW5hbWUsICRuYW1lLTI6IGZhbHNlLCAkbmFtZS0zOiBmYWxzZSwgJG5hbWUtNDogZmFsc2UsICRuYW1lLTU6IGZhbHNlLCAkbmFtZS02OiBmYWxzZSwgJG5hbWUtNzogZmFsc2UsICRuYW1lLTg6IGZhbHNlLCAkbmFtZS05OiBmYWxzZSwgJG5hbWUtMTA6IGZhbHNlKSB7XG4gICRuYW1lOiBjb21wYWN0KCRuYW1lLTEsICRuYW1lLTIsICRuYW1lLTMsICRuYW1lLTQsICRuYW1lLTUsICRuYW1lLTYsICRuYW1lLTcsICRuYW1lLTgsICRuYW1lLTksICRuYW1lLTEwKTtcbiAgQGluY2x1ZGUgYW5pbWF0aW9uLXN1cHBvcnQoYW5pbWF0aW9uLW5hbWUsICRuYW1lKTsgfVxuXG4vLyBBcHBseSAxLTEwIGFuaW1hdGlvbiBkdXJhdGlvbnMuXG5AbWl4aW4gYW5pbWF0aW9uLWR1cmF0aW9uKCRkdXJhdGlvbi0xOiAkZGVmYXVsdC1hbmltYXRpb24tZHVyYXRpb24sICRkdXJhdGlvbi0yOiBmYWxzZSwgJGR1cmF0aW9uLTM6IGZhbHNlLCAkZHVyYXRpb24tNDogZmFsc2UsICRkdXJhdGlvbi01OiBmYWxzZSwgJGR1cmF0aW9uLTY6IGZhbHNlLCAkZHVyYXRpb24tNzogZmFsc2UsICRkdXJhdGlvbi04OiBmYWxzZSwgJGR1cmF0aW9uLTk6IGZhbHNlLCAkZHVyYXRpb24tMTA6IGZhbHNlKSB7XG4gICRkdXJhdGlvbjogY29tcGFjdCgkZHVyYXRpb24tMSwgJGR1cmF0aW9uLTIsICRkdXJhdGlvbi0zLCAkZHVyYXRpb24tNCwgJGR1cmF0aW9uLTUsICRkdXJhdGlvbi02LCAkZHVyYXRpb24tNywgJGR1cmF0aW9uLTgsICRkdXJhdGlvbi05LCAkZHVyYXRpb24tMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24tZHVyYXRpb24sICRkdXJhdGlvbik7IH1cblxuLy8gQXBwbHkgMS0xMCBhbmltYXRpb24gZGVsYXlzLlxuQG1peGluIGFuaW1hdGlvbi1kZWxheSgkZGVsYXktMTogJGRlZmF1bHQtYW5pbWF0aW9uLWRlbGF5LCAkZGVsYXktMjogZmFsc2UsICRkZWxheS0zOiBmYWxzZSwgJGRlbGF5LTQ6IGZhbHNlLCAkZGVsYXktNTogZmFsc2UsICRkZWxheS02OiBmYWxzZSwgJGRlbGF5LTc6IGZhbHNlLCAkZGVsYXktODogZmFsc2UsICRkZWxheS05OiBmYWxzZSwgJGRlbGF5LTEwOiBmYWxzZSkge1xuICAkZGVsYXk6IGNvbXBhY3QoJGRlbGF5LTEsICRkZWxheS0yLCAkZGVsYXktMywgJGRlbGF5LTQsICRkZWxheS01LCAkZGVsYXktNiwgJGRlbGF5LTcsICRkZWxheS04LCAkZGVsYXktOSwgJGRlbGF5LTEwKTtcbiAgQGluY2x1ZGUgYW5pbWF0aW9uLXN1cHBvcnQoYW5pbWF0aW9uLWRlbGF5LCAkZGVsYXkpOyB9XG5cbi8vIEFwcGx5IDEtMTAgYW5pbWF0aW9uIHRpbWluZyBmdW5jdGlvbnMuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigkZnVuY3Rpb24tMTogJGRlZmF1bHQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJGZ1bmN0aW9uLTI6IGZhbHNlLCAkZnVuY3Rpb24tMzogZmFsc2UsICRmdW5jdGlvbi00OiBmYWxzZSwgJGZ1bmN0aW9uLTU6IGZhbHNlLCAkZnVuY3Rpb24tNjogZmFsc2UsICRmdW5jdGlvbi03OiBmYWxzZSwgJGZ1bmN0aW9uLTg6IGZhbHNlLCAkZnVuY3Rpb24tOTogZmFsc2UsICRmdW5jdGlvbi0xMDogZmFsc2UpIHtcbiAgJGZ1bmN0aW9uOiBjb21wYWN0KCRmdW5jdGlvbi0xLCAkZnVuY3Rpb24tMiwgJGZ1bmN0aW9uLTMsICRmdW5jdGlvbi00LCAkZnVuY3Rpb24tNSwgJGZ1bmN0aW9uLTYsICRmdW5jdGlvbi03LCAkZnVuY3Rpb24tOCwgJGZ1bmN0aW9uLTksICRmdW5jdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGFuaW1hdGlvbi1zdXBwb3J0KGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRmdW5jdGlvbik7IH1cblxuLy8gQXBwbHkgMS0xMCBhbmltYXRpb24gaXRlcmF0aW9uIGNvdW50cy5cbkBtaXhpbiBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50KCRjb3VudC0xOiAkZGVmYXVsdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkY291bnQtMjogZmFsc2UsICRjb3VudC0zOiBmYWxzZSwgJGNvdW50LTQ6IGZhbHNlLCAkY291bnQtNTogZmFsc2UsICRjb3VudC02OiBmYWxzZSwgJGNvdW50LTc6IGZhbHNlLCAkY291bnQtODogZmFsc2UsICRjb3VudC05OiBmYWxzZSwgJGNvdW50LTEwOiBmYWxzZSkge1xuICAkY291bnQ6IGNvbXBhY3QoJGNvdW50LTEsICRjb3VudC0yLCAkY291bnQtMywgJGNvdW50LTQsICRjb3VudC01LCAkY291bnQtNiwgJGNvdW50LTcsICRjb3VudC04LCAkY291bnQtOSwgJGNvdW50LTEwKTtcbiAgQGluY2x1ZGUgYW5pbWF0aW9uLXN1cHBvcnQoYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJGNvdW50KTsgfVxuXG4vLyBBcHBseSAxLTEwIGFuaW1hdGlvbiBkaXJlY3Rpb25zLlxuQG1peGluIGFuaW1hdGlvbi1kaXJlY3Rpb24oJGRpcmVjdGlvbi0xOiAkZGVmYXVsdC1hbmltYXRpb24tZGlyZWN0aW9uLCAkZGlyZWN0aW9uLTI6IGZhbHNlLCAkZGlyZWN0aW9uLTM6IGZhbHNlLCAkZGlyZWN0aW9uLTQ6IGZhbHNlLCAkZGlyZWN0aW9uLTU6IGZhbHNlLCAkZGlyZWN0aW9uLTY6IGZhbHNlLCAkZGlyZWN0aW9uLTc6IGZhbHNlLCAkZGlyZWN0aW9uLTg6IGZhbHNlLCAkZGlyZWN0aW9uLTk6IGZhbHNlLCAkZGlyZWN0aW9uLTEwOiBmYWxzZSkge1xuICAkZGlyZWN0aW9uOiBjb21wYWN0KCRkaXJlY3Rpb24tMSwgJGRpcmVjdGlvbi0yLCAkZGlyZWN0aW9uLTMsICRkaXJlY3Rpb24tNCwgJGRpcmVjdGlvbi01LCAkZGlyZWN0aW9uLTYsICRkaXJlY3Rpb24tNywgJGRpcmVjdGlvbi04LCAkZGlyZWN0aW9uLTksICRkaXJlY3Rpb24tMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24tZGlyZWN0aW9uLCAkZGlyZWN0aW9uKTsgfVxuXG4vLyBBcHBseSAxLTEwIGFuaW1hdGlvbiBmaWxsIG1vZGVzLlxuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUoJG1vZGUtMTogJGRlZmF1bHQtYW5pbWF0aW9uLWZpbGwtbW9kZSwgJG1vZGUtMjogZmFsc2UsICRtb2RlLTM6IGZhbHNlLCAkbW9kZS00OiBmYWxzZSwgJG1vZGUtNTogZmFsc2UsICRtb2RlLTY6IGZhbHNlLCAkbW9kZS03OiBmYWxzZSwgJG1vZGUtODogZmFsc2UsICRtb2RlLTk6IGZhbHNlLCAkbW9kZS0xMDogZmFsc2UpIHtcbiAgJG1vZGU6IGNvbXBhY3QoJG1vZGUtMSwgJG1vZGUtMiwgJG1vZGUtMywgJG1vZGUtNCwgJG1vZGUtNSwgJG1vZGUtNiwgJG1vZGUtNywgJG1vZGUtOCwgJG1vZGUtOSwgJG1vZGUtMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZSk7IH1cblxuLy8gQXBwbHkgMS0xMCBhbmltYXRpb24gcGxheSBzdGF0ZXMuXG5AbWl4aW4gYW5pbWF0aW9uLXBsYXktc3RhdGUoJHN0YXRlLTE6ICRkZWZhdWx0LWFuaW1hdGlvbi1wbGF5LXN0YXRlLCAkc3RhdGUtMjogZmFsc2UsICRzdGF0ZS0zOiBmYWxzZSwgJHN0YXRlLTQ6IGZhbHNlLCAkc3RhdGUtNTogZmFsc2UsICRzdGF0ZS02OiBmYWxzZSwgJHN0YXRlLTc6IGZhbHNlLCAkc3RhdGUtODogZmFsc2UsICRzdGF0ZS05OiBmYWxzZSwgJHN0YXRlLTEwOiBmYWxzZSkge1xuICAkc3RhdGU6IGNvbXBhY3QoJHN0YXRlLTEsICRzdGF0ZS0yLCAkc3RhdGUtMywgJHN0YXRlLTQsICRzdGF0ZS01LCAkc3RhdGUtNiwgJHN0YXRlLTcsICRzdGF0ZS04LCAkc3RhdGUtOSwgJHN0YXRlLTEwKTtcbiAgQGluY2x1ZGUgYW5pbWF0aW9uLXN1cHBvcnQoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZSk7IH1cblxuLy8gU2hvcnRjdXQgdG8gYXBwbHkgYSBuYW1lZCBhbmltYXRpb24gdG8gYW4gZWxlbWVudCwgd2l0aCBhbGwgdGhlIHNldHRpbmdzLlxuLy9cbi8vICAgICAkYW5pbWF0aW9uLTEgICA6IE5hbWUgYW5kIHNldHRpbmdzIGZvciB0aGUgZmlyc3QgYW5pbWF0aW9uLiBbPHZhbHVlcz4gfCBkZWZhdWx0XVxuLy8gICAgIC4uLlxuLy8gICAgICRhbmltYXRpb24tMTAgIDogTmFtZSBhbmQgc2V0dGluZ3MgZm9yIHRoZSB0ZW50aCBhbmltYXRpb24uIDx2YWx1ZXM+XG5AbWl4aW4gYW5pbWF0aW9uKCRhbmltYXRpb24tMTogZGVmYXVsdCwgJGFuaW1hdGlvbi0yOiBmYWxzZSwgJGFuaW1hdGlvbi0zOiBmYWxzZSwgJGFuaW1hdGlvbi00OiBmYWxzZSwgJGFuaW1hdGlvbi01OiBmYWxzZSwgJGFuaW1hdGlvbi02OiBmYWxzZSwgJGFuaW1hdGlvbi03OiBmYWxzZSwgJGFuaW1hdGlvbi04OiBmYWxzZSwgJGFuaW1hdGlvbi05OiBmYWxzZSwgJGFuaW1hdGlvbi0xMDogZmFsc2UpIHtcbiAgQGlmICRhbmltYXRpb24tMSA9PSBkZWZhdWx0IHtcbiAgICAkYW5pbWF0aW9uLTE6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdCgkZGVmYXVsdC1hbmltYXRpb24tbmFtZSwgJGRlZmF1bHQtYW5pbWF0aW9uLWR1cmF0aW9uLCAkZGVmYXVsdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkZGVmYXVsdC1hbmltYXRpb24tZGVsYXksICRkZWZhdWx0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsICRkZWZhdWx0LWFuaW1hdGlvbi1kaXJlY3Rpb24sICRkZWZhdWx0LWFuaW1hdGlvbi1maWxsLW1vZGUsICRkZWZhdWx0LWFuaW1hdGlvbi1wbGF5LXN0YXRlKSk7IH1cbiAgJGFuaW1hdGlvbjogY29tcGFjdCgkYW5pbWF0aW9uLTEsICRhbmltYXRpb24tMiwgJGFuaW1hdGlvbi0zLCAkYW5pbWF0aW9uLTQsICRhbmltYXRpb24tNSwgJGFuaW1hdGlvbi02LCAkYW5pbWF0aW9uLTcsICRhbmltYXRpb24tOCwgJGFuaW1hdGlvbi05LCAkYW5pbWF0aW9uLTEwKTtcbiAgQGluY2x1ZGUgYW5pbWF0aW9uLXN1cHBvcnQoYW5pbWF0aW9uLCAkYW5pbWF0aW9uKTsgfVxuIiwKCQkiQG1peGluIHNldC1leHBlcmltZW50YWwtc3VwcG9ydCgkbW96OiBmYWxzZSwgJHdlYmtpdDogZmFsc2UsICRtczogZmFsc2UsICRvOiBmYWxzZSwgJGtodG1sOiBmYWxzZSkge1xuICAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6ICRtb3o7XG4gICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiAkd2Via2l0O1xuICAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogJG1zO1xuICAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiAkbztcbiAgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogJGtodG1sOyB9XG5cbkBtaXhpbiB3aXRoLW9ubHktc3VwcG9ydC1mb3IoJG1vejogZmFsc2UsICR3ZWJraXQ6IGZhbHNlLCAkbXM6IGZhbHNlLCAkbzogZmFsc2UsICRraHRtbDogZmFsc2UpIHtcbiAgLy8gQ2FwdHVyZSB0aGUgY3VycmVudCBzdGF0ZVxuICAkb3JpZ2luYWwtbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE7XG4gICRvcmlnaW5hbC13ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0O1xuICAkb3JpZ2luYWwtbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTtcbiAgJG9yaWdpbmFsLW1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDtcbiAgJG9yaWdpbmFsLWtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sO1xuICBAaW5jbHVkZSBzZXQtZXhwZXJpbWVudGFsLXN1cHBvcnQoJG1veiwgJHdlYmtpdCwgJG1zLCAkbywgJGtodG1sKTtcbiAgQGNvbnRlbnQ7XG4gIEBpbmNsdWRlIHNldC1leHBlcmltZW50YWwtc3VwcG9ydCgkb3JpZ2luYWwtbW96LCAkb3JpZ2luYWwtd2Via2l0LCAkb3JpZ2luYWwtbXMsICRvcmlnaW5hbC1vLCAkb3JpZ2luYWwta2h0bWwpOyB9XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEFuaW1hdGlvbnMgZnJvbSBBbmltYXRlLmNzc1xuLy8gQXV0aG9yIDogRGFuIEVkZW5cbi8vIFVSTCAgICA6IGh0dHA6Ly9kYW5lZGVuLm1lL2FuaW1hdGUvXG4vL1xuLy8gQXR0ZW50aW9uIHNlZWtlcnNcbi8vICAtIGZsYXNoIGJvdW5jZSBzaGFrZSB0YWRhIHN3aW5nIHdvYmJsZSBwdWxzZVxuLy8gRmFkaW5nIGVudHJhbmNlc1xuLy8gIC0gZmFkZUluIGZhZGVJblVwIGZhZGVJbkRvd24gZmFkZUluTGVmdCBmYWRlSW5SaWdodCBmYWRlSW5VcEJpZyBmYWRlSW5Eb3duQmlnIGZhZGVJbkxlZnRCaWcgZmFkZUluUmlnaHRCaWdcbi8vIEZhZGluZyBleGl0c1xuLy8gIC0gZmFkZU91dCBmYWRlT3V0VXAgZmFkZU91dERvd24gZmFkZU91dExlZnQgZmFkZU91dFJpZ2h0IGZhZGVPdXRVcEJpZyBmYWRlT3V0RG93bkJpZyBmYWRlT3V0TGVmdEJpZyBmYWRlT3V0UmlnaHRCaWdcbi8vIEJvdW5jaW5nIGVudHJhbmNlc1xuLy8gIC0gYm91bmNlSW4gYm91bmNlSW5Eb3duIGJvdW5jZUluVXAgYm91bmNlSW5MZWZ0IGJvdW5jZUluUmlnaHRcbi8vIEJvdW5jaW5nIGV4aXRzXG4vLyAgLSBib3VuY2VPdXQgYm91bmNlT3V0RG93biBib3VuY2VPdXRVcCBib3VuY2VPdXRMZWZ0IGJvdW5jZU91dFJpZ2h0XG4vLyBSb3RhdGluZyBlbnRyYW5jZXNcbi8vICAtIHJvdGF0ZUluIHJvdGF0ZUluRG93bkxlZnQgcm90YXRlSW5Eb3duUmlnaHQgcm90YXRlSW5VcExlZnQgcm90YXRlSW5VcFJpZ2h0XG4vLyBSb3RhdGluZyBleGl0c1xuLy8gIC0gcm90YXRlT3V0IHJvdGF0ZU91dERvd25MZWZ0IHJvdGF0ZU91dERvd25SaWdodCByb3RhdGVPdXRVcExlZnQgcm90YXRlT3V0VXBSaWdodFxuLy8gTGlnaHRzcGVlZFxuLy8gIC0gbGlnaHRTcGVlZEluIGxpZ2h0U3BlZWRPdXRcbi8vIFNwZWNpYWxzXG4vLyAgLSBoaW5nZSByb2xsSW4gcm9sbE91dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW1wb3J0IFwiYW5pbWF0ZS9hdHRlbnRpb24tc2Vla2Vyc1wiO1xuQGltcG9ydCBcImFuaW1hdGUvYm91bmNpbmdcIjtcbkBpbXBvcnQgXCJhbmltYXRlL2ZhZGluZ1wiO1xuQGltcG9ydCBcImFuaW1hdGUvZmxpcHBlcnNcIjtcbkBpbXBvcnQgXCJhbmltYXRlL2xpZ2h0c3BlZWRcIjtcbkBpbXBvcnQgXCJhbmltYXRlL3JvdGF0aW5nXCI7XG5AaW1wb3J0IFwiYW5pbWF0ZS9zcGVjaWFsc1wiO1xuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmxhc2gpIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMjUlIHtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTsgfVxuICA3NSUge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9XG4gIDIwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTsgfVxuICA0MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoLTMwcHgpOyB9XG4gIDUwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTsgfVxuICA2MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoLTE1cHgpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhzaGFrZSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTsgfVxuICAxMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTEwcHgpOyB9XG4gIDIwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgxMHB4KTsgfVxuICAzMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTEwcHgpOyB9XG4gIDQwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgxMHB4KTsgfVxuICA1MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTEwcHgpOyB9XG4gIDYwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgxMHB4KTsgfVxuICA3MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTEwcHgpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgxMHB4KTsgfVxuICA5MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTEwcHgpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHRhZGEpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHNjYWxlKDEpOyB9XG4gIDEwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDAuOSkgcm90YXRlKC0zZGVnKSk7IH1cbiAgMjAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMC45KSByb3RhdGUoLTNkZWcpKTsgfVxuICAzMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpIHJvdGF0ZSgzZGVnKSk7IH1cbiAgNDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMS4xKSByb3RhdGUoLTNkZWcpKTsgfVxuICA1MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpIHJvdGF0ZSgzZGVnKSk7IH1cbiAgNjAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMS4xKSByb3RhdGUoLTNkZWcpKTsgfVxuICA3MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpIHJvdGF0ZSgzZGVnKSk7IH1cbiAgODAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMS4xKSByb3RhdGUoLTNkZWcpKTsgfVxuICA5MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpIHJvdGF0ZSgzZGVnKSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDEpIHJvdGF0ZSgwKSk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHN3aW5nKSB7XG4gIDIwJSwgNDAlLCA2MCUsIDgwJSwgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbih0b3AgY2VudGVyKTsgfVxuICAyMCUge1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgxNWRlZyk7IH1cbiAgNDAlIHtcbiAgICBAaW5jbHVkZSByb3RhdGUoLTEwZGVnKTsgfVxuICA2MCUge1xuICAgIEBpbmNsdWRlIHJvdGF0ZSg1ZGVnKTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgtNWRlZyk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgcm90YXRlKDBkZWcpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyh3b2JibGUpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCUpOyB9XG4gIDE1JSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTI1JSkgcm90YXRlKC01ZGVnKSk7IH1cbiAgMzAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgyMCUpIHJvdGF0ZSgzZGVnKSk7IH1cbiAgNDUlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtMTUlKSByb3RhdGUoLTNkZWcpKTsgfVxuICA2MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDEwJSkgcm90YXRlKDJkZWcpKTsgfVxuICA3NSUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01JSkgcm90YXRlKC0xZGVnKSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMCUpKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocHVsc2UpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHNjYWxlKDEpOyB9XG4gIDUwJSB7XG4gICAgQGluY2x1ZGUgc2NhbGUoMS4xKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBzY2FsZSgxKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMod2lnZ2xlKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBza2V3WCg5ZGVnKTsgfVxuICAxMCUge1xuICAgIEBpbmNsdWRlIHNrZXdYKC04ZGVnKTsgfVxuICAyMCUge1xuICAgIEBpbmNsdWRlIHNrZXdYKDdkZWcpOyB9XG4gIDMwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goLTZkZWcpOyB9XG4gIDQwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goNWRlZyk7IH1cbiAgNTAlIHtcbiAgICBAaW5jbHVkZSBza2V3WCgtNGRlZyk7IH1cbiAgNjAlIHtcbiAgICBAaW5jbHVkZSBza2V3WCgzZGVnKTsgfVxuICA3MCUge1xuICAgIEBpbmNsdWRlIHNrZXdYKC0yZGVnKTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHNrZXdYKDFkZWcpOyB9XG4gIDkwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goMGRlZyk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgc2tld1goMGRlZyk7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW1wb3J0IFwiYm91bmNpbmcvYm91bmNpbmctZXhpdHNcIjtcbkBpbXBvcnQgXCJib3VuY2luZy9ib3VuY2luZy1lbnRyYW5jZXNcIjtcbiIsCgkJIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZU91dCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgc2NhbGUoMSk7IH1cbiAgMjUlIHtcbiAgICBAaW5jbHVkZSBzY2FsZSgwLjk1KTsgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgc2NhbGUoMS4xKTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHNjYWxlKDAuMyk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZU91dFVwKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9XG4gIDIwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDIwcHgpOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMjAwMHB4KTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlT3V0RG93bikge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTsgfVxuICAyMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMjBweCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDIwMDBweCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZU91dExlZnQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7IH1cbiAgMjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMjBweCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKC0yMDAwcHgpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2VPdXRSaWdodCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTsgfVxuICAyMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMjBweCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDIwMDBweCk7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlSW4pIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgc2NhbGUoMC4zKTsgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgc2NhbGUoMS4wNSk7IH1cbiAgNzAlIHtcbiAgICBAaW5jbHVkZSBzY2FsZSgwLjkpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHNjYWxlKDEpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2VJbkRvd24pIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMjAwMHB4KTsgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgzMHB4KTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoLTEwcHgpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZUluVXApIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgyMDAwcHgpOyB9XG4gIDYwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKC0zMHB4KTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMTBweCk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlSW5SaWdodCkge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDIwMDBweCk7IH1cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTMwcHgpOyB9XG4gIDgwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgxMHB4KTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2VJbkxlZnQpIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMjAwMHB4KTsgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgzMHB4KTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTEwcHgpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW1wb3J0IFwiZmFkaW5nL2ZhZGluZy1leGl0c1wiO1xuQGltcG9ydCBcImZhZGluZy9mYWRpbmctZW50cmFuY2VzXCI7XG4iLAoJCSIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0KSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVPdXRVcCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoLTIwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVPdXREb3duKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgyMHB4KTtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0UmlnaHQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDIwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVPdXRMZWZ0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgtMjBweCk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZU91dFVwQmlnKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgtMjAwMHB4KTtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0RG93bkJpZykge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgyMDAwcHgpOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0UmlnaHRCaWcpIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMjAwMHB4KTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZU91dExlZnRCaWcpIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTIwMDBweCk7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZUluKSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJblVwKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDIwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW5Eb3duKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoMCk7XG4gICAgb3BhY2l0eTogMTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZUluUmlnaHQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoMjBweCk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJbkxlZnQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTIwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWCgwKTtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW5VcEJpZykge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgyMDAwcHgpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNsYXRlWSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW5Eb3duQmlnKSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoLTIwMDBweCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVZKDApOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW5SaWdodEJpZykge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDIwMDBweCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlSW5MZWZ0QmlnKSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVgoLTIwMDBweCk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaW5jbHVkZSB0cmFuc2xhdGVYKDApOyB9IH1cbiIsCgkJIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZsaXApIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwKSk7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbihlYXNlLW91dCk7IH1cbiAgNDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMTUwcHgpIHJvdGF0ZVkoMTcwZGVnKSk7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbihlYXNlLW91dCk7IH1cbiAgNTAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMTUwcHgpIHJvdGF0ZVkoMTkwZGVnKSBzY2FsZSgxKSk7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbihlYXNlLWluKTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgzNjBkZWcpIHNjYWxlKDAuOTUpKTtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKGVhc2UtaW4pOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgc2NhbGUoMSkpO1xuICAgIEBpbmNsdWRlIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oZWFzZS1pbik7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZsaXBJblgpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg5MGRlZykpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMCk7IH1cbiAgNDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTEwZGVnKSk7IH1cbiAgNzAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMTBkZWcpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMGRlZykpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGZsaXBPdXRYKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMGRlZykpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmxpcEluWSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDkwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuICA0MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtMTBkZWcpKTsgfVxuICA3MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgxMGRlZykpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmxpcE91dFkpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybShwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9IH1cbiIsCgkJIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKGxpZ2h0U3BlZWRJbikge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMTAwJSkgc2tld1goLTMwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuICA2MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC0yMCUpIHNrZXdYKDMwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuICA4MCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDAlKSBza2V3WCgtMTVkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDAlKSBza2V3WCgwZGVnKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMobGlnaHRTcGVlZE91dCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMCUpIHNrZXdYKDBkZWcpKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDEwMCUpIHNrZXdYKC0zMGRlZykpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMCk7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW1wb3J0IFwicm90YXRpbmcvcm90YXRpbmctZXhpdHNcIjtcbkBpbXBvcnQgXCJyb3RhdGluZy9yb3RhdGluZy1lbnRyYW5jZXNcIjtcbiIsCgkJIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZU91dCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihjZW50ZXIgY2VudGVyKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGNlbnRlciBjZW50ZXIpO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgyMDBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZU91dERvd25MZWZ0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGxlZnQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGxlZnQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZU91dFVwTGVmdCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihsZWZ0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihsZWZ0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKC05MGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm90YXRlT3V0RG93blJpZ2h0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHJpZ2h0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihyaWdodCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgtOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZU91dFVwUmlnaHQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4ocmlnaHQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoMCk7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHJpZ2h0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDkwZGVnKTtcbiAgICBvcGFjaXR5OiAwOyB9IH1cbiIsCgkJIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZUluKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGNlbnRlciBjZW50ZXIpO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgtMjAwZGVnKTtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oY2VudGVyIGNlbnRlcik7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZUluRG93bkxlZnQpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4obGVmdCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgtOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihsZWZ0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZUluVXBMZWZ0KSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKGxlZnQgYm90dG9tKTtcbiAgICBAaW5jbHVkZSByb3RhdGUoOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihsZWZ0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZUluVXBSaWdodCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihyaWdodCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgtOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihyaWdodCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgwKTtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIGtleWZyYW1lcyhyb3RhdGVJbkRvd25SaWdodCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbihyaWdodCBib3R0b20pO1xuICAgIEBpbmNsdWRlIHJvdGF0ZSg5MGRlZyk7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHJpZ2h0IGJvdHRvbSk7XG4gICAgQGluY2x1ZGUgcm90YXRlKDApO1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuIiwKCQkiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMoaGluZ2UpIHtcbiAgMCUge1xuICAgIEBpbmNsdWRlIHJvdGF0ZSgwKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHRvcCBsZWZ0KTtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKGVhc2UtaW4tb3V0KTsgfVxuICAyMCUsIDYwJSB7XG4gICAgQGluY2x1ZGUgcm90YXRlKDgwZGVnKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKHRvcCBsZWZ0KTtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKGVhc2UtaW4tb3V0KTsgfVxuICA0MCUge1xuICAgIEBpbmNsdWRlIHJvdGF0ZSg2MGRlZyk7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbih0b3AgbGVmdCk7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbihlYXNlLWluLW91dCk7IH1cbiAgODAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDYwZGVnKSB0cmFuc2xhdGVZKDApKTtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4odG9wIGxlZnQpO1xuICAgIEBpbmNsdWRlIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oZWFzZS1pbi1vdXQpOyB9XG4gIDEwMCUge1xuICAgIEBpbmNsdWRlIHRyYW5zbGF0ZVkoNzAwcHgpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMCk7IH0gfVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvbGxJbikge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtMTAwJSkgcm90YXRlKC0xMjBkZWcpKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpO1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDBweCkgcm90YXRlKDBkZWcpKTsgfSB9XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBrZXlmcmFtZXMocm9sbE91dCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgwcHgpIHJvdGF0ZSgwZGVnKSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtMTAwJSkgcm90YXRlKC0xMjBkZWcpKTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiY29tcGFzcy9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJjb21wYXNzL3V0aWxpdGllc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcImNvbXBhc3MvY3NzM1wiO1xuIiwKCQkiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7IH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpOyB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpOyB9XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xOyB9XG4gIEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05OyB9XG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpOyB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTsgfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjogbnVsbCwgJHJlamVjdDM6IG51bGwsICRyZWplY3Q0OiBudWxsLCAkcmVqZWN0NTogbnVsbCwgJHJlamVjdDY6IG51bGwsICRyZWplY3Q3OiBudWxsLCAkcmVqZWN0ODogbnVsbCwgJHJlamVjdDk6IG51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTsgfVxuXG4vL0BpZiBub3QgZnVuY3Rpb24tZXhpc3RzKGNvbXBhY3QpXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkbGlzdDogKCk7XG4gIEBlYWNoICR2YXIgaW4gJHZhcnMge1xuICAgIEBpZiAkdmFyIHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsIGNvbW1hKTsgfSB9XG4gIEByZXR1cm4gJGxpc3Q7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcInN0cmluZ1wiIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgXCJ1cmxcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcInJnYlwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwiI1wiKSAhPSAxOyB9XG4gICAgQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJjb2xvclwiIHt9XG4gICAgQGVsc2UgaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7IH0gfVxuICBAcmV0dXJuICRwcmVmaXhlZDsgfVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTsgfVxuICBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5OyB9XG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTsgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRwcm9wczsgfVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXN2Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW93Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXdlYmtpdFwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW1velwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItcGllXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICBAaWYgJGZyb20gPT0gdG9wIHtcbiAgICBAcmV0dXJuIGJvdHRvbTsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBib3R0b20ge1xuICAgIEByZXR1cm4gdG9wOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGxlZnQge1xuICAgIEByZXR1cm4gcmlnaHQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gcmlnaHQge1xuICAgIEByZXR1cm4gbGVmdDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBjZW50ZXIge1xuICAgIEByZXR1cm4gY2VudGVyOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vL1xuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSkge1xuICBAaWYgJHR5cGUgPT0gYmxvY2sge1xuICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZSB7XG4gICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUtYmxvY2sge1xuICAgIEByZXR1cm4gaW1nOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlIHtcbiAgICBAcmV0dXJuIHRhYmxlOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGxpc3QtaXRlbSB7XG4gICAgQHJldHVybiBsaTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXAge1xuICAgIEByZXR1cm4gdGJvZHk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRoZWFkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCB7XG4gICAgQHJldHVybiB0Zm9vdDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3cge1xuICAgIEByZXR1cm4gdHI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtY2VsbCB7XG4gICAgQHJldHVybiB0aCwgdGQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtYmxvY2sge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWlubGluZSB7XG4gICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNSB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRleHQtaW5wdXQge1xuICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuIiwKCQkiQGltcG9ydCBcInV0aWxpdGllcy9jb2xvclwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9nZW5lcmFsXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3Nwcml0ZXNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvdGFibGVzXCI7XG5cbi8vIGRlcHJlY2F0ZWRcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuIiwKCQkiQGltcG9ydCBcImNvbG9yL2NvbnRyYXN0XCI7XG4iLAoJCSIkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQ6ICMwMDAgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodC1kZWZhdWx0OiAjZmZmICFkZWZhdWx0O1xuJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZDogMzAlICFkZWZhdWx0O1xuXG4vLyBSZXR1cm5zIHRoZSBgJGxpZ2h0YCBjb2xvciB3aGVuIHRoZSBgJGNvbG9yYCBpcyBkYXJrXG4vLyBhbmQgdGhlIGAkZGFya2AgY29sb3Igd2hlbiB0aGUgYCRjb2xvcmAgaXMgbGlnaHQuXG4vLyBUaGUgYCR0aHJlc2hvbGRgIGlzIGEgcGVyY2VudCBiZXR3ZWVuIGAwJWAgYW5kIGAxMDAlYCBhbmQgaXQgZGV0ZXJtaW5lc1xuLy8gd2hlbiB0aGUgbGlnaHRuZXNzIG9mIGAkY29sb3JgIGNoYW5nZXMgZnJvbSBcImRhcmtcIiB0byBcImxpZ2h0XCIuXG5AZnVuY3Rpb24gY29udHJhc3QtY29sb3IoJGNvbG9yLCAkZGFyazogJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0LCAkbGlnaHQ6ICRjb250cmFzdGVkLWxpZ2h0LWRlZmF1bHQsICR0aHJlc2hvbGQ6ICRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQpIHtcbiAgQHJldHVybiBpZihsaWdodG5lc3MoJGNvbG9yKSA8ICR0aHJlc2hvbGQsICRsaWdodCwgJGRhcmspOyB9XG5cbi8vIFNldHMgdGhlIHNwZWNpZmllZCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBjYWxjdWxhdGVzIGEgZGFyayBvciBsaWdodCBjb250cmFzdGVkIHRleHQgY29sb3IuXG4vLyBUaGUgYXJndW1lbnRzIGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgW2NvbnRyYXN0LWNvbG9yIGZ1bmN0aW9uXSgjZnVuY3Rpb24tY29udHJhc3QtY29sb3IpLlxuQG1peGluIGNvbnRyYXN0ZWQoJGJhY2tncm91bmQtY29sb3IsICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCwgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgY29sb3I6IGNvbnRyYXN0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yLCAkZGFyaywgJGxpZ2h0LCAkdGhyZXNob2xkKTsgfVxuIiwKCQkiQGltcG9ydCBcImdlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcImdlbmVyYWwvdGFnLWNsb3VkXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcImdlbmVyYWwvbWluXCI7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBFbWl0cyBzdHlsZXMgZm9yIGEgdGFnIGNsb3VkXG5AbWl4aW4gdGFnLWNsb3VkKCRiYXNlLXNpemU6IDFlbSkge1xuICBmb250LXNpemU6ICRiYXNlLXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplO1xuICAueHhzLCAueHMsIC5zLCAubCwgLnhsLCAueHhsIHtcbiAgICBsaW5lLWhlaWdodDogMS4yICogJGJhc2Utc2l6ZTsgfVxuICAueHhzIHtcbiAgICBmb250LXNpemU6ICRiYXNlLXNpemUgLyAyOyB9XG4gIC54cyB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZSAvIDM7IH1cbiAgLnMge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyA0OyB9XG4gIC5sIHtcbiAgICBmb250LXNpemU6IDQgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAueGwge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyAyOyB9XG4gIC54eGwge1xuICAgIGZvbnQtc2l6ZTogMiAqICRiYXNlLXNpemU7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyoqXG4vLyBDcm9zcyBicm93c2VyIG1pbi1oZWlnaHQgbWl4aW4uXG5AbWl4aW4gbWluLWhlaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgaGFja2VkLW1pbmltdW0oaGVpZ2h0LCAkdmFsdWUpOyB9XG5cbi8vKipcbi8vIENyb3NzIGJyb3dzZXIgbWluLXdpZHRoIG1peGluLlxuQG1peGluIG1pbi13aWR0aCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgaGFja2VkLW1pbmltdW0od2lkdGgsICR2YWx1ZSk7IH1cblxuLy8gQHByaXZhdGUgVGhpcyBtaXhpbiBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseS5cbkBtaXhpbiBoYWNrZWQtbWluaW11bSgkcHJvcGVydHksICR2YWx1ZSkge1xuICBtaW4tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gIEBpbmNsdWRlIGJhbmctaGFjaygkcHJvcGVydHksIGF1dG8sICR2YWx1ZSk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic3ByaXRlcy9iYXNlXCI7XG5AaW1wb3J0IFwic3ByaXRlcy9zcHJpdGUtaW1nXCI7XG4iLAoJCSIvLyBEZXRlcm1pbmVzIHRob3NlIHN0YXRlcyBmb3Igd2hpY2ggeW91IHdhbnQgdG8gZW5hYmxlIG1hZ2ljIHNwcml0ZSBzZWxlY3RvcnNcbiRzcHJpdGUtc2VsZWN0b3JzOiBob3ZlciwgdGFyZ2V0LCBhY3RpdmUgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhbiBlbGVtZW50IHRvIHRoZSBvcmlnaW5hbFxuLy8gZGltZW5zaW9ucyBvZiBhbiBpbWFnZSBiZWZvcmUgaXQgd2FzIGluY2x1ZGVkIGluIHRoZSBzcHJpdGUuXG5AbWl4aW4gc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSkge1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7IH1cblxuLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uIG9mIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgIHRvIGRpc3BsYXkgdGhlXG4vLyBzcHJpdGUgb2YgdGhlIGdpdmVuIGAkc3ByaXRlYCBuYW1lLiBZb3UgY2FuIG1vdmUgdGhlIGltYWdlIHJlbGF0aXZlIHRvIGl0c1xuLy8gbmF0dXJhbCBwb3NpdGlvbiBieSBwYXNzaW5nIGAkb2Zmc2V0LXhgIGFuZCBgJG9mZnNldC15YC5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBzcHJpdGUtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyB9XG5cbi8vIERldGVybWluZXMgaWYgeW91IHdhbnQgdG8gaW5jbHVkZSBtYWdpYyBzZWxlY3RvcnMgaW4geW91ciBzcHJpdGVzXG4kZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gSW5jbHVkZSB0aGUgcG9zaXRpb24gYW5kIChvcHRpb25hbGx5KSBkaW1lbnNpb25zIG9mIHRoaXMgYCRzcHJpdGVgXG4vLyBpbiB0aGUgZ2l2ZW4gc3ByaXRlIGAkbWFwYC4gVGhlIHNwcml0ZSB1cmwgc2hvdWxkIGNvbWUgZnJvbSBlaXRoZXIgYSBiYXNlXG4vLyBjbGFzcyBvciB5b3UgY2FuIHNwZWNpZnkgdGhlIGBzcHJpdGUtdXJsYCBleHBsaWNpdGx5IGxpa2UgdGhpczpcbi8vXG4vLyAgICAgYmFja2dyb3VuZDogJG1hcCBuby1yZXBlYXQ7XG5AbWl4aW4gc3ByaXRlKCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zOiBmYWxzZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICBAaWYgJGRpbWVuc2lvbnMge1xuICAgIEBpbmNsdWRlIHNwcml0ZS1kaW1lbnNpb25zKCRtYXAsICRzcHJpdGUpOyB9XG4gIEBpZiBub3QgJGRpc2FibGUtbWFnaWMtc3ByaXRlLXNlbGVjdG9ycyB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH0gfVxuXG4vLyBJbmNsdWRlIHRoZSBzZWxlY3RvcnMgZm9yIHRoZSBgJHNwcml0ZWAgZ2l2ZW4gdGhlIGAkbWFwYCBhbmQgdGhlXG4vLyBgJGZ1bGwtc3ByaXRlLW5hbWVgXG4vLyBAcHJpdmF0ZVxuQG1peGluIHNwcml0ZS1zZWxlY3RvcnMoJG1hcCwgJHNwcml0ZS1uYW1lLCAkZnVsbC1zcHJpdGUtbmFtZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGVhY2ggJHNlbGVjdG9yIGluICRzcHJpdGUtc2VsZWN0b3JzIHtcbiAgICBAaWYgc3ByaXRlX2hhc19zZWxlY3RvcigkbWFwLCAkc3ByaXRlLW5hbWUsICRzZWxlY3Rvcikge1xuICAgICAgJjojeyRzZWxlY3Rvcn0sICYuI3skZnVsbC1zcHJpdGUtbmFtZX1fI3skc2VsZWN0b3J9LCAmLiN7JGZ1bGwtc3ByaXRlLW5hbWV9LSN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsIFwiI3skc3ByaXRlLW5hbWV9XyN7JHNlbGVjdG9yfVwiLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH0gfSB9IH1cblxuLy8gR2VuZXJhdGVzIGEgY2xhc3MgZm9yIGVhY2ggc3BhY2Ugc2VwYXJhdGVkIG5hbWUgaW4gYCRzcHJpdGUtbmFtZXNgLlxuLy8gVGhlIGNsYXNzIHdpbGwgYmUgb2YgdGhlIGZvcm0gLjxtYXAtbmFtZT4tPHNwcml0ZS1uYW1lPi5cbi8vXG4vLyBJZiBhIGJhc2UgY2xhc3MgaXMgcHJvdmlkZWQsIHRoZW4gZWFjaCBjbGFzcyB3aWxsIGV4dGVuZCBpdC5cbi8vXG4vLyBJZiBgJGRpbWVuc2lvbnNgIGlzIGB0cnVlYCwgdGhlIHNwcml0ZSBkaW1lbnNpb25zIHdpbGwgc3BlY2lmaWVkLlxuQG1peGluIHNwcml0ZXMoJG1hcCwgJHNwcml0ZS1uYW1lcywgJGJhc2UtY2xhc3M6IGZhbHNlLCAkZGltZW5zaW9uczogZmFsc2UsICRwcmVmaXg6IHNwcml0ZS1tYXAtbmFtZSgkbWFwKSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGVhY2ggJHNwcml0ZS1uYW1lIGluICRzcHJpdGUtbmFtZXMge1xuICAgIEBpZiBzcHJpdGVfZG9lc19ub3RfaGF2ZV9wYXJlbnQoJG1hcCwgJHNwcml0ZS1uYW1lKSB7XG4gICAgICAkZnVsbC1zcHJpdGUtbmFtZTogXCIjeyRwcmVmaXh9LSN7JHNwcml0ZS1uYW1lfVwiO1xuICAgICAgLiN7JGZ1bGwtc3ByaXRlLW5hbWV9IHtcbiAgICAgICAgQGlmICRiYXNlLWNsYXNzIHtcbiAgICAgICAgICBAZXh0ZW5kICN7JGJhc2UtY2xhc3N9OyB9XG4gICAgICAgIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLW5hbWUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH0gfSB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeGFtcGxlIDE6XG4vL1xuLy8gICAgIGEudHdpdHRlclxuLy8gICAgICAgK3Nwcml0ZS1pbWcoXCJpY29ucy0zMi5wbmdcIiwgMSlcbi8vICAgICBhLmZhY2Vib29rXG4vLyAgICAgICArc3ByaXRlLWltZyhcImljb25zLTMycG5nXCIsIDIpXG4vL1xuLy8gRXhhbXBsZSAyOlxuLy9cbi8vICAgICBhXG4vLyAgICAgICArc3ByaXRlLWJhY2tncm91bmQoXCJpY29ucy0zMi5wbmdcIilcbi8vICAgICAgIGEudHdpdHRlclxuLy8gICAgICAgICArc3ByaXRlLWNvbHVtbigxKVxuLy8gICAgICAgYS5mYWNlYm9va1xuLy8gICAgICAgICArc3ByaXRlLXJvdygyKVxuLy8gQGRvYyBvblxuXG4kc3ByaXRlLWRlZmF1bHQtc2l6ZTogMzJweCAhZGVmYXVsdDtcblxuJHNwcml0ZS1kZWZhdWx0LW1hcmdpbjogMHB4ICFkZWZhdWx0O1xuXG4kc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGg6ICRzcHJpdGUtZGVmYXVsdC1zaXplICFkZWZhdWx0O1xuXG4kc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0OiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSAhZGVmYXVsdDtcblxuLy8gU2V0cyBhbGwgdGhlIHJ1bGVzIGZvciBhIHNwcml0ZSBmcm9tIGEgZ2l2ZW4gc3ByaXRlIGltYWdlIHRvIHNob3cganVzdCBvbmUgb2YgdGhlIHNwcml0ZXMuXG4vLyBUbyByZWR1Y2UgZHVwbGljYXRpb24gdXNlIGEgc3ByaXRlLWJnIG1peGluIGZvciBjb21tb24gcHJvcGVydGllcyBhbmQgYSBzcHJpdGUtc2VsZWN0IG1peGluIGZvciBwb3NpdGlvbmluZy5cbkBtaXhpbiBzcHJpdGUtaW1nKCRpbWcsICRjb2wsICRyb3c6IDEsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kKCRpbWcsICR3aWR0aCwgJGhlaWdodCk7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93LCAkd2lkdGgsICRoZWlnaHQsICRtYXJnaW4pOyB9XG5cbi8vIFNldHMgcnVsZXMgY29tbW9uIGZvciBhbGwgc3ByaXRlcywgYXNzdW1lcyB5b3Ugd2FudCBhIHNxdWFyZSwgYnV0IGFsbG93cyBhIHJlY3Rhbmd1bGFyIHJlZ2lvbi5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZCgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtZGVmYXVsdC1zaXplLCAkaGVpZ2h0OiAkd2lkdGgpIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcmVjdGFuZ2xlKCRpbWcsICR3aWR0aCwgJGhlaWdodCk7IH1cblxuLy8gU2V0cyBydWxlcyBjb21tb24gZm9yIGFsbCBzcHJpdGVzLCBhc3N1bWVzIGEgcmVjdGFuZ3VsYXIgcmVnaW9uLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCkge1xuICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZykgbm8tcmVwZWF0O1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLy8gQWxsb3dzIGhvcml6b250YWwgc3ByaXRlIHBvc2l0aW9uaW5nIG9wdGltaXplZCBmb3IgYSBzaW5nbGUgcm93IG9mIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLWNvbHVtbigkY29sLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oJGNvbCwgMSwgJHdpZHRoLCAwcHgsICRtYXJnaW4pOyB9XG5cbi8vIEFsbG93cyB2ZXJ0aWNhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSBjb2x1bW4gb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtcm93KCRyb3csICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKDEsICRyb3csIDBweCwgJGhlaWdodCwgJG1hcmdpbik7IH1cblxuLy8gQWxsb3dzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBmcm9tIGEgZ3JpZCBvZiBlcXVhbCBkaW1lbnNpb25lZCBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICAkeDogKCRjb2wgLSAxKSAqIC0kd2lkdGggLSAoJGNvbCAtIDEpICogJG1hcmdpbjtcbiAgJHk6ICgkcm93IC0gMSkgKiAtJGhlaWdodCAtICgkcm93IC0gMSkgKiAkbWFyZ2luO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkeCAkeTsgfVxuXG4vLyBTaW1pbGFyIHRvICdzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IGRvZXMgbm90IGF1dG1hdGljbHkgc2V0IHRoZSBkZW1lbnNpb25zXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dCgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9uczogZmFsc2UsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgQGluY2x1ZGUgc3ByaXRlKCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRtYXA7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IH1cblxuLy8gU2ltaWxhciB0byAncmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IHdpdGggc3ByaXRlc1xuLy8gVG8gdXNlLCBjcmVhdGUgeW91ciBzcHJpdGUgYW5kIHRoZW4gcGFzcyBpdCBpbiB0aGUgYCRtYXBgIHBhcmFtXG4vLyBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgaW4gdGhlIHNwcml0ZSBmb2xkZXIgc2hvdWxkIGJlIGAkaW1nLW5hbWVgXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXJlcGxhY2UtdGV4dCgkbWFwLCAkc3ByaXRlLCB0cnVlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7IH1cbiIsCgkJIkBpbXBvcnQgXCJ0YWJsZXMvYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1uc1wiO1xuQGltcG9ydCBcInRhYmxlcy9ib3JkZXJzXCI7XG5AaW1wb3J0IFwidGFibGVzL3NjYWZmb2xkaW5nXCI7XG4iLAoJCSJAbWl4aW4gYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucygkZXZlbi1yb3ctY29sb3IsICRvZGQtcm93LWNvbG9yLCAkZGFyay1pbnRlcnNlY3Rpb24sICRoZWFkZXItY29sb3I6IHdoaXRlLCAkZm9vdGVyLWNvbG9yOiB3aGl0ZSkge1xuICB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvcjtcbiAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH1cbiAgdHIge1xuICAgICYub2RkLCAmOm50aC1jaGlsZCgybisxKSB7XG4gICAgICB0ZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yO1xuICAgICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9kZC1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9IH1cbiAgdHIuZXZlbiB7XG4gICAgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW4tcm93LWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvcjtcbiAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH0gfVxuIiwKCQkiQG1peGluIG91dGVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgYm9yZGVyOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICB0aGVhZCB7XG4gICAgdGgge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRoIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9IH1cblxuQG1peGluIGlubmVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgdGgsIHRkIHtcbiAgICBib3JkZXI6IHtcbiAgICAgIHJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgbGVmdC13aWR0aDogMHB4O1xuICAgICAgdG9wLXdpZHRoOiAwcHg7IH1cbiAgICAmOmxhc3QtY2hpbGQsXG4gICAgJi5sYXN0IHtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMHB4OyB9IH1cbiAgLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuICAvLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbiAgdGJvZHksIHRmb290IHtcbiAgICB0cjpsYXN0LWNoaWxkIHtcbiAgICAgIHRoLCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsgfSB9XG4gICAgdHIubGFzdCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfSB9IH1cbiIsCgkJIkBtaXhpbiB0YWJsZS1zY2FmZm9sZGluZyB7XG4gIHRoIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbiAgdGQsXG4gIHRoIHtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgJi5udW1lcmljIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9IH0gfVxuIiwKCQkiQGltcG9ydCBcImxpbmtzL2hvdmVyLWxpbmtcIjtcbkBpbXBvcnQgXCJsaW5rcy9saW5rLWNvbG9yc1wiO1xuQGltcG9ydCBcImxpbmtzL3Vuc3R5bGVkLWxpbmtcIjtcbiIsCgkJIi8vIGEgbGluayB0aGF0IG9ubHkgaGFzIGFuIHVuZGVybGluZSB3aGVuIHlvdSBob3ZlciBvdmVyIGl0XG5AbWl4aW4gaG92ZXItbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuIiwKCQkiLy8gU2V0IGFsbCB0aGUgY29sb3JzIGZvciBhIGxpbmsgd2l0aCBvbmUgbWl4aW4gY2FsbC5cbi8vIE9yZGVyIG9mIGFyZ3VtZW50cyBpczpcbi8vXG4vLyAxLiBub3JtYWxcbi8vIDIuIGhvdmVyXG4vLyAzLiBhY3RpdmVcbi8vIDQuIHZpc2l0ZWRcbi8vIDUuIGZvY3VzXG4vL1xuLy8gVGhvc2Ugc3RhdGVzIG5vdCBzcGVjaWZpZWQgd2lsbCBpbmhlcml0LlxuLy8gTWl4aW4gdG8gYW4gYW5jaG9yIGxpbmsgbGlrZSBzbzpcbi8vICAgICBhXG4vLyAgICAgICArbGluay1jb2xvcnMoIzAwYywgIzBjYywgI2MwYywgI2NjYywgI2NjMClcblxuQG1peGluIGxpbmstY29sb3JzKCRub3JtYWwsICRob3ZlcjogZmFsc2UsICRhY3RpdmU6IGZhbHNlLCAkdmlzaXRlZDogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgY29sb3I6ICRub3JtYWw7XG4gIEBpZiAkdmlzaXRlZCB7XG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAkdmlzaXRlZDsgfSB9XG4gIEBpZiAkZm9jdXMge1xuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRmb2N1czsgfSB9XG4gIEBpZiAkaG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRob3ZlcjsgfSB9XG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGFjdGl2ZTsgfSB9IH1cbiIsCgkJIi8vIEEgbGluayB0aGF0IGxvb2tzIGFuZCBhY3RzIGxpa2UgdGhlIHRleHQgaXQgaXMgY29udGFpbmVkIHdpdGhpblxuQG1peGluIHVuc3R5bGVkLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJsaXN0cy9ob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1ibG9jay1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvYnVsbGV0c1wiO1xuIiwKCQkiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBtYWtlcyBhIGxpc3QgaW5saW5lLlxuXG5AbWl4aW4gaW5saW5lLWxpc3Qge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICYsICYgbGkge1xuICAgIG1hcmdpbjogMHB4O1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJHNlcGFyYXRvcjsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjsgfSB9XG4gICAgJi5sYXN0IHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiOyB9IH0gfSB9XG5cbi8vIFNlZSBbZGVsaW1pdGVkLWxpc3RdKCNtaXhpbi1kZWxpbWl0ZWQtbGlzdClcbi8vIEBkZXByZWNhdGVkXG5AbWl4aW4gY29tbWEtZGVsaW1pdGVkLWxpc3Qge1xuICBAd2FybiBcImNvbW1hLWRlbGltaXRlZC1saXN0IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZGVsaW1pdGVkLWxpc3QgaW5zdGVhZC5cIjtcbiAgQGluY2x1ZGUgZGVsaW1pdGVkLWxpc3Q7IH1cbiIsCgkJIi8vIElubGluZS1CbG9jayBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbXBvcnQgaW5saW5lLWJsb2NrLWxpc3Q7XG4vLyAgICAgfVxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXJgIG9uIHlvdXIgdWwvb2wgYW5kXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbWAgb24geW91ciBsaS4gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmdcbi8vIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4vLyAgICAgICA+IGxpIHtcbi8vICAgICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbTtcbi8vICAgICAgIH1cbi8vICAgICB9XG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCIuLi8uLi9jc3MzL2lubGluZS1ibG9ja1wiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGFuIGlubGluZS1ibG9jayBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7XG4gICAgICBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwKCQkiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7IH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDsgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwidGV4dC9lbGxpcHNpc1wiO1xuQGltcG9ydCBcInRleHQvbm93cmFwXCI7XG5AaW1wb3J0IFwidGV4dC9yZXBsYWNlbWVudFwiO1xuQGltcG9ydCBcInRleHQvZm9yY2Utd3JhcFwiO1xuIiwKCQkiQGltcG9ydCBcIi4uLy4uL2NzczMvc2hhcmVkXCI7XG5cbi8vIFRvIGdldCBmdWxsIGZpcmVmb3ggc3VwcG9ydCwgeW91IG11c3QgaW5zdGFsbCB0aGUgZWxsaXBzaXMgcGF0dGVybjpcbi8vXG4vLyAgICAgY29tcGFzcyBpbnN0YWxsIGNvbXBhc3MvZWxsaXBzaXNcbiR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhpcyB0ZWNobmlxdWUsIGJ5IFtKdXN0aW4gTWF4d2VsbF0oaHR0cDovL2NvZGU0MDQuY29tLyksIHdhcyBvcmlnaW5hbGx5XG4vLyBwdWJsaXNoZWQgW2hlcmVdKGh0dHA6Ly9tYXR0c25pZGVyLmNvbS9jc3MvY3NzLXN0cmluZy10cnVuY2F0aW9uLXdpdGgtZWxsaXBzaXMvKS5cbi8vIEZpcmVmb3ggaW1wbGVtZW50YXRpb24gYnkgW1Jpa2tlcnQgS29wcGVzXShodHRwOi8vd3d3LnJpa2tlcnRrb3BwZXMuY29tL3Rob3VnaHRzLzIwMDgvNi8pLlxuQG1peGluIGVsbGlwc2lzKCRuby13cmFwOiB0cnVlKSB7XG4gIEBpZiAkbm8td3JhcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCAkdXNlLW1vemlsbGEtZWxsaXBzaXMtYmluZGluZyB7XG4gICAgLW1vei1iaW5kaW5nOiBzdHlsZXNoZWV0LXVybCh1bnF1b3RlKFwieG1sL2VsbGlwc2lzLnhtbCNlbGxpcHNpc1wiKSk7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwKCQkiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7IH1cbiAgICBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpOyB9XG4gICAgcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgcG9zaXRpb246ICR4ICR5OyB9IH1cblxuLy8gTGlrZSB0aGUgYHJlcGxhY2UtdGV4dGAgbWl4aW4sIGJ1dCBhbHNvIHNldHMgdGhlIHdpZHRoXG4vLyBhbmQgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IGFjY29yZGluZyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UuXG4vL1xuLy8gSWYgeW91IHNldCBgJGlubGluZWAgdG8gdHJ1ZSwgdGhlbiBhbiBpbmxpbmUgaW1hZ2UgKGRhdGEgdXJpKSB3aWxsIGJlIHVzZWQuXG5AbWl4aW4gcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucygkaW1nLCAkeDogNTAlLCAkeTogNTAlLCAkaW5saW5lOiBmYWxzZSkge1xuICBAaW5jbHVkZSByZXBsYWNlLXRleHQoaWYoJGlubGluZSwgaW5saW5lLWltYWdlKCRpbWcpLCAkaW1nKSwgJHgsICR5KTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKCRpbWcpO1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodCgkaW1nKTsgfVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgc28geW91IGNhbiBzZWUgdGhlIGJhY2tncm91bmQuXG4vL1xuLy8gVGhlIGRpcmVjdGlvbiBpbmRpY2F0ZXMgaG93IHRoZSB0ZXh0IHNob3VsZCBiZSBtb3ZlZCBvdXQgb2Ygdmlldy5cbi8vXG4vLyBTZWUgYCRoaWRlLXRleHQtZGlyZWN0aW9uYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgdG8gc2V0IHRoaXMgZ2xvYmFsbHlcbi8vIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuQG1peGluIGhpZGUtdGV4dCgkZGlyZWN0aW9uOiAkaGlkZS10ZXh0LWRpcmVjdGlvbikge1xuICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAkYXBwcm94aW1hdGUtZW0tdmFsdWU6IDEycHg7XG4gICAgJHdpZGVyLXRoYW4tYW55LXNjcmVlbjogLTk5OTk7XG4gICAgdGV4dC1pbmRlbnQ6ICR3aWRlci10aGFuLWFueS1zY3JlZW4gKiAkYXBwcm94aW1hdGUtZW0tdmFsdWU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gIEBlbHNlIHtcbiAgICAvLyBzbGlnaHRseSB3aWRlciB0aGFuIHRoZSBib3ggcHJldmVudHMgaXNzdWVzIHdpdGggaW5saW5lLWJsb2NrIGVsZW1lbnRzXG4gICAgdGV4dC1pbmRlbnQ6IDExMCU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9IH1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiIsCgkJIi8vIFByZXZlbnQgbG9uZyB1cmxzIGFuZCB0ZXh0IGZyb20gYnJlYWtpbmcgbGF5b3V0c1xuLy8gW29yaWdpbmFsbHkgZnJvbSBwZXJpc2hhYmxlcHJlc3MuY29tXShodHRwOi8vcGVyaXNoYWJsZXByZXNzLmNvbS9wcmVzcy8yMDEwLzA2LzAxL3dyYXBwaW5nLWNvbnRlbnQvKVxuQG1peGluIGZvcmNlLXdyYXAge1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICAvLyBDU1MgMi4wXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgLy8gQ1NTIDIuMVxuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG4gIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDtcbiAgLy8gT3BlcmEgNC02XG4gIHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDtcbiAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDtcbiAgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwO1xuICAvLyBIUCBQcmludGVyc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gfSAgLy8gSUUgNStcbiIsCgkJIkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdmVydGljYWxfcmh5dGhtXCI7XG4iLAoJCSJAaW1wb3J0IFwibGlua3MvaG92ZXItbGlua1wiO1xuQGltcG9ydCBcImxpbmtzL2xpbmstY29sb3JzXCI7XG5AaW1wb3J0IFwibGlua3MvdW5zdHlsZWQtbGlua1wiO1xuIiwKCQkiLy8gYSBsaW5rIHRoYXQgb25seSBoYXMgYW4gdW5kZXJsaW5lIHdoZW4geW91IGhvdmVyIG92ZXIgaXRcbkBtaXhpbiBob3Zlci1saW5rIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAmOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfSB9XG4iLAoJCSIvLyBTZXQgYWxsIHRoZSBjb2xvcnMgZm9yIGEgbGluayB3aXRoIG9uZSBtaXhpbiBjYWxsLlxuLy8gT3JkZXIgb2YgYXJndW1lbnRzIGlzOlxuLy9cbi8vIDEuIG5vcm1hbFxuLy8gMi4gaG92ZXJcbi8vIDMuIGFjdGl2ZVxuLy8gNC4gdmlzaXRlZFxuLy8gNS4gZm9jdXNcbi8vXG4vLyBUaG9zZSBzdGF0ZXMgbm90IHNwZWNpZmllZCB3aWxsIGluaGVyaXQuXG4vLyBNaXhpbiB0byBhbiBhbmNob3IgbGluayBsaWtlIHNvOlxuLy8gICAgIGFcbi8vICAgICAgICtsaW5rLWNvbG9ycygjMDBjLCAjMGNjLCAjYzBjLCAjY2NjLCAjY2MwKVxuXG5AbWl4aW4gbGluay1jb2xvcnMoJG5vcm1hbCwgJGhvdmVyOiBmYWxzZSwgJGFjdGl2ZTogZmFsc2UsICR2aXNpdGVkOiBmYWxzZSwgJGZvY3VzOiBmYWxzZSkge1xuICBjb2xvcjogJG5vcm1hbDtcbiAgQGlmICR2aXNpdGVkIHtcbiAgICAmOnZpc2l0ZWQge1xuICAgICAgY29sb3I6ICR2aXNpdGVkOyB9IH1cbiAgQGlmICRmb2N1cyB7XG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGZvY3VzOyB9IH1cbiAgQGlmICRob3ZlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGhvdmVyOyB9IH1cbiAgQGlmICRhY3RpdmUge1xuICAgICY6YWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYWN0aXZlOyB9IH0gfVxuIiwKCQkiLy8gQSBsaW5rIHRoYXQgbG9va3MgYW5kIGFjdHMgbGlrZSB0aGUgdGV4dCBpdCBpcyBjb250YWluZWQgd2l0aGluXG5AbWl4aW4gdW5zdHlsZWQtbGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gIGN1cnNvcjogaW5oZXJpdDtcbiAgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcImxpc3RzL2hvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWJsb2NrLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9idWxsZXRzXCI7XG4iLAoJCSIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZzsgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3Qge1xuICAgICAgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3Qge1xuICAgICAgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfSB9IH1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0OyB9XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuIiwKCQkiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9XG4gICAgQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH0gfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxOyB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsCgkJIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwKCQkiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH1cbiIsCgkJIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG5cbi8vIG1ha2VzIGFuIGlubGluZSBsaXN0IGRlbGltaXRlZCB3aXRoIHRoZSBwYXNzZWQgc3RyaW5nLlxuLy8gRGVmYXVsdHMgdG8gbWFraW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuXG4vL1xuLy8gUGxlYXNlIG1ha2Ugbm90ZSBvZiB0aGUgYnJvd3NlciBzdXBwb3J0IGlzc3VlcyBiZWZvcmUgdXNpbmcgdGhpcyBtaXhpbjpcbi8vXG4vLyB1c2Ugb2YgYGNvbnRlbnRgIGFuZCBgOmFmdGVyYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy5cbi8vIFNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QxNSlcbi8vXG4vLyBgOmxhc3QtY2hpbGRgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQuXG4vLyBzZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkpLlxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG5AbWl4aW4gZGVsaW1pdGVkLWxpc3QoJHNlcGFyYXRvcjogXCIsIFwiKSB7XG4gIEBpbmNsdWRlIGlubGluZS1saXN0O1xuICBsaSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiOyB9IH1cbiAgICAmLmxhc3Qge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7IH0gfSB9IH1cblxuLy8gU2VlIFtkZWxpbWl0ZWQtbGlzdF0oI21peGluLWRlbGltaXRlZC1saXN0KVxuLy8gQGRlcHJlY2F0ZWRcbkBtaXhpbiBjb21tYS1kZWxpbWl0ZWQtbGlzdCB7XG4gIEB3YXJuIFwiY29tbWEtZGVsaW1pdGVkLWxpc3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBkZWxpbWl0ZWQtbGlzdCBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBkZWxpbWl0ZWQtbGlzdDsgfVxuIiwKCQkiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nOyB9IH0gfVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGlubGluZS1ibG9jayBhbmQgd29uJ3Qgd3JhcC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdCgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZyk7IH0gfVxuIiwKCQkiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkge1xuICAgIEBpbmNsdWRlIG5vLWJ1bGxldDsgfSB9XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIpICgoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyKTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH0gfVxuIiwKCQkiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7IH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHtcbiAgICAgIHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH0gfSB9XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLAoJCSIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgbm8tYnVsbGV0OyB9IH1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMikgKCgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDIpO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfSB9XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDsgfVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfVxuICAgIEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrOyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tOyB9IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTsgfSB9XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLAoJCSIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsCgkJIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9XG4iLAoJCSIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTZXQgYCRpbmxpbmUtYmxvY2stYWxpZ25tZW50YCB0byBgbm9uZWAgb3IgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBvdXRwdXRcbi8vIG9mIGEgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgaW4gdGhlIGlubGluZS1ibG9jayBtaXhpbi5cbi8vIE9yIHNldCBpdCB0byBhIGxlZ2FsIHZhbHVlIGZvciBgdmVydGljYWwtYWxpZ25gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cbiRpbmxpbmUtYmxvY2stYWxpZ25tZW50OiBtaWRkbGUgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGEgY3Jvc3MtYnJvd3NlciBtZXRob2QgdG8gaW1wbGVtZW50IGBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7YFxuQG1peGluIGlubGluZS1ibG9jaygkYWxpZ25tZW50OiAkaW5saW5lLWJsb2NrLWFsaWdubWVudCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjazsgfVxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpZiAkYWxpZ25tZW50IGFuZCAkYWxpZ25tZW50ICE9IG5vbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiAkYWxpZ25tZW50OyB9XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAqdmVydGljYWwtYWxpZ246IGF1dG87XG4gICAgem9vbTogMTtcbiAgICAqZGlzcGxheTogaW5saW5lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBuby1idWxsZXQ7IH0gfVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCgkcGFkZGluZyAtICR3aWR0aCkgLyAyKSAoKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMik7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0ZXh0LW92ZXJmbG93LCBlbGxpcHNpcywgbm90IC1tb3osIG5vdCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kICR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nIHtcbiAgICAtbW96LWJpbmRpbmc6IHN0eWxlc2hlZXQtdXJsKHVucXVvdGUoXCJ4bWwvZWxsaXBzaXMueG1sI2VsbGlwc2lzXCIpKTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBXaGVuIHJlbWVtYmVyaW5nIHdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYSBoeXBoZW4gaW4gd2hpdGUtc3BhY2UgaXMgdG9vIGhhcmRcbkBtaXhpbiBub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4iLAoJCSIvLyBJbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbiB5b3UgcHJlZmVyIHRvIG1vdmUgeW91ciB0ZXh0XG4vLyB3aGVuIGhpZGluZyBpdC5cbi8vXG4vLyBgbGVmdGAgaXMgbW9yZSByb2J1c3QsIGVzcGVjaWFsbHkgaW4gb2xkZXIgYnJvd3NlcnMuXG4vLyBgcmlnaHRgIHNlZW1zIGhhdmUgYmV0dGVyIHJ1bnRpbWUgcGVyZm9ybWFuY2UuXG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogbGVmdCAhZGVmYXVsdDtcblxuLy8gSGlkZXMgaHRtbCB0ZXh0IGFuZCByZXBsYWNlcyBpdCB3aXRoIGFuIGltYWdlLlxuLy8gSWYgeW91IHVzZSB0aGlzIG9uIGFuIGlubGluZSBlbGVtZW50LCB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgZGlzcGxheSB0byBibG9jayBvciBpbmxpbmUtYmxvY2suXG4vLyBBbHNvLCBpZiB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgZGlmZmVycyBzaWduaWZpY2FudGx5IGZyb20gdGhlIGZvbnQgc2l6ZSwgeW91J2xsIG5lZWQgdG8gc2V0IHRoZSB3aWR0aCBhbmQvb3IgaGVpZ2h0LlxuLy9cbi8vIFBhcmFtZXRlcnM6XG4vL1xuLy8gKiBgaW1nYCAtLSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBwcm9qZWN0IGltYWdlIGRpcmVjdG9yeSB0byB0aGUgaW1hZ2UsIG9yIGEgdXJsIGxpdGVyYWwuXG4vLyAqIGB4YCAtLSB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbi8vICogYHlgIC0tIHRoZSB5IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuQG1peGluIHJlcGxhY2UtdGV4dCgkaW1nLCAkeDogNTAlLCAkeTogNTAlKSB7XG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgYmFja2dyb3VuZDoge1xuICAgIEBpZiBpcy11cmwoJGltZykge1xuICAgICAgaW1hZ2U6IHVybCgkaW1nKTsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGltYWdlOiBpbWFnZS11cmwoJGltZyk7IH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7IH0gfVxuXG4vLyBMaWtlIHRoZSBgcmVwbGFjZS10ZXh0YCBtaXhpbiwgYnV0IGFsc28gc2V0cyB0aGUgd2lkdGhcbi8vIGFuZCBoZWlnaHQgb2YgdGhlIGVsZW1lbnQgYWNjb3JkaW5nIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZS5cbi8vXG4vLyBJZiB5b3Ugc2V0IGAkaW5saW5lYCB0byB0cnVlLCB0aGVuIGFuIGlubGluZSBpbWFnZSAoZGF0YSB1cmkpIHdpbGwgYmUgdXNlZC5cbkBtaXhpbiByZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zKCRpbWcsICR4OiA1MCUsICR5OiA1MCUsICRpbmxpbmU6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHJlcGxhY2UtdGV4dChpZigkaW5saW5lLCBpbmxpbmUtaW1hZ2UoJGltZyksICRpbWcpLCAkeCwgJHkpO1xuICB3aWR0aDogaW1hZ2Utd2lkdGgoJGltZyk7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRpbWcpOyB9XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IH0gfVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgYnkgc3F1aXNoaW5nIHRoZSB0ZXh0IGludG8gb2JsaXZpb24uXG4vLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBoaWRlIHRleHQgY29udGFpbmVkIGluIGFuIGlubGluZSBlbGVtZW50XG4vLyBidXQgc3RpbGwgaGF2ZSBpdCByZWFkIGJ5IGEgc2NyZWVuIHJlYWRlci5cbkBtaXhpbiBzcXVpc2gtdGV4dCB7XG4gIGZvbnQ6IDAvMCBzZXJpZjtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDsgfVxuIiwKCQkiLy8gUHJldmVudCBsb25nIHVybHMgYW5kIHRleHQgZnJvbSBicmVha2luZyBsYXlvdXRzXG4vLyBbb3JpZ2luYWxseSBmcm9tIHBlcmlzaGFibGVwcmVzcy5jb21dKGh0dHA6Ly9wZXJpc2hhYmxlcHJlc3MuY29tL3ByZXNzLzIwMTAvMDYvMDEvd3JhcHBpbmctY29udGVudC8pXG5AbWl4aW4gZm9yY2Utd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAvLyBDU1MgMi4xXG4gIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgLy8gQ1NTIDMuMFxuICB3aGl0ZS1zcGFjZTogLXByZS13cmFwO1xuICAvLyBPcGVyYSA0LTZcbiAgd2hpdGUtc3BhY2U6IC1vLXByZS13cmFwO1xuICAvLyBPcGVyYSA3XG4gIHdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwO1xuICAvLyBNb3ppbGxhXG4gIHdoaXRlLXNwYWNlOiAtaHAtcHJlLXdyYXA7XG4gIC8vIEhQIFByaW50ZXJzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiB9ICAvLyBJRSA1K1xuIiwKCQkiQGltcG9ydCBcIi4uL2xheW91dC9ncmlkLWJhY2tncm91bmRcIjtcblxuLy8gVGhlIGJhc2UgZm9udCBzaXplLlxuJGJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzZSBsaW5lIGhlaWdodCBkZXRlcm1pbmVzIHRoZSBiYXNpYyB1bml0IG9mIHZlcnRpY2FsIHJoeXRobS5cbiRiYXNlLWxpbmUtaGVpZ2h0OiAyNHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGRlZmF1bHQgYm9yZGVyIHN0eWxlIGZvciByaHl0aG0gYm9yZGVycy5cbiRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGU6IHNvbGlkICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemU6IDE2cHg7XG5cbi8vIFNldCB0byBmYWxzZSBpZiB5b3Ugd2FudCB0byB1c2UgYWJzb2x1dGUgcGl4ZWxzIGluIHNpemluZyB5b3VyIHR5cG9ncmFwaHkuXG4kcmVsYXRpdmUtZm9udC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIEFsbG93cyB0aGUgYGFkanVzdC1mb250LXNpemUtdG9gIG1peGluIGFuZCB0aGUgYGxpbmVzLWZvci1mb250LXNpemVgIGZ1bmN0aW9uXG4vLyB0byByb3VuZCB0aGUgbGluZSBoZWlnaHQgdG8gdGhlIG5lYXJlc3QgaGFsZiBsaW5lIGhlaWdodCBpbnN0ZWFkIG9mIHRoZVxuLy8gbmVhcmVzdCBpbnRlZ3JhbCBsaW5lIGhlaWdodCB0byBhdm9pZCBsYXJnZSBzcGFjaW5nIGJldHdlZW4gbGluZXMuXG4kcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmU6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBFbnN1cmUgdGhlcmUgaXMgYXQgbGVhc3QgdGhpcyBtYW55IHBpeGVsc1xuLy8gb2YgdmVydGljYWwgcGFkZGluZyBhYm92ZSBhbmQgYmVsb3cgdGhlIHRleHQuXG4kbWluLWxpbmUtcGFkZGluZzogMnB4ICFkZWZhdWx0O1xuXG4vLyAkYmFzZS1mb250LXNpemUgYnV0IGluIHlvdXIgb3V0cHV0IHVuaXQgb2YgY2hvaWNlLlxuLy8gRGVmYXVsdHMgdG8gMWVtIHdoZW4gYCRyZWxhdGl2ZS1mb250LXNpemluZ2AgaXMgdHJ1ZS5cbiRmb250LXVuaXQ6IGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgMWVtLCAkYmFzZS1mb250LXNpemUpICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzaWMgdW5pdCBvZiBmb250IHJoeXRobS5cbiRiYXNlLXJoeXRobS11bml0OiAkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSAqICRmb250LXVuaXQ7XG5cbi8vIFRoZSBsZWFkZXIgaXMgdGhlIGFtb3VudCBvZiB3aGl0ZXNwYWNlIGluIGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWxlYWRlcjogKCRiYXNlLWxpbmUtaGVpZ2h0IC0gJGJhc2UtZm9udC1zaXplKSAqICRmb250LXVuaXQgLyAkYmFzZS1mb250LXNpemU7XG5cbi8vIFRoZSBoYWxmLWxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYWJvdmUgYW5kIGJlbG93IGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWhhbGYtbGVhZGVyOiAkYmFzZS1sZWFkZXIgLyAyO1xuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhIHJlbGF0aXZlIHVuaXQuXG5AZnVuY3Rpb24gcmVsYXRpdmUtdW5pdCgkbnVtYmVyKSB7XG4gIEByZXR1cm4gdW5pdCgkbnVtYmVyKSA9PSBcIiVcIiBvciB1bml0KCRudW1iZXIpID09IFwiZW1cIiBvciB1bml0KCRudW1iZXIpID09IFwicmVtXCI7IH1cblxuLy8gVHJ1ZSBpZiBhIG51bWJlciBoYXMgYW4gYWJzb2x1dGUgdW5pdC5cbkBmdW5jdGlvbiBhYnNvbHV0ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiBub3QgKHJlbGF0aXZlLXVuaXQoJG51bWJlcikgb3IgdW5pdGxlc3MoJG51bWJlcikpOyB9XG5cbkBpZiAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kIG5vdCByZWxhdGl2ZS11bml0KCRmb250LXVuaXQpIHtcbiAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgdHJ1ZSBidXQgJGZvbnQtdW5pdCBpcyBzZXQgdG8gI3skZm9udC11bml0fSB3aGljaCBpcyBub3QgYSByZWxhdGl2ZSB1bml0LlwiOyB9XG5cbi8vIEVzdGFibGlzaGVzIGEgZm9udCBiYXNlbGluZSBmb3IgdGhlIGdpdmVuIGZvbnQtc2l6ZS5cbkBtaXhpbiBlc3RhYmxpc2gtYmFzZWxpbmUoJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIC8vIElFIDYgcmVmdXNlcyB0byByZXNpemUgZm9udHMgc2V0IGluIHBpeGVscyBhbmQgaXQgd2VpcmRseSByZXNpemVzIGZvbnRzXG4gIC8vIHdob3NlIHJvb3QgaXMgc2V0IGluIGVtcy4gU28gd2Ugc2V0IHRoZSByb290IGZvbnQgc2l6ZSBpbiBwZXJjZW50YWdlcyBvZlxuICAvLyB0aGUgZGVmYXVsdCBmb250IHNpemUuXG4gICogaHRtbCB7XG4gICAgZm9udC1zaXplOiAxMDAlICogJGZvbnQtc2l6ZSAvICRicm93c2VyLWRlZmF1bHQtZm9udC1zaXplOyB9XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRmb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBsaW5lLWhlaWdodCB0byAxIHZlcnRpY2FsIHJoeXRobSB1bml0LlxuLy8gRG9lcyBub3Qgd29yayBvbiBlbGVtZW50cyB3aG9zZSBmb250LXNpemUgaXMgZGlmZmVyZW50IGZyb20gJGJhc2UtZm9udC1zaXplLlxuLy9cbi8vIEBkZXByZWNhdGVkIFRoaXMgbWl4aW4gd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuXG4vLyBQbGVhc2UgdXNlIHRoZSBgYWRqdXN0LWxlYWRpbmctdG9gIG1peGluIGluc3RlYWQuXG5AbWl4aW4gcmVzZXQtYmFzZWxpbmUge1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRiYXNlLWZvbnQtc2l6ZSwgJGJhc2UtZm9udC1zaXplKSk7IH1cblxuLy8gU2hvdyBhIGJhY2tncm91bmQgaW1hZ2UgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWJ1ZyB5b3VyIGFsaWdubWVudHMuXG4vLyBJbmNsdWRlIHRoZSAkaW1nIGFyZ3VtZW50IGlmIHlvdSB3b3VsZCByYXRoZXIgdXNlIHlvdXIgb3duIGltYWdlIHRoYW4gdGhlXG4vLyBDb21wYXNzIGRlZmF1bHQgZ3JhZGllbnQgaW1hZ2UuXG5AbWl4aW4gZGVidWctdmVydGljYWwtYWxpZ25tZW50KCRpbWc6IGZhbHNlKSB7XG4gIEBpZiAkaW1nIHtcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZyk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZS1yaHl0aG0tdW5pdCk7IH0gfVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90ICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgJGZyb20tc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIGFkanVzdC1mb250LXNpemUtdG9cIjsgfVxuICBmb250LXNpemU6ICRmb250LXVuaXQgKiAkdG8tc2l6ZSAvICRmcm9tLXNpemU7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkdG8tc2l6ZSwgJGJhc2UtZm9udC1zaXplKSk7IH1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBkaWZmZXJlbnQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlIHJoeXRobS5cbi8vICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lIG9mIHRoaXNcbi8vIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgZGVmYXVsdHMgdG8gdGhlXG4vLyBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbkBtaXhpbiBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBsaW5lLWhlaWdodDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQ2FsY3VsYXRlIHJoeXRobSB1bml0cy5cbkBmdW5jdGlvbiByaHl0aG0oJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRvZmZzZXQ6IDApIHtcbiAgQGlmIG5vdCAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byB0aGUgcmh5dGhtIGZ1bmN0aW9uXCI7IH1cbiAgJHJoeXRobTogJGZvbnQtdW5pdCAqICgkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRvZmZzZXQpIC8gJGZvbnQtc2l6ZTtcbiAgLy8gUm91bmQgdGhlIHBpeGVscyBkb3duIHRvIG5lYXJlc3QgaW50ZWdlci5cbiAgQGlmIHVuaXQoJHJoeXRobSkgPT0gcHgge1xuICAgICRyaHl0aG06IGZsb29yKCRyaHl0aG0pOyB9XG4gIEByZXR1cm4gJHJoeXRobTsgfVxuXG4vLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gbXVsdGlwbGUgb2Ygcmh5dGhtIHVuaXRzIG5lZWRlZCB0byBjb250YWluIHRoZSBmb250LXNpemUuXG5AZnVuY3Rpb24gbGluZXMtZm9yLWZvbnQtc2l6ZSgkZm9udC1zaXplKSB7XG4gICRsaW5lczogaWYoJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lLCBjZWlsKDIgKiAkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpIC8gMiwgY2VpbCgkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpKTtcbiAgQGlmICRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJGZvbnQtc2l6ZSA8ICRtaW4tbGluZS1wYWRkaW5nICogMiB7XG4gICAgJGxpbmVzOiAkbGluZXMgKyBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsIDAuNSwgMSk7IH1cbiAgQHJldHVybiAkbGluZXM7IH1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpOyB9XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBwYWRkaW5nLlxuQG1peGluIHBhZGRpbmctbGVhZGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIHBhZGRpbmctdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTsgfVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgbWFyZ2luLlxuQG1peGluIG1hcmdpbi1sZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcyBwYWRkaW5nLlxuQG1peGluIHBhZGRpbmctdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7IH1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7IH1cblxuLy8gQXBwbHkgYSBib3JkZXIgYW5kIHdoaXRlc3BhY2UgdG8gYW55IHNpZGUgd2l0aG91dCBkZXN0cm95aW5nIHRoZSB2ZXJ0aWNhbFxuLy8gcmh5dGhtLiBUaGUgd2hpdGVzcGFjZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgd2lkdGggb2YgdGhlIGJvcmRlci5cbkBtaXhpbiBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIoJHNpZGUsICR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90ICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlclwiOyB9XG4gIGJvcmRlci0jeyRzaWRlfS1zdHlsZTogJGJvcmRlci1zdHlsZTtcbiAgYm9yZGVyLSN7JHNpZGV9LXdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgcGFkZGluZy0jeyRzaWRlfTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTsgfVxuXG4vLyBBcHBseSBib3JkZXJzIGFuZCB3aGl0ZXNwYWNlIGVxdWFsbHkgdG8gYWxsIHNpZGVzLlxuQG1peGluIHJoeXRobS1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90ICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIHJoeXRobS1ib3JkZXJzXCI7IH1cbiAgYm9yZGVyOiB7XG4gICAgc3R5bGU6ICRib3JkZXItc3R5bGU7XG4gICAgd2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplOyB9XG4gIHBhZGRpbmc6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUsICRvZmZzZXQ6ICR3aWR0aCk7IH1cblxuLy8gQXBwbHkgYSBsZWFkaW5nIGJvcmRlci5cbkBtaXhpbiBsZWFkaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKHRvcCwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpOyB9XG5cbi8vIEFwcGx5IGEgdHJhaWxpbmcgYm9yZGVyLlxuQG1peGluIHRyYWlsaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKGJvdHRvbSwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpOyB9XG5cbi8vIEFwcGx5IGJvdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgYm9yZGVycy5cbkBtaXhpbiBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGxlYWRpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbiAgQGluY2x1ZGUgdHJhaWxpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTsgfVxuXG4vLyBBbGlhcyBmb3IgYGhvcml6b250YWwtYm9yZGVyc2AgbWl4aW4uXG5AbWl4aW4gaC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vY3NzMy9pbWFnZXNcIjtcbkBpbXBvcnQgXCIuLi9jc3MzL2JhY2tncm91bmQtc2l6ZVwiO1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgY29sdW1uc1xuJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3I6IHJnYmEoMTAwLCAxMDAsIDIyNSwgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKSAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB5b3VyIGdyaWRcbiRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1uczogMjQgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggb2YgeW91ciBjb2x1bW5zXG4kZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aDogMzBweCAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGd1dHRlcnNcbiRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoOiAxMHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIG9mZnNldCwgaWYgeW91ciBjb2x1bW5zIGFyZSBwYWRkZWQgaW4gZnJvbSB0aGUgY29udGFpbmVyIGVkZ2VcbiRncmlkLWJhY2tncm91bmQtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBiYXNlbGluZVxuJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGhlaWdodCBvZiB5b3VyIGJhc2VsaW5lIGdyaWRcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtaGVpZ2h0OiAxLjVlbSAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIHlvdXIgY29sdW1ucyBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIHlvdXIgdmVydGljYWwgZ3JpZHMgb24gYW5kIG9mZlxuJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIGFsbCB5b3VyIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWdyaWQtYmFja2dyb3VuZHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIG9wdGlvbmFsbHkgZm9yY2UgeW91ciBncmlkLWltYWdlIHRvIHJlbWFpbiBmbHVpZFxuLy8gbm8gbWF0dGVyIHdoYXQgdW5pdHMgeW91IHVzZWQgdG8gZGVjbGFyZWQgeW91ciBncmlkLlxuJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBiYXNlbGluZSBncmlkc1xuQGZ1bmN0aW9uIGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3I6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IpIHtcbiAgJGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkY29sb3IgNSUsIHJnYmEoJGNvbG9yLCAwKSA1JSk7XG4gIEByZXR1cm4gJGdyYWRpZW50OyB9XG5cbi8vIENyZWF0ZSB0aGUgY29sb3Itc3RvcHMgbmVlZGVkIGZvciBob3Jpem9udGFsIGdyaWRzXG5AZnVuY3Rpb24gYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLCAkY29sdW1uOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCwgJGd1dHRlcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsICRvZmZzZXQ6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LCAkY29sdW1uLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IpIHtcbiAgJGdyaWQ6IGNvbXBhY3QoKTtcbiAgJGdyaWQ6IGFwcGVuZCgkZ3JpZCwgJGd1dHRlci1jb2xvciAkb2Zmc2V0LCBjb21tYSk7XG4gIEBmb3IgJGkgZnJvbSAwIHRvICR0b3RhbCB7XG4gICAgLy8gJGEgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgdGhpcyBjb2x1bW4sIGluaXRpYWxseSBlcXVhbCB0byB0aGUgb2Zmc2V0XG4gICAgJGE6ICRvZmZzZXQ7XG4gICAgQGlmICRpID4gMCB7XG4gICAgICAkYTogJGEgKyAoJGNvbHVtbiArICRndXR0ZXIpICogJGk7IH1cbiAgICAvLyAkZyByZXByZXNlbnRzIHRoZSBzdGFydCBvZiB0aGlzIGd1dHRlciwgZXF1YWwgdG8gJGEgcGx1cyBvbmUgY29sdW1uLXdpZHRoXG4gICAgJGc6ICRhICsgJGNvbHVtbjtcbiAgICAvLyAkeiByZXByZXNlbnRzIHRoZSBlbmQgb2YgYSBndXR0ZXIsIGVxdWFsIHRvICRnIHBsdXMgb25lIGd1dHRlci13aWR0aFxuICAgICR6OiAkZyArICRndXR0ZXI7XG4gICAgQGlmIHVuaXQoJGEpID09IFwiJVwiIGFuZCAkaSA9PSAkdG90YWwgLSAxIHtcbiAgICAgICR6OiAxMDAlOyB9XG4gICAgLy8gYW5kIHdlIGFkZCB0aGlzIGNvbHVtbi9ndXR0ZXIgcGFpciB0byBvdXIgZ3JpZFxuICAgICRncmlkOiBqb2luKCRncmlkLCAoJGNvbHVtbi1jb2xvciAkYSwgJGNvbHVtbi1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkeikpOyB9XG4gIEByZXR1cm4gJGdyaWQ7IH1cblxuLy8gUmV0dXJuIHRoZSBncmFkaWVudCBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLCAkY29sdW1uOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCwgJGd1dHRlcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsICRvZmZzZXQ6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LCAkY29sdW1uLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCkge1xuICAkZ3JpZDogdW5xdW90ZShcIlwiKTtcbiAgLy8gZG9uJ3QgZm9yY2UgZmx1aWQgZ3JpZHMgd2hlbiB0aGV5IGFyZSBhbHJlYWR5IGZsdWlkLlxuICBAaWYgdW5pdCgkY29sdW1uKSA9PSBcIiVcIiB7XG4gICAgJGZvcmNlLWZsdWlkOiBmYWxzZTsgfVxuICBAaWYgJGZvcmNlLWZsdWlkIHtcbiAgICAkZ3JpZDogZ2V0LWNvbHVtbi1mbHVpZC1ncmlkKCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcik7IH1cbiAgQGVsc2Uge1xuICAgICRncmlkOiBidWlsZC1ncmlkLWJhY2tncm91bmQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yKTsgfVxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIGdyYWRpZW50XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGxlZnQsICRncmlkKTtcbiAgQHJldHVybiAkZ3JhZGllbnQ7IH1cblxuLy8gQ29udmVydCBhIGdyaWQgZnJvbSBmaXhlZCB1bml0cyBpbnRvIHBlcmNlbnRhZ2VzLlxuQGZ1bmN0aW9uIGdldC1jb2x1bW4tZmx1aWQtZ3JpZCgkdG90YWw6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucywgJGNvbHVtbjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsICRndXR0ZXI6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLCAkb2Zmc2V0OiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCwgJGNvbHVtbi1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3I6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yKSB7XG4gICRjb250ZXh0OiAkY29sdW1uICogJHRvdGFsICsgJGd1dHRlciAqICgkdG90YWwgLSAxKSArICRvZmZzZXQgKiAyO1xuICAkb2Zmc2V0OiAkb2Zmc2V0IC8gJGNvbnRleHQgKiAxMDAlO1xuICAkY29sdW1uOiAkY29sdW1uIC8gJGNvbnRleHQgKiAxMDAlO1xuICAkZ3V0dGVyOiAkZ3V0dGVyIC8gJGNvbnRleHQgKiAxMDAlO1xuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIHNldCBvZiBjb2xvci1zdG9wc1xuICAkZ3JpZDogYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvcik7XG4gIEByZXR1cm4gJGdyaWQ7IH1cblxuLy8gQWRkIGp1c3QgdGhlIGJhc2VsaW5lIGdyaWQgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBiYXNlbGluZS1ncmlkLWJhY2tncm91bmQoJGJhc2VsaW5lOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCwgJGNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3IpKTtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOyB9IH1cblxuLy8gQWRkIGp1c3QgdGhlIGhvcml6b250YWwgZ3JpZCB0byBhbiBlbGVtZW50J3MgYmFja2dyb3VuZFxuQG1peGluIGNvbHVtbi1ncmlkLWJhY2tncm91bmQoJHRvdGFsOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsICRjb2x1bW46ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLCAkZ3V0dGVyOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCwgJG9mZnNldDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsICRjb2x1bW4tY29sb3I6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkOiAkZ3JpZC1iYWNrZ3JvdW5kLWZvcmNlLWZsdWlkKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKSk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7IH0gfVxuXG4vLyBBZGQgYm90aCBob3Jpem9udGFsIGFuZCBiYXNlbGluZSBncmlkcyB0byBhbiBlbGVtZW50J3MgYmFja2dyb3VuZFxuQG1peGluIGdyaWQtYmFja2dyb3VuZCgkdG90YWw6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucywgJGNvbHVtbjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsICRndXR0ZXI6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLCAkYmFzZWxpbmU6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtaGVpZ2h0LCAkb2Zmc2V0OiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCwgJGNvbHVtbi1jb2xvcjogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsICRndXR0ZXItY29sb3I6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yLCAkYmFzZWxpbmUtY29sb3I6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICRmb3JjZS1mbHVpZDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCkge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGlmICRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgYW5kICRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzIHtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRiYXNlbGluZS1jb2xvciksIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCAkY29sdW1uLCAkZ3V0dGVyLCAkb2Zmc2V0LCAkY29sdW1uLWNvbG9yLCAkZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQpKTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlICRiYXNlbGluZSwgYXV0byk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZWxpbmUsICRiYXNlbGluZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwgJGNvbHVtbiwgJGd1dHRlciwgJG9mZnNldCwgJGNvbHVtbi1jb2xvciwgJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKTsgfSB9IH1cbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcbkBpbXBvcnQgXCIuLi91dGlsaXRpZXMvZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcIi4uL2Z1bmN0aW9uc1wiO1xuXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTI6IGZhbHNlLCAkYmFja2dyb3VuZC0zOiBmYWxzZSwgJGJhY2tncm91bmQtNDogZmFsc2UsICRiYWNrZ3JvdW5kLTU6IGZhbHNlLCAkYmFja2dyb3VuZC02OiBmYWxzZSwgJGJhY2tncm91bmQtNzogZmFsc2UsICRiYWNrZ3JvdW5kLTg6IGZhbHNlLCAkYmFja2dyb3VuZC05OiBmYWxzZSwgJGJhY2tncm91bmQtMTA6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgJGJhY2tncm91bmRzKSBvciAkbXVsdC1iZ3M7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXN2ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW93ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXdlYmtpdCgkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1vKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgLXBpZS1iYWNrZ3JvdW5kOiAtcGllKCRiYWNrZ3JvdW5kcyk7IH1cbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmRzOyB9XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXdpdGgtY3NzMi1mYWxsYmFjaygkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yOiBmYWxzZSwgJGJhY2tncm91bmQtMzogZmFsc2UsICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLCAkYmFja2dyb3VuZC01OiBmYWxzZSwgJGJhY2tncm91bmQtNjogZmFsc2UsICRiYWNrZ3JvdW5kLTc6IGZhbHNlLCAkYmFja2dyb3VuZC04OiBmYWxzZSwgJGJhY2tncm91bmQtOTogZmFsc2UsICRiYWNrZ3JvdW5kLTEwOiBmYWxzZSkge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90IGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkge1xuICAgIGJhY2tncm91bmQ6ICRzaW1wbGUtYmFja2dyb3VuZDsgfVxuICBAaW5jbHVkZSBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTsgfVxuXG4vLyBCYWNrZ3JvdW5kIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS0xLCAkaW1hZ2UtMjogZmFsc2UsICRpbWFnZS0zOiBmYWxzZSwgJGltYWdlLTQ6IGZhbHNlLCAkaW1hZ2UtNTogZmFsc2UsICRpbWFnZS02OiBmYWxzZSwgJGltYWdlLTc6IGZhbHNlLCAkaW1hZ2UtODogZmFsc2UsICRpbWFnZS05OiBmYWxzZSwgJGltYWdlLTEwOiBmYWxzZSkge1xuICAkaW1hZ2VzOiBjb21wYWN0KCRpbWFnZS0xLCAkaW1hZ2UtMiwgJGltYWdlLTMsICRpbWFnZS00LCAkaW1hZ2UtNSwgJGltYWdlLTYsICRpbWFnZS03LCAkaW1hZ2UtOCwgJGltYWdlLTksICRpbWFnZS0xMCk7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtc3ZnKCRpbWFnZXMpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtb3dnKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgQHdhcm4gXCJQSUUgZG9lcyBub3Qgc3VwcG9ydCBiYWNrZ3JvdW5kLWltYWdlLiBVc2UgQGluY2x1ZGUgYmFja2dyb3VuZCgjeyRpbWFnZXN9KSBpbnN0ZWFkLlwiOyB9XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZXM7IH1cblxuLy8gRW1pdCBhIElFLVNwZWNpZmljIGZpbHRlcnMgdGhhdCByZW5kZXJzIGEgc2ltcGxlIGxpbmVhciBncmFkaWVudC5cbi8vIEZvciB1c2UgaW4gSUUgNiAtIDguIEJlc3QgcHJhY3RpY2Ugd291bGQgaGF2ZSB5b3UgYXBwbHkgdGhpcyB2aWEgYVxuLy8gY29uZGl0aW9uYWwgSUUgc3R5bGVzaGVldCwgYnV0IGlmIHlvdSBtdXN0LCB5b3Ugc2hvdWxkIHBsYWNlIHRoaXMgYmVmb3JlXG4vLyBhbnkgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGhhdmUgc3BlY2lmaWVkLlxuLy9cbi8vIEZvciB0aGUgYCRvcmllbnRhdGlvbmAgcGFyYW1ldGVyLCB5b3UgY2FuIHBhc3MgYHZlcnRpY2FsYCBvciBgaG9yaXpvbnRhbGAuXG5AbWl4aW4gZmlsdGVyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJGVuZC1jb2xvciwgJG9yaWVudGF0aW9uOiB2ZXJ0aWNhbCkge1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xuICAkZ3JhZGllbnQtdHlwZTogaWYoJG9yaWVudGF0aW9uID09IHZlcnRpY2FsLCAwLCAxKTtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChncmFkaWVudFR5cGU9I3skZ3JhZGllbnQtdHlwZX0sIHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9Jyk7IH0gfVxuXG4vLyBCb3JkZXIgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuXG5AbWl4aW4gYm9yZGVyLWltYWdlKCR2YWx1ZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LWJvcmRlci1pbWFnZTogLW1veihyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLXdlYmtpdChyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLWJvcmRlci1pbWFnZTogLW8ocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyB7XG4gICAgYm9yZGVyLWltYWdlOiAtc3ZnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBib3JkZXItaW1hZ2U6ICR2YWx1ZTsgfVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtb3dnKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXN2ZygkaW1hZ2UpOyB9XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6ICRpbWFnZTsgfVxuXG4vLyBMaXN0IHN0eWxlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlKCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1zdmcoJHZhbHVlKTsgfVxuICBsaXN0LXN0eWxlLWltYWdlOiAkdmFsdWU7IH1cblxuLy8gY29udGVudCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gY29udGVudCgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtc3ZnKCR2YWx1ZSk7IH1cbiAgY29udGVudDogJHZhbHVlOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7IH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpOyB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpOyB9XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xOyB9XG4gIEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05OyB9XG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpOyB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTsgfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjogbnVsbCwgJHJlamVjdDM6IG51bGwsICRyZWplY3Q0OiBudWxsLCAkcmVqZWN0NTogbnVsbCwgJHJlamVjdDY6IG51bGwsICRyZWplY3Q3OiBudWxsLCAkcmVqZWN0ODogbnVsbCwgJHJlamVjdDk6IG51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTsgfVxuXG4vL0BpZiBub3QgZnVuY3Rpb24tZXhpc3RzKGNvbXBhY3QpXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkbGlzdDogKCk7XG4gIEBlYWNoICR2YXIgaW4gJHZhcnMge1xuICAgIEBpZiAkdmFyIHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsIGNvbW1hKTsgfSB9XG4gIEByZXR1cm4gJGxpc3Q7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcInN0cmluZ1wiIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgXCJ1cmxcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcInJnYlwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwiI1wiKSAhPSAxOyB9XG4gICAgQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJjb2xvclwiIHt9XG4gICAgQGVsc2UgaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7IH0gfVxuICBAcmV0dXJuICRwcmVmaXhlZDsgfVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTsgfVxuICBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5OyB9XG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTsgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRwcm9wczsgfVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXN2Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW93Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXdlYmtpdFwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW1velwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItcGllXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICBAaWYgJGZyb20gPT0gdG9wIHtcbiAgICBAcmV0dXJuIGJvdHRvbTsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBib3R0b20ge1xuICAgIEByZXR1cm4gdG9wOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGxlZnQge1xuICAgIEByZXR1cm4gcmlnaHQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gcmlnaHQge1xuICAgIEByZXR1cm4gbGVmdDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBjZW50ZXIge1xuICAgIEByZXR1cm4gY2VudGVyOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vL1xuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSkge1xuICBAaWYgJHR5cGUgPT0gYmxvY2sge1xuICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZSB7XG4gICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUtYmxvY2sge1xuICAgIEByZXR1cm4gaW1nOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlIHtcbiAgICBAcmV0dXJuIHRhYmxlOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGxpc3QtaXRlbSB7XG4gICAgQHJldHVybiBsaTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXAge1xuICAgIEByZXR1cm4gdGJvZHk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRoZWFkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCB7XG4gICAgQHJldHVybiB0Zm9vdDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3cge1xuICAgIEByZXR1cm4gdHI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtY2VsbCB7XG4gICAgQHJldHVybiB0aCwgdGQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtYmxvY2sge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWlubGluZSB7XG4gICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNSB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRleHQtaW5wdXQge1xuICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLCAkc2l6ZS0yOiBmYWxzZSwgJHNpemUtMzogZmFsc2UsICRzaXplLTQ6IGZhbHNlLCAkc2l6ZS01OiBmYWxzZSwgJHNpemUtNjogZmFsc2UsICRzaXplLTc6IGZhbHNlLCAkc2l6ZS04OiBmYWxzZSwgJHNpemUtOTogZmFsc2UsICRzaXplLTEwOiBmYWxzZSkge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiY3NzMy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiY3NzMy9pbmxpbmUtYmxvY2tcIjtcbkBpbXBvcnQgXCJjc3MzL29wYWNpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtc2hhZG93XCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3hcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1jbGlwXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLW9yaWdpblwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1zaXplXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvcmVnaW9uc1wiO1xuQGltcG9ydCBcImNzczMvaHlwaGVuYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2ZpbHRlclwiO1xuQGltcG9ydCBcImNzczMvcGllXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLWludGVyZmFjZVwiO1xuQGltcG9ydCBcImNzczMvZmxleGJveFwiO1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4kZGVmYXVsdC1ib3JkZXItcmFkaXVzOiA1cHggIWRlZmF1bHQ7XG5cbi8vIFJvdW5kIGFsbCBjb3JuZXJzIGJ5IGEgc3BlY2lmaWMgYW1vdW50LCBkZWZhdWx0cyB0byB2YWx1ZSBvZiBgJGRlZmF1bHQtYm9yZGVyLXJhZGl1c2AuXG4vL1xuLy8gV2hlbiB0d28gdmFsdWVzIGFyZSBwYXNzZWQsIHRoZSBmaXJzdCBpcyB0aGUgaG9yaXpvbnRhbCByYWRpdXNcbi8vIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSB2ZXJ0aWNhbCByYWRpdXMuXG4vL1xuLy8gTm90ZTogd2Via2l0IGRvZXMgbm90IHN1cHBvcnQgc2hvcnRoYW5kIHN5bnRheCBmb3Igc2V2ZXJhbCBjb3JuZXJzIGF0IG9uY2UuXG4vLyBTbyBpbiB0aGUgY2FzZSB3aGVyZSB5b3UgcGFzcyBzZXZlcmFsIHZhbHVlcyBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHBhc3NlZCB0byB3ZWJraXQuXG4vL1xuLy8gRXhhbXBsZXM6XG4vL1xuLy8gICAgIC5zaW1wbGUgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNHB4LCA0cHgpOyB9XG4vLyAgICAgLmNvbXBvdW5kIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygycHggNXB4LCAzcHggNnB4KTsgfVxuLy8gICAgIC5jcmF6eSAgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMXB4IDNweCA1cHggN3B4LCAycHggNHB4IDZweCA4cHgpfVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vXG4vLyAgICAuc2ltcGxlIHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggNHB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4OyB9XG4vL1xuLy8gICAgLmNvbXBvdW5kIHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHggM3B4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4OyB9XG4vL1xuLy8gICAgLmNyYXp5IHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxcHggMnB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4OyB9XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMsICR2ZXJ0aWNhbC1yYWRpdXM6IGZhbHNlKSB7XG4gIEBpZiAkdmVydGljYWwtcmFkaXVzIHtcbiAgICAvLyBXZWJraXQgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBvZmZpY2lhbCBzaG9ydGhhbmQgc3ludGF4IGZvciBzcGVjaWZ5aW5nXG4gICAgLy8gYSB2ZXJ0aWNhbCByYWRpdXMgdW5sZXNzIHNvIGluIGNhc2UgdGhlcmUncyBzZXZlcmFsIHdlIG9ubHkgdGFrZSB0aGUgZmlyc3QuXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJvcmRlci1yYWRpdXMsIGZpcnN0LXZhbHVlLW9mKCRyYWRpdXMpIGZpcnN0LXZhbHVlLW9mKCR2ZXJ0aWNhbC1yYWRpdXMpLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpO1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci1yYWRpdXNcIiwgJHJhZGl1cyB1bnF1b3RlKFwiL1wiKSAkdmVydGljYWwtcmFkaXVzLCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJvcmRlci1yYWRpdXMsICRyYWRpdXMpOyB9IH1cblxuLy8gUm91bmQgcmFkaXVzIGF0IHBvc2l0aW9uIGJ5IGFtb3VudC5cbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgYCR2ZXJ0YDogYHRvcGAsIGBib3R0b21gXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgYCRob3J6YDogYGxlZnRgLCBgcmlnaHRgXG5cbkBtaXhpbiBib3JkZXItY29ybmVyLXJhZGl1cygkdmVydCwgJGhvcnosICRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgLy8gU3VwcG9ydCBmb3IgbW96aWxsYSdzIHN5bnRheCBmb3Igc3BlY2lmeWluZyBhIGNvcm5lclxuICBAaW5jbHVkZSBleHBlcmltZW50YWwodW5xdW90ZShcImJvcmRlci1yYWRpdXMtI3skdmVydH0jeyRob3J6fVwiKSwgJHJhZGl1cywgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgbm90IG9mZmljaWFsKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiYm9yZGVyLSN7JHZlcnR9LSN7JGhvcnp9LXJhZGl1c1wiLCAkcmFkaXVzLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBSb3VuZCB0b3AtbGVmdCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKHRvcCwgbGVmdCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgdG9wLXJpZ2h0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKHRvcCwgcmlnaHQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdHRvbS1sZWZ0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXMoYm90dG9tLCBsZWZ0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3R0b20tcmlnaHQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXMoYm90dG9tLCByaWdodCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCB0b3AgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggcmlnaHQgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggYm90dG9tIGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIGxlZnQgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXMpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrOyB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7IH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIENTUyBvcGFjaXR5LiBUYWtlcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEgYXMgdGhlIGFyZ3VtZW50LCBlLmcuIDAuNSBmb3IgNTAlIG9wYWNpdHkuXG4vL1xuLy8gICAgIEBwYXJhbSAkb3BhY2l0eVxuLy8gICAgICAgICBBIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEsIHdoZXJlIDAgaXMgdHJhbnNwYXJlbnQgYW5kIDEgaXMgb3BhcXVlLlxuXG5AbWl4aW4gb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogdW5xdW90ZShcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSN7cm91bmQoJG9wYWNpdHkgKiAxMDApfSlcIik7IH1cbiAgb3BhY2l0eTogJG9wYWNpdHk7IH1cblxuLy8gTWFrZSBhbiBlbGVtZW50IGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQuXG5AbWl4aW4gdHJhbnNwYXJlbnQge1xuICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IG9wYXF1ZS5cbkBtaXhpbiBvcGFxdWUge1xuICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSIvLyBAZG9jIG9mZlxuLy8gVGhlc2UgZGVmYXVsdHMgbWFrZSB0aGUgYXJndW1lbnRzIG9wdGlvbmFsIGZvciB0aGlzIG1peGluXG4vLyBJZiB5b3UgbGlrZSwgc2V0IGRpZmZlcmVudCBkZWZhdWx0cyBiZWZvcmUgaW1wb3J0aW5nLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBib3ggc2hhZG93c1xuJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcjogIzMzMzMzMyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIHRvIHRoZSByaWdodC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgdmVydGljYWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyBkb3duLlxuJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBibHVyIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cjogNXB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzcHJlYWQgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzaGFkb3cgaW5zZXQ6IGluc2V0IG9yIGZhbHNlIChmb3Igc3RhbmRhcmQgc2hhZG93KS5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIGZvciBXZWJraXQsIEdlY2tvLCBhbmQgQ1NTMyBib3ggc2hhZG93cyB3aGVuIG9uZSBvciBtb3JlIGJveFxuLy8gc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gYm94LXNoYWRvdyBwcm9wZXJ0eS5cbkBtaXhpbiBib3gtc2hhZG93KCRzaGFkb3ctMTogZGVmYXVsdCwgJHNoYWRvdy0yOiBmYWxzZSwgJHNoYWRvdy0zOiBmYWxzZSwgJHNoYWRvdy00OiBmYWxzZSwgJHNoYWRvdy01OiBmYWxzZSwgJHNoYWRvdy02OiBmYWxzZSwgJHNoYWRvdy03OiBmYWxzZSwgJHNoYWRvdy04OiBmYWxzZSwgJHNoYWRvdy05OiBmYWxzZSwgJHNoYWRvdy0xMDogZmFsc2UpIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTE6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdChpZigkZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0LCBpbnNldCwgZmFsc2UpLCAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LWJsdXIsICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLCAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yKSk7IH1cbiAgJHNoYWRvdzogY29tcGFjdCgkc2hhZG93LTEsICRzaGFkb3ctMiwgJHNoYWRvdy0zLCAkc2hhZG93LTQsICRzaGFkb3ctNSwgJHNoYWRvdy02LCAkc2hhZG93LTcsICRzaGFkb3ctOCwgJHNoYWRvdy05LCAkc2hhZG93LTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1zaGFkb3csICRzaGFkb3csIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFByb3ZpZGVzIGEgc2luZ2xlIGNyb3NzLWJyb3dzZXIgQ1NTIGJveCBzaGFkb3cgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzLlxuLy8gSW5jbHVkZXMgZGVmYXVsdCBhcmd1bWVudHMgZm9yIGhvcml6b250YWwgb2Zmc2V0LCB2ZXJ0aWNhbCBvZmZzZXQsIGJsdXIgbGVuZ3RoLCBzcHJlYWQgbGVuZ3RoLCBjb2xvciBhbmQgaW5zZXQuXG5AbWl4aW4gc2luZ2xlLWJveC1zaGFkb3coJGhvZmY6ICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsICR2b2ZmOiAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkYmx1cjogJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLCAkc3ByZWFkOiAkZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZCwgJGNvbG9yOiAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLCAkaW5zZXQ6ICRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQpIHtcbiAgQGlmIG5vdCAoJGluc2V0ID09IHRydWUgb3IgJGluc2V0ID09IGZhbHNlIG9yICRpbnNldCA9PSBpbnNldCkge1xuICAgIEB3YXJuIFwiJGluc2V0IGV4cGVjdGVkIHRvIGJlIHRydWUgb3IgdGhlIGluc2V0IGtleXdvcmQuIEdvdCAjeyRpbnNldH0gaW5zdGVhZC4gVXNpbmc6IGluc2V0XCI7IH1cbiAgQGlmICRjb2xvciA9PSBub25lIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpOyB9XG4gIEBlbHNlIHtcbiAgICAkZnVsbDogJGhvZmYgJHZvZmY7XG4gICAgQGlmICRibHVyIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkYmx1cjsgfVxuICAgIEBpZiAkc3ByZWFkIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkc3ByZWFkOyB9XG4gICAgQGlmICRjb2xvciB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGNvbG9yOyB9XG4gICAgQGlmICRpbnNldCB7XG4gICAgICAkZnVsbDogaW5zZXQgJGZ1bGw7IH1cbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmdWxsKTsgfSB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgaW4geW91ciBwcm9qZWN0XG5cbiRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yOiAjYWFhICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyOiAxcHggIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIHRleHQgc2hhZG93cyB3aGVuIG9uZSBvciBtb3JlIHNoYWRvd3MgYXJlIG5lZWRlZC5cbi8vIEVhY2ggc2hhZG93IGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIHRleHQtc2hhZG93IHByb3BlcnR5LlxuLy9cbi8vIE5vdGU6IGlmIGFueSBzaGFkb3cgaGFzIGEgc3ByZWFkIHBhcmFtZXRlciwgdGhpcyB3aWxsIGNhdXNlIHRoZSBtaXhpblxuLy8gdG8gZW1pdCB0aGUgc2hhZG93IGRlY2xhcmF0aW9uIHR3aWNlLCBmaXJzdCB3aXRob3V0IHRoZSBzcHJlYWQsXG4vLyB0aGVuIHdpdGggdGhlIHNwcmVhZCBpbmNsdWRlZC4gVGhpcyBhbGxvd3MgeW91IHRvIHByb2dyZXNzaXZlbHlcbi8vIGVuaGFuY2UgdGhlIGJyb3dzZXJzIHRoYXQgZG8gc3VwcG9ydCB0aGUgc3ByZWFkIHBhcmFtZXRlci5cbkBtaXhpbiB0ZXh0LXNoYWRvdygkc2hhZG93LTE6IGRlZmF1bHQsICRzaGFkb3ctMjogZmFsc2UsICRzaGFkb3ctMzogZmFsc2UsICRzaGFkb3ctNDogZmFsc2UsICRzaGFkb3ctNTogZmFsc2UsICRzaGFkb3ctNjogZmFsc2UsICRzaGFkb3ctNzogZmFsc2UsICRzaGFkb3ctODogZmFsc2UsICRzaGFkb3ctOTogZmFsc2UsICRzaGFkb3ctMTA6IGZhbHNlKSB7XG4gIEBpZiAkc2hhZG93LTEgPT0gZGVmYXVsdCB7XG4gICAgJHNoYWRvdy0xOiBjb21wYWN0KCRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0ICRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0ICRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXIgJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkICRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yKTsgfVxuICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogam9pbigoKSwgKCksIGNvbW1hKTtcbiAgJHNoYWRvd3M6IGpvaW4oKCksICgpLCBjb21tYSk7XG4gICRoYXMtc3ByZWFkOiBmYWxzZTtcbiAgQGVhY2ggJHNoYWRvdyBpbiBjb21wYWN0KCRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNCwgJHNoYWRvdy01LCAkc2hhZG93LTYsICRzaGFkb3ctNywgJHNoYWRvdy04LCAkc2hhZG93LTksICRzaGFkb3ctMTApIHtcbiAgICBAaWYgbGVuZ3RoKCRzaGFkb3cpID4gNCB7XG4gICAgICAkaGFzLXNwcmVhZDogdHJ1ZTtcbiAgICAgICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBhcHBlbmQoJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQsIG50aCgkc2hhZG93LCAxKSBudGgoJHNoYWRvdywgMikgbnRoKCRzaGFkb3csIDMpIG50aCgkc2hhZG93LCA1KSk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTsgfVxuICAgIGVsc2Uge1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgJHNoYWRvdyk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTsgfSB9XG4gIEBpZiAkaGFzLXNwcmVhZCB7XG4gICAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOyB9XG4gIHRleHQtc2hhZG93OiAkc2hhZG93czsgfVxuXG4vLyBQcm92aWRlcyBhIHNpbmdsZSBjcm9zcy1icm93c2VyIENTUyB0ZXh0IHNoYWRvdy5cbi8vXG4vLyBQcm92aWRlcyBzZW5zaWJsZSBkZWZhdWx0cyBmb3IgdGhlIGNvbG9yLCBob3Jpem9udGFsIG9mZnNldCwgdmVydGljYWwgb2Zmc2V0LCBibHVyLCBhbmQgc3ByZWFkXG4vLyBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgYWJvdmUuXG5AbWl4aW4gc2luZ2xlLXRleHQtc2hhZG93KCRob2ZmOiBmYWxzZSwgJHZvZmY6IGZhbHNlLCAkYmx1cjogZmFsc2UsICRzcHJlYWQ6IGZhbHNlLCAkY29sb3I6IGZhbHNlKSB7XG4gIC8vIEEgbG90IG9mIHBlb3BsZSB0aGluayB0aGUgY29sb3IgY29tZXMgZmlyc3QuIEl0IGRvZXNuJ3QuXG4gIEBpZiB0eXBlLW9mKCRob2ZmKSA9PSBjb2xvciB7XG4gICAgJHRlbXAtY29sb3I6ICRob2ZmO1xuICAgICRob2ZmOiAkdm9mZjtcbiAgICAkdm9mZjogJGJsdXI7XG4gICAgJGJsdXI6ICRzcHJlYWQ7XG4gICAgJHNwcmVhZDogJGNvbG9yO1xuICAgICRjb2xvcjogJHRlbXAtY29sb3I7IH1cbiAgLy8gQ2FuJ3QgcmVseSBvbiBkZWZhdWx0IGFzc2lnbm1lbnQgd2l0aCBtdWx0aXBsZSBzdXBwb3J0ZWQgYXJndW1lbnQgb3JkZXJzLlxuICAkaG9mZjogaWYoJGhvZmYsICRob2ZmLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldCk7XG4gICR2b2ZmOiBpZigkdm9mZiwgJHZvZmYsICRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0KTtcbiAgJGJsdXI6IGlmKCRibHVyLCAkYmx1ciwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1cik7XG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQsICRzcHJlYWQsICRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZCk7XG4gICRjb2xvcjogaWYoJGNvbG9yLCAkY29sb3IsICRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yKTtcbiAgLy8gV2UgZG9uJ3QgbmVlZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgQGlmICRjb2xvciA9PSBub25lIG9yICRob2ZmID09IG5vbmUge1xuICAgIEBpbmNsdWRlIHRleHQtc2hhZG93KG5vbmUpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhjb21wYWN0KCRob2ZmICR2b2ZmICRibHVyICRzcHJlYWQgJGNvbG9yKSk7IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTcGVjaWZ5IHRoZSBzaG9ydGhhbmQgYGNvbHVtbnNgIHByb3BlcnR5LlxuLy9cbi8vIEV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbnMoMjBlbSAyKVxuQG1peGluIGNvbHVtbnMoJHdpZHRoLWFuZC1jb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1ucywgJHdpZHRoLWFuZC1jb3VudCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIG51bWJlciBvZiBjb2x1bW5zXG5AbWl4aW4gY29sdW1uLWNvdW50KCRjb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWNvdW50LCAkY291bnQsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSBnYXAgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYDIwcHhgXG5AbWl4aW4gY29sdW1uLWdhcCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1nYXAsICR3aWR0aCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIHdpZHRoIG9mIGNvbHVtbnMgZS5nLiBgMTAwcHhgXG5AbWl4aW4gY29sdW1uLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXdpZHRoLCAkd2lkdGgsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMXB4YFxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtd2lkdGgsICR3aWR0aCwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFNwZWNpZnkgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGBkb3R0ZWRgLlxuLy8gVGhpcyB3b3JrcyBsaWtlIGJvcmRlci1zdHlsZS5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGUpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLXN0eWxlLCB1bnF1b3RlKCRzdHlsZSksIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTcGVjaWZ5IHRoZSBjb2xvciBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgYmx1ZWAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLWNvbG9yLlxuQG1peGluIGNvbHVtbi1ydWxlLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtY29sb3IsICRjb2xvciwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE1peGluIGVuY29tcGFzc2luZyBhbGwgY29sdW1uIHJ1bGUgcHJvcGVydGllc1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCwgc29saWQsICNjMDApXG4vL1xuLy8gT3IgdGhlIHZhbHVlcyBjYW4gYmUgc3BhY2Ugc2VwYXJhdGVkOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW4tcnVsZSgxcHggc29saWQgI2MwMClcbkBtaXhpbiBjb2x1bW4tcnVsZSgkd2lkdGgsICRzdHlsZTogZmFsc2UsICRjb2xvcjogZmFsc2UpIHtcbiAgJGZ1bGw6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdCgkd2lkdGgsICRzdHlsZSwgJGNvbG9yKSk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZSwgJGZ1bGwsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstYmVmb3JlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOlxuLy8gICAgaDIuYmVmb3JlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYmVmb3JlKGFsd2F5cyk7fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gIGgyLmJlZm9yZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWJlZm9yZSgkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1iZWZvcmUsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1hZnRlclxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTpcbi8vICAgIGgyLmFmdGVyIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYWZ0ZXIoYWx3YXlzKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gIGgyLmFmdGVyIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5czsgfVxuQG1peGluIGNvbHVtbi1icmVhay1hZnRlcigkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1hZnRlciwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWluc2lkZVxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhdm9pZCwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhay1pbnNpZGUoKTt9XG4vLyAgV2hpY2ggZ2VuZXJhdGVzOlxuLy9cbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWluc2lkZSgkdmFsdWU6IGF1dG8pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1pbnNpZGUsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIEFsbC1wdXJwb3NlIG1peGluIGZvciBzZXR0aW5nIGNvbHVtbiBicmVha3MuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYmVmb3JlLCBhZnRlciwgaW5zaWRlXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJyR2YWx1ZScgYXJlIGRlcGVuZGVudCBvbiAkdHlwZVxuLy8gICAgKiB3aGVuICR0eXBlID0gYmVmb3JlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gYWZ0ZXIsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBpbnNpZGUsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYXZvaWQsIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlczpcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGJlZm9yZSwgYWx3YXlzKTt9XG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGFmdGVyLCBhbHdheXMpOyB9XG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhpbnNpZGUpOyB9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vICBoMi5iZWZvcmUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7fVxuLy9cbi8vICBoMi5hZnRlciB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7IH1cbi8vXG4vLyAgaDIuaW5zaWRlIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcbi8vICAgIGNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87fVxuXG5AbWl4aW4gY29sdW1uLWJyZWFrKCR0eXBlOiBiZWZvcmUsICR2YWx1ZTogYXV0bykge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJjb2x1bW4tYnJlYWstI3skdHlwZX1cIiwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ2hhbmdlIHRoZSBib3ggbW9kZWwgZm9yIE1vemlsbGEsIFdlYmtpdCwgSUU4IGFuZCB0aGUgZnV0dXJlXG4vL1xuLy8gQHBhcmFtICRic1xuLy8gICBbIGNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCBdXG5cbkBtaXhpbiBib3gtc2l6aW5nKCRicykge1xuICAkYnM6IHVucXVvdGUoJGJzKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1zaXppbmcsICRicywgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gZGlzcGxheTpib3g7IG11c3QgYmUgdXNlZCBmb3IgYW55IG9mIHRoZSBvdGhlciBmbGV4Ym94IG1peGlucyB0byB3b3JrIHByb3Blcmx5XG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgYm94LCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERlZmF1bHQgYm94IG9yaWVudGF0aW9uLCBhc3N1bWluZyB0aGF0IHRoZSB1c2VyIHdhbnRzIHNvbWV0aGluZyBsZXNzIGJsb2NrLWxpa2VcbiRkZWZhdWx0LWJveC1vcmllbnQ6IGhvcml6b250YWwgIWRlZmF1bHQ7XG5cbi8vIEJveCBvcmllbnRhdGlvbiBbIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQgXVxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudGF0aW9uOiAkZGVmYXVsdC1ib3gtb3JpZW50KSB7XG4gICRvcmllbnRhdGlvbjogdW5xdW90ZSgkb3JpZW50YXRpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LW9yaWVudCwgJG9yaWVudGF0aW9uLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERlZmF1bHQgYm94LWFsaWduXG4kZGVmYXVsdC1ib3gtYWxpZ246IHN0cmV0Y2ggIWRlZmF1bHQ7XG5cbi8vIEJveCBhbGlnbiBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoIF1cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWdubWVudDogJGRlZmF1bHQtYm94LWFsaWduKSB7XG4gICRhbGlnbm1lbnQ6IHVucXVvdGUoJGFsaWdubWVudCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtYWxpZ24sICRhbGlnbm1lbnQsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGVmYXVsdCBib3ggZmxleFxuJGRlZmF1bHQtYm94LWZsZXg6IDAgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3IgYm94IGZsZXguIEFwcGx5IHRoaXMgdG8gdGhlIGNoaWxkcmVuIGluc2lkZSB0aGUgYm94LlxuLy9cbi8vIEZvciBleGFtcGxlOiBcImRpdi5kaXNwbGF5LWJveCA+IGRpdi5jaGlsZC1ib3hcIiB3b3VsZCBnZXQgdGhlIGJveCBmbGV4IG1peGluLlxuQG1peGluIGJveC1mbGV4KCRmbGV4OiAkZGVmYXVsdC1ib3gtZmxleCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWZsZXgsICRmbGV4LCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERlZmF1bHQgZmxleCBncm91cFxuJGRlZmF1bHQtYm94LWZsZXgtZ3JvdXA6IDEgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3IgZmxleGlibGUgZ3JvdXBpbmdcbkBtaXhpbiBib3gtZmxleC1ncm91cCgkZ3JvdXA6ICRkZWZhdWx0LWJveC1mbGV4LWdyb3VwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZmxleC1ncm91cCwgJGdyb3VwLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIGRlZmF1bHQgZm9yIG9yZGluYWwgZ3JvdXBcbiRkZWZhdWx0LWJveC1vcmRpbmFsLWdyb3VwOiAxICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIG9yZGluYWwgZ3JvdXBpbmcgYW5kIHJlYXJyYW5naW5nIHRoZSBvcmRlclxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRncm91cDogJGRlZmF1bHQtb3JkaW5hbC1mbGV4LWdyb3VwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtb3JkaW5hbC1ncm91cCwgJGdyb3VwLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIEJveCBkaXJlY3Rpb24gZGVmYXVsdCB2YWx1ZVxuJGRlZmF1bHQtYm94LWRpcmVjdGlvbjogbm9ybWFsICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94LWRpcmVjdGlvbiBbIG5vcm1hbCB8IHJldmVyc2UgfCBpbmhlcml0IF1cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246ICRkZWZhdWx0LWJveC1kaXJlY3Rpb24pIHtcbiAgJGRpcmVjdGlvbjogdW5xdW90ZSgkZGlyZWN0aW9uKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gZGVmYXVsdCBmb3IgYm94IGxpbmVzXG4kZGVmYXVsdC1ib3gtbGluZXM6IHNpbmdsZSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveCBsaW5lcyBbIHNpbmdsZSB8IG11bHRpcGxlIF1cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiAkZGVmYXVsdC1ib3gtbGluZXMpIHtcbiAgJGxpbmVzOiB1bnF1b3RlKCRsaW5lcyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtbGluZXMsICRsaW5lcywgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBkZWZhdWx0IGZvciBib3ggcGFja1xuJGRlZmF1bHQtYm94LXBhY2s6IHN0YXJ0ICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94IHBhY2sgWyBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkgXVxuQG1peGluIGJveC1wYWNrKCRwYWNrOiAkZGVmYXVsdC1ib3gtcGFjaykge1xuICAkcGFjazogdW5xdW90ZSgkcGFjayk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtcGFjaywgJHBhY2ssIC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcbkBpbXBvcnQgXCIuLi91dGlsaXRpZXMvZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcIi4uL2Z1bmN0aW9uc1wiO1xuXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTI6IGZhbHNlLCAkYmFja2dyb3VuZC0zOiBmYWxzZSwgJGJhY2tncm91bmQtNDogZmFsc2UsICRiYWNrZ3JvdW5kLTU6IGZhbHNlLCAkYmFja2dyb3VuZC02OiBmYWxzZSwgJGJhY2tncm91bmQtNzogZmFsc2UsICRiYWNrZ3JvdW5kLTg6IGZhbHNlLCAkYmFja2dyb3VuZC05OiBmYWxzZSwgJGJhY2tncm91bmQtMTA6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgJGJhY2tncm91bmRzKSBvciAkbXVsdC1iZ3M7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXN2ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLW93ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGJhY2tncm91bmRzKSB7XG4gICAgYmFja2dyb3VuZDogLXdlYmtpdCgkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICRiYWNrZ3JvdW5kcykge1xuICAgIGJhY2tncm91bmQ6IC1vKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgLXBpZS1iYWNrZ3JvdW5kOiAtcGllKCRiYWNrZ3JvdW5kcyk7IH1cbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmRzOyB9XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXdpdGgtY3NzMi1mYWxsYmFjaygkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yOiBmYWxzZSwgJGJhY2tncm91bmQtMzogZmFsc2UsICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLCAkYmFja2dyb3VuZC01OiBmYWxzZSwgJGJhY2tncm91bmQtNjogZmFsc2UsICRiYWNrZ3JvdW5kLTc6IGZhbHNlLCAkYmFja2dyb3VuZC04OiBmYWxzZSwgJGJhY2tncm91bmQtOTogZmFsc2UsICRiYWNrZ3JvdW5kLTEwOiBmYWxzZSkge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSwgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90IGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkge1xuICAgIGJhY2tncm91bmQ6ICRzaW1wbGUtYmFja2dyb3VuZDsgfVxuICBAaW5jbHVkZSBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTsgfVxuXG4vLyBCYWNrZ3JvdW5kIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS0xLCAkaW1hZ2UtMjogZmFsc2UsICRpbWFnZS0zOiBmYWxzZSwgJGltYWdlLTQ6IGZhbHNlLCAkaW1hZ2UtNTogZmFsc2UsICRpbWFnZS02OiBmYWxzZSwgJGltYWdlLTc6IGZhbHNlLCAkaW1hZ2UtODogZmFsc2UsICRpbWFnZS05OiBmYWxzZSwgJGltYWdlLTEwOiBmYWxzZSkge1xuICAkaW1hZ2VzOiBjb21wYWN0KCRpbWFnZS0xLCAkaW1hZ2UtMiwgJGltYWdlLTMsICRpbWFnZS00LCAkaW1hZ2UtNSwgJGltYWdlLTYsICRpbWFnZS03LCAkaW1hZ2UtOCwgJGltYWdlLTksICRpbWFnZS0xMCk7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtc3ZnKCRpbWFnZXMpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICRpbWFnZXMpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtb3dnKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJGltYWdlcykge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2VzKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllIGFuZCAkYWRkLXBpZS1iZyB7XG4gICAgQHdhcm4gXCJQSUUgZG9lcyBub3Qgc3VwcG9ydCBiYWNrZ3JvdW5kLWltYWdlLiBVc2UgQGluY2x1ZGUgYmFja2dyb3VuZCgjeyRpbWFnZXN9KSBpbnN0ZWFkLlwiOyB9XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZXM7IH1cblxuLy8gRW1pdCBhIElFLVNwZWNpZmljIGZpbHRlcnMgdGhhdCByZW5kZXJzIGEgc2ltcGxlIGxpbmVhciBncmFkaWVudC5cbi8vIEZvciB1c2UgaW4gSUUgNiAtIDguIEJlc3QgcHJhY3RpY2Ugd291bGQgaGF2ZSB5b3UgYXBwbHkgdGhpcyB2aWEgYVxuLy8gY29uZGl0aW9uYWwgSUUgc3R5bGVzaGVldCwgYnV0IGlmIHlvdSBtdXN0LCB5b3Ugc2hvdWxkIHBsYWNlIHRoaXMgYmVmb3JlXG4vLyBhbnkgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGhhdmUgc3BlY2lmaWVkLlxuLy9cbi8vIEZvciB0aGUgYCRvcmllbnRhdGlvbmAgcGFyYW1ldGVyLCB5b3UgY2FuIHBhc3MgYHZlcnRpY2FsYCBvciBgaG9yaXpvbnRhbGAuXG5AbWl4aW4gZmlsdGVyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJGVuZC1jb2xvciwgJG9yaWVudGF0aW9uOiB2ZXJ0aWNhbCkge1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xuICAkZ3JhZGllbnQtdHlwZTogaWYoJG9yaWVudGF0aW9uID09IHZlcnRpY2FsLCAwLCAxKTtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChncmFkaWVudFR5cGU9I3skZ3JhZGllbnQtdHlwZX0sIHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9Jyk7IH0gfVxuXG4vLyBCb3JkZXIgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuXG5AbWl4aW4gYm9yZGVyLWltYWdlKCR2YWx1ZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LWJvcmRlci1pbWFnZTogLW1veihyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogLXdlYmtpdChyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLWJvcmRlci1pbWFnZTogLW8ocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyB7XG4gICAgYm9yZGVyLWltYWdlOiAtc3ZnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBib3JkZXItaW1hZ2U6ICR2YWx1ZTsgfVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIGFuZCBwcmVmaXhlZCgtbW96LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtb3dnKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgYW5kIHByZWZpeGVkKC1vLCAkaW1hZ2UpIHtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiAtbygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyBhbmQgcHJlZml4ZWQoLXN2ZywgJGltYWdlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXN2ZygkaW1hZ2UpOyB9XG4gIGxpc3Qtc3R5bGUtaW1hZ2U6ICRpbWFnZTsgfVxuXG4vLyBMaXN0IHN0eWxlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlKCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgcHJlZml4ZWQoLW1veiwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIGFuZCBwcmVmaXhlZCgtbywgJHZhbHVlKSB7XG4gICAgbGlzdC1zdHlsZS1pbWFnZTogLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgYW5kIHByZWZpeGVkKC1zdmcsICR2YWx1ZSkge1xuICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IC1zdmcoJHZhbHVlKTsgfVxuICBsaXN0LXN0eWxlLWltYWdlOiAkdmFsdWU7IH1cblxuLy8gY29udGVudCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gY29udGVudCgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kIHByZWZpeGVkKC1tb3osICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSBhbmQgcHJlZml4ZWQoLW8sICR2YWx1ZSkge1xuICAgIGNvbnRlbnQ6IC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnIGFuZCBwcmVmaXhlZCgtc3ZnLCAkdmFsdWUpIHtcbiAgICBjb250ZW50OiAtc3ZnKCR2YWx1ZSk7IH1cbiAgY29udGVudDogJHZhbHVlOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207IH1cbiAgICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jazsgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTsgfSB9IH1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7IH0gfVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7IH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpOyB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpOyB9XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjogbnVsbCwgJGl0ZW0zOiBudWxsLCAkaXRlbTQ6IG51bGwsICRpdGVtNTogbnVsbCwgJGl0ZW02OiBudWxsLCAkaXRlbTc6IG51bGwsICRpdGVtODogbnVsbCwgJGl0ZW05OiBudWxsKSB7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSBcImxpc3RcIiB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xOyB9XG4gIEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05OyB9XG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTsgfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7IH1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpOyB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTsgfVxuICBAcmV0dXJuICRmdWxsOyB9XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjogbnVsbCwgJHJlamVjdDM6IG51bGwsICRyZWplY3Q0OiBudWxsLCAkcmVqZWN0NTogbnVsbCwgJHJlamVjdDY6IG51bGwsICRyZWplY3Q3OiBudWxsLCAkcmVqZWN0ODogbnVsbCwgJHJlamVjdDk6IG51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07IH0gfSB9XG4gIEByZXR1cm4gJGZ1bGw7IH1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTsgfVxuXG4vL0BpZiBub3QgZnVuY3Rpb24tZXhpc3RzKGNvbXBhY3QpXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkbGlzdDogKCk7XG4gIEBlYWNoICR2YXIgaW4gJHZhcnMge1xuICAgIEBpZiAkdmFyIHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsIGNvbW1hKTsgfSB9XG4gIEByZXR1cm4gJGxpc3Q7IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vL1xuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBcInN0cmluZ1wiIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgXCJ1cmxcIikgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCBcInJnYlwiKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sIFwiI1wiKSAhPSAxOyB9XG4gICAgQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gXCJjb2xvclwiIHt9XG4gICAgQGVsc2UgaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7IH0gfVxuICBAcmV0dXJuICRwcmVmaXhlZDsgfVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gXCJsaXN0XCIge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTsgfVxuICBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5OyB9XG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTsgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTsgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtOyB9IH0gfVxuICBAcmV0dXJuICRwcm9wczsgfVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXN2Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW93Z1wiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLXdlYmtpdFwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOiBudWxsLCAkcHJvcGVydHkzOiBudWxsLCAkcHJvcGVydHk0OiBudWxsLCAkcHJvcGVydHk1OiBudWxsLCAkcHJvcGVydHk2OiBudWxsLCAkcHJvcGVydHk3OiBudWxsLCAkcHJvcGVydHk4OiBudWxsLCAkcHJvcGVydHk5OiBudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KFwiLW1velwiLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTsgfVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjogbnVsbCwgJHByb3BlcnR5MzogbnVsbCwgJHByb3BlcnR5NDogbnVsbCwgJHByb3BlcnR5NTogbnVsbCwgJHByb3BlcnR5NjogbnVsbCwgJHByb3BlcnR5NzogbnVsbCwgJHByb3BlcnR5ODogbnVsbCwgJHByb3BlcnR5OTogbnVsbCkge1xuICBAcmV0dXJuIHByZWZpeChcIi1vXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6IG51bGwsICRwcm9wZXJ0eTM6IG51bGwsICRwcm9wZXJ0eTQ6IG51bGwsICRwcm9wZXJ0eTU6IG51bGwsICRwcm9wZXJ0eTY6IG51bGwsICRwcm9wZXJ0eTc6IG51bGwsICRwcm9wZXJ0eTg6IG51bGwsICRwcm9wZXJ0eTk6IG51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoXCItcGllXCIsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpOyB9XG4iLAoJCSIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy9cblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOiBudWxsLCAkaXRlbTM6IG51bGwsICRpdGVtNDogbnVsbCwgJGl0ZW01OiBudWxsLCAkaXRlbTY6IG51bGwsICRpdGVtNzogbnVsbCwgJGl0ZW04OiBudWxsLCAkaXRlbTk6IG51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtOyB9IH1cbiAgQHJldHVybiAkZnVsbDsgfVxuIiwKCQkiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICBAaWYgJGZyb20gPT0gdG9wIHtcbiAgICBAcmV0dXJuIGJvdHRvbTsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBib3R0b20ge1xuICAgIEByZXR1cm4gdG9wOyB9XG4gIEBlbHNlIGlmICRmcm9tID09IGxlZnQge1xuICAgIEByZXR1cm4gcmlnaHQ7IH1cbiAgQGVsc2UgaWYgJGZyb20gPT0gcmlnaHQge1xuICAgIEByZXR1cm4gbGVmdDsgfVxuICBAZWxzZSBpZiAkZnJvbSA9PSBjZW50ZXIge1xuICAgIEByZXR1cm4gY2VudGVyOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vL1xuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSkge1xuICBAaWYgJHR5cGUgPT0gYmxvY2sge1xuICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGlubGluZSB7XG4gICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBpbmxpbmUtYmxvY2sge1xuICAgIEByZXR1cm4gaW1nOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlIHtcbiAgICBAcmV0dXJuIHRhYmxlOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGxpc3QtaXRlbSB7XG4gICAgQHJldHVybiBsaTsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXAge1xuICAgIEByZXR1cm4gdGJvZHk7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwIHtcbiAgICBAcmV0dXJuIHRoZWFkOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCB7XG4gICAgQHJldHVybiB0Zm9vdDsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSB0YWJsZS1yb3cge1xuICAgIEByZXR1cm4gdHI7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gdGFibGUtY2VsbCB7XG4gICAgQHJldHVybiB0aCwgdGQ7IH1cbiAgQGVsc2UgaWYgJHR5cGUgPT0gaHRtbDUtYmxvY2sge1xuICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5OyB9XG4gIEBlbHNlIGlmICR0eXBlID09IGh0bWw1LWlubGluZSB7XG4gICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjsgfVxuICBAZWxzZSBpZiAkdHlwZSA9PSBodG1sNSB7XG4gICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyOyB9XG4gIEBlbHNlIGlmICR0eXBlID09IHRleHQtaW5wdXQge1xuICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhOyB9IH1cbiIsCgkJIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTsgfVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7IH1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7IH1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTsgfVxuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgcGFkZGluZy1ib3hgIC0tIHRoZSBib3ggbW9kZWwgdXNlZCBieSBtb2Rlcm4gYnJvd3NlcnMuXG4vL1xuLy8gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29uc3RhbnQgd2l0aCBgYm9yZGVyLWJveGBcbi8vXG4vLyBUbyBvdmVycmlkZSB0byB0aGUgZGVmYXVsdCBib3JkZXItYm94IG1vZGVsLCB1c2UgdGhpcyBjb2RlOlxuLy8gICAgICRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveFxuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94ICFkZWZhdWx0O1xuXG4vLyBDbGlwIHRoZSBiYWNrZ3JvdW5kIChpbWFnZSBhbmQgY29sb3IpIGF0IHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nIG9yIGJvcmRlci5cbi8vXG4vLyBMZWdhbCBWYWx1ZXM6XG4vL1xuLy8gICAqIHBhZGRpbmctYm94XG4vLyAgICogYm9yZGVyLWJveFxuLy8gICAqIHRleHRcblxuQG1peGluIGJhY2tncm91bmQtY2xpcCgkY2xpcDogJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwKSB7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmddXG4gICRjbGlwOiB1bnF1b3RlKCRjbGlwKTtcbiAgJGRlcHJlY2F0ZWQ6ICRjbGlwO1xuICBAaWYgJGNsaXAgPT0gcGFkZGluZy1ib3gge1xuICAgICRkZXByZWNhdGVkOiBwYWRkaW5nOyB9XG4gIEBpZiAkY2xpcCA9PSBib3JkZXItYm94IHtcbiAgICAkZGVwcmVjYXRlZDogYm9yZGVyOyB9XG4gIC8vIFN1cHBvcnQgZm9yIHdlYmtpdCBhbmQgbW96aWxsYSdzIHVzZSBvZiB0aGUgZGVwcmVjYXRlZCBzaG9ydCBmb3JtXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRkZXByZWNhdGVkLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRjbGlwLCBub3QgLW1veiwgbm90IC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIi8vIE92ZXJyaWRlIGAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveCAhZGVmYXVsdDtcblxuLy8gUG9zaXRpb24gdGhlIGJhY2tncm91bmQgb2ZmIHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nLCBib3JkZXIgb3IgY29udGVudFxuLy9cbi8vICogUG9zc2libGUgdmFsdWVzOlxuLy8gICAqIGBwYWRkaW5nLWJveGBcbi8vICAgKiBgYm9yZGVyLWJveGBcbi8vICAgKiBgY29udGVudC1ib3hgXG4vLyAqIGJyb3dzZXIgZGVmYXVsdHMgdG8gYHBhZGRpbmctYm94YFxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0byBgY29udGVudC1ib3hgXG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbikge1xuICAkb3JpZ2luOiB1bnF1b3RlKCRvcmlnaW4pO1xuICAvLyB3ZWJraXQgYW5kIG1vemlsbGEgdXNlIHRoZSBkZXByZWNhdGVkIHNob3J0IFtib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudF1cbiAgJGRlcHJlY2F0ZWQ6ICRvcmlnaW47XG4gIEBpZiAkb3JpZ2luID09IHBhZGRpbmctYm94IHtcbiAgICAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJG9yaWdpbiA9PSBib3JkZXItYm94IHtcbiAgICAkZGVwcmVjYXRlZDogYm9yZGVyOyB9XG4gIEBpZiAkb3JpZ2luID09IGNvbnRlbnQtYm94IHtcbiAgICAkZGVwcmVjYXRlZDogY29udGVudDsgfVxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRkZXByZWNhdGVkLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLW9yaWdpbiwgJG9yaWdpbiwgbm90IC1tb3osIG5vdCAtd2Via2l0LCAtbywgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLCAkc2l6ZS0yOiBmYWxzZSwgJHNpemUtMzogZmFsc2UsICRzaXplLTQ6IGZhbHNlLCAkc2l6ZS01OiBmYWxzZSwgJHNpemUtNjogZmFsc2UsICRzaXplLTc6IGZhbHNlLCAkc2l6ZS04OiBmYWxzZSwgJHNpemUtOTogZmFsc2UsICRzaXplLTEwOiBmYWxzZSkge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENyb3NzLWJyb3dzZXIgc3VwcG9ydCBmb3IgQGZvbnQtZmFjZS4gU3VwcG9ydHMgSUUsIEdlY2tvLCBXZWJraXQsIE9wZXJhLlxuLy9cbi8vICogJG5hbWUgaXMgcmVxdWlyZWQsIGFyYml0cmFyeSwgYW5kIHdoYXQgeW91IHdpbGwgdXNlIGluIGZvbnQgc3RhY2tzLlxuLy8gKiAkZm9udC1maWxlcyBpcyByZXF1aXJlZCB1c2luZyBmb250LWZpbGVzKCdyZWxhdGl2ZS9sb2NhdGlvbicsICdmb3JtYXQnKS5cbi8vICAgZm9yIGJlc3QgcmVzdWx0cyB1c2UgdGhpcyBvcmRlcjogd29mZiwgb3BlbnR5cGUvdHJ1ZXR5cGUsIHN2Z1xuLy8gKiAkZW90IGlzIHJlcXVpcmVkIGJ5IElFLCBhbmQgaXMgYSByZWxhdGl2ZSBsb2NhdGlvbiBvZiB0aGUgZW90IGZpbGUuXG4vLyAqICR3ZWlnaHQgc2hvd3MgaWYgdGhlIGZvbnQgaXMgYm9sZCwgZGVmYXVsdHMgdG8gbm9ybWFsXG4vLyAqICRzdHlsZSBkZWZhdWx0cyB0byBub3JtYWwsIG1pZ2h0IGJlIGFsc28gaXRhbGljXG4vLyAqIEZvciBhbmRyb2lkIDIuMiBDb21wYXRpYmxpdHksIHBsZWFzZSBlbnN1cmUgdGhhdCB5b3VyIHdlYiBwYWdlIGhhc1xuLy8gICBhIG1ldGEgdmlld3BvcnQgdGFnLlxuLy8gKiBUbyBzdXBwb3J0IGlPUyA8IDQuMiwgYW4gU1ZHIGZpbGUgbXVzdCBiZSBwcm92aWRlZFxuLy9cbi8vIElmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIG90aGVyIGZvcm1hdHMgY2hlY2sgb3V0IHRoZSBGb250IFNxdWlycmVsXG4vLyBbZm9udCBnZW5lcmF0b3JdKGh0dHA6Ly93d3cuZm9udHNxdWlycmVsLmNvbS9mb250ZmFjZS9nZW5lcmF0b3IpXG4vL1xuXG4vLyBJbiBvcmRlciB0byByZWZlciB0byBhIHNwZWNpZmljIHN0eWxlIG9mIHRoZSBmb250IGluIHlvdXIgc3R5bGVzaGVldHMgYXNcbi8vIGUuZy4gXCJmb250LXN0eWxlOiBpdGFsaWM7XCIsICB5b3UgbWF5IGFkZCBhIGNvdXBsZSBvZiBAZm9udC1mYWNlIGluY2x1ZGVzXG4vLyBjb250YWluaW5nIHRoZSByZXNwZWN0aXZlIGZvbnQgZmlsZXMgZm9yIGVhY2ggc3R5bGUgYW5kIHNwZWN5aW5nXG4vLyByZXNwZWN0aXZlIHRoZSAkc3R5bGUgcGFyYW1ldGVyLlxuXG4vLyBPcmRlciBvZiB0aGUgaW5jbHVkZXMgbWF0dGVycywgYW5kIGl0IGlzOiBub3JtYWwsIGJvbGQsIGl0YWxpYywgYm9sZCtpdGFsaWMuXG5cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmb250LWZpbGVzLCAkZW90OiBmYWxzZSwgJHdlaWdodDogZmFsc2UsICRzdHlsZTogZmFsc2UpIHtcbiAgJGllZm9udDogdW5xdW90ZShcIiN7JGVvdH0/I2llZml4XCIpO1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogcXVvdGUoJG5hbWUpO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogZm9udC11cmwoJGVvdCk7XG4gICAgICAkZm9udC1maWxlczogZm9udC11cmwoJGllZm9udCkgdW5xdW90ZShcImZvcm1hdCgnZW90JylcIiksICRmb250LWZpbGVzOyB9XG4gICAgc3JjOiAkZm9udC1maWxlcztcbiAgICBAaWYgJHdlaWdodCB7XG4gICAgICBmb250LXdlaWdodDogJHdlaWdodDsgfVxuICAgIEBpZiAkc3R5bGUge1xuICAgICAgZm9udC1zdHlsZTogJHN0eWxlOyB9IH0gfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBAZG9jIG9mZlxuLy8gTm90ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTYWZhcmksIENocm9tZSwgYW5kIEZpcmVmb3ggYWxsIHN1cHBvcnQgM0QgdHJhbnNmb3Jtcy4gSG93ZXZlcixcbi8vIG9ubHkgaW4gdGhlIG1vc3QgcmVjZW50IGJ1aWxkcy4gWW91IHNob3VsZCBhbHNvIHByb3ZpZGUgZmFsbGJhY2sgMmQgc3VwcG9ydCBmb3Jcbi8vIE9wZXJhIGFuZCBJRS4gSUUxMCBpcyBzbGF0ZWQgdG8gaGF2ZSAzZCBlbmFibGVkLCBidXQgaXMgY3VycmVudGx5IHVucmVsZWFzZWQuXG4vLyBUbyBtYWtlIHRoYXQgZWFzeSwgYWxsIDJEIHRyYW5zZm9ybXMgaW5jbHVkZSBhbiBicm93c2VyLXRhcmdldGluZyB0b2dnbGUgKCRvbmx5M2QpXG4vLyB0byBzd2l0Y2ggYmV0d2VlbiB0aGUgdHdvIHN1cHBvcnQgbGlzdHMuIFRoZSB0b2dnbGUgZGVmYXVsdHMgdG8gJ2ZhbHNlJyAoMkQpLFxuLy8gYW5kIGFsc28gYWNjZXB0cyAndHJ1ZScgKDNEKS4gQ3VycmVudGx5IHRoZSBsaXN0cyBhcmUgYXMgZm9sbG93czpcbi8vIDJEOiBNb3ppbGxhLCBXZWJraXQsIE9wZXJhLCBPZmZpY2lhbFxuLy8gM0Q6IFdlYmtpdCwgRmlyZWZveC5cblxuLy8gQXZhaWxhYmxlIFRyYW5zZm9ybXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFNjYWxlICgyZCBhbmQgM2QpXG4vLyAtIFJvdGF0ZSAoMmQgYW5kIDNkKVxuLy8gLSBUcmFuc2xhdGUgKDJkIGFuZCAzZClcbi8vIC0gU2tldyAoMmQgb25seSlcblxuLy8gVHJhbnNmb3JtIFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFRyYW5zZm9ybSBPcmlnaW4gKDJkIGFuZCAzZClcbi8vIC0gUGVyc3BlY3RpdmUgKDNkKVxuLy8gLSBQZXJzcGVjdGl2ZSBPcmlnaW4gKDNkKVxuLy8gLSBUcmFuc2Zvcm0gU3R5bGUgKDNkKVxuLy8gLSBCYWNrZmFjZSBWaXNpYmlsaXR5ICgzZClcblxuLy8gTWl4aW5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB0cmFuc2Zvcm0tb3JpZ2luXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2Zvcm0tb3JpZ2luMmQsIHRyYW5zZm9ybS1vcmlnaW4zZFxuLy8gIC0gaGVscGVyczogICAgYXBwbHktb3JpZ2luXG4vLyB0cmFuc2Zvcm1cbi8vICAtIHNob3J0Y3V0czogIHRyYW5zZm9ybTJkLCB0cmFuc2Zvcm0zZFxuLy8gIC0gaGVscGVyczogICAgc2ltcGxlLXRyYW5zZm9ybSwgY3JlYXRlLXRyYW5zZm9ybVxuLy8gcGVyc3BlY3RpdmVcbi8vICAtIGhlbHBlcnM6ICAgIHBlcnNwZWN0aXZlLW9yaWdpblxuLy8gdHJhbnNmb3JtLXN0eWxlXG4vLyBiYWNrZmFjZS12aXNpYmlsaXR5XG4vLyBzY2FsZVxuLy8gIC0gc2hvcnRjdXRzOiAgc2NhbGVYLCBzY2FsZVksIHNjYWxlWiwgc2NhbGUzZFxuLy8gcm90YXRlXG4vLyAgLSBzaG9ydGN1dHM6ICByb3RhdGVYLCByb3RhdGVZLCByb3RhdGUzZFxuLy8gdHJhbnNsYXRlXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZLCB0cmFuc2xhdGVaLCB0cmFuc2xhdGUzZFxuLy8gc2tld1xuLy8gIC0gc2hvcnRjdXRzOiAgc2tld1gsIHNrZXdZXG5cbi8vIERlZmF1bHRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBUaGUgZGVmYXVsdCB4LW9yaWdpbiBmb3IgdHJhbnNmb3Jtc1xuJGRlZmF1bHQtb3JpZ2luLXg6IDUwJSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeS1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi15OiA1MCUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHotb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4tejogNTAlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB4LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXg6IDEuMjUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHktbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteTogJGRlZmF1bHQtc2NhbGUteCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgei1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS16OiAkZGVmYXVsdC1zY2FsZS14ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBhbmdsZSBmb3Igcm90YXRpb25zXG4kZGVmYXVsdC1yb3RhdGU6IDQ1ZGVnICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB4LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteDogMSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeS12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXk6IDEgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHotdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci16OiAxICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB4LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteDogMWVtICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB5LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHotbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS16OiAkZGVmYXVsdC10cmFuc2xhdGUteCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgeC1hbmdsZSBmb3Igc2tld2luZ1xuJGRlZmF1bHQtc2tldy14OiA1ZGVnICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB5LWFuZ2xlIGZvciBza2V3aW5nXG4kZGVmYXVsdC1za2V3LXk6IDVkZWcgIWRlZmF1bHQ7XG5cbi8vICoqVHJhbnNmb3JtLW9yaWdpbioqXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmdcbi8vXG4vLyAgICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCBvcmlnaW4gWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAnb3JpZ2luJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IGNvbnRhaW5pbmcgMS0zICh4L3kveikgY29vcmRpbmF0ZXNcbi8vIGluIHBlcmNlbnRhZ2VzLCBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIG9yIHJlbGF0aXZlXG4vLyAobGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBjZW50ZXIpIHVuaXRzXG4vL1xuLy8gQHBhcmFtIG9ubHkzZCBTZXQgdGhpcyB0byB0cnVlIHRvIG9ubHkgYXBwbHkgdGhpc1xuLy8gbWl4aW4gd2hlcmUgYnJvd3NlcnMgaGF2ZSAzRCBzdXBwb3J0LlxuQG1peGluIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKSB7XG4gICRvbmx5M2Q6ICRvbmx5M2Qgb3IgLWNvbXBhc3MtbGlzdC1zaXplKC1jb21wYXNzLWxpc3QoJG9yaWdpbikpID4gMjtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH0gfVxuXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgaW5kaXZpZHVhbCBhcmd1bWVudHM6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oIFsgb3JpZ2luLXgsIG9yaWdpbi15LCBvcmlnaW4teiwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgMyAnb3JpZ2luLScgYXJndW1lbnRzIHJlcHJlc2VudCB4L3kveiBjb29yZGluYXRlcy5cbi8vXG4vLyAqKk5PVEU6Kiogc2V0dGluZyB6IGNvb3JkaW5hdGVzIHRyaWdnZXJzIDNEIHN1cHBvcnQgbGlzdCwgbGVhdmUgZmFsc2UgZm9yIDJEIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRvcmlnaW4teDogJGRlZmF1bHQtb3JpZ2luLXgsICRvcmlnaW4teTogJGRlZmF1bHQtb3JpZ2luLXksICRvcmlnaW4tejogZmFsc2UsICRvbmx5M2Q6IGlmKCRvcmlnaW4teiwgdHJ1ZSwgZmFsc2UpKSB7XG4gICRvcmlnaW46IHVucXVvdGUoXCJcIik7XG4gIEBpZiAkb3JpZ2luLXggb3IgJG9yaWdpbi15IG9yICRvcmlnaW4teiB7XG4gICAgQGlmICRvcmlnaW4teCB7XG4gICAgICAkb3JpZ2luOiAkb3JpZ2luLXg7IH1cbiAgICBAZWxzZSB7XG4gICAgICAkb3JpZ2luOiA1MCU7IH1cbiAgICBAaWYgJG9yaWdpbi15IHtcbiAgICAgICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi15OyB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRvcmlnaW4teiB7XG4gICAgICAgICRvcmlnaW46ICRvcmlnaW4gNTAlOyB9IH1cbiAgICBAaWYgJG9yaWdpbi16IHtcbiAgICAgICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi16OyB9XG4gICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCRvcmlnaW4sICRvbmx5M2QpOyB9IH1cblxuLy8gVHJhbnNmb3JtIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmc6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHRyYW5zZm9ybSggdHJhbnNmb3JtcyBbLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlICd0cmFuc2Zvcm1zJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGFsbCB0aGUgdHJhbnNmb3JtcyB0byBiZSBhcHBsaWVkLlxuQG1peGluIHRyYW5zZm9ybSgkdHJhbnNmb3JtLCAkb25seTNkOiBmYWxzZSkge1xuICBAaWYgJG9ubHkzZCB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybSwgJHRyYW5zZm9ybSwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLCAkdHJhbnNmb3JtLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH0gfVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgYWxsIGJyb3dzZXJzIHdpdGggMkQgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0yZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgZmFsc2UpOyB9XG5cbi8vIFNob3J0Y3V0IHRvIHRhcmdldCBvbmx5IGJyb3dzZXJzIHdpdGggM0QgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0zZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgdHJ1ZSk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIDNEIFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTZXQgdGhlIHBlcnNwZWN0aXZlIG9mIDNEIHRyYW5zZm9ybXMgb24gdGhlIGNoaWxkcmVuIG9mIGFuIGVsZW1lbnQ6XG4vL1xuLy8gICAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSggcGVyc3BlY3RpdmUgKVxuLy9cbi8vIHdoZXJlICdwZXJzcGVjdGl2ZScgaXMgYSB1bml0bGVzcyBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBkZXB0aCBvZiB0aGVcbi8vIHotYXhpcy4gVGhlIGhpZ2hlciB0aGUgcGVyc3BlY3RpdmUsIHRoZSBtb3JlIGV4YWdnZXJhdGVkIHRoZSBmb3Jlc2hvcnRlbmluZy5cbi8vIHZhbHVlcyBmcm9tIDUwMCB0byAxMDAwIGFyZSBtb3JlLW9yLWxlc3MgXCJub3JtYWxcIiAtIGEgZ29vZCBzdGFydGluZy1wb2ludC5cbkBtaXhpbiBwZXJzcGVjdGl2ZSgkcCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwocGVyc3BlY3RpdmUsICRwLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gU2V0IHRoZSBvcmlnaW4gcG9zaXRpb24gZm9yIHRoZSBwZXJzcGVjdGl2ZVxuLy9cbi8vICAgICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUtb3JpZ2luKG9yaWdpbi14IFtvcmlnaW4teV0pXG4vL1xuLy8gd2hlcmUgdGhlIHR3byBhcmd1bWVudHMgcmVwcmVzZW50IHgveSBjb29yZGluYXRlc1xuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkb3JpZ2luOiA1MCUpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHBlcnNwZWN0aXZlLW9yaWdpbiwgJG9yaWdpbiwgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIERldGVybWluZSB3aGV0aGVyIGEgM0Qgb2JqZWN0cyBjaGlsZHJlbiBhbHNvIGxpdmUgaW4gdGhlIGdpdmVuIDNEIHNwYWNlXG4vL1xuLy8gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUoIFsgc3R5bGUgXSApXG4vL1xuLy8gd2hlcmUgYHN0eWxlYCBjYW4gYmUgZWl0aGVyIGBmbGF0YCBvciBgcHJlc2VydmUtM2RgLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byBgZmxhdGAsIG1peGluIGRlZmF1bHRzIHRvIGBwcmVzZXJ2ZS0zZGAuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlKCRzdHlsZTogcHJlc2VydmUtM2QpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLCAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cblxuLy8gRGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgd2hlbiBpdCdzIGJhY2sgaXMgdHVybmVkXG4vL1xuLy8gICAgIEBpbmNsdWRlIGJhY2tmYWNlLXZpc2liaWxpdHkoIFsgdmlzaWJpbGl0eSBdIClcbi8vXG4vLyB3aGVyZSBgdmlzaWJpbGl0eWAgY2FuIGJlIGVpdGhlciBgdmlzaWJsZWAgb3IgYGhpZGRlbmAuXG4vLyBCcm93c2VycyBkZWZhdWx0IHRvIHZpc2libGUsIG1peGluIGRlZmF1bHRzIHRvIGhpZGRlblxuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHk6IGhpZGRlbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNmb3JtIFBhcnRpYWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGVzZSB3b3JrIHdlbGwgb24gdGhlaXIgb3duLCBidXQgdGhleSBkb24ndCBhZGQgdG8gZWFjaCBvdGhlciwgdGhleSBvdmVycmlkZS5cbi8vIFVzZSBhbG9uZyB3aXRoIHRyYW5zZm9ybSBwYXJhbWV0ZXIgbWl4aW5zIHRvIGFkanVzdCBvcmlnaW4sIHBlcnNwZWN0aXZlIGFuZCBzdHlsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjYWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYW5kIHkgYXhpczpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHNjYWxlKCBbIHNjYWxlLXgsIHNjYWxlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2NhbGUtJyBhcmd1bWVudHMgYXJlIHVuaXRsZXNzIG11bHRpcGxpZXJzIG9mIHRoZSB4IGFuZCB5IGRpbWVuc2lvbnNcbi8vIGFuZCBwZXJzcGVjdGl2ZSwgd2hpY2ggd29ya3MgdGhlIHNhbWUgYXMgdGhlIHN0YW5kLWFsb25lIHBlcnNwZWN0aXZlIHByb3BlcnR5L21peGluXG4vLyBidXQgYXBwbGllcyB0byB0aGUgaW5kaXZpZHVhbCBlbGVtZW50IChtdWx0aXBsaWVkIHdpdGggYW55IHBhcmVudCBwZXJzcGVjdGl2ZSlcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUoJHNjYWxlLXg6ICRkZWZhdWx0LXNjYWxlLXgsICRzY2FsZS15OiAkc2NhbGUteCwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZSgkc2NhbGUteCwgJHNjYWxlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVgoIFsgc2NhbGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWCgkc2NhbGU6ICRkZWZhdWx0LXNjYWxlLXgsICRwZXJzcGVjdGl2ZTogZmFsc2UsICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2NhbGVYKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWSggWyBzY2FsZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVZKCRzY2FsZTogJGRlZmF1bHQtc2NhbGUteSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZVkoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHogYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGVaKCBbIHNjYWxlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZVooJHNjYWxlOiAkZGVmYXVsdC1zY2FsZS16LCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogc2NhbGVaKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBTY2FsZSBhbmQgb2JqZWN0IGFsb25nIGFsbCB0aHJlZSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZTNkKCBbIHNjYWxlLXgsIHNjYWxlLXksIHNjYWxlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZTNkKCRzY2FsZS14OiAkZGVmYXVsdC1zY2FsZS14LCAkc2NhbGUteTogJGRlZmF1bHQtc2NhbGUteSwgJHNjYWxlLXo6ICRkZWZhdWx0LXNjYWxlLXosICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiBzY2FsZTNkKCRzY2FsZS14LCAkc2NhbGUteSwgJHNjYWxlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIFJvdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeiBheGlzICAoMkQpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgJ3JvdGF0aW9uJyBpcyBhbiBhbmdsZSBzZXQgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHNcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlKCRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiByb3RhdGUoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gQSBsb25nY3V0IGZvciAncm90YXRlJyBpbiBjYXNlIHlvdSBmb3JnZXQgdGhhdCAneicgaXMgaW1wbGllZFxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVaKCRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcm90YXRlKCRyb3RhdGUsICRwZXJzcGVjdGl2ZSwgJG9ubHkzZCk7IH1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHggYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGVYKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWCgkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiByb3RhdGVYKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVZKCRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHJvdGF0ZVkoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCBhbiBhcmJpdHJhcnkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgdmVjdG9yLXgsIHZlY3Rvci15LCB2ZWN0b3Iteiwgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy8gd2hlcmUgdGhlICd2ZWN0b3ItJyBhcmd1bWVudHMgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMuXG4vLyBUaGVzZSBudW1iZXJzIGFyZSBub3QgaW1wb3J0YW50IG9uIHRoZWlyIG93biwgYnV0IGluIHJlbGF0aW9uIHRvIG9uZSBhbm90aGVyXG4vLyBjcmVhdGluZyBhbiBheGlzIGZyb20geW91ciB0cmFuc2Zvcm0tb3JpZ2luLCBhbG9uZyB0aGUgYXhpcyBvZiBYeCA9IFl5ID0gWnouXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZTNkKCR2ZWN0b3IteDogJGRlZmF1bHQtdmVjdG9yLXgsICR2ZWN0b3IteTogJGRlZmF1bHQtdmVjdG9yLXksICR2ZWN0b3ItejogJGRlZmF1bHQtdmVjdG9yLXosICRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSwgJHBlcnNwZWN0aXZlOiBmYWxzZSkge1xuICAkdHJhbnM6IHJvdGF0ZTNkKCR2ZWN0b3IteCwgJHZlY3Rvci15LCAkdmVjdG9yLXosICRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7IH1cblxuLy8gQGRvYyBvZmZcbi8vIFRyYW5zbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBvciB5IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCB0cmFuc2xhdGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vLyB3aGVyZSB0aGUgJ3RyYW5zbGF0ZS0nIGFyZ3VtZW50cyBhY2NlcHQgYW55IGRpc3RhbmNlIGluIHBlcmNlbnRhZ2VzIG9yIGFic29sdXRlIChweCwgY20sIGluLCBlbSBldGMuLikgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZSgkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHRyYW5zbGF0ZSgkdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVYKCR0cmFucy14OiAkZGVmYXVsdC10cmFuc2xhdGUteCwgJHBlcnNwZWN0aXZlOiBmYWxzZSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVYKCR0cmFucy14KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTsgfVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeSBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVkoJHRyYW5zLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LCAkcGVyc3BlY3RpdmU6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVkoJHRyYW5zLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHtcbiAgICAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpOyB9XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWigkdHJhbnMtejogJGRlZmF1bHQtdHJhbnNsYXRlLXosICRwZXJzcGVjdGl2ZTogZmFsc2UpIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVaKCR0cmFucy16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7XG4gICAgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpOyB9XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4LCB5IGFuZCB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCB0cmFuc2xhdGUteSwgdHJhbnNsYXRlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGUzZCgkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LCAkdHJhbnNsYXRlLXo6ICRkZWZhdWx0LXRyYW5zbGF0ZS16LCAkcGVyc3BlY3RpdmU6IGZhbHNlKSB7XG4gICR0cmFuczogdHJhbnNsYXRlM2QoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXksICR0cmFuc2xhdGUteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTsgfVxuXG4vLyBAZG9jIG9mZlxuLy8gU2tldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNrZXcgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgJ3NrZXctJyBhcmd1bWVudHMgYWNjZXB0IGNzcyBhbmdsZXMgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXcoJHNrZXcteDogJGRlZmF1bHQtc2tldy14LCAkc2tldy15OiAkZGVmYXVsdC1za2V3LXksICRvbmx5M2Q6IGZhbHNlKSB7XG4gICR0cmFuczogc2tldygkc2tldy14LCAkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2tldyBhbiBlbGVtZW50IGFsb25nIHRoZSB4IGF4aXpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXdYKCRza2V3LXg6ICRkZWZhdWx0LXNrZXcteCwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBza2V3WCgkc2tldy14KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gU2tldyBhbiBlbGVtZW50IGFsb25nIHRoZSB5IGF4aXNcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXksIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXdZKCRza2V3LXk6ICRkZWZhdWx0LXNrZXcteSwgJG9ubHkzZDogZmFsc2UpIHtcbiAgJHRyYW5zOiBza2V3WSgkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7IH1cblxuLy8gRnVsbCB0cmFuc2Zvcm0gbWl4aW5zXG4vLyBGb3Igc2V0dGluZ3MgYW55IGNvbWJpbmF0aW9uIG9mIHRyYW5zZm9ybXMgYXMgYXJndW1lbnRzXG4vLyBUaGVzZSBhcmUgY29tcGxleCBhbmQgbm90IGhpZ2hseSByZWNvbW1lbmRlZCBmb3IgZGFpbHkgdXNlLiBUaGV5IGFyZSBtYWlubHlcbi8vIGhlcmUgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgcHVycG9zZXMuXG4vL1xuLy8gKiB0aGV5IGluY2x1ZGUgb3JpZ2luIGFkanVzdG1lbnRzXG4vLyAqIHNjYWxlIHRha2VzIGEgbXVsdGlwbGllciAodW5pdGxlc3MpLCByb3RhdGUgYW5kIHNrZXcgdGFrZSBkZWdyZWVzIChkZWcpXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIGNyZWF0ZS10cmFuc2Zvcm0oJHBlcnNwZWN0aXZlOiBmYWxzZSwgJHNjYWxlLXg6IGZhbHNlLCAkc2NhbGUteTogZmFsc2UsICRzY2FsZS16OiBmYWxzZSwgJHJvdGF0ZS14OiBmYWxzZSwgJHJvdGF0ZS15OiBmYWxzZSwgJHJvdGF0ZS16OiBmYWxzZSwgJHJvdGF0ZTNkOiBmYWxzZSwgJHRyYW5zLXg6IGZhbHNlLCAkdHJhbnMteTogZmFsc2UsICR0cmFucy16OiBmYWxzZSwgJHNrZXcteDogZmFsc2UsICRza2V3LXk6IGZhbHNlLCAkb3JpZ2luLXg6IGZhbHNlLCAkb3JpZ2luLXk6IGZhbHNlLCAkb3JpZ2luLXo6IGZhbHNlLCAkb25seTNkOiBmYWxzZSkge1xuICAkdHJhbnM6IHVucXVvdGUoXCJcIik7XG4gIC8vIHBlcnNwZWN0aXZlXG4gIEBpZiAkcGVyc3BlY3RpdmUge1xuICAgICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKTsgfVxuICAvLyBzY2FsZVxuICBAaWYgJHNjYWxlLXggYW5kICRzY2FsZS15IHtcbiAgICBAaWYgJHNjYWxlLXoge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTsgfVxuICAgIEBlbHNlIHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNjYWxlKCRzY2FsZS14LCAkc2NhbGUteSk7IH0gfVxuICBAZWxzZSB7XG4gICAgQGlmICRzY2FsZS14IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNjYWxlWCgkc2NhbGUteCk7IH1cbiAgICBAaWYgJHNjYWxlLXkge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2NhbGVZKCRzY2FsZS15KTsgfVxuICAgIEBpZiAkc2NhbGUteiB7XG4gICAgICAkdHJhbnM6ICR0cmFucyBzY2FsZVooJHNjYWxlLXopOyB9IH1cbiAgLy8gcm90YXRlXG4gIEBpZiAkcm90YXRlLXgge1xuICAgICR0cmFuczogJHRyYW5zIHJvdGF0ZVgoJHJvdGF0ZS14KTsgfVxuICBAaWYgJHJvdGF0ZS15IHtcbiAgICAkdHJhbnM6ICR0cmFucyByb3RhdGVZKCRyb3RhdGUteSk7IH1cbiAgQGlmICRyb3RhdGUteiB7XG4gICAgJHRyYW5zOiAkdHJhbnMgcm90YXRlWigkcm90YXRlLXopOyB9XG4gIEBpZiAkcm90YXRlM2Qge1xuICAgICR0cmFuczogJHRyYW5zIHJvdGF0ZTNkKCRyb3RhdGUzZCk7IH1cbiAgLy8gdHJhbnNsYXRlXG4gIEBpZiAkdHJhbnMteCBhbmQgJHRyYW5zLXkge1xuICAgIEBpZiAkdHJhbnMteiB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGUzZCgkdHJhbnMteCwgJHRyYW5zLXksICR0cmFucy16KTsgfVxuICAgIEBlbHNlIHtcbiAgICAgICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZSgkdHJhbnMteCwgJHRyYW5zLXkpOyB9IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkdHJhbnMteCB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVYKCR0cmFucy14KTsgfVxuICAgIEBpZiAkdHJhbnMteSB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVZKCR0cmFucy15KTsgfVxuICAgIEBpZiAkdHJhbnMteiB7XG4gICAgICAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVaKCR0cmFucy16KTsgfSB9XG4gIC8vIHNrZXdcbiAgQGlmICRza2V3LXggYW5kICRza2V3LXkge1xuICAgICR0cmFuczogJHRyYW5zIHNrZXcoJHNrZXcteCwgJHNrZXcteSk7IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkc2tldy14IHtcbiAgICAgICR0cmFuczogJHRyYW5zIHNrZXdYKCRza2V3LXgpOyB9XG4gICAgQGlmICRza2V3LXkge1xuICAgICAgJHRyYW5zOiAkdHJhbnMgc2tld1koJHNrZXcteSk7IH0gfVxuICAvLyBhcHBseSBpdCFcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oJG9yaWdpbi14LCAkb3JpZ2luLXksICRvcmlnaW4teiwgJG9ubHkzZCk7IH1cblxuLy8gQSBzaW1wbGlmaWVkIHNldCBvZiBvcHRpb25zXG4vLyBiYWNrd2FyZHMtY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSAndHJhbnNmb3JtJyBtaXhpblxuQG1peGluIHNpbXBsZS10cmFuc2Zvcm0oJHNjYWxlOiBmYWxzZSwgJHJvdGF0ZTogZmFsc2UsICR0cmFucy14OiBmYWxzZSwgJHRyYW5zLXk6IGZhbHNlLCAkc2tldy14OiBmYWxzZSwgJHNrZXcteTogZmFsc2UsICRvcmlnaW4teDogZmFsc2UsICRvcmlnaW4teTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgY3JlYXRlLXRyYW5zZm9ybShmYWxzZSwgJHNjYWxlLCAkc2NhbGUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICRyb3RhdGUsIGZhbHNlLCAkdHJhbnMteCwgJHRyYW5zLXksIGZhbHNlLCAkc2tldy14LCAkc2tldy15LCAkb3JpZ2luLXgsICRvcmlnaW4teSwgZmFsc2UsIGZhbHNlKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDU1MgVHJhbnNpdGlvbnNcbi8vIEN1cnJlbnRseSBvbmx5IHdvcmtzIGluIFdlYmtpdC5cbi8vXG4vLyAqIGV4cGVjdGVkIGluIENTUzMsIEZpcmVGb3ggMy42LzcgYW5kIE9wZXJhIFByZXN0byAyLjNcbi8vICogV2UnbGwgYmUgcHJlcGFyZWQuXG4vL1xuLy8gSW5jbHVkaW5nIHRoaXMgc3VibW9kdWxlIHNldHMgZm9sbG93aW5nIGRlZmF1bHRzIGZvciB0aGUgbWl4aW5zOlxuLy9cbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5IDogYWxsXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbiA6IDFzXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiA6IGZhbHNlXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSAgICA6IGZhbHNlXG4vL1xuLy8gT3ZlcnJpZGUgdGhlbSBpZiB5b3UgbGlrZS4gVGltaW5nLWZ1bmN0aW9uIGFuZCBkZWxheSBhcmUgc2V0IHRvIGZhbHNlIGZvciBicm93c2VyIGRlZmF1bHRzIChlYXNlLCAwcykuXG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHk6IGFsbCAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMXMgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb246IGZhbHNlICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5OiBmYWxzZSAhZGVmYXVsdDtcblxuJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlczogdHJhbnNmb3JtLCB0cmFuc2Zvcm0tb3JpZ2luICFkZWZhdWx0O1xuXG4vLyBPbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIHRvIHRyYW5zaXRpb25cbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogYWxzbyBhY2NlcHRzIFwiYWxsXCIgb3IgXCJub25lXCJcblxuQG1peGluIHRyYW5zaXRpb24tcHJvcGVydHkoJHByb3BlcnR5LTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHksICRwcm9wZXJ0eS0yOiBmYWxzZSwgJHByb3BlcnR5LTM6IGZhbHNlLCAkcHJvcGVydHktNDogZmFsc2UsICRwcm9wZXJ0eS01OiBmYWxzZSwgJHByb3BlcnR5LTY6IGZhbHNlLCAkcHJvcGVydHktNzogZmFsc2UsICRwcm9wZXJ0eS04OiBmYWxzZSwgJHByb3BlcnR5LTk6IGZhbHNlLCAkcHJvcGVydHktMTA6IGZhbHNlKSB7XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eS0xKSA9PSBzdHJpbmcge1xuICAgICRwcm9wZXJ0eS0xOiB1bnF1b3RlKCRwcm9wZXJ0eS0xKTsgfVxuICAkcHJvcGVydGllczogY29tcGFjdCgkcHJvcGVydHktMSwgJHByb3BlcnR5LTIsICRwcm9wZXJ0eS0zLCAkcHJvcGVydHktNCwgJHByb3BlcnR5LTUsICRwcm9wZXJ0eS02LCAkcHJvcGVydHktNywgJHByb3BlcnR5LTgsICRwcm9wZXJ0eS05LCAkcHJvcGVydHktMTApO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbywgJHByb3BlcnRpZXMpOyB9XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6ICRwcm9wZXJ0aWVzOyB9XG5cbi8vIE9uZSBvciBtb3JlIGR1cmF0aW9ucyBpbiBzZWNvbmRzXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIHRoZXNlIGR1cmF0aW9ucyB3aWxsIGFmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCRkdXJhdGlvbi0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLCAkZHVyYXRpb24tMjogZmFsc2UsICRkdXJhdGlvbi0zOiBmYWxzZSwgJGR1cmF0aW9uLTQ6IGZhbHNlLCAkZHVyYXRpb24tNTogZmFsc2UsICRkdXJhdGlvbi02OiBmYWxzZSwgJGR1cmF0aW9uLTc6IGZhbHNlLCAkZHVyYXRpb24tODogZmFsc2UsICRkdXJhdGlvbi05OiBmYWxzZSwgJGR1cmF0aW9uLTEwOiBmYWxzZSkge1xuICBAaWYgdHlwZS1vZigkZHVyYXRpb24tMSkgPT0gc3RyaW5nIHtcbiAgICAkZHVyYXRpb24tMTogdW5xdW90ZSgkZHVyYXRpb24tMSk7IH1cbiAgJGR1cmF0aW9uczogY29tcGFjdCgkZHVyYXRpb24tMSwgJGR1cmF0aW9uLTIsICRkdXJhdGlvbi0zLCAkZHVyYXRpb24tNCwgJGR1cmF0aW9uLTUsICRkdXJhdGlvbi02LCAkZHVyYXRpb24tNywgJGR1cmF0aW9uLTgsICRkdXJhdGlvbi05LCAkZHVyYXRpb24tMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi1kdXJhdGlvbiwgJGR1cmF0aW9ucywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBPbmUgb3IgbW9yZSB0aW1pbmcgZnVuY3Rpb25zXG4vL1xuLy8gKiBbIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcih4MSwgeTEsIHgyLCB5MildXG4vLyAqIEZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogVGhlc2UgZnVuY3Rpb25zIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKCRmdW5jdGlvbi0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uLCAkZnVuY3Rpb24tMjogZmFsc2UsICRmdW5jdGlvbi0zOiBmYWxzZSwgJGZ1bmN0aW9uLTQ6IGZhbHNlLCAkZnVuY3Rpb24tNTogZmFsc2UsICRmdW5jdGlvbi02OiBmYWxzZSwgJGZ1bmN0aW9uLTc6IGZhbHNlLCAkZnVuY3Rpb24tODogZmFsc2UsICRmdW5jdGlvbi05OiBmYWxzZSwgJGZ1bmN0aW9uLTEwOiBmYWxzZSkge1xuICAkZnVuY3Rpb24tMTogdW5xdW90ZSgkZnVuY3Rpb24tMSk7XG4gICRmdW5jdGlvbnM6IGNvbXBhY3QoJGZ1bmN0aW9uLTEsICRmdW5jdGlvbi0yLCAkZnVuY3Rpb24tMywgJGZ1bmN0aW9uLTQsICRmdW5jdGlvbi01LCAkZnVuY3Rpb24tNiwgJGZ1bmN0aW9uLTcsICRmdW5jdGlvbi04LCAkZnVuY3Rpb24tOSwgJGZ1bmN0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkZnVuY3Rpb25zLCAtbW96LCAtd2Via2l0LCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIE9uZSBvciBtb3JlIHRyYW5zaXRpb24tZGVsYXlzIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZGVsYXlzIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJGRlbGF5LTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXksICRkZWxheS0yOiBmYWxzZSwgJGRlbGF5LTM6IGZhbHNlLCAkZGVsYXktNDogZmFsc2UsICRkZWxheS01OiBmYWxzZSwgJGRlbGF5LTY6IGZhbHNlLCAkZGVsYXktNzogZmFsc2UsICRkZWxheS04OiBmYWxzZSwgJGRlbGF5LTk6IGZhbHNlLCAkZGVsYXktMTA6IGZhbHNlKSB7XG4gIEBpZiB0eXBlLW9mKCRkZWxheS0xKSA9PSBzdHJpbmcge1xuICAgICRkZWxheS0xOiB1bnF1b3RlKCRkZWxheS0xKTsgfVxuICAkZGVsYXlzOiBjb21wYWN0KCRkZWxheS0xLCAkZGVsYXktMiwgJGRlbGF5LTMsICRkZWxheS00LCAkZGVsYXktNSwgJGRlbGF5LTYsICRkZWxheS03LCAkZGVsYXktOCwgJGRlbGF5LTksICRkZWxheS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2l0aW9uLWRlbGF5LCAkZGVsYXlzLCAtbW96LCAtd2Via2l0LCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG5cbi8vIFRyYW5zaXRpb24gYWxsLWluLW9uZSBzaG9ydGhhbmRcblxuQG1peGluIHNpbmdsZS10cmFuc2l0aW9uKCRwcm9wZXJ0eTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSwgJGR1cmF0aW9uOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLCAkZnVuY3Rpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sICRkZWxheTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSkge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbXBhY3QoJHByb3BlcnR5ICRkdXJhdGlvbiAkZnVuY3Rpb24gJGRlbGF5KSk7IH1cblxuQG1peGluIHRyYW5zaXRpb24oJHRyYW5zaXRpb24tMTogZGVmYXVsdCwgJHRyYW5zaXRpb24tMjogZmFsc2UsICR0cmFuc2l0aW9uLTM6IGZhbHNlLCAkdHJhbnNpdGlvbi00OiBmYWxzZSwgJHRyYW5zaXRpb24tNTogZmFsc2UsICR0cmFuc2l0aW9uLTY6IGZhbHNlLCAkdHJhbnNpdGlvbi03OiBmYWxzZSwgJHRyYW5zaXRpb24tODogZmFsc2UsICR0cmFuc2l0aW9uLTk6IGZhbHNlLCAkdHJhbnNpdGlvbi0xMDogZmFsc2UpIHtcbiAgQGlmICR0cmFuc2l0aW9uLTEgPT0gZGVmYXVsdCB7XG4gICAgJHRyYW5zaXRpb24tMTogY29tcGFjdCgkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5KTsgfVxuICAkdHJhbnNpdGlvbnM6IGZhbHNlO1xuICBAaWYgdHlwZS1vZigkdHJhbnNpdGlvbi0xKSA9PSBsaXN0IGFuZCB0eXBlLW9mKG50aCgkdHJhbnNpdGlvbi0xLCAxKSkgPT0gbGlzdCB7XG4gICAgJHRyYW5zaXRpb25zOiBqb2luKCR0cmFuc2l0aW9uLTEsIGNvbXBhY3QoJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApLCBjb21tYSk7IH1cbiAgQGVsc2Uge1xuICAgICR0cmFuc2l0aW9uczogY29tcGFjdCgkdHJhbnNpdGlvbi0xLCAkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCk7IH1cbiAgJGRlbGF5czogY29tbWEtbGlzdCgpO1xuICAkaGFzLWRlbGF5czogZmFsc2U7XG4gICR3ZWJraXQtdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG1vei12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAkby12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAvLyBUaGlzIGJsb2NrIGNhbiBiZSBtYWRlIGNvbnNpZGVyYWJseSBzaW1wbGVyIGF0IHRoZSBwb2ludCBpbiB0aW1lIHRoYXRcbiAgLy8gd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBkaWZmZXJlbmNlcyBpbiBob3cgZGVsYXlzIGFyZSB0cmVhdGVkLlxuICBAZWFjaCAkdHJhbnNpdGlvbiBpbiAkdHJhbnNpdGlvbnMge1xuICAgIC8vIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBsaXN0XG4gICAgLy8gKHRoaXMgd291bGQgYmUgY2xlYW5lciBpZiBudGggdG9vayBhIDNyZCBhcmd1bWVudCB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSkuXG4gICAgJHByb3BlcnR5OiBudGgoJHRyYW5zaXRpb24sIDEpO1xuICAgICRkdXJhdGlvbjogZmFsc2U7XG4gICAgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7XG4gICAgJGRlbGF5OiBmYWxzZTtcbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDEge1xuICAgICAgJGR1cmF0aW9uOiBudGgoJHRyYW5zaXRpb24sIDIpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAyIHtcbiAgICAgICR0aW1pbmctZnVuY3Rpb246IG50aCgkdHJhbnNpdGlvbiwgMyk7IH1cbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDMge1xuICAgICAgJGRlbGF5OiBudGgoJHRyYW5zaXRpb24sIDQpO1xuICAgICAgJGhhcy1kZWxheXM6IHRydWU7IH1cbiAgICAvLyBJZiBhIGRlbGF5IGlzIHByb3ZpZGVkIHdpdGhvdXQgYSB0aW1pbmcgZnVuY3Rpb25cbiAgICBAaWYgaXMtdGltZSgkdGltaW5nLWZ1bmN0aW9uKSBhbmQgbm90ICRkZWxheSB7XG4gICAgICAkZGVsYXk6ICR0aW1pbmctZnVuY3Rpb247XG4gICAgICAkdGltaW5nLWZ1bmN0aW9uOiBmYWxzZTtcbiAgICAgICRoYXMtZGVsYXlzOiB0cnVlOyB9XG4gICAgLy8gS2VlcCBhIGxpc3Qgb2YgZGVsYXlzIGluIGNhc2Ugb25lIGlzIHNwZWNpZmllZFxuICAgICRkZWxheXM6IGFwcGVuZCgkZGVsYXlzLCBpZigkZGVsYXksICRkZWxheSwgMHMpKTtcbiAgICAkd2Via2l0LXZhbHVlOiBhcHBlbmQoJHdlYmtpdC12YWx1ZSwgY29tcGFjdChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uKSk7XG4gICAgJG1vei12YWx1ZTogYXBwZW5kKCRtb3otdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbiAkZGVsYXkpKTtcbiAgICAkby12YWx1ZTogYXBwZW5kKCRvLXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1vLCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0LXZhbHVlO1xuICAgIC8vIG9sZCB3ZWJraXQgZG9lc24ndCBzdXBwb3J0IHRoZSBkZWxheSBwYXJhbWV0ZXIgaW4gdGhlIHNob3J0aGFuZCBzbyB3ZSBwcm9ncmVzc2l2ZWx5IGVuaGFuY2UgaXQuXG4gICAgQGlmICRoYXMtZGVsYXlzIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogJGRlbGF5czsgfSB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otdHJhbnNpdGlvbjogJG1vei12YWx1ZTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tdHJhbnNpdGlvbjogJG8tdmFsdWU7IH1cbiAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb25zOyB9XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTsgfVxuXG4vLyBSZXR1cm5zIGAkcHJvcGVydHlgIHdpdGggdGhlIGdpdmVuIHByZWZpeCBpZiBpdCBpcyBmb3VuZCBpbiBgJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlc2AuXG5AZnVuY3Rpb24gcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJHByZWZpeCwgJHByb3BlcnR5KSB7XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eSkgPT0gbGlzdCB7XG4gICAgJG5ldy1saXN0OiBjb21tYS1saXN0KCk7XG4gICAgQGVhY2ggJHYgaW4gJHByb3BlcnR5IHtcbiAgICAgICRuZXctbGlzdDogYXBwZW5kKCRuZXctbGlzdCwgcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJHByZWZpeCwgJHYpKTsgfVxuICAgIEByZXR1cm4gJG5ldy1saXN0OyB9XG4gIEBlbHNlIHtcbiAgICBAaWYgaW5kZXgoJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlcywgJHByb3BlcnR5KSB7XG4gICAgICBAcmV0dXJuICN7JHByZWZpeH0tI3skcHJvcGVydHl9OyB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiAkcHJvcGVydHk7IH0gfSB9XG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gbm90IG5vdCBpbmRleChzIG1zLCB1bml0KCR2YWx1ZSkpOyB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ2hhbmdlIHRoZSBhcHBlYXJhbmNlIGZvciBNb3ppbGxhLCBXZWJraXQgYW5kIHBvc3NpYmx5IHRoZSBmdXR1cmUuXG4vLyBUaGUgYXBwZWFyYW5jZSBwcm9wZXJ0eSBpcyBjdXJyZW50bHkgbm90IHByZXNlbnQgaW4gYW55IG5ld2VyIENTUyBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoZXJlIGlzIG5vIG9mZmljaWFsIGxpc3Qgb2YgYWNjZXB0ZWQgdmFsdWVzLCBidXQgeW91IG1pZ2h0IGNoZWNrIHRoZXNlIHNvdXJjZTpcbi8vICAgTW96aWxsYSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0NTUy8tbW96LWFwcGVhcmFuY2Vcbi8vICAgV2Via2l0ICA6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJraXQtbWlycm9yL3NvdXJjZS9icm93c2UvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4/c3BlYz1zdm5mMWFlYTU1OWRjZDAyNWE4OTQ2YWE3ZGE2ZTRlODMwNmY1YzFiNjA0JnI9NjNjN2QxYWY0NDQzMGIzMTQyMzNmZWEzNDJjM2RkYjJhMDUyZTM2NVxuLy8gICAoc2VhcmNoIGZvciAnYXBwZWFyYW5jZScgd2l0aGluIHRoZSBwYWdlKVxuXG5AbWl4aW4gYXBwZWFyYW5jZSgkYXApIHtcbiAgJGFwOiB1bnF1b3RlKCRhcCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChhcHBlYXJhbmNlLCAkYXAsIC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9XG4iLAoJCSJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgLWtodG1sLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlOyB9IH1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsICRtb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgJHdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsICRvOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCAkbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LCAka2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsICRvZmZpY2lhbDogdHJ1ZSkge1xuICBAaWYgJHdlYmtpdCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQge1xuICAgICN7JHByb3BlcnR5fTogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCB7XG4gICAgI3skcHJvcGVydHl9OiAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgICN7JHByb3BlcnR5fTogLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQge1xuICAgICN7JHByb3BlcnR5fTogLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEge1xuICAgICN7JHByb3BlcnR5fTogLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9OyB9IH1cbiIsCgkJIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZzogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogZmFsc2UgIWRlZmF1bHQ7XG4iLAoJCSJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFdlYmtpdCwgSUUxMCBhbmQgZnV0dXJlIHN1cHBvcnQgZm9yIFtDU1MgUmVnaW9uc10oaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLylcbi8vXG4vLyAkdGFyZ2V0IGlzIGEgdmFsdWUgeW91IHVzZSB0byBsaW5rIHR3byByZWdpb25zIG9mIHlvdXIgY3NzLiBHaXZlIHRoZSBzb3VyY2Ugb2YgeW91ciBjb250ZW50IHRoZSBmbG93LWludG8gcHJvcGVydHksIGFuZCBnaXZlIHlvdXIgdGFyZ2V0IGNvbnRhaW5lciB0aGUgZmxvdy1mcm9tIHByb3BlcnR5LlxuLy9cbi8vIEZvciBhIHZpc3VhbCBleHBsYW5hdGlvbiwgc2VlIHRoZSBkaWFncmFtcyBhdCBDaHJpcyBDb3lpZXInc1xuLy8gW0NTUy1Ucmlja3NdKGh0dHA6Ly9jc3MtdHJpY2tzLmNvbS9jb250ZW50LWZvbGRpbmcvKVxuXG5AbWl4aW4gZmxvdy1pbnRvKCR0YXJnZXQpIHtcbiAgJHRhcmdldDogdW5xdW90ZSgkdGFyZ2V0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZsb3ctaW50bywgJHRhcmdldCwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgLW1zLCBub3QgLWtodG1sLCBub3Qgb2ZmaWNpYWwpOyB9XG5cbkBtaXhpbiBmbG93LWZyb20oJHRhcmdldCkge1xuICAkdGFyZ2V0OiB1bnF1b3RlKCR0YXJnZXQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmxvdy1mcm9tLCAkdGFyZ2V0LCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG5vdCBvZmZpY2lhbCk7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gTWl4aW5zIHRvIHN1cHBvcnQgc3BlY2lmaWMgQ1NTIFRleHQgTGV2ZWwgMyBlbGVtZW50c1xuLy9cbi8vXG4vL1xuLy8gTWl4aW4gZm9yIHdvcmQtYnJlYWsgcHJvcGVydGllc1xuLy8gaHR0cDovL3d3dy53My5vcmcvY3NzMy10ZXh0LyN3b3JkLWJyZWFrXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJHR5cGUgOiBub3JtYWwsIGtlZXAtYWxsLCBicmVhay1hbGxcbi8vXG4vLyBFeGFtcGxlOlxuLy8gICAgcC53b3JkQnJlYWsge0BpbmNsdWRlIHdvcmQtYnJlYWsoYnJlYWstYWxsKTt9XG4vL1xuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy8gICAgcC53b3JkQnJlYWsge1xuLy8gICAgICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7fVxuLy9cbkBtaXhpbiB3b3JkLWJyZWFrKCR2YWx1ZTogbm9ybWFsKSB7XG4gIEBpZiAkdmFsdWUgPT0gYnJlYWstYWxsIHtcbiAgICAvL01vc3QgYnJvd3NlcnMgaGFuZGxlIHRoZSBicmVhay1hbGwgY2FzZSB0aGUgc2FtZS4uLlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTtcbiAgICAvL1dlYmtpdCBoYW5kbGVzIGJyZWFrLWFsbCBkaWZmZXJlbnRseS4uLiBhcyBicmVhay13b3JkXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssIGJyZWFrLXdvcmQsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsIG5vdCAtbW96LCBub3QgLXdlYmtpdCwgbm90IC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfSB9XG5cbi8vIE1peGluIGZvciB0aGUgaHlwaGVucyBwcm9wZXJ0eVxuLy9cbi8vIFczQyBzcGVjaWZpY2F0aW9uOiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXRleHQvI2h5cGhlbnNcbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IGF1dG8sIG1hbnVhbCwgbm9uZVxuLy9cbi8vIEV4YW1wbGU6XG4vLyAgcCB7XG4vLyAgICBAaW5jbHVkZSBoeXBoZW5zKGF1dG8pO31cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICBwIHtcbi8vICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgIC13ZWJraXQtaHlwaGVuczogYXV0bztcbi8vICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5zKCR2YWx1ZTogYXV0bykge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoaHlwaGVucywgJHZhbHVlLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBNaXhpbiBmb3IgeC1icm93c2VyIGh5cGhlbmF0aW9uIGJhc2VkIG9uIEBhdWNoZW5iZXJnJ3MgcG9zdDpcbi8vIFJlbW92ZXMgdGhlIG5lZWQgZm9yIHRoZSA8d2JyLz4gSFRNTCB0YWdcbi8vIGh0dHA6Ly9ibG9nLmtlbm5ldGguaW8vYmxvZy8yMDEyLzAzLzA0L3dvcmQtd3JhcHBpbmctaHlwZXJuYXRpb24tdXNpbmctY3NzL1xuLy9cbi8vICBFeGFtcGxlOlxuLy8gIGRpdiB7QGluY2x1ZGUgaHlwaGVuYXRpb247fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgICBkaXYge1xuLy8gICAgICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4vLyAgICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICBoeXBoZW5zOiBhdXRvO31cbi8vXG5AbWl4aW4gaHlwaGVuYXRpb24ge1xuICBAaW5jbHVkZSB3b3JkLWJyZWFrKGJyZWFrLWFsbCk7XG4gIEBpbmNsdWRlIGh5cGhlbnM7IH1cbiIsCgkJIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAta2h0bWwtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7IH0gfVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSwgJG1vejogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCAkd2Via2l0OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCwgJG86ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsICRtczogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsICRraHRtbDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgJG9mZmljaWFsOiB0cnVlKSB7XG4gIEBpZiAkd2Via2l0IGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCB7XG4gICAgI3skcHJvcGVydHl9OiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgI3skcHJvcGVydHl9OiAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7XG4gICAgI3skcHJvcGVydHl9OiAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSB7XG4gICAgI3skcHJvcGVydHl9OiAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX07IH0gfVxuIiwKCQkiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiBmYWxzZSAhZGVmYXVsdDtcbiIsCgkJIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciB0aGUgdXBjb21pbmcgKD8pIGNzczMgZmlsdGVyIHByb3BlcnR5LlxuLy9cbi8vIEVhY2ggZmlsdGVyIGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIGZpbHRlciBwcm9wZXJ0eS5cbkBtaXhpbiBmaWx0ZXIoJGZpbHRlci0xLCAkZmlsdGVyLTI6IGZhbHNlLCAkZmlsdGVyLTM6IGZhbHNlLCAkZmlsdGVyLTQ6IGZhbHNlLCAkZmlsdGVyLTU6IGZhbHNlLCAkZmlsdGVyLTY6IGZhbHNlLCAkZmlsdGVyLTc6IGZhbHNlLCAkZmlsdGVyLTg6IGZhbHNlLCAkZmlsdGVyLTk6IGZhbHNlLCAkZmlsdGVyLTEwOiBmYWxzZSkge1xuICAkZmlsdGVyOiBjb21wYWN0KCRmaWx0ZXItMSwgJGZpbHRlci0yLCAkZmlsdGVyLTMsICRmaWx0ZXItNCwgJGZpbHRlci01LCAkZmlsdGVyLTYsICRmaWx0ZXItNywgJGZpbHRlci04LCAkZmlsdGVyLTksICRmaWx0ZXItMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmlsdGVyLCAkZmlsdGVyLCAtbW96LCAtd2Via2l0LCBub3QgLW8sIG5vdCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IHRydWU7XG5cbi8vIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBTYXNzJ3MgQGV4dGVuZCBkaXJlY3RpdmUgdG8gYXBwbHkgdGhlIGJlaGF2aW9yXG4vLyB0byB5b3VyIFBJRSBlbGVtZW50cy4gVG8gYXNzaXN0IHlvdSwgQ29tcGFzcyBwcm92aWRlcyB0aGlzIHZhcmlhYmxlLlxuLy8gV2hlbiBzZXQsIGl0IHdpbGwgY2F1c2UgdGhlIGBAaW5jbHVkZSBwaWVgIG1peGluIHRvIGV4dGVuZCB0aGlzIGNsYXNzLlxuLy8gVGhlIGNsYXNzIG5hbWUgeW91IHByb3ZpZGUgc2hvdWxkICoqbm90KiogaW5jbHVkZSB0aGUgYC5gLlxuJHBpZS1iYXNlLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYXBwcm9hY2ggdG8gdXNpbmcgUElFLlxuLy8gQ2FuIGJlIG9uZSBvZjpcbi8vXG4vLyAqIHJlbGF0aXZlIChkZWZhdWx0KVxuLy8gKiB6LWluZGV4XG4vLyAqIG5vbmVcbiRwaWUtZGVmYXVsdC1hcHByb2FjaDogcmVsYXRpdmUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBsb2NhdGlvbiBvZiB5b3VyIFBJRSBiZWhhdmlvciBmaWxlXG4vLyBUaGlzIHNob3VsZCBiZSByb290LXJlbGF0aXZlIHRvIHlvdXIgd2ViIHNlcnZlclxuLy8gcmVsYXRpdmUgYXNzZXRzIGRvbid0IHdvcmsuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXRcbi8vIHlvdSBzZXQgdGhpcyB5b3Vyc2VsZi5cbiRwaWUtYmVoYXZpb3I6IHN0eWxlc2hlZXQtdXJsKFwiUElFLmh0Y1wiKSAhZGVmYXVsdDtcblxuLy8gV2hlbiB1c2luZyB0aGUgei1pbmRleCBhcHByb2FjaCwgdGhlXG4vLyBmaXJzdCBhbmNlc3RvciBvZiB0aGUgUElFIGVsZW1lbnQgYXRcbi8vIG9yIGJlZm9yZSB0aGUgY29udGFpbmVyJ3Mgb3BhcXVlIGJhY2tncm91bmRcbi8vIHNob3VsZCBoYXZlIGEgei1pbmRleCBzZXQgYXMgd2VsbCB0byBlbnN1cmVcbi8vIHByb3BlcnQgei1pbmRleCBzdGFja2luZy5cbi8vXG4vLyBUaGUgYCRwb3NpdGlvbmAgYXJndW1lbnQgbXVzdCBiZSBzb21lIG5vbi1zdGF0aWNcbi8vIHZhbHVlIChhYnNvbHV0ZSwgcmVsYXRpdmUsIGV0Yy4pXG5AbWl4aW4gcGllLWNvbnRhaW5lcigkei1pbmRleDogMCwgJHBvc2l0aW9uOiByZWxhdGl2ZSkge1xuICB6LWluZGV4OiAkei1pbmRleDtcbiAgcG9zaXRpb246ICRwb3NpdGlvbjsgfVxuXG4vLyBQSUUgZWxlbWVudHMgbXVzdCBoYXZlIHRoaXMgYmVoYXZpb3IgYXR0YWNoZWQgdG8gdGhlbS5cbi8vIElFIGlzIGJyb2tlbiAtLSBpdCBkb2Vzbid0IHRoaW5rIG9mIGJlaGF2aW9yIHVybHMgYXNcbi8vIHJlbGF0aXZlIHRvIHRoZSBzdHlsZXNoZWV0LiBJdCBjb25zaWRlcnMgdGhlbSByZWxhdGl2ZVxuLy8gdG8gdGhlIHdlYnBhZ2UuIEFzIGEgcmVzdWx0LCB5b3UgY2Fubm90IHJlbGlhYmx5IHVzZVxuLy8gY29tcGFzcydzIHJlbGF0aXZlX2Fzc2V0cyB3aXRoIFBJRS5cbi8vXG4vLyAqIGAkYXBwcm9hY2hgIC0gb25lIG9mOiByZWxhdGl2ZSwgei1pbmRleCwgb3Igbm9uZVxuLy8gKiBgJHotaW5kZXhgIC0gd2hlbiB1c2luZyB0aGUgei1pbmRleCBhcHByb2FjaCwgdGhpc1xuLy8gICAgICAgICAgICAgICAgaXMgdGhlIHotaW5kZXggdGhhdCBpcyBhcHBsaWVkLlxuQG1peGluIHBpZS1lbGVtZW50KCRhcHByb2FjaDogJHBpZS1kZWZhdWx0LWFwcHJvYWNoLCAkei1pbmRleDogMCkge1xuICBiZWhhdmlvcjogJHBpZS1iZWhhdmlvcjtcbiAgQGlmICRhcHByb2FjaCA9PSByZWxhdGl2ZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIEBlbHNlIGlmICRhcHByb2FjaCA9PSB6LWluZGV4IHtcbiAgICB6LWluZGV4OiAkei1pbmRleDsgfSB9XG5cbi8vIGEgc21hcnQgbWl4aW4gdGhhdCBrbm93cyB0byBleHRlbmQgb3IgaW5jbHVkZSBwaWUtZWxlbWVudCBhY2NvcmRpbmdcbi8vIHRvIHlvdXIgc3R5bGVzaGVldCdzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLlxuQG1peGluIHBpZSgkYmFzZS1jbGFzczogJHBpZS1iYXNlLWNsYXNzKSB7XG4gIEBpZiAkYmFzZS1jbGFzcyB7XG4gICAgQGV4dGVuZCAuI3skYmFzZS1jbGFzc307IH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHBpZS1lbGVtZW50OyB9IH1cblxuLy8gV2F0Y2ggYCRuYCBsZXZlbHMgb2YgYW5jZXN0b3JzIGZvciBjaGFuZ2VzIHRvIHRoZWlyIGNsYXNzIGF0dHJpYnV0ZVxuLy8gU28gdGhhdCBjYXNjYWRpbmcgc3R5bGVzIHdpbGwgd29yayBjb3JyZWN0bHkgb24gdGhlIFBJRSBlbGVtZW50LlxuQG1peGluIHBpZS13YXRjaC1hbmNlc3RvcnMoJG4pIHtcbiAgLXBpZS13YXRjaC1hbmNlc3RvcnM6ICRuOyB9XG4iLAoJCSIvLyBVc2VyIEludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoaXMgZmlsZSBjYW4gYmUgZXhwYW5kZWQgdG8gaGFuZGxlIGFsbCB0aGUgdXNlciBpbnRlcmZhY2UgcHJvcGVydGllcyBhc1xuLy8gdGhleSBiZWNvbWUgYXZhaWxhYmxlIGluIGJyb3dzZXJzOlxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9XRC1jc3MzLXVzZXJpbnQtMjAwMDAyMTZcbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhpcyBwcm9wZXJ0eSBjb250cm9scyB0aGUgc2VsZWN0aW9uIG1vZGVsIGFuZCBncmFudWxhcml0eSBvZiBhbiBlbGVtZW50LlxuLy9cbi8vIEBwYXJhbSAkc2VsZWN0XG4vLyAgIFsgbm9uZSB8IHRleHQgfCB0b2dnbGUgfCBlbGVtZW50IHwgZWxlbWVudHMgfCBhbGwgfCBpbmhlcml0IF1cbkBtaXhpbiB1c2VyLXNlbGVjdCgkc2VsZWN0KSB7XG4gICRzZWxlY3Q6IHVucXVvdGUoJHNlbGVjdCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh1c2VyLXNlbGVjdCwgJHNlbGVjdCwgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCAta2h0bWwsIG9mZmljaWFsKTsgfVxuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhpcyBpcyB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHRoZSBvdGhlciBtaXhpbnMgaW4gdGhpcyBtb2R1bGUuXG4vLyBJdCBpcyB0aGUgb25seSB3YXkgdG8gYWNjZXNzIHByZWZpeCBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3BlYy5cbi8vIERldmlhdGVzIGZyb20gY2Fub25pY2FsIENvbXBhc3MgaW1wbGVtZW50YXRpb24gYnkgZHJvcHBpbmcgc3VwcG9ydCBmb3Jcbi8vIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBGbGV4Ym94IHNwZWMuXG4vL1xuLy8gYCRwcm9wZXJ0aWVzYDogbWFwIG9mIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRoYXQgc2hvdWxkIGJlIHByZWZpeGVkXG5AbWl4aW4gZmxleGJveCgkcHJvcGVydGllcykge1xuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJHByb3AgPT0gZGlzcGxheSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgJHZhbHVlLCBub3QgLW1veiwgLXdlYmtpdCwgbm90IC1vLCBub3QgLW1zLCBub3QgLWtodG1sLCBvZmZpY2lhbCk7IH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoJHByb3AsICR2YWx1ZSwgbm90IC1tb3osIC13ZWJraXQsIG5vdCAtbywgbm90IC1tcywgbm90IC1raHRtbCwgb2ZmaWNpYWwpOyB9IH0gfVxuXG4vLyBWYWx1ZXMgZm9yICRkaXNwbGF5IGFyZTogZmxleCAoZGVmYXVsdCksIGlubGluZS1mbGV4XG5AbWl4aW4gZGlzcGxheS1mbGV4KCRkaXNwbGF5OiBmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGRpc3BsYXk6ICRkaXNwbGF5KSk7IH1cblxuLy8gVmFsdWVzOiByb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbikpOyB9XG5cbi8vIFZhbHVlczogbm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZVxuQG1peGluIGZsZXgtd3JhcCgkd3JhcCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXdyYXA6ICR3cmFwKSk7IH1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWRpcmVjdGlvbiBhbmQgZmxleC13cmFwLlxuQG1peGluIGZsZXgtZmxvdygkZmxvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWZsb3c6ICRmbG93KSk7IH1cblxuLy8gQWNjZXB0cyBhbiBpbnRlZ2VyXG5AbWl4aW4gb3JkZXIoJG9yZGVyKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKG9yZGVyOiAkb3JkZXIpKTsgfVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZ3JvdywgZmxleC1zaHJpbmsgYW5kIG9wdGlvbmFsbHkgZmxleC1iYXNpcy5cbi8vIFNwYWNlIHNlcGFyYXRlZCwgaW4gdGhhdCBvcmRlci5cbkBtaXhpbiBmbGV4KCRmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXg6ICRmbGV4KSk7IH1cblxuLy8gQWNjZXB0cyBhIG51bWJlci5cbkBtaXhpbiBmbGV4LWdyb3coJGZsZXgtZ3Jvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWdyb3c6ICRmbGV4LWdyb3cpKTsgfVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtc2hyaW5rKCRmbGV4LXNocmluaykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXNocmluazogJGZsZXgtc2hyaW5rKSk7IH1cblxuLy8gQWNjZXB0cyBhbnkgbGVnYWwgdmFsdWUgZm9yIHRoZSB3aWR0aCBwcm9wZXJ0eS5cbkBtaXhpbiBmbGV4LWJhc2lzKCRmbGV4LWJhc2lzKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtYmFzaXM6ICRmbGV4LWJhc2lzKSk7IH1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCRqdXN0aWZ5LWNvbnRlbnQpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoanVzdGlmeS1jb250ZW50OiAkanVzdGlmeS1jb250ZW50KSk7IH1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1pdGVtcygkYWxpZ24taXRlbXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24taXRlbXM6ICRhbGlnbi1pdGVtcykpOyB9XG5cbi8vIExlZ2FsIHZhbHVlczogYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLXNlbGYoJGFsaWduLXNlbGYpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24tc2VsZjogJGFsaWduLXNlbGYpKTsgfVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24tY29udGVudCgkYWxpZ24tY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1jb250ZW50OiAkYWxpZ24tY29udGVudCkpOyB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgIC1raHRtbC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlOyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTsgfSB9XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLCAkbW96OiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsICR3ZWJraXQ6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LCAkbzogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgJG1zOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCwgJGtodG1sOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCAkb2ZmaWNpYWw6IHRydWUpIHtcbiAgQGlmICR3ZWJraXQgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwge1xuICAgICN7JHByb3BlcnR5fTogLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHtcbiAgICAjeyRwcm9wZXJ0eX06IC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhIHtcbiAgICAjeyRwcm9wZXJ0eX06IC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgfSB9XG4iLAoJCSIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IGZhbHNlICFkZWZhdWx0O1xuIiwKCQkiLmJvdW5jZS1kb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZURvd247XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICBhbmltYXRpb24tZGVsYXk6IDFzOyB9XG5cbi5mYWRlLWluIHtcbiAgYW5pbWF0aW9uOiBmYWRlSW47XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4yNXM7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOyB9XG5cbi5mYWRlLWluLXRvcCB7XG4gIGFuaW1hdGlvbjogZmFkZUluO1xuICBhbmltYXRpb24tZHVyYXRpb246IDAuMjVzO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsgfVxuXG4uaXMtZXhpdGluZyB7XG4gIC5mYWRlLWluIHtcbiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiBhbHRlcm5hdGUtcmV2ZXJzZTsgfSB9XG5cbkBpbmNsdWRlIGtleWZyYW1lcyhsb2FkaW5nKSB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IDA7IH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbi14OiAzMDBweDsgfSB9XG5cbkBpbmNsdWRlIGtleWZyYW1lcyhib3VuY2VEb3duKSB7XG4gIDAlLCAyMCUsIDUwJSwgODAlLCAxMDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwKSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwLjUpOyB9XG4gIDQwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMjBweCkpO1xuICAgIEBpbmNsdWRlIG9wYWNpdHkoMSk7IH1cbiAgNjAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgxMHB4KSk7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfSB9XG5cbkBpbmNsdWRlIGtleWZyYW1lcyhzbGlkZUZyb21Cb3R0b21GdWxsKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSg2NXZoKSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMCkpOyB9IH1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJbikge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9IH1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJblRvcCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgyMHB4KSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwKSk7IH0gfVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZUluTGVmdCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCg1MHB4KSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwKSk7IH0gfVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoc2xpZGVJblRvcEJpZykge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSg2MHB4KSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwKSk7IH0gfVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoZmFkZU91dCkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDApOyB9IH1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGJsaW5rKSB7XG4gIDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4gIDUwJSB7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuICAxMDAlIHtcbiAgICBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9IH1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKHJvdGF0ZSkge1xuICAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgwZGVnKSk7IH1cbiAgMTAwJSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgzNjBkZWcpKTsgfSB9XG4iLAoJCSJAbWl4aW4gYnJlYWtwb2ludCgkcG9pbnQpIHtcbiAgQGlmICRwb2ludCA9PSBzbWFsbHNjcmVlbiB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfVxuICBAaWYgJHBvaW50ID09IGV4dHJhc21hbGxzY3JlZW4ge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMTAwcHgpIHtcbiAgICAgIEBjb250ZW50OyB9IH1cbiAgQGlmICRwb2ludCA9PSBoZWFkZXIge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5ODZweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfVxuICBAaWYgJHBvaW50ID09IHRhYmxldCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDg1MHB4KSB7XG4gICAgICBAY29udGVudDsgfSB9XG4gIEBlbHNlIGlmICRwb2ludCA9PSBtb2JpbGUge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfSB9XG5cbkBtaXhpbiBicmVha3BvaW50LW1pbigkcG9pbnQpIHtcbiAgQGlmICRwb2ludCA9PSBzbWFsbHNjcmVlbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDExMDBweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfVxuICBAaWYgJHBvaW50ID09IGV4dHJhc21hbGxzY3JlZW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMTAwcHgpIHtcbiAgICAgIEBjb250ZW50OyB9IH1cbiAgQGlmICRwb2ludCA9PSB0YWJsZXQge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiA4NTBweCkge1xuICAgICAgQGNvbnRlbnQ7IH0gfVxuICBAZWxzZSBpZiAkcG9pbnQgPT0gbW9iaWxlIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICAgIEBjb250ZW50OyB9IH0gfVxuIiwKCQkiQG1peGluIGxpbmUtdGhyb3VnaCgkYm9yZGVyLWNvbG9yLCAkYm9yZGVyLW9wYWNpdHk6IDEpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogMXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHdpZHRoOiA1MCU7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgkYm9yZGVyLW9wYWNpdHkpOyB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAwLjVlbTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTsgfVxuXG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6IDAuNWVtO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTsgfSB9XG4iLAoJCSJAZnVuY3Rpb24gdG9SZW0oJG51bSkge1xuICBAcmV0dXJuICgkbnVtIC8gMTYpK3JlbTsgfVxuXG4kYnJlYWstdGFibGV0OiA5NTBweDtcbiRicmVhay1oZWFkZXI6IDk4NnB4O1xuJGJyZWFrLW1vYmlsZTogNTUwcHg7XG5cbiR3aGl0ZTogI2ZmZmZmZjtcbiRibGFjazogIzAwMDAwMDtcblxuLy8gR3JleVxuJGdyZXktNTA6ICNmYWZhZmE7XG4kZ3JleS0xMDA6ICNFMUUxRTE7XG4kZ3JleS0yMDA6ICNDOEM4Qzg7XG4kZ3JleS0zMDA6ICNBRkFGQUY7XG4kZ3JleS00MDA6ICM5Njk2OTY7XG4kZ3JleS01MDA6ICM3MzczNzM7XG4kZ3JleS02MDA6ICM0QzRDNEM7XG4kZ3JleS03MDA6ICMyQjJCMkI7XG4kZ3JleS04MDA6ICMxQjFCMUI7XG4kZ3JleS05MDA6ICMxMTExMTE7XG5cbi8vIEJlaWdlXG5cbiRiZWlnZS0xMDA6ICNGNkYzRUY7XG4kYmVpZ2UtMjAwOiAjRUZFQUU0O1xuJGJlaWdlLTUwMDogI0Q2RDJDQztcbiRiZWlnZS03MDA6ICM4RjhDODg7XG4kYmVpZ2UtODAwOiAjNkI2OTY2O1xuJGJlaWdlLTkwMDogIzQ3NDU0MztcbiRiZWlnZTogJGJlaWdlLTIwMDtcblxuLy8gUHJpbWFyeVxuXG4kY29sb3ItcHJpbWFyeS01MDogI2ViZmRmNjtcbiRjb2xvci1wcmltYXJ5LTEwMDogI0ZGRjhEOTtcbiRjb2xvci1wcmltYXJ5LTIwMDogI0ZGRTE2NjtcbiRjb2xvci1wcmltYXJ5LTUwMDogI0ZGQ0QwMDsgLy8gTWFpblxuJGNvbG9yLXByaW1hcnktNzAwOiAjRTVCODAwO1xuJGNvbG9yLXByaW1hcnktODAwOiAjNzM1QzAwO1xuJGNvbG9yLXByaW1hcnktOTAwOiAjNEMzRDAwO1xuXG4vLyBTdWNjZXNzXG5cbiRjb2xvci1zdWNjZXNzLTEwMDogI0UzRjBFQztcbiRjb2xvci1zdWNjZXNzLTIwMDogIzAwQTc3MjtcbiRjb2xvci1zdWNjZXNzLTUwMDogIzAwODc1QztcblxuLy8gRGFuZ2VyXG5cbiRjb2xvci1kYW5nZXItMTAwOiAjRkZFN0U3O1xuJGNvbG9yLWRhbmdlci0yMDA6ICNEODdDNkU7XG4kY29sb3ItZGFuZ2VyLTUwMDogI0NFNTk0NztcbiRjb2xvci1kYW5nZXItNzAwOiAjQUY0NjM2O1xuXG4vLyBJbmZvXG4kY29sb3ItaW5mby0xMDA6ICNFREYzRkU7XG4kY29sb3ItaW5mby0yMDA6ICM0YjliZjE7XG4kY29sb3ItaW5mby0zMDA6ICMzRTdCRDc7XG4kY29sb3ItaW5mby01MDA6ICMxMDZkZDE7XG4kY29sb3ItaW5mby02MDA6ICMxQjU3QjI7XG5cbi8vIFdhcm5pbmdcblxuJGNvbG9yLXdhcm5pbmctMTAwOiAjRkZGMkRDO1xuJGNvbG9yLXdhcm5pbmctMjAwOiAjRUJDNDg0O1xuJGNvbG9yLXdhcm5pbmctNTAwOiAjRTRBRTU2O1xuJGNvbG9yLXdhcm5pbmctNzAwOiAjQjk3RjIyO1xuXG4vLyBTdWJcbiRjb2xvci1zdWItMTogIzNGRDFDMTtcbiRjb2xvci1zdWItMjogIzRBQjUxOTtcbiRjb2xvci1zdWItMzogI0VBNzI0QztcbiRjb2xvci1zdWItNDogI0YwQUFCRjtcbiRjb2xvci1zdWItNTogIzk2NUZFNjtcbiRjb2xvci1zdWItNjogI0Y0Q0Y3MDtcblxuJGNvbG9yLWJhY2tncm91bmQ6ICRiZWlnZS0xMDA7XG5cbiRjb2xvci13b21lbi0xOiAjRkZFN0U3O1xuJGNvbG9yLXdvbWVuLTI6ICNEODdDNkU7XG4kY29sb3ItbWVuLTE6ICNFREYzRkU7XG4kY29sb3ItbWVuLTI6ICM0QjlCRjE7XG5cbi8vIFByb3ZpZGVyc1xuJHByb3ZpZGVyczogbGlua2VkaW4gZ2l0aHViIHN0YWNrb3ZlcmZsb3cgZHJpYmJibGUgYmVoYW5jZTtcbiRjb2xvci1saW5rZWRpbjogIzAwNzdiNTtcbiRjb2xvci1naXRodWI6ICMzMzMzMzM7XG4kY29sb3Itc3RhY2tvdmVyZmxvdzogI0UwN0UwODtcbiRjb2xvci1kcmliYmJsZTogI2M4MWQ2MDtcbiRjb2xvci1iZWhhbmNlOiAjMmIyYjJiO1xuXG4vLyBQYWNrYWdlc1xuJGNvbG9yLXBhY2thZ2Utc291cmNpbmcxOiAjQkE3RkVCO1xuJGNvbG9yLXBhY2thZ2Utc291cmNpbmcyOiAjNDc2RkMyO1xuXG4kdGhlbWUtY29sb3JzOiAocHJpbWFyeTogJGNvbG9yLXByaW1hcnktNTAwLCBkYW5nZXI6ICRjb2xvci1kYW5nZXItNTAwKTtcbiRib2R5LWNvbG9yOiAkZ3JleS01MDA7XG5cbi8vIEZvbnQgZmFtaWxpZXNcbiRmb250LW1haW46ICd3ZWxjb21lLWZvbnQnLCBzYW5zLXNlcmlmO1xuJGZvbnQtdGl0bGVzOiAnd2VsY29tZS1mb250Jywgc2Fucy1zZXJpZjtcbiRmb250LXRleHRzOiAnV29yayBTYW5zJywgc2Fucy1zZXJpZjtcbiRmb250LWljb25zOiAnd2VsY29tZS1pY29uLWZvbnQnLCBzYW5zLXNlcmlmO1xuXG4vLyBGb250IHdlaWdodHNcbiRmdy1yZWd1bGFyOiAgIDQwMDtcbiRmdy1tZWRpdW06ICAgIDUwMDtcbiRmdy1zZW1pYm9sZDogIDYwMDtcbiRmdy1ib2xkOiAgICAgIDcwMDtcbiRmdy1ibGFjazogICAgIDgwMDtcblxuLy8gRm9udCBzaXplc1xuJGZzLXh4czogdG9SZW0oMTEpO1xuJGZzLXhzOiB0b1JlbSgxMik7XG4kZnMtc206IHRvUmVtKDE0KTtcbiRmczogdG9SZW0oMTYpO1xuJGZzLWxnOiB0b1JlbSgyNCk7XG4kZnMteGw6IHRvUmVtKDMyKTtcbiRmcy14eGw6IHRvUmVtKDQ4KTtcbiRmcy14eHhsOiB0b1JlbSg3Mik7XG4kZnMtYnV0dG9uczogdG9SZW0oMTYpO1xuJGZzLWJ1dHRvbnMtc206IHRvUmVtKDE0KTtcbiRmcy1oMTogdG9SZW0oNDUpO1xuJGZzLWgyOiB0b1JlbSgzNik7XG4kZnMtaDM6IHRvUmVtKDE1KTtcbiRmcy10ZXh0czogdG9SZW0oMTUpO1xuXG4vLyBGb250IGNvbG9yc1xuJGZjOiAkYmxhY2s7XG4kZmMtbGlnaHQ6IHJnYmEoJGJsYWNrLCAuNyk7XG4kZmMteGxpZ2h0OiByZ2JhKCRibGFjaywgLjU1KTtcbiRmYy14eGxpZ2h0OiByZ2JhKCRibGFjaywgLjQpO1xuXG4vLyBCb3JkZXJzXG4kcmFkaXVzLXNtOiAycHg7XG4kcmFkaXVzOiA0cHg7XG4kcmFkaXVzLWxnOiA4cHg7XG4kYm9yZGVyLWNvbG9yOiAjZTBlMGUwO1xuXG4vLyBUcmFuc2l0aW9uc1xuJHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcbiR0cmFuc2l0aW9uLWxnOiBhbGwgLjVzIGVhc2U7XG4kdHJhbnNpdGlvbi1saW5lYXI6IGFsbCAuMnMgbGluZWFyO1xuXG4vLyBCdXR0b25zXG4kYnRuLWhlaWdodC1sZzogdG9SZW0oNDgpO1xuJGJ0bi1oZWlnaHQtbWQ6IHRvUmVtKDQwKTtcbiRidG4taGVpZ2h0LXNtOiB0b1JlbSgzMik7XG4kYnRuLWhlaWdodDogJGJ0bi1oZWlnaHQtbWQ7XG5cbi8vIEd1dHRlcnNcbiRndXR0ZXIteHhzOiB0b1JlbSg1KTtcbiRndXR0ZXIteHM6IHRvUmVtKDEwKTtcbiRndXR0ZXItc206IHRvUmVtKDE2KTtcbiRndXR0ZXI6IHRvUmVtKDI0KTtcbiRndXR0ZXItbGc6IHRvUmVtKDI4KTtcbiRndXR0ZXIteGw6IHRvUmVtKDUwKTtcbiRndXR0ZXIteHhsOiB0b1JlbSg3MCk7XG5cbi8vIFNpemluZ1xuJGZpZWxkLXdpZHRoOiB0b1JlbSg0MDApO1xuJGZpZWxkLWhlaWdodDogdG9SZW0oNDApO1xuJGZpZWxkLWhlaWdodC1zbTogdG9SZW0oMzQpO1xuXG4vLyBMZXR0ZXIgc3BhY2luZ3NcbiRsZXR0ZXItc3BhY2luZy1odG1sOiAtMC4wMTg3NXJlbTtcbiRsZXR0ZXItc3BhY2luZy1oMDogLTAuMTA2MjVyZW07XG4kbGV0dGVyLXNwYWNpbmctaDE6IC0wLjA3NXJlbTtcbiRsZXR0ZXItc3BhY2luZy1oMjogLTAuMDYyNXJlbTtcbiRsZXR0ZXItc3BhY2luZy1oMzogLTAuMDU2MjVyZW07XG4kbGV0dGVyLXNwYWNpbmctaDQ6IC0wLjAzNzVyZW07XG4kbGV0dGVyLXNwYWNpbmctaDU6IC0wLjAzMTI1cmVtO1xuJGxldHRlci1zcGFjaW5nLWg2OiAtMC4wMjVyZW07XG4kbGV0dGVyLXNwYWNpbmctYm9keTE6IC0wLjAxODc1cmVtO1xuJGxldHRlci1zcGFjaW5nLWJvZHkyOiAtMC4wMTg3NXJlbTtcbiRsZXR0ZXItc3BhY2luZy1ib2R5MzogLTAuMDE4NzVyZW07XG4kbGV0dGVyLXNwYWNpbmctYm9keTQ6IC0wLjAxMjVyZW07XG4kbGV0dGVyLXNwYWNpbmctc3VidGl0bGUxOiAtMC4wMTg3NXJlbTtcbiRsZXR0ZXItc3BhY2luZy1zdWJ0aXRsZTI6IC0wLjAxMjVyZW07XG4kbGV0dGVyLXNwYWNpbmctbWV0YTE6IC0wLjAxODc1cmVtO1xuJGxldHRlci1zcGFjaW5nLW1ldGEyOiAtMC4wMTI1cmVtO1xuJGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmctaHRtbDtcblxuJGNvbnRhaW5lci13aWR0aDogdG9SZW0oOTAwKTtcbiRjb250YWluZXItbGFyZ2Utd2lkdGg6IHRvUmVtKDEyMDApO1xuIiwKCQkiLmFsZXJ0IHtcbiAgbWFyZ2luOiAwIGF1dG8gJGd1dHRlcjtcbiAgcGFkZGluZzogJGd1dHRlci1zbTtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICBmb250LXNpemU6ICRmcy1zbTtcbiAgZm9udC13ZWlnaHQ6ICRmdy1yZWd1bGFyO1xuICBjb2xvcjogJGZjLWxpZ2h0O1xuICBsaW5lLWhlaWdodDogMS41O1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4gIC5wdWxsLXJpZ2h0IHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxuXG4gIGkge1xuICAgIG1hcmdpbi1yaWdodDogJGd1dHRlci14eHM7XG4gICAgZm9udC1zaXplOiB0b1JlbSgyMCk7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4gIHAsIGxpIHtcbiAgICBmb250LXNpemU6ICRmcy1zbTtcbiAgICBmb250LXdlaWdodDogJGZ3LXJlZ3VsYXI7XG4gICAgY29sb3I6ICRmYy1saWdodDtcbiAgICBsaW5lLWhlaWdodDogMS41OyB9XG5cbiAgdWwge1xuICAgIGxpIHtcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogY2lyY2xlO1xuICAgICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci14eHM7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7IH0gfSB9XG5cbiAgLmFsZXJ0LXRpdGxlIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgIGZvbnQtc2l6ZTogJGZzO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7XG4gICAgY29sb3I6ICRmYztcbiAgICBtYXJnaW46IDAgMCAkZ3V0dGVyLXNtO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4gICAgaSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRndXR0ZXIteHhzO1xuICAgICAgZm9udC1zaXplOiB0b1JlbSgyMCk7IH0gfVxuXG4gICYuYWxlcnQtZXJyb3IsXG4gICYuYWxlcnQtZGFuZ2VyIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYW5nZXItNTAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1kYW5nZXItMTAwO1xuXG4gICAgLmFsZXJ0LXRpdGxlLCBwIGEge1xuICAgICAgY29sb3I6ICRjb2xvci1kYW5nZXItNTAwOyB9IH1cblxuICAmLmFsZXJ0LXN1Y2Nlc3Mge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXN1Y2Nlc3MtNTAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zdWNjZXNzLTEwMDtcblxuICAgIC5hbGVydC10aXRsZSwgcCBhIHtcbiAgICAgIGNvbG9yOiAkY29sb3Itc3VjY2Vzcy01MDA7IH0gfVxuXG4gICYuYWxlcnQtd2FybmluZyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3Itd2FybmluZy01MDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmctMTAwO1xuXG4gICAgLmFsZXJ0LXRpdGxlLCBwIGEge1xuICAgICAgY29sb3I6ICRjb2xvci13YXJuaW5nLTUwMDsgfSB9XG5cbiAgJi5hbGVydC1ub3RpY2UsXG4gICYuYWxlcnQtaW5mbyB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItaW5mby0yMDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWluZm8tMTAwO1xuXG4gICAgLmFsZXJ0LXRpdGxlLCBwIGEge1xuICAgICAgY29sb3I6ICRjb2xvci1pbmZvLTUwMDsgfSB9XG5cbiAgJi5ncm93bHlmbGFzaCB7XG4gICAgdG9wOiB0b1JlbSg3MCk7XG4gICAgbWF4LXdpZHRoOiB0b1JlbSgzMDApO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoI3skZ3V0dGVyLXNtfSAqIDIgKyAje3RvUmVtKDI0KX0pOyB9XG5cbiAgJi53aXRoLWNsb3NlLWJ1dHRvbiB7XG4gICAgd2lkdGg6IHRvUmVtKDMwMCk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoI3skZ3V0dGVyLXNtfSAqIDIgKyAje3RvUmVtKDI0KX0pOyB9XG5cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAkZ3V0dGVyLXhzO1xuICAgIHJpZ2h0OiAkZ3V0dGVyLXhzO1xuICAgIHdpZHRoOiB0b1JlbSgyNCk7XG4gICAgaGVpZ2h0OiB0b1JlbSgyNCk7XG4gICAgbWluLWhlaWdodDogMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICRmYy1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGZjLWxpZ2h0O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTtcbiAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoY2VudGVyKTtcblxuICAgIGkge1xuICAgICAgZm9udC1zaXplOiAkZnMteHhzOyB9IH1cblxuICAmLnN0cmlwZS1hdXRoZW50aWNhdGlvbiB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTtcbiAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoc3BhY2UtYmV0d2Vlbik7IH1cblxuICAuYWxlcnQtaGVhZGVyIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXItc207XG5cbiAgICBpIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJGd1dHRlci14eHM7XG4gICAgICBmb250LXNpemU6IHRvUmVtKDIwKTsgfSB9XG5cbiAgLmFsZXJ0LWZvb3RlciB7XG4gICAgbWFyZ2luLXRvcDogJGd1dHRlci1zbTsgfSB9XG4iLAoJCSIuYmFja2dyb3VuZC1ncmV5IHtcbiAgYmFja2dyb3VuZDogICRncmV5LTMwMDsgfVxuIiwKCQkiLmJ0biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KGlubGluZS1mbGV4KTtcbiAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTtcbiAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGNlbnRlcik7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6ICRidG4taGVpZ2h0LW1kO1xuICBmb250LWZhbWlseTogJGZvbnQtdGV4dHM7XG4gIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAkZnMtc207XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3V0bGluZTogbm9uZTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBwYWRkaW5nOiAwIHRvUmVtKDE1KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAkYmxhY2s7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcbiAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXByaW1hcnktNTAwO1xuICBjb2xvcjogJGJsYWNrO1xuICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgQGluY2x1ZGUgYXBwZWFyYW5jZShub25lKTtcblxuICAmOmhvdmVyLCAmLmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS0yMDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeS0yMDA7IH1cblxuICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LTcwMDtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTcwMDsgfVxuXG4gICYuYnRuLWJsb2NrIHtcbiAgICB3aWR0aDogMTAwJTsgfVxuXG4gICYuYnRuLXByaW1hcnksICYuYnRuLXllbGxvdyB7XG4gICAgY29sb3I6ICRibGFjaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG5cbiAgICAmOmhvdmVyLCAmLmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LTIwMDtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnktMjAwOyB9XG5cbiAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNzAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeS03MDA7IH0gfVxuXG4gICYuYnRuLXNlY29uZGFyeSwgJi5idG4tYmxhY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRibGFjaztcbiAgICBib3JkZXItY29sb3I6ICRibGFjaztcbiAgICBjb2xvcjogJHdoaXRlO1xuXG4gICAgJjpob3ZlciwgJi5ob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS03MDA7XG4gICAgICBib3JkZXItY29sb3I6ICRncmV5LTcwMDsgfVxuXG4gICAgJjphY3RpdmUsICYuYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTYwMDtcbiAgICAgIGJvcmRlci1jb2xvcjogJGdyZXktNjAwOyB9XG5cbiAgICAmLmJ0bi1vdXRsaW5lIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBjb2xvcjogJGJsYWNrO1xuXG4gICAgICAmOmhvdmVyLCAmLmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIC4wNSk7IH1cblxuICAgICAgJjphY3RpdmUsICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIC4yKTsgfSB9IH1cblxuICAmLmJ0bi10ZXJ0aWFyeSwgJi5idG4td2hpdGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBib3JkZXItY29sb3I6ICR3aGl0ZTtcbiAgICBjb2xvcjogJGJsYWNrO1xuXG4gICAgJjpob3ZlciwgJi5ob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS0xMDA7XG4gICAgICBib3JkZXItY29sb3I6ICRncmV5LTEwMDsgfVxuXG4gICAgJjphY3RpdmUsICYuYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTIwMDtcbiAgICAgIGJvcmRlci1jb2xvcjogJGdyZXktMjAwOyB9XG5cbiAgICAmLmJ0bi1vdXRsaW5lIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBjb2xvcjogJHdoaXRlO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIC4xKTsgfVxuXG4gICAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgLjQpOyB9IH0gfVxuXG4gICYuYnRuLWRhbmdlciwgJi5idG4tcmVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTUwMDtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYW5nZXItNTAwO1xuICAgIGNvbG9yOiAkd2hpdGU7XG5cbiAgICAmOmhvdmVyLCAmLmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1kYW5nZXItMjAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTIwMDsgfVxuXG4gICAgJjphY3RpdmUsICYuYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1kYW5nZXItNzAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfVxuXG4gICAgJi5idG4tb3V0bGluZSB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgY29sb3I6ICRjb2xvci1kYW5nZXItNTAwO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTIwMDsgfVxuXG4gICAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYW5nZXItNzAwOyB9IH0gfVxuXG4gICYuYnRuLXdhcm5pbmcsICYuYnRuLW9yYW5nZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmctNTAwO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXdhcm5pbmctNTAwO1xuICAgIGNvbG9yOiAkd2hpdGU7XG5cbiAgICAmOmhvdmVyLCAmLmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13YXJuaW5nLTIwMDtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXdhcm5pbmctMjAwOyB9XG5cbiAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdhcm5pbmctNzAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3Itd2FybmluZy03MDA7IH1cblxuICAgICYuYnRuLW91dGxpbmUge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIGNvbG9yOiAkY29sb3Itd2FybmluZy01MDA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci13YXJuaW5nLTIwMDsgfVxuXG4gICAgICAmOmFjdGl2ZSwgJi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci13YXJuaW5nLTcwMDsgfSB9IH1cblxuICAmLmJ0bi1sZywgJi5idG4tbGFyZ2UsICYuYnRuLWJpZyB7XG4gICAgZm9udC1zaXplOiAkZnM7XG4gICAgcGFkZGluZzogMCB0b1JlbSgyMCk7XG4gICAgaGVpZ2h0OiAkYnRuLWhlaWdodC1sZztcblxuICAgIGkge1xuICAgICAgZm9udC1zaXplOiB0b1JlbSgxMCk7IH0gfVxuXG4gICYuYnRuLXNtLCAmLmJ0bi1zbWFsbCwgJi5idG4teHMge1xuICAgIGZvbnQtc2l6ZTogJGZzLXNtO1xuICAgIHBhZGRpbmc6IDAgdG9SZW0oMTcpOyB9XG5cbiAgJi5idG4tc20sICYuYnRuLXNtYWxsIHtcbiAgICBoZWlnaHQ6IHRvUmVtKDQwKTsgfVxuXG4gICYuYnRuLXhzIHtcbiAgICBoZWlnaHQ6ICRidG4taGVpZ2h0LXNtO1xuXG4gICAgaSB7XG4gICAgICBmb250LXNpemU6IHRvUmVtKDEyKTsgfSB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJi5idG4tZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQsXG4gICYuaW5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiZWlnZS01MDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmVpZ2UtNTAwO1xuICAgIGNvbG9yOiAkYmVpZ2UtNzAwO1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7IH1cblxuICBpIHtcbiAgICBAaW5jbHVkZSBhbGlnbi1zZWxmKGNlbnRlcik7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udC1zaXplOiAkZnMteHM7XG4gICAgbWFyZ2luLXJpZ2h0OiAkZ3V0dGVyLXh4cztcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbiAgc3BhbiArIGkge1xuICAgIG1hcmdpbjogMCAwIDAgJGd1dHRlci14eHM7IH1cblxuICBzcGFuIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IH1cblxuICAmLmJ0bi1pY29uIHtcbiAgICBpLCBzcGFuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIGZvbnQtc2l6ZTogJGZzOyB9IH0gfVxuXG4uYnRuLW1hcmdpbi1yaWdodCB7XG4gIG1hcmdpbi1yaWdodDogMTBweDsgfVxuXG4uYnRuLW1hcmdpbi1sZWZ0IHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7IH1cblxuLmJ0bi1sb2FkZXIge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgJiwgJltjbGFzc149XCJ3dWktaWNvbi1cIl0ge1xuICAgIGZvbnQtc2l6ZTogMjNweDtcbiAgICBjb2xvcjogJGdyZXktNTAwOyB9IH1cblxuLmJ0bi1saW5rIHtcbiAgcGFkZGluZzogNnB4IDhweDtcbiAgJiwgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTsgfVxuICBzcGFuIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgkd2hpdGUsIDAuNSk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihib3JkZXItY29sb3IgMC4zcyk7IH1cbiAgJjpob3ZlciB7XG4gICAgc3BhbiB7XG4gICAgICBib3JkZXItY29sb3I6ICR3aGl0ZTsgfSB9IH1cblxuLmJ0bi1zb2NpYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygycHgpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQtY29sb3IgMC4zcyk7XG4gIGkge1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4yKTsgfVxuICBpLCBzcGFuIHtcbiAgICBwYWRkaW5nOiAyMHB4OyB9IH1cblxuLmJ0biB7XG4gICYuYnRuLWxpbmtlZGluIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItbGlua2VkaW47XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLWxpbmtlZGluLCAtMTUlKTsgfVxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItbGlua2VkaW4sIC0yMCUpOyB9IH1cblxuICAmLmJ0bi1naXRodWIge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1naXRodWI7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLWdpdGh1YiwgLTE1JSk7IH1cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLWdpdGh1YiwgLTIwJSk7IH0gfVxuXG4gICYuYnRuLXN0YWNrb3ZlcmZsb3cge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1zdGFja292ZXJmbG93O1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogc2NhbGUtbGlnaHRuZXNzKCRjb2xvci1zdGFja292ZXJmbG93LCAtMTUlKTsgfVxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3Itc3RhY2tvdmVyZmxvdywgLTIwJSk7IH0gfVxuXG4gICYuYnRuLWRyaWJiYmxlIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZHJpYmJibGU7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLWRyaWJiYmxlLCAtMTUlKTsgfVxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItZHJpYmJibGUsIC0yMCUpOyB9IH1cblxuICAmLmJ0bi1iZWhhbmNlIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmVoYW5jZTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHNjYWxlLWxpZ2h0bmVzcygkY29sb3ItYmVoYW5jZSwgLTE1JSk7IH1cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLWJlaGFuY2UsIC0yMCUpOyB9IH0gfVxuIiwKCQkiLy8gc2VlOiBodHRwOi8vY29kZXBlbi5pby9jaHJpc2RwcmF0dC9wZW4vSUF5bUIvXG5cbi5jYWxsb3V0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogdG9SZW0oOTAwKTtcbiAgcGFkZGluZzogJGd1dHRlci1zbTtcbiAgbWFyZ2luOiAkZ3V0dGVyIGF1dG87XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICAmLmNhbGxvdXQtd2l0aC1jdGEge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG5cbiAgICBkaXYge1xuICAgICAgZmxleDogMTsgfSB9XG5cbiAgaDQge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG4gICAgZm9udC1zaXplOiAkZnM7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDtcbiAgICBjb2xvcjogJGZjO1xuICAgIG1hcmdpbjogMCAwICRndXR0ZXItc207XG4gICAgcGFkZGluZzogMDtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbiAgICBpIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJGd1dHRlci14eHM7XG4gICAgICBmb250LXNpemU6IHRvUmVtKDIwKTsgfSB9XG5cbiAgcCB7XG4gICAgZm9udC1zaXplOiAkZnMtc207XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1yZWd1bGFyO1xuICAgIGNvbG9yOiAkZmMtbGlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTsgfVxuXG4gICYuY2FsbG91dC1kZWZhdWx0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItaW5mby0xMDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItaW5mby0yMDA7XG5cbiAgICBoNCB7XG4gICAgICBjb2xvcjogJGNvbG9yLWluZm8tNTAwOyB9IH1cblxuICAmLmZsZXgge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG5cbiAgICAuY2FsbG91dC1pbm5lciB7XG4gICAgICBAaW5jbHVkZSBmbGV4KDEgMSBhdXRvKTtcbiAgICAgIG1hcmdpbi1yaWdodDogJGd1dHRlcjsgfSB9IH1cblxuLmJsb2NrIC5jYWxsb3V0IHtcbiAgbWFyZ2luLWxlZnQ6ICRndXR0ZXItbGc7XG4gIG1hcmdpbi1yaWdodDogJGd1dHRlci1sZzsgfVxuXG4uY2FsbG91dCBwOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi5jYWxsb3V0IGNvZGUge1xuICBib3JkZXItcmFkaXVzOiAzcHg7IH1cblxuLmNhbGxvdXQrLmNhbGxvdXQge1xuICBtYXJnaW4tdG9wOiAtNXB4OyB9XG5cbi5jYWxsb3V0LXByaW1hcnkge1xuICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcblxuICBoNCB7XG4gICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDsgfVxuXG4gIHAgYSB7XG4gICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTcwMDsgfSB9XG5cbi5jYWxsb3V0LXN1Y2Nlc3Mge1xuICBib3JkZXItY29sb3I6ICRjb2xvci1zdWNjZXNzLTUwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXN1Y2Nlc3MtMTAwO1xuXG4gIGg0IHtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnktNTAwOyB9XG5cbiAgcCBhIHtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnktNTAwOyB9IH1cblxuLmNhbGxvdXQtZGFuZ2VyIHtcbiAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTUwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRhbmdlci0xMDA7XG5cbiAgaDQge1xuICAgIGNvbG9yOiAkY29sb3ItZGFuZ2VyLTUwMDsgfVxuXG4gIHAgYSB7XG4gICAgY29sb3I6ICRjb2xvci1kYW5nZXItNTAwOyB9IH1cblxuLmNhbGxvdXQtd2FybmluZyB7XG4gIGJvcmRlci1jb2xvcjogJGNvbG9yLXdhcm5pbmctNTAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2FybmluZy0xMDA7XG5cbiAgaDQge1xuICAgIGNvbG9yOiAkY29sb3Itd2FybmluZy01MDA7IH1cblxuICBwIGEge1xuICAgIGNvbG9yOiAkYmxhY2s7IH0gfVxuXG4uY2FsbG91dC1pbmZvLCAuY2FsbG91dC1kZWZhdXQge1xuICBib3JkZXItY29sb3I6ICRjb2xvci1pbmZvLTIwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWluZm8tMTAwO1xuXG4gIGg0IHtcbiAgICBjb2xvcjogJGNvbG9yLWluZm8tNTAwOyB9XG5cbiAgcCBhIHtcbiAgICBjb2xvcjogJGNvbG9yLWluZm8tNTAwOyB9IH1cbiIsCgkJIkBpbXBvcnQgXCJqcXVlcnktZGF0ZXRpbWVwaWNrZXIvanF1ZXJ5LmRhdGV0aW1lcGlja2VyXCI7XG5cbmJvZHkge1xuICAueGRzb2Z0X2RhdGV0aW1lcGlja2VyIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtbWFpbjtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbiAgICAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveCA+IGRpdiA+IGRpdjpob3ZlcixcbiAgICAueGRzb2Z0X2NhbGVuZGFyIHRkOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTQwMCAhaW1wb3J0YW50OyB9XG5cbiAgICAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9jdXJyZW50OmhvdmVyLFxuICAgIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X2RlZmF1bHQsXG4gICAgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfY3VycmVudCxcbiAgICAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9jdXJyZW50Lnhkc29mdF9kaXNhYmxlZDpob3ZlcixcbiAgICAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveCA+IGRpdiA+IGRpdi54ZHNvZnRfY3VycmVudCxcbiAgICAueGRzb2Z0X2xhYmVsID4gLnhkc29mdF9zZWxlY3QgPiBkaXYgPiAueGRzb2Z0X29wdGlvbi54ZHNvZnRfY3VycmVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS03MDAgIWltcG9ydGFudDtcbiAgICAgIGJveC1zaGFkb3c6ICRjb2xvci1zdWNjZXNzLTUwMCAwIDFweCAzcHggMCBpbnNldDsgfVxuXG4gICAgLnhkc29mdF9jYWxlbmRhciB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lOyB9XG4gICAgICB0aCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiAkYmxhY2s7IH1cbiAgICAgIHRkIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICAmLnhkc29mdF90b2RheSB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTcwMDtcbiAgICAgICAgICAmLnhkc29mdF9jdXJyZW50IHtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7IH0gfVxuICAgICAgICBkaXYge1xuICAgICAgICAgIHBhZGRpbmc6IDA7IH0gfSB9XG5cbiAgICAueGRzb2Z0X2xhYmVsIHtcbiAgICAgIGZvbnQ6IHtcbiAgICAgICAgc2l6ZTogMTFweDtcbiAgICAgICAgd2VpZ2h0OiBub3JtYWw7IH1cbiAgICAgID4gLnhkc29mdF9zZWxlY3QgPiBkaXYgPiAueGRzb2Z0X29wdGlvbjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTQwMDsgfSB9XG5cbiAgICAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICA+IGRpdiA+IGRpdiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9IH0gfSB9XG4iLAoJCSIueGRzb2Z0X2RhdGV0aW1lcGlja2VyIHtcblx0Ym94LXNoYWRvdzogMCA1cHggMTVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC41MDYpO1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JiYjtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjY2NjO1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcblx0Y29sb3I6ICMzMzM7XG5cdGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cdHBhZGRpbmc6IDhweDtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXRvcDogMnB4O1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHotaW5kZXg6IDk5OTk7XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X3J0bCB7XG5cdHBhZGRpbmc6IDhweCAwIDhweCA4cHg7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgaWZyYW1lIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHdpZHRoOiA3NXB4O1xuXHRoZWlnaHQ6IDIxMHB4O1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0Ym9yZGVyOiBub25lO1xufVxuXG4vKkZvciBJRTggb3IgbG93ZXIqL1xuLnhkc29mdF9kYXRldGltZXBpY2tlciBidXR0b24ge1xuXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnhkc29mdF9ub3NlbGVjdCB7XG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcblx0LWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuXHQtbW96LXVzZXItc2VsZWN0OiBub25lO1xuXHQtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdC1vLXVzZXItc2VsZWN0OiBub25lO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLnhkc29mdF9ub3NlbGVjdDo6c2VsZWN0aW9uIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgfVxuLnhkc29mdF9ub3NlbGVjdDo6LW1vei1zZWxlY3Rpb24geyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB9XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2lubGluZSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0cG9zaXRpb246IHN0YXRpYztcblx0Ym94LXNoYWRvdzogbm9uZTtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAqIHtcblx0LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9kYXRlcGlja2VyLCAueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfdGltZXBpY2tlciB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9kYXRlcGlja2VyLmFjdGl2ZSwgLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIuYWN0aXZlIHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9kYXRlcGlja2VyIHtcblx0d2lkdGg6IDIyNHB4O1xuXHRmbG9hdDogbGVmdDtcblx0bWFyZ2luLWxlZnQ6IDhweDtcbn1cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X3J0bCAueGRzb2Z0X2RhdGVwaWNrZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdG1hcmdpbi1yaWdodDogOHB4O1xuXHRtYXJnaW4tbGVmdDogMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfc2hvd3dlZWtzIC54ZHNvZnRfZGF0ZXBpY2tlciB7XG5cdHdpZHRoOiAyNTZweDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIge1xuXHR3aWR0aDogNThweDtcblx0ZmxvYXQ6IGxlZnQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0bWFyZ2luLWxlZnQ6IDhweDtcblx0bWFyZ2luLXRvcDogMDtcbn1cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X3J0bCAueGRzb2Z0X3RpbWVwaWNrZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdG1hcmdpbi1yaWdodDogOHB4O1xuXHRtYXJnaW4tbGVmdDogMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2RhdGVwaWNrZXIuYWN0aXZlKy54ZHNvZnRfdGltZXBpY2tlciB7XG5cdG1hcmdpbi10b3A6IDhweDtcblx0bWFyZ2luLWJvdHRvbTogM3B4XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9tb250aHBpY2tlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWwgaSxcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9wcmV2LFxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X25leHQsXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfdG9kYXlfYnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFBZUNBWUFBQURhVzd2ekFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeUpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1YybHVaRzkzY3lraUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlEwTkJSakkxTmpNME0wVXdNVEZGTkRrNE5rRkdNekpGUWtRelFqRXdSVUlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UTBOQlJqSTFOalEwTTBVd01URkZORGs0TmtGR016SkZRa1F6UWpFd1JVSWlQaUE4ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjBnYzNSU1pXWTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBEUTBGR01qVTJNVFF6UlRBeE1VVTBPVGcyUVVZek1rVkNSRE5DTVRCRlFpSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcERRMEZHTWpVMk1qUXpSVEF4TVVVME9UZzJRVVl6TWtWQ1JETkNNVEJGUWlJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BvTkVQNTRBQUFJT1NVUkJWSGphN0pxOVRzTXdFTWN4clpENFdwQlllS1VDZStrVE1DQUNIWmg0QkZmSE8vQUFJSFpHRmhZa0JCc1NFcXhzTENBZ1hLaGJYWU9UeGg5cGZKVlArcXV0blo1cy81THoyWTVJMDNRaFdqaTJHSWNnQW9rV2dmQ3hOdmNPQ0NHS3FpU3FoVXAwbGFIT25lMDV2ZEV5R01ma2R4SkRWamd3RGxFUWdZUUJneCtVTEphV1NYWFM2ci9FUjVGQlZSOFZmR2Z0VEtjSVROcythMVhwY0ZvRXhSRUlERjE0QVZJRnhnUVVTK2g1MjBjZHVkNndOa0MwVUJ3NkJDTy9Ib0NZd0JoRDhRQ2tRL3gxbXdEeUQ0cGxoNEQ2RERWMFRBR3lvNEhjYXdMSUJCU0xEa0hlSDBNZzJ5VlAzbDRUUU1aUUREc0VPbC9NZ0hRcWhNTnVFMEQrb0JoMENJcjhNQUt5YXpCSDlXeUJ1S3hEV2diWGZqTmYzMlRaMUtXbS9BcDFvU2svUjUzVXRRNXhUaDNMVWxNbVQ4Z3Q2ZzUxUTlwK1NvYnhnSlEvcW1zZlpoV3l3R0ZTbDB5QmpDTEpDTWdYYWlsM2I3K3J1bWRWSjJZUnNzNGNOK3I2cUFIRGtQV2pQamRKQ0Y0bjlSbUFEL1Y5QS9XcDROUWFzc0Rqd2xCNlhCaUN4Y0pRV21aWmI4VEhGaWxmeS9sZnJUdkxnaHEyVHFUSHJSTVRLTkowc0loZG8xNVJUK1JweVd3RmRZOTZVWi9MZFFLQkdqY1hwY2MxQWxTRkVmTG1vdUQrMWtudXhCRFVWcnZPQm1vT0MvckVjTjdPUXhLVmVKVENpQWRVelVKaEEyT2V6OVFUa3A3Mk9UVmN4RGNYWThpS05reEdBSlhtSkNPUXdPYTZkaHlYc09hNlh3RUdBS2RlYjVFVDNyUWRBQUFBQUVsRlRrU3VRbUNDKTtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsIGkge1xuXHRvcGFjaXR5OiAwLjU7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IC05MnB4IC0xOXB4O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiA5cHg7XG5cdGhlaWdodDogMjBweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3ByZXYge1xuXHRmbG9hdDogbGVmdDtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTIwcHggMDtcbn1cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90b2RheV9idXR0b24ge1xuXHRmbG9hdDogbGVmdDtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogLTcwcHggMDtcblx0bWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X25leHQge1xuXHRmbG9hdDogcmlnaHQ7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X25leHQsXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfcHJldiAsXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfdG9kYXlfYnV0dG9uIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJvcmRlcjogMCBub25lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRoZWlnaHQ6IDMwcHg7XG5cdG9wYWNpdHk6IDAuNTtcblx0LW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT01MClcIjtcblx0b3V0bGluZTogbWVkaXVtIG5vbmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHBhZGRpbmc6IDA7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dGV4dC1pbmRlbnQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHdpZHRoOiAyMHB4O1xuXHRtaW4td2lkdGg6IDA7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfcHJldixcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfbmV4dCB7XG5cdGZsb2F0OiBub25lO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDBweCAtMTVweDtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMzBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1sZWZ0OiAxNHB4O1xuXHRtYXJnaW4tdG9wOiA3cHg7XG59XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9ydGwgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfcHJldixcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X3J0bCAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF9uZXh0IHtcblx0ZmxvYXQ6IG5vbmU7XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXHRtYXJnaW4tcmlnaHQ6IDE0cHg7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfcHJldiB7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IC00MHB4IDA7XG5cdG1hcmdpbi1ib3R0b206IDdweDtcblx0bWFyZ2luLXRvcDogMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveCB7XG5cdGhlaWdodDogMTUxcHg7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfdGltZXBpY2tlciAueGRzb2Z0X3RpbWVfYm94ID5kaXYgPmRpdiB7XG5cdGJhY2tncm91bmQ6ICNmNWY1ZjU7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuXHRjb2xvcjogIzY2Njtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDogMDtcblx0aGVpZ2h0OiAyNXB4O1xuXHRsaW5lLWhlaWdodDogMjVweDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveCA+ZGl2ID4gZGl2OmZpcnN0LWNoaWxkIHtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RvZGF5X2J1dHRvbjpob3Zlcixcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9uZXh0OmhvdmVyLFxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3ByZXY6aG92ZXIge1xuXHRvcGFjaXR5OiAxO1xuXHQtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMClcIjtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHotaW5kZXg6IDk5OTk7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogNXB4IDNweDtcblx0Zm9udC1zaXplOiAxNHB4O1xuXHRsaW5lLWhlaWdodDogMjBweDtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdGZsb2F0OiBsZWZ0O1xuXHR3aWR0aDogMTgycHg7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWw6aG92ZXI+c3BhbiB7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWw6aG92ZXIgaSB7XG5cdG9wYWNpdHk6IDEuMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsID4gLnhkc29mdF9zZWxlY3Qge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAwO1xuXHR0b3A6IDMwcHg7XG5cdHotaW5kZXg6IDEwMTtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogI2ZmZjtcblx0bWF4LWhlaWdodDogMTYwcHg7XG5cdG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsID4gLnhkc29mdF9zZWxlY3QueGRzb2Z0X21vbnRoc2VsZWN0eyByaWdodDogLTdweCB9XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWwgPiAueGRzb2Z0X3NlbGVjdC54ZHNvZnRfeWVhcnNlbGVjdHsgcmlnaHQ6IDJweCB9XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWwgPiAueGRzb2Z0X3NlbGVjdCA+IGRpdiA+IC54ZHNvZnRfb3B0aW9uOmhvdmVyIHtcblx0Y29sb3I6ICNmZmY7XG5cdGJhY2tncm91bmQ6ICNmZjgwMDA7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9sYWJlbCA+IC54ZHNvZnRfc2VsZWN0ID4gZGl2ID4gLnhkc29mdF9vcHRpb24ge1xuXHRwYWRkaW5nOiAycHggMTBweCAycHggNXB4O1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsID4gLnhkc29mdF9zZWxlY3QgPiBkaXYgPiAueGRzb2Z0X29wdGlvbi54ZHNvZnRfY3VycmVudCB7XG5cdGJhY2tncm91bmQ6ICMzM2FhZmY7XG5cdGJveC1zaGFkb3c6ICMxNzhmZTUgMCAxcHggM3B4IDAgaW5zZXQ7XG5cdGNvbG9yOiAjZmZmO1xuXHRmb250LXdlaWdodDogNzAwO1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbW9udGgge1xuXHR3aWR0aDogMTAwcHg7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIge1xuXHRjbGVhcjogYm90aDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3llYXJ7XG5cdHdpZHRoOiA0OHB4O1xuXHRtYXJnaW4tbGVmdDogNXB4O1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGFibGUge1xuXHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXHR3aWR0aDogMTAwJTtcblxufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQgPiBkaXYge1xuXHRwYWRkaW5nLXJpZ2h0OiA1cHg7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0aCB7XG5cdGhlaWdodDogMjVweDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0aCB7XG5cdHdpZHRoOiAxNC4yODU3MTQyJTtcblx0YmFja2dyb3VuZDogI2Y1ZjVmNTtcblx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcblx0Y29sb3I6ICM2NjY7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0aGVpZ2h0OiAyNXB4O1xufVxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfc2hvd3dlZWtzIC54ZHNvZnRfY2FsZW5kYXIgdGQsLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfc2hvd3dlZWtzIC54ZHNvZnRfY2FsZW5kYXIgdGgge1xuXHR3aWR0aDogMTIuNSU7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0aCB7XG5cdGJhY2tncm91bmQ6ICNmMWYxZjE7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfdG9kYXkge1xuXHRjb2xvcjogIzMzYWFmZjtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9oaWdobGlnaHRlZF9kZWZhdWx0IHtcblx0YmFja2dyb3VuZDogI2ZmZTlkMjtcblx0Ym94LXNoYWRvdzogI2ZmYjg3MSAwIDFweCA0cHggMCBpbnNldDtcblx0Y29sb3I6ICMwMDA7XG59XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X2hpZ2hsaWdodGVkX21pbnQge1xuXHRiYWNrZ3JvdW5kOiAjYzFmZmM5O1xuXHRib3gtc2hhZG93OiAjMDBkZDFjIDAgMXB4IDRweCAwIGluc2V0O1xuXHRjb2xvcjogIzAwMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9kZWZhdWx0LFxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9jdXJyZW50LFxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveCA+ZGl2ID5kaXYueGRzb2Z0X2N1cnJlbnQge1xuXHRiYWNrZ3JvdW5kOiAjMzNhYWZmO1xuXHRib3gtc2hhZG93OiAjMTc4ZmU1IDAgMXB4IDNweCAwIGluc2V0O1xuXHRjb2xvcjogI2ZmZjtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9vdGhlcl9tb250aCxcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfZGlzYWJsZWQsXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3ggPmRpdiA+ZGl2Lnhkc29mdF9kaXNhYmxlZCB7XG5cdG9wYWNpdHk6IDAuNTtcblx0LW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT01MClcIjtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X290aGVyX21vbnRoLnhkc29mdF9kaXNhYmxlZCB7XG5cdG9wYWNpdHk6IDAuMjtcblx0LW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0yMClcIjtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkOmhvdmVyLFxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveCA+ZGl2ID5kaXY6aG92ZXIge1xuXHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kOiAjZmY4MDAwICFpbXBvcnRhbnQ7XG5cdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9jdXJyZW50Lnhkc29mdF9kaXNhYmxlZDpob3Zlcixcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3g+ZGl2PmRpdi54ZHNvZnRfY3VycmVudC54ZHNvZnRfZGlzYWJsZWQ6aG92ZXIge1xuXHRiYWNrZ3JvdW5kOiAjMzNhYWZmICFpbXBvcnRhbnQ7XG5cdGJveC1zaGFkb3c6ICMxNzhmZTUgMCAxcHggM3B4IDAgaW5zZXQgIWltcG9ydGFudDtcblx0Y29sb3I6ICNmZmYgIWltcG9ydGFudDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9kaXNhYmxlZDpob3Zlcixcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3ggPmRpdiA+ZGl2Lnhkc29mdF9kaXNhYmxlZDpob3ZlciB7XG5cdGNvbG9yOiBpbmhlcml0XHQhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG5cdGJveC1zaGFkb3c6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRoIHtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRjb2xvcjogIzk5OTtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY29weXJpZ2h0IHtcblx0Y29sb3I6ICNjY2MgIWltcG9ydGFudDtcblx0Zm9udC1zaXplOiAxMHB4O1xuXHRjbGVhcjogYm90aDtcblx0ZmxvYXQ6IG5vbmU7XG5cdG1hcmdpbi1sZWZ0OiA4cHg7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jb3B5cmlnaHQgYSB7IGNvbG9yOiAjZWVlICFpbXBvcnRhbnQgfVxuLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NvcHlyaWdodCBhOmhvdmVyIHsgY29sb3I6ICNhYWEgIWltcG9ydGFudCB9XG5cbi54ZHNvZnRfdGltZV9ib3gge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG59XG4ueGRzb2Z0X3Njcm9sbGJhciA+Lnhkc29mdF9zY3JvbGxlciB7XG5cdGJhY2tncm91bmQ6ICNjY2MgIWltcG9ydGFudDtcblx0aGVpZ2h0OiAyMHB4O1xuXHRib3JkZXItcmFkaXVzOiAzcHg7XG59XG4ueGRzb2Z0X3Njcm9sbGJhciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0d2lkdGg6IDdweDtcblx0cmlnaHQ6IDA7XG5cdHRvcDogMDtcblx0Ym90dG9tOiAwO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9ydGwgLnhkc29mdF9zY3JvbGxiYXIge1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogYXV0bztcbn1cbi54ZHNvZnRfc2Nyb2xsZXJfYm94IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIHtcblx0Ym94LXNoYWRvdzogMCA1cHggMTVweCAtNXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MDYpO1xuXHRiYWNrZ3JvdW5kOiAjMDAwO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQ0NDtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjMzMzO1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjMzMzO1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgIzMzMztcblx0Y29sb3I6ICNjY2M7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3gge1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgIzIyMjtcbn1cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3ggPmRpdiA+ZGl2IHtcblx0YmFja2dyb3VuZDogIzBhMGEwYTtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICMyMjI7XG5cdGNvbG9yOiAjOTk5O1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfbGFiZWwge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xufVxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2xhYmVsID4gLnhkc29mdF9zZWxlY3Qge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMzMzO1xuXHRiYWNrZ3JvdW5kOiAjMDAwO1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfbGFiZWwgPiAueGRzb2Z0X3NlbGVjdCA+IGRpdiA+IC54ZHNvZnRfb3B0aW9uOmhvdmVyIHtcblx0Y29sb3I6ICMwMDA7XG5cdGJhY2tncm91bmQ6ICMwMDdmZmY7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9sYWJlbCA+IC54ZHNvZnRfc2VsZWN0ID4gZGl2ID4gLnhkc29mdF9vcHRpb24ueGRzb2Z0X2N1cnJlbnQge1xuXHRiYWNrZ3JvdW5kOiAjY2M1NTAwO1xuXHRib3gtc2hhZG93OiAjYjAzZTAwIDAgMXB4IDNweCAwIGluc2V0O1xuXHRjb2xvcjogIzAwMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2xhYmVsIGksXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfcHJldixcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9uZXh0LFxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X3RvZGF5X2J1dHRvbiB7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQWVDQVlBQUFEYVc3dnpBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9WMmx1Wkc5M2N5a2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRVUV4UVVVek9UQTBNMFV5TVRGRk5EbEJNMEZGUVRKRU5URXhSRFZCT0RZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlFVRXhRVVV6T1RFME0wVXlNVEZGTkRsQk0wRkZRVEpFTlRFeFJEVkJPRFlpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwQlFURkJSVE00UlRRelJUSXhNVVUwT1VFelFVVkJNa1ExTVRGRU5VRTROaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBCUVRGQlJUTTRSalF6UlRJeE1VVTBPVUV6UVVWQk1rUTFNVEZFTlVFNE5pSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QcDBWeEdFQUFBSUFTVVJCVkhqYTdKck5TZ014RU1lYnRnaCszTVNMcjFUMVhuMkNIb1NLQjA4K1FtUjhCeDlBOGU3Uml4ZEI5Q0tDb05kZXhJdWd4RmxKYTdyTlpuZVRiTElwTS9Dbk5Mc2RNdk5qTThsMG1SQ2lROVllNjFJS0NBZ1pBVW5IK21VM01NWmFIWUNoQm5KVUR6V09GWmRWZmM1K1pGTGJyV0RlWFB3YnhJcXJMTGZhZVMwaEVCVkdJUlFDRWlab0hRd3RsR1NCeUNDZFlCbDhnOGVnVFRBV29LUU1SQlJCY1p4WWxoemhLZWdxTU9hZ2VFcnNDSFZrazNoWElGb29EZ0hCMUtrSElIVmd6S0I0QURKUS9BMWpBRm1BWWhrUXFBNVRPQnRvY3JLcmdYd1FBOGdjRkl1QUlPOHNRU0E3aGlkdlB3YVFHWlNhQVlIT1VXSkFCaFdXdzJFTUlIOVFhZ1FFUlU0U0FySlhvMFpaTDE4dXZheGVqWHQvRW04eGpWQlhtdkZyMUtWbS9BSjEwdFJlMlhucmFOcWFKdktFM0tIdVViZksxRStWSEIwcTQwL3kzc2RRU3hZNEZIV2VLSkN1blA4VXlEZHFKWmVuVDNudFZWNWpJWUNBaDIwdlQ3aW9QOHRwZjZFMmxmRU13RVJlK3doVjFNSGp3WkI3UEJpQ3hjR1FXd0taS0Q2MmxmR05uUC8xcG9GQUE2MFQ3ckYxVWdjS2QyaWQzS0RlVVMrb0xXVjhEZldBZXBPZnEwMENnUWFiaTl6amNnSlZZVkQ3UFZ6UVVBVUdBUWtiTkpUQklDRGhnd1lUakRZRDZYZVcwOFpLaCtBNHBZa3plbk94WFVidlpjV3o3RTh5a1JNbklIR1gxWFBsKzFtMnZQWXBMKzJxZGI4Q0RBQVJsS0ZFei9aVmtBQUFBQUJKUlU1RXJrSmdnZz09KTtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRkLFxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRoIHtcblx0YmFja2dyb3VuZDogIzBhMGEwYTtcblx0Ym9yZGVyOiAxcHggc29saWQgIzIyMjtcblx0Y29sb3I6ICM5OTk7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0aCB7XG5cdGJhY2tncm91bmQ6ICMwZTBlMGU7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfdG9kYXkge1xuXHRjb2xvcjogI2NjNTUwMDtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9oaWdobGlnaHRlZF9kZWZhdWx0IHtcblx0YmFja2dyb3VuZDogI2ZmZTlkMjtcblx0Ym94LXNoYWRvdzogI2ZmYjg3MSAwIDFweCA0cHggMCBpbnNldDtcblx0Y29sb3I6IzAwMDtcbn1cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfaGlnaGxpZ2h0ZWRfbWludCB7XG5cdGJhY2tncm91bmQ6ICNjMWZmYzk7XG5cdGJveC1zaGFkb3c6ICMwMGRkMWMgMCAxcHggNHB4IDAgaW5zZXQ7XG5cdGNvbG9yOiMwMDA7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfZGVmYXVsdCxcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfY3VycmVudCxcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3ggPmRpdiA+ZGl2Lnhkc29mdF9jdXJyZW50IHtcblx0YmFja2dyb3VuZDogI2NjNTUwMDtcblx0Ym94LXNoYWRvdzogI2IwM2UwMCAwIDFweCAzcHggMCBpbnNldDtcblx0Y29sb3I6ICMwMDA7XG59XG5cbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0ZDpob3Zlcixcbi54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3ggPmRpdiA+ZGl2OmhvdmVyIHtcblx0Y29sb3I6ICMwMDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogIzAwN2ZmZiAhaW1wb3J0YW50O1xufVxuXG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfY2FsZW5kYXIgdGgge1xuXHRjb2xvcjogIzY2Njtcbn1cblxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NvcHlyaWdodCB7IGNvbG9yOiAjMzMzICFpbXBvcnRhbnQgfVxuLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NvcHlyaWdodCBhIHsgY29sb3I6ICMxMTEgIWltcG9ydGFudCB9XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfY29weXJpZ2h0IGE6aG92ZXIgeyBjb2xvcjogIzU1NSAhaW1wb3J0YW50IH1cblxuLnhkc29mdF9kYXJrIC54ZHNvZnRfdGltZV9ib3gge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMzMzO1xufVxuXG4ueGRzb2Z0X2RhcmsgLnhkc29mdF9zY3JvbGxiYXIgPi54ZHNvZnRfc2Nyb2xsZXIge1xuXHRiYWNrZ3JvdW5kOiAjMzMzICFpbXBvcnRhbnQ7XG59XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfc2F2ZV9zZWxlY3RlZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZGRkZCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBjb2xvcjogIzQ1NDU1MTtcbiAgICBmb250LXNpemU6IDEzcHg7XG59XG4ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC5ibHVlLWdyYWRpZW50LWJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5OiBcIm11c2VvLXNhbnNcIiwgXCJCb29rIEFudGlxdWFcIiwgc2Fucy1zZXJpZjtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRmb250LXdlaWdodDogMzAwO1xuXHRjb2xvcjogIzgyODc4Yztcblx0aGVpZ2h0OiAyOHB4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmc6IDRweCAxN3B4IDRweCAzM3B4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAjZDdkOGRhO1xuXHRiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmYgMCUsICNmNGY4ZmEgNzMlKTtcblx0LyogRkYzLjYrICovXG5cdGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMCUsICNmZmYpLCBjb2xvci1zdG9wKDczJSwgI2Y0ZjhmYSkpO1xuXHQvKiBDaHJvbWUsU2FmYXJpNCsgKi9cblx0YmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmIDAlLCAjZjRmOGZhIDczJSk7XG5cdC8qIENocm9tZTEwKyxTYWZhcmk1LjErICovXG5cdGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmYgMCUsICNmNGY4ZmEgNzMlKTtcblx0LyogT3BlcmEgMTEuMTArICovXG5cdGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmIDAlLCAjZjRmOGZhIDczJSk7XG5cdC8qIElFMTArICovXG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmZmYgMCUsICNmNGY4ZmEgNzMlKTtcblx0LyogVzNDICovXG5cdGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KCBzdGFydENvbG9yc3RyPScjZmZmJywgZW5kQ29sb3JzdHI9JyNmNGY4ZmEnLEdyYWRpZW50VHlwZT0wICk7XG4vKiBJRTYtOSAqL1xufVxuLnhkc29mdF9kYXRldGltZXBpY2tlciAuYmx1ZS1ncmFkaWVudC1idXR0b246aG92ZXIsIC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLmJsdWUtZ3JhZGllbnQtYnV0dG9uOmZvY3VzLCAueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC5ibHVlLWdyYWRpZW50LWJ1dHRvbjpob3ZlciBzcGFuLCAueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC5ibHVlLWdyYWRpZW50LWJ1dHRvbjpmb2N1cyBzcGFuIHtcbiAgY29sb3I6ICM0NTQ1NTE7XG4gIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y0ZjhmYSAwJSwgI0ZGRiA3MyUpO1xuICAvKiBGRjMuNisgKi9cbiAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSwgI2Y0ZjhmYSksIGNvbG9yLXN0b3AoNzMlLCAjRkZGKSk7XG4gIC8qIENocm9tZSxTYWZhcmk0KyAqL1xuICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmNGY4ZmEgMCUsICNGRkYgNzMlKTtcbiAgLyogQ2hyb21lMTArLFNhZmFyaTUuMSsgKi9cbiAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y0ZjhmYSAwJSwgI0ZGRiA3MyUpO1xuICAvKiBPcGVyYSAxMS4xMCsgKi9cbiAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmNGY4ZmEgMCUsICNGRkYgNzMlKTtcbiAgLyogSUUxMCsgKi9cbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2Y0ZjhmYSAwJSwgI0ZGRiA3MyUpO1xuICAvKiBXM0MgKi9cbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoIHN0YXJ0Q29sb3JzdHI9JyNmNGY4ZmEnLCBlbmRDb2xvcnN0cj0nI0ZGRicsR3JhZGllbnRUeXBlPTAgKTtcbiAgLyogSUU2LTkgKi9cbn1cbiIsCgkJIi5kcm9wZG93biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwOyB9XG5cbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgbWluLXdpZHRoOiB0b1JlbSgyNTApO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgZm9udC1zaXplOiAkZnMtc207XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJsYWNrIHtcbiAgICAgIHRvcDogbm9uZTsgfVxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgICAmLmRhcmsge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktNzAwO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JleS04MDA7XG4gICAgICAuZGl2aWRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsgfVxuXG4gICAgICAuZHJvcGRvd24tbGluayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTcwMDtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktODAwO1xuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7IH1cbiAgICAgICAgaSB7XG4gICAgICAgICAgY29sb3I6ICR3aGl0ZTsgfSB9IH1cblxuXG4gICAgJi5wdWxsLXJpZ2h0IHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbGVmdDogYXV0bzsgfVxuXG4gICAgLmRyb3Bkb3duLWxpbmsge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICBjb2xvcjogJGZjLWxpZ2h0O1xuICAgICAgcGFkZGluZzogJGd1dHRlci14cyAkZ3V0dGVyLXNtO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kIDAuM3MsIGNvbG9yIDAuM3MpO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnktMTAwO1xuICAgICAgICBjb2xvcjogJGZjOyB9XG5cbiAgICAgIGkge1xuICAgICAgICBjb2xvcjogJGdyZXktNTAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsgfSB9XG5cbiAgICAucHJvZmlsZSB7XG4gICAgICBjb2xvcjogJGZjLWxpZ2h0O1xuICAgICAgcGFkZGluZzogMTVweCAxMHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG5cbiAgICAgIGltZyB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7IH1cblxuICAgICAgc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4OyB9IH1cblxuICAgIC5kaXZpZGVyIHtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LTEwMDsgfVxuXG4gICAgLnN1Yml0ZW0ge1xuICAgICAgLmRyb3Bkb3duLWxpbmsge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0KSB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4OyB9IH1cbiAgICAgIGkge1xuICAgICAgICBmb250LXNpemU6IDZweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfSB9XG5cbiAgICBmb3JtIHtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAuZm9ybS1pbnB1dHMge1xuICAgICAgICBwYWRkaW5nOiAwOyB9XG4gICAgICAuZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZzogMTBweCAwIDAgMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsgfSB9IH0gfVxuXG4uYXBwbGljYXRpb24tc2VsZWN0b3Ige1xuICAuZHJvcGRvd24tbWVudSB7XG4gICAgd2lkdGg6IDMyMHB4OyB9IH1cbiIsCgkJIi5mb3JtLWdyb3VwLXRvZ2dsZSB7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG5cbiAgJi5oaWRkZW4tY29udGVudCB7XG4gICAgbGFiZWwgaSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDE4MGRlZykpOyB9XG4gICAgLmZvcm0tZ3JvdXAtaW5wdXQge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbiAgLmZvcm0tZ3JvdXAge1xuICAgIGxhYmVsIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDsgfSB9IH0gfVxuXG4uZ3JvdXBlZF9zZWxlY3Qge1xuICAubXMtc2VsZWN0aW9uIHtcbiAgICAubXMtbGlzdCB7XG4gICAgICBoZWlnaHQ6IDMwMHB4OyB9IH1cbiAgLm1zLXNlbGVjdGFibGUge1xuICAgIC5tcy1saXN0IHtcbiAgICAgIGhlaWdodDogMzAwcHg7IH1cbiAgICAubXMtb3B0Z3JvdXAtbGFiZWwge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAn4pa2JztcbiAgICAgICAgZm9udC1zaXplOiA4cHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7IH1cbiAgICAgIH4gbGkge1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6ICfilrwnOyB9XG4gICAgICAgIH4gbGkge1xuICAgICAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICAgICAgICAmLm1zLXNlbGVjdGVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfSB9IH0gfSB9XG4iLAoJCSJmb3JtIHtcbiAgLy8gRXJyb3JzXG5cbiAgLmVycm9yX25vdGlmaWNhdGlvbixcbiAgLmVycm9yX25vdGlmaWNhdGlvbnMgbGkge1xuICAgIGZvbnQ6IDYwMCAxMXB4LzE2cHggJGZvbnQtbWFpbjtcbiAgICBjb2xvcjogJGNvbG9yLWRhbmdlci03MDA7XG4gICAgbWFyZ2luOiAxMHB4OyB9XG4gIC5lcnJvcl9ub3RpZmljYXRpb25zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OyB9XG5cbiAgLmFsZXJ0IHtcbiAgICBtYXJnaW46IDAgMCAkZ3V0dGVyO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH0gfSB9XG5cbi8vIEZvcm0gZWxlbWVudHNcblxuaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGJ1dHRvbiwgLndpdGgtcHJlZml4IC5mb3JtLWNvbnRyb2wtd3JhcHBlciwgLndpdGgtc3VmZml4IC5mb3JtLWNvbnRyb2wtd3JhcHBlciwgLlN0cmlwZUVsZW1lbnQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgZm9udC1mYW1pbHk6ICRmb250LXRleHRzO1xuICBmb250LXdlaWdodDogJGZ3LXJlZ3VsYXI7XG4gIGZvbnQtc2l6ZTogJGZzLXNtO1xuICBvdXRsaW5lOiBub25lO1xuICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJvcmRlci1jb2xvciAwLjJzKTtcblxuICAmOmZvY3VzLCAmLmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDsgfVxuXG4gICYuZnVsbC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlOyB9XG5cbiAgLmNvbCAmIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH0gfVxuXG5pbnB1dCwgdGV4dGFyZWEsIC53aXRoLXByZWZpeCAuZm9ybS1jb250cm9sLXdyYXBwZXIsIC53aXRoLXN1ZmZpeCAuZm9ybS1jb250cm9sLXdyYXBwZXIsIC5TdHJpcGVFbGVtZW50IHtcbiAgbWF4LXdpZHRoOiAkZmllbGQtd2lkdGg7XG4gIHBhZGRpbmc6ICRndXR0ZXIteHM7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IG5vbmU7IH0gfVxuXG5pbnB1dCB7XG4gICYuaW5wdXQtbWluaSB7XG4gICAgd2lkdGg6IDEwMHB4ICFpbXBvcnRhbnQ7IH1cbiAgJi5pbnB1dC1zbWFsbCB7XG4gICAgd2lkdGg6IDIwMHB4ICFpbXBvcnRhbnQ7IH1cbiAgJi5pbnB1dC1iaWcge1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbiAgJltkaXNhYmxlZF0ge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJlaWdlLTEwMDsgfSB9XG5cbnRleHRhcmVhIHtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIG1heC13aWR0aDogNzAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiA3MHB4O1xuICAmLnRleHRhcmVhLW1lZGl1bSB7XG4gICAgbWluLWhlaWdodDogMTEwcHg7IH1cbiAgJi50ZXh0YXJlYS1iaWcge1xuICAgIG1pbi1oZWlnaHQ6IDE1MHB4O1xuICAgIG1heC13aWR0aDogMTAwJTsgfSB9XG5cbmlucHV0W3R5cGU9J3RleHQnXSxcbmlucHV0W3R5cGU9J2VtYWlsJ10sXG5pbnB1dFt0eXBlPSd0ZWwnXSxcbmlucHV0W3R5cGU9J3VybCddLFxuaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbmlucHV0Om5vdChbdHlwZV0pLFxuaW5wdXRbdHlwZT0ndGV4dCddLFxuaW5wdXRbdHlwZT0nZW1haWwnXSxcbmlucHV0W3R5cGU9J3RlbCddLFxuaW5wdXRbdHlwZT0ndXJsJ10sXG5pbnB1dFt0eXBlPSdwYXNzd29yZCddLFxudGV4dGFyZWEge1xuICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCkge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBmb250LXNpemU6IDE1cHg7IC8vIGF2b2lkIHpvb21pbmcgb24gZm9jdXMgZm9yIFNhZmFyaSBpT1NcbiAgICBtaW4td2lkdGg6IGF1dG87IH0gfVxuXG5pbnB1dFt0eXBlPSdmaWxlJ10ge1xuICBib3JkZXI6IG5vbmU7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7IH1cblxuc2VsZWN0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6ICRndXR0ZXIteHM7IH1cblxuLy8gU3RyaXBlXG4uU3RyaXBlRWxlbWVudCB7XG4gIHBhZGRpbmc6IHtcbiAgICB0b3A6IDEzcHg7XG4gICAgYm90dG9tOiA3cHg7IH1cbiAgJi0tZm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWluZm8tNTAwOyB9XG4gICYtLWludmFsaWQge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWRhbmdlci03MDA7IH0gfVxuXG4vLyBTaW1wbGUgZm9ybVxuXG4uZm9ybS1pbnB1dHMge1xuICBwYWRkaW5nOiAwICRndXR0ZXItbGc7XG4gIG1hcmdpbjogMCAwICRndXR0ZXI7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLWxnOyB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICBwYWRkaW5nOiAwIDE1cHg7IH0gfVxuXG4uZm9ybS1pbnB1dHMtaW5saW5lIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gIG1hcmdpbi1ib3R0b206ICRndXR0ZXI7XG5cbiAgLmZvcm0tZ3JvdXAge1xuICAgIEBpbmNsdWRlIGZsZXgoMSAxIDApO1xuICAgIG1hcmdpbi1yaWdodDogJGd1dHRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cblxuLmZvcm0tZ3JvdXAge1xuICBtYXJnaW46IDAgMCAkZ3V0dGVyO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4gICYuY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpOyB9XG5cbiAgJi5zZWxlY3QgLmZvcm0tY29udHJvbC13cmFwcGVyLnd1aS1zZWxlY3Qtd3JhcHBlciB7XG4gICAgJjphZnRlciB7XG4gICAgICB0b3A6IHRvUmVtKDIwKTsgfVxuXG4gICAgd3VpLXNlbGVjdCB7XG4gICAgICBpbnB1dCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci1jb2xvcjsgfVxuICAgICAgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9IH1cblxuICAmLmRhdGV0aW1lIHtcbiAgICBpbnB1dCB7XG4gICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyOyB9IH1cbiAgJi5jaGVja2JveC1pbnB1dCB7XG4gICAgJi54bCB7XG4gICAgICAuaWNoZWNrYm94IHtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7IH0gfVxuICAgICAgbGFiZWwge1xuICAgICAgICBsaW5lLWhlaWdodDogMjRweDsgfSB9XG4gICAgLmljaGVja2JveCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwOyB9XG4gICAgaW5wdXQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBAaW5jbHVkZSBhcHBlYXJhbmNlKG5vbmUpOyB9XG4gICAgbGFiZWwge1xuICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7IH0gfVxuXG4gICYuYm9vbGVhbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG5cbiAgJi50ZXh0LnNtYWxsIHtcbiAgICAuQ29kZU1pcnJvciwgLkNvZGVNaXJyb3Itc2Nyb2xsIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDcwcHggIWltcG9ydGFudDsgfSB9XG5cbiAgJi5hdHRhY2hlZC1pbWFnZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIC5yZW1vdmUtaW1hZ2Uge1xuICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgbWFyZ2luLXRvcDogMTBweDsgfVxuICAgIGltZyB7XG4gICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICAgIG1heC13aWR0aDogMzAwcHg7IH0gfVxuICAmLmxlZnQtYXR0YWNoZWQtaW1hZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDExMHB4O1xuICAgIC5mb3JtLWdyb3VwIHtcbiAgICAgIG1hcmdpbjogMDsgfVxuICAgIC5hdHRhY2hlZC1pbWFnZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcGFkZGluZzogMCAxNXB4O1xuICAgICAgaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwcHg7XG4gICAgICAgIG1heC13aWR0aDogMTAwcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICZbc3JjPVwiXCJdIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgICAgIC5ub25lIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGdyZXktMTAwO1xuICAgICAgICBoZWlnaHQ6IDQwcHg7IH0gfVxuICAgID4gLmZvcm0tZ3JvdXAge1xuICAgICAgbWFyZ2luLWxlZnQ6IDE0NXB4OyB9IH1cbiAgJi5oYXMtZXJyb3Ige1xuICAgIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfVxuICAgIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0IHtcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWRhbmdlci03MDA7IH1cbiAgICBzcGFuLmhlbHAtYmxvY2sge1xuICAgICAgY29sb3I6ICRjb2xvci1kYW5nZXItNzAwO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIHBhZGRpbmctbGVmdDogNXB4OyB9XG4gICAgJi50ZXh0IHNwYW4uaGVscC1ibG9jayB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbiAgJi5vcmdhbml6YXRpb25fc2x1ZyB7XG4gICAgaW5wdXQge1xuICAgICAgd2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7IH1cbiAgICAuaGVscC1ibG9jayB7XG4gICAgICBmb250LXNpemU6IDEzcHg7IH0gfVxuXG4gICYuY2hlY2tfYm94ZXMge1xuICAgIC5mb3JtLWNvbnRyb2wtd3JhcHBlciB7XG4gICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICAgIEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcbiAgICAgIG1hcmdpbi10b3A6ICRndXR0ZXItc207IH1cblxuICAgIC5jaGVja2JveCB7XG4gICAgICBAaW5jbHVkZSBmbGV4KDEgMSA1MCUpO1xuICAgICAgcGFkZGluZzogMCAkZ3V0dGVyLXhzICRndXR0ZXIteHMgMDtcblxuICAgICAgbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogJGZ3LXJlZ3VsYXI7IH0gfSB9XG5cbiAgJi5yYWRpb19idXR0b25zIHtcbiAgICAuZm9ybS1jb250cm9sLXdyYXBwZXIge1xuICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgICBAaW5jbHVkZSBmbGV4LXdyYXAod3JhcCk7XG4gICAgICBtYXJnaW4tdG9wOiAkZ3V0dGVyLXNtOyB9XG5cbiAgICBzcGFuLnJhZGlvIHtcbiAgICAgIEBpbmNsdWRlIGZsZXgoMSAxIDUwJSk7XG4gICAgICBwYWRkaW5nOiAwICRndXR0ZXIteHMgJGd1dHRlci14cyAwO1xuXG4gICAgICBsYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZnctcmVndWxhcjsgfSB9IH1cblxuICAmW2NsYXNzKj1cIm9yZ2FuaXphdGlvbl9tZWRpYVwiXS5oYXMtZXJyb3Ige1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuICAmW3NyYz1cIlwiXSB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuXG4gICYuaW1hZ2UtdXBsb2FkIHtcbiAgICBpbnB1dCB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgbGFiZWwge1xuICAgICAgQGV4dGVuZCAuYnRuO1xuICAgICAgQGV4dGVuZCAuYnRuLXNtOyB9XG4gICAgJiNsb2dvdHlwZSB7XG4gICAgICBsYWJlbCB7XG4gICAgICAgIEBleHRlbmQgLmJ0bjtcbiAgICAgICAgQGV4dGVuZCAuYnRuLXNlY29uZGFyeSAhb3B0aW9uYWw7IH0gfSB9XG5cbiAgJi53aXRoLXByZWZpeCwgJi53aXRoLXN1ZmZpeCB7XG4gICAgJi5oYXMtZXJyb3Ige1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgLmZvcm0tY29udHJvbC13cmFwcGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfVxuXG4gICAgICBwLmhlbHAtYmxvY2sge1xuICAgICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICAgICAgY29sb3I6ICRncmV5LTQwMDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfSB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgIC5mb3JtLWNvbnRyb2wtd3JhcHBlciB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiZWlnZS0xMDA7IH1cblxuICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7IH0gfVxuXG4gICAgLmZvcm0tY29udHJvbC13cmFwcGVyIHtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBmbGV4KG5vbmUpO1xuICAgICAgICBtYXJnaW46ICRndXR0ZXIteHhzO1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICAgICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTtcbiAgICAgICAgcGFkZGluZzogJGd1dHRlci14eHM7XG4gICAgICAgIGNvbG9yOiAkZmMteGxpZ2h0O1xuICAgICAgICBmb250LXNpemU6ICRmcy1zbTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJlaWdlLTIwMDtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmdy1yZWd1bGFyOyB9IH1cblxuICAgIGlucHV0IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgoMSAxIGF1dG8pO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgcGFkZGluZzogJGd1dHRlci14cztcbiAgICAgIGJvcmRlcjogbm9uZTsgfSB9XG5cbiAgJi53aXRoLXByZWZpeCB7XG4gICAgaW5wdXQge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwOyB9IH1cblxuICBsYWJlbCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTtcbiAgICBjb2xvcjogJGZjLXhsaWdodDtcbiAgICBmb250LXNpemU6ICRmcy1zbTtcbiAgICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTtcbiAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLXh4cztcblxuICAgICYuYnRuIHtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleChpbmxpbmUtZmxleCk7IH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbiAgICBpbWcge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIG1hcmdpbi1yaWdodDogNXB4OyB9XG5cbiAgICBhIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGNvbG9yOiAkZmM7XG4gICAgICBtYXJnaW46IC40ZW07XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwO1xuICAgICAgICBjb250ZW50OiBcIiBcIjsgfVxuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuICAgICYucmVxdWlyZWQgYWJicixcbiAgICBhYmJyLnJlcXVpcmVkIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfSB9XG5cbiAgLmhlbHAtYmxvY2sge1xuICAgIGNvbG9yOiAkZmMteHhsaWdodDtcbiAgICBmb250LXNpemU6ICRmcy14cztcbiAgICBtYXJnaW4tdG9wOiAkZ3V0dGVyLXh4cztcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgYSB7XG4gICAgICBjb2xvcjogJGZjLXh4bGlnaHQ7XG4gICAgICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciAwLjJzKTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkZ3JleS01MDA7IH0gfVxuXG4gICAgJi5lcnJvci1tZXNzYWdlIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItZGFuZ2VyLTUwMDsgfSB9XG5cbiAgLmlucHV0LXdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaW5wdXQge1xuICAgICAgJlt0eXBlPSdzZWFyY2gnXSwgJlt0eXBlPSd0ZXh0J10ge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OyB9IH1cbiAgICBpIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgY29sb3I6ICRncmV5LTUwMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTsgfSB9XG5cbiAgLm1pbmljb2xvcnMge1xuICAgIC5taW5pY29sb3JzLWlucHV0IHtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIHBhZGRpbmctbGVmdDogMzRweDsgfVxuICAgIC5taW5pY29sb3JzLXN3YXRjaCB7XG4gICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICB3aWR0aDogMjRweDsgfVxuICAgIC5taW5pY29sb3JzLXBhbmVsIHtcbiAgICAgIHRvcDogLTExNXB4ICFpbXBvcnRhbnQ7XG4gICAgICBsZWZ0OiAxMDBweCAhaW1wb3J0YW50OyB9IH0gfVxuXG4uZm9ybS1hY3Rpb25zIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LTMwMDtcbiAgcGFkZGluZzogMjBweDsgfVxuXG4uYXV0b2NvbXBsZXRlIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgbWF4LXdpZHRoOiA0MDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogbm9uZTsgfVxuXG4gIC5hdXRvY29tcGxldGUtaXRlbSB7XG4gICAgcGFkZGluZzogJGd1dHRlci14eHMgJGd1dHRlci14cztcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyB9XG5cbiAgICAmLmFjdGl2ZSwgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnktMTAwOyB9XG5cbiAgICBlbSwgc3Ryb25nIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7IH0gfSB9XG5cbi5mb3JtLWNvbnRyb2wtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuc2VsZWN0LndpdGhvdXQtaWNvbiAmIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4gIC5zZWxlY3QuYXV0b2hlaWdodCAmIHtcbiAgICBzZWxlY3Qge1xuICAgICAgaGVpZ2h0OiBhdXRvOyB9IH1cblxuICAuc2VsZWN0IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiB0b1JlbSgyNSk7IH1cblxuICAuc2VsZWN0ICYge1xuICAgIG1heC13aWR0aDogJGZpZWxkLXdpZHRoO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICByaWdodDogJGd1dHRlci14cztcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1pY29ucztcbiAgICAgIGZvbnQtc2l6ZTogJGZzLXh4cztcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgIGNvbnRlbnQ6ICdcXDEzMic7IH0gfVxuXG4gIC5zZWxlY3QuZGlzYWJsZWQgJiB7XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICRiZWlnZS03MDA7IH0gfVxuXG4gICYud2l0aC1pY29uLWJlZm9yZSwgJi53aXRoLWljb24tYWZ0ZXIge1xuICAgIC5mb3JtLWNvbnRyb2wtaWNvbiB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHdpZHRoOiB0b1JlbSgyMCk7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBmb250LXNpemU6ICRmcztcbiAgICAgIGNvbG9yOiAkZmMteGxpZ2h0O1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG5cbiAgICAgIGkge1xuICAgICAgICBkaXNwbGF5OiBibG9jazsgfVxuXG4gICAgICAmLmljb24tYmVmb3JlIHtcbiAgICAgICAgbGVmdDogJGd1dHRlci14czsgfVxuXG4gICAgICAmLmljb24tYWZ0ZXIge1xuICAgICAgICByaWdodDogJGd1dHRlci14czsgfSB9XG5cbiAgICAuZm9ybS1jb250cm9sLXJlc2V0IHtcbiAgICAgIHdpZHRoOiB0b1JlbSgyMCk7XG4gICAgICBoZWlnaHQ6IHRvUmVtKDIwKTtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTtcbiAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChjZW50ZXIpO1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIC4xKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGZvbnQtc2l6ZTogdG9SZW0oOCk7IH0gfVxuXG4gICYud2l0aC1pY29uLWJlZm9yZSB7XG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoI3skZ3V0dGVyLXhzfSArICN7JGd1dHRlci14eHN9ICsgI3t0b1JlbSgyMCl9KTsgfSB9XG5cbiAgJi53aXRoLWljb24tYWZ0ZXIge1xuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgcGFkZGluZy1yaWdodDogY2FsYygjeyRndXR0ZXIteHN9ICsgI3skZ3V0dGVyLXh4c30gKyAje3RvUmVtKDIwKX0pOyB9IH1cblxuICAuZGlzYWJsZWQtaWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgbWFyZ2luLWxlZnQ6ICRndXR0ZXIteHM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGZvbnQtc2l6ZTogJGZzO1xuICAgIGNvbG9yOiAkZmMteHhsaWdodDsgfSB9XG5cbmZvcm0uZm9ybS1ob3Jpem9udGFsIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgLmZvcm0tZ3JvdXAge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgICBsYWJlbCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMTM1cHg7IH1cbiAgICBpbnB1dFt0eXBlPSd0ZXh0J10ge1xuICAgICAgd2lkdGg6IGluaXRpYWw7IH1cbiAgICAuaGVscC1ibG9jayB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0gfSB9XG5cbmZvcm0uZm9ybS1oaWRkZW4tYnV0dG9ucyB7XG4gIC5mb3JtLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4uQ29kZU1pcnJvciB7XG4gIC5jbS1jb21tZW50IHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAwIDAuMjVlbTsgfSB9XG5cbi5nLXJlY2FwdGNoYSB7XG4gIG1hcmdpbi1ib3R0b206ICRndXR0ZXI7XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cblxuLmNvbnRyb2wtbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgY29sb3I6ICRib2R5LWNvbG9yO1xuICBmb250LXNpemU6ICRmcy1zbTtcbiAgZm9udC13ZWlnaHQ6ICRmdy1tZWRpdW07XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBmb250LWZhbWlseTogJGZvbnQtdGV4dHM7XG4gIG1hcmdpbi1ib3R0b206ICRndXR0ZXIteHM7IH1cbiIsCgkJIi8vIGhpZGUgZ29vZ2xlIHBsYWNlcyBcInBvd2VyZWQgYnkgZ29vZ2xlXCIgbWVzc2FnZVxuLnBhYy1jb250YWluZXI6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuIiwKCQkiLmZsZXgtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGZsZXgtc3RhcnQpO1xuXG4gICYuc3RyZXRjaCB7XG4gICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoc3RyZXRjaCk7IH0gfVxuXG4uZ3JpZCB7XG4gIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICBAaW5jbHVkZSBmbGV4LXdyYXAod3JhcCk7XG5cbiAgLmNvbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggNSB7XG4gICAgJi53aXRoLSN7JGl9LWNvbHVtbnMge1xuICAgICAgPiAuY29sIHtcbiAgICAgICAgQGluY2x1ZGUgZmxleCgwIDAgYXV0byk7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAjeyRpfSk7IH1cblxuICAgICAgPiAuY29sLWZ1bGwge1xuICAgICAgICB3aWR0aDogMTAwJTsgfVxuXG4gICAgICA+IC5jb2wtZG91YmxlIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoMjAwJSAvICN7JGl9KTsgfVxuXG4gICAgICAmLndpdGgtc2VwYXJhdG9yIHtcbiAgICAgICAgPiAuY29sOm50aC1jaGlsZCgjeyRpfW4pIHtcbiAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwOyB9IH1cblxuICAgICAgICA+IC5jb2w6bnRoLWNoaWxkKCN7JGl9bisxKSB7XG4gICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlICogI3skaX0pO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICBjb250ZW50OiBcIiBcIjsgfSB9XG5cbiAgICAgICAgPiAuY29sOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9IH0gfSB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA1IHtcbiAgICAmLndpdGgtI3skaX0tY29sdW1ucy10YWJsZXQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQpIHtcbiAgICAgICAgPiAuY29sIHtcbiAgICAgICAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gI3skaX0pOyB9XG4gICAgICAgID4gLmNvbC1kb3VibGUge1xuICAgICAgICAgIHdpZHRoOiBjYWxjKDIwMCUgLyAjeyRpfSk7IH1cbiAgICAgICAgPiAuY29sLWZ1bGwge1xuICAgICAgICAgIHdpZHRoOiAxMDAlOyB9IH0gfSB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA1IHtcbiAgICAmLndpdGgtI3skaX0tY29sdW1ucy1tb2JpbGUge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICAgICAgPiAuY29sIHtcbiAgICAgICAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC8gI3skaX0pOyB9XG5cbiAgICAgICAgPiAuY29sLWRvdWJsZSB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMjAwJSAvICN7JGl9KTsgfVxuICAgICAgICA+IC5jb2wtZnVsbCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7IH1cblxuICAgICAgICAmLndpdGgtZ3V0dGVyLCAmLndpdGgtZ3V0dGVyLWxnIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLSN7JGd1dHRlcn0gIWltcG9ydGFudDtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0jeyRndXR0ZXJ9ICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICA+IC5jb2wge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkZ3V0dGVyICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkZ3V0dGVyICFpbXBvcnRhbnQ7IH0gfVxuXG4gICAgICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgICAgID4gLmNvbDpudGgtY2hpbGQoI3skaX1uKSB7XG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7IH0gfVxuXG4gICAgICAgICAgPiAuY29sOm50aC1jaGlsZCgjeyRpfW4rMSkge1xuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgIGxlZnQ6ICRndXR0ZXI7XG4gICAgICAgICAgICAgIHdpZHRoOiBjYWxjKCgxMDAlICogI3skaX0pIC0gKCN7JGd1dHRlcn0gKiAyKSk7XG4gICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IFwiIFwiOyB9IH1cblxuICAgICAgICAgID4gLmNvbDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBub25lOyB9IH0gfSB9IH0gfVxuXG4gICYud2l0aC1ndXR0ZXIge1xuICAgIG1hcmdpbjogLSN7JGd1dHRlcn07XG5cbiAgICAmID4gLmNvbCB7XG4gICAgICBwYWRkaW5nOiAkZ3V0dGVyOyB9XG5cbiAgICAmLndpdGgtc2VwYXJhdG9yIHtcbiAgICAgICYgPiAuY29sOjphZnRlciB7XG4gICAgICAgIHRvcDogJGd1dHRlcjtcbiAgICAgICAgYm90dG9tOiAkZ3V0dGVyOyB9IH0gfVxuXG4gICYud2l0aC1ndXR0ZXItc20ge1xuICAgIG1hcmdpbjogLSN7JGd1dHRlci1zbX0ge1xuICAgICAgYm90dG9tOiAwOyB9XG5cbiAgICAmID4gLmNvbCB7XG4gICAgICBwYWRkaW5nOiAkZ3V0dGVyLXNtOyB9XG5cbiAgICAmLndpdGgtc2VwYXJhdG9yIHtcbiAgICAgICYgPiAuY29sOjphZnRlciB7XG4gICAgICAgIHRvcDogJGd1dHRlci1zbTtcbiAgICAgICAgYm90dG9tOiAkZ3V0dGVyLXNtOyB9IH0gfVxuXG4gICYud2l0aC1ndXR0ZXIteHMge1xuICAgIG1hcmdpbjogLSN7JGd1dHRlci14c307XG5cbiAgICAmID4gLmNvbCB7XG4gICAgICBwYWRkaW5nOiAkZ3V0dGVyLXhzOyB9XG5cbiAgICAmLndpdGgtc2VwYXJhdG9yIHtcbiAgICAgICYgPiAuY29sOjphZnRlciB7XG4gICAgICAgIHRvcDogJGd1dHRlci14cztcbiAgICAgICAgYm90dG9tOiAkZ3V0dGVyLXhzOyB9IH0gfVxuXG4gICYud2l0aC1ndXR0ZXItbGcge1xuICAgIG1hcmdpbjogLSN7JGd1dHRlci1sZ307XG5cbiAgICAmID4gLmNvbCB7XG4gICAgICBwYWRkaW5nOiAkZ3V0dGVyLWxnOyB9XG5cbiAgICAmLndpdGgtc2VwYXJhdG9yIHtcbiAgICAgICYgPiAuY29sOjphZnRlciB7XG4gICAgICAgIHRvcDogJGd1dHRlci1sZztcbiAgICAgICAgYm90dG9tOiAkZ3V0dGVyLWxnOyB9IH0gfVxuXG4gICYud2l0aC1ndXR0ZXIteGwge1xuICAgIG1hcmdpbjogLSN7JGd1dHRlci14bH07XG5cbiAgICAmID4gLmNvbCB7XG4gICAgICBwYWRkaW5nOiAkZ3V0dGVyLXhsOyB9XG5cbiAgICAmLndpdGgtc2VwYXJhdG9yIHtcbiAgICAgICYgPiAuY29sOjphZnRlciB7XG4gICAgICAgIHRvcDogJGd1dHRlci14bDtcbiAgICAgICAgYm90dG9tOiAkZ3V0dGVyLXhsOyB9IH0gfVxuXG4gICYud2l0aC1ndXR0ZXIteHhsIHtcbiAgICBtYXJnaW46IDAgLSN7JGd1dHRlci14eGx9O1xuXG4gICAgJiA+IC5jb2wge1xuICAgICAgcGFkZGluZzogMCAkZ3V0dGVyLXh4bDsgfSB9XG5cbiAgJi53aXRoLXNlcGFyYXRvciB7XG4gICAgJiA+IC5jb2wge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuICAgICAgICBjb250ZW50OiBcIiBcIjsgfSB9IH1cblxuICAmLmFsaWduLWNlbnRlciB7XG4gICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTsgfVxuXG4gICYud2l0aC1jb2x1bW4tcmlnaHQge1xuICAgICYgPiAuY29sIHtcbiAgICAgIEBpbmNsdWRlIGZsZXgobm9uZSk7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICB3aWR0aDogNjUlOyB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAzNSU7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfSB9IH1cblxuICAmLndpdGgtMS1jb2x1bW5zLW1vYmlsZSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblxuICAgICAgJiA+IC5jb2wge1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OyB9IH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlKSB7XG4gICAgICAmLndpdGgtZ3V0dGVyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICYgPiAuY29sIHtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAgJGd1dHRlci1sZztcblxuICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsgfSB9IH1cblxuICAgICAgJi53aXRoLWd1dHRlci1sZyB7XG4gICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAmID4gLmNvbCB7XG4gICAgICAgICAgcGFkZGluZzogMCAwICRndXR0ZXI7XG5cbiAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7IH0gfSB9XG5cbiAgICAgICYud2l0aC1ndXR0ZXIteGwge1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgJiA+IC5jb2wge1xuICAgICAgICAgIHBhZGRpbmc6IDAgMCAkZ3V0dGVyLWxnO1xuXG4gICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwOyB9IH0gfVxuXG4gICAgICAmLndpdGgtZ3V0dGVyLXh4bCB7XG4gICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAmID4gLmNvbCB7XG4gICAgICAgICAgcGFkZGluZzogMCAwICRndXR0ZXItbGc7XG5cbiAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7IH0gfSB9XG5cbiAgICAgICYud2l0aC1zZXBhcmF0b3Ige1xuICAgICAgICAmID4gLmNvbCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGd1dHRlcjtcblxuICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7IH1cblxuICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfSB9IH0gfSB9XG5cbiAgJiA+IC5jb2wtcmlnaHQge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvOyB9IH1cblxuLmNvbC1tZC0xLCAuY29sLW1kLTIsIC5jb2wtbWQtMywgLmNvbC1tZC00LFxuLmNvbC1tZC01LCAuY29sLW1kLTYsIC5jb2wtbWQtNywgLmNvbC1tZC04LFxuLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExIHtcbiAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTsgfVxuXG4uY29sLW1kLTEge1xuICB3aWR0aDogKDEvMTIqMTAwJSk7IH1cbi5jb2wtbWQtMiB7XG4gIHdpZHRoOiAoMi8xMioxMDAlKTsgfVxuLmNvbC1tZC0zIHtcbiAgd2lkdGg6ICgzLzEyKjEwMCUpOyB9XG4uY29sLW1kLTQge1xuICB3aWR0aDogKDQvMTIqMTAwJSk7IH1cbi5jb2wtbWQtNSB7XG4gIHdpZHRoOiAoNS8xMioxMDAlKTsgfVxuLmNvbC1tZC02IHtcbiAgd2lkdGg6ICg2LzEyKjEwMCUpOyB9XG4uY29sLW1kLTcge1xuICB3aWR0aDogKDcvMTIqMTAwJSk7IH1cbi5jb2wtbWQtOCB7XG4gIHdpZHRoOiAoOC8xMioxMDAlKTsgfVxuLmNvbC1tZC05IHtcbiAgd2lkdGg6ICg5LzEyKjEwMCUpOyB9XG4uY29sLW1kLTEwIHtcbiAgd2lkdGg6ICgxMC8xMioxMDAlKTsgfVxuLmNvbC1tZC0xMSB7XG4gIHdpZHRoOiAoMTEvMTIqMTAwJSk7IH1cbiIsCgkJIi5oaWdoY2hhcnRzLXRvb2x0aXAge1xuICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cbiAgLmhpZ2hjaGFydHMtdG9vbHRpcC10aXRsZSB7XG4gICAgYmFja2dyb3VuZDogJGdyZXktMTAwO1xuICAgIGZvbnQtc2l6ZTogJGZzLXhzO1xuICAgIGNvbG9yOiAkZmMtbGlnaHQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDdweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4gIC5oaWdoY2hhcnRzLXRvb2x0aXAtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAwOyB9XG5cbiAgLmhpZ2hjaGFydHMtdG9vbHRpcC1sYWJlbCxcbiAgLmhpZ2hjaGFydHMtdG9vbHRpcC12YWx1ZSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICRmYy1saWdodDtcbiAgICBmb250OiAyMDAgMTBweC8xMXB4ICRmb250LW1haW47XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7IH1cblxuICAuaGlnaGNoYXJ0cy10b29sdGlwLXZhbHVlIHtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7IH0gfVxuXG4uaGlnaGNoYXJ0cy1hcmVhIHtcbiAgZmlsbC1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIHN0b2tlOiAndHJhbnNwYXJlbnQnICFpbXBvcnRhbnQ7IH1cbiIsCgkJIltkYXRhLWhpbnRdOjphZnRlciB7XG4gIGJhY2tncm91bmQ6ICRmYztcbiAgY29sb3I6ICR3aGl0ZTsgfVxuXG4uaGludC0tdG9wOjpiZWZvcmUge1xuICBib3JkZXItdG9wLWNvbG9yOiAkZmM7IH1cbiIsCgkJIi5yZWFjdC1ob3QtbG9hZGVyLWVycm9yLW92ZXJsYXkgPiBkaXYge1xuICB6LWluZGV4OiA5OTk5OyB9XG4iLAoJCSIkY2hlY2tib3gtc2l6ZTogdG9SZW0oMjApO1xuXG4uaWNoZWNrYm94LFxuLmlyYWRpbyB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luOiAwICRndXR0ZXIteHMgMCAwO1xuICBwYWRkaW5nOiAwO1xuICBmbGV4OiBub25lO1xuICB3aWR0aDogJGNoZWNrYm94LXNpemU7XG4gIGhlaWdodDogJGNoZWNrYm94LXNpemU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG5cbiAgaW5wdXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3BhY2l0eTogMDsgfVxuXG4gICY6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbG9yOiAkZmM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uOyB9XG5cbiAgJi5ob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7IH1cblxuICAmLmNoZWNrZWQge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4gICYuZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgQGluY2x1ZGUgb3BhY2l0eSgwLjUpOyB9XG5cbiAgJiArIC5mb3JtLWxhYmVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH0gfVxuXG4uaXJhZGlvIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg1MCUpO1xuICAmOmFmdGVyIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDUwJSk7IH0gfVxuXG4uaWNoZWNrYm94OmFmdGVyIHtcbiAgY29udGVudDogXCJcXDExOVwiO1xuICBmb250LXNpemU6ICRmcy14cztcbiAgZm9udC1mYW1pbHk6ICRmb250LWljb25zO1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5jaGVja2JveC1pbnB1dCBpbnB1dDpjaGVja2VkIHtcbiAgICAmICsgLmljaGVja2JveCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcblxuICAgICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuXG4uYm9vbGVhbiB7XG4gIC5jb250cm9sLWxhYmVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLXh4czsgfVxuXG4gICYuc3dpdGNoIHtcbiAgICAuY29udHJvbC1sYWJlbCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICBsaW5lLWhlaWdodDogMzJweDtcblxuICAgICAgJiArIC5mb3JtLWNvbnRyb2wtd3JhcHBlciB7XG4gICAgICAgIGZsb2F0OiBsZWZ0OyB9IH0gfSB9XG4iLAoJCSJAaW1wb3J0IFwiaW9uLXJhbmdlc2xpZGVyL2Nzcy9pb24ucmFuZ2VTbGlkZXJcIjtcblxuLmlycyB7XG4gIGhlaWdodDogNTBweDsgfVxuXG4uaXJzLXdpdGgtZ3JpZCB7XG4gIGhlaWdodDogNjBweDsgfVxuXG4uaXJzLWxpbmUge1xuICBoZWlnaHQ6IDFweDtcbiAgdG9wOiAzNXB4O1xuICBiYWNrZ3JvdW5kOiAkZ3JleS0yMDA7XG4gIC5pcnMtbGluZS1sZWZ0IHtcbiAgICBoZWlnaHQ6IDJweDsgfVxuICAuaXJzLWxpbmUtbWlkIHtcbiAgICBoZWlnaHQ6IDJweDsgfVxuICAuaXJzLWxpbmUtcmlnaHQge1xuICAgIGhlaWdodDogMnB4OyB9IH1cblxuLmlycy1iYXIge1xuICBoZWlnaHQ6IDJweDtcbiAgdG9wOiAzNXB4O1xuICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeS03MDA7XG4gIC5pcnMtYmFyLWVkZ2Uge1xuICAgIHRvcDogMzVweDtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICB3aWR0aDogOXB4OyB9IH1cblxuLmlycy1zaGFkb3cge1xuICBoZWlnaHQ6IDNweDtcbiAgdG9wOiAzNHB4O1xuICBiYWNrZ3JvdW5kOiAjMDAwOyB9XG5cbi5pcnMtc2xpZGVyIHtcbiAgd2lkdGg6IDEycHg7XG4gIGhlaWdodDogMTJweDtcbiAgdG9wOiAzMHB4O1xuICBjdXJzb3I6IG1vdmU7XG4gIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5LTcwMDtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg1MCUpOyB9XG5cbi5pcnMtbWluLCAuaXJzLW1heCB7XG4gIGNvbG9yOiAkZ3JleS01MDA7XG4gIGZvbnQ6IDE0cHgvMThweCAkZm9udC1tYWluO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgdG9wOiAwO1xuICBwYWRkaW5nOiAxcHggM3B4O1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDRweCk7IH1cblxuLmlycy1mcm9tLCAuaXJzLXRvLCAuaXJzLXNpbmdsZSB7XG4gIGNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IG1vdmU7XG4gIGZvbnQ6IDE0cHgvMThweCAkZm9udC1tYWluO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgcGFkZGluZzogMXB4IDVweDtcbiAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnktNzAwO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDRweCk7IH1cblxuLmlycy1mcm9tOmFmdGVyLCAuaXJzLXRvOmFmdGVyLCAuaXJzLXNpbmdsZTphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJvdHRvbTogLTZweDtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogLTNweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci10b3AtY29sb3I6ICRjb2xvci1wcmltYXJ5LTcwMDsgfVxuXG4uaXJzLWdyaWQtcG9sIHtcbiAgYmFja2dyb3VuZDogI2UxZTRlOTsgfVxuXG4uaXJzLWdyaWQtdGV4dCB7XG4gIGNvbG9yOiAjOTk5OyB9XG4iLAoJCSIvKiBJb24uUmFuZ2VTbGlkZXJcbi8vIGNzcyB2ZXJzaW9uIDIuMC4zXG4vLyDCqSAyMDEzLTIwMTQgRGVuaXMgSW5lc2hpbiB8IElvbkRlbi5jb21cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJhbmdlU2xpZGVyICovXG5cbi5pcnMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7XG4gICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbiAgICAuaXJzLWxpbmUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgICAgICAuaXJzLWxpbmUtbGVmdCwgLmlycy1saW5lLW1pZCwgLmlycy1saW5lLXJpZ2h0IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgIH1cbiAgICAgICAgLmlycy1saW5lLWxlZnQge1xuICAgICAgICAgICAgbGVmdDogMDsgd2lkdGg6IDExJTtcbiAgICAgICAgfVxuICAgICAgICAuaXJzLWxpbmUtbWlkIHtcbiAgICAgICAgICAgIGxlZnQ6IDklOyB3aWR0aDogODIlO1xuICAgICAgICB9XG4gICAgICAgIC5pcnMtbGluZS1yaWdodCB7XG4gICAgICAgICAgICByaWdodDogMDsgd2lkdGg6IDExJTtcbiAgICAgICAgfVxuXG4gICAgLmlycy1iYXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBsZWZ0OiAwOyB3aWR0aDogMDtcbiAgICB9XG4gICAgICAgIC5pcnMtYmFyLWVkZ2Uge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgLmlycy1zaGFkb3cge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGxlZnQ6IDA7IHdpZHRoOiAwO1xuICAgIH1cblxuICAgIC5pcnMtc2xpZGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cbiAgICAgICAgLmlycy1zbGlkZXIuc2luZ2xlIHtcblxuICAgICAgICB9XG4gICAgICAgIC5pcnMtc2xpZGVyLmZyb20ge1xuXG4gICAgICAgIH1cbiAgICAgICAgLmlycy1zbGlkZXIudG8ge1xuXG4gICAgICAgIH1cbiAgICAgICAgLmlycy1zbGlkZXIudHlwZV9sYXN0IHtcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIH1cblxuICAgIC5pcnMtbWluIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cbiAgICAuaXJzLW1heCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuXG4gICAgLmlycy1mcm9tLCAuaXJzLXRvLCAuaXJzLXNpbmdsZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRvcDogMDsgbGVmdDogMDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuLmlycy1ncmlkIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IG5vbmU7XG4gICAgYm90dG9tOiAwOyBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDIwcHg7XG59XG4uaXJzLXdpdGgtZ3JpZCAuaXJzLWdyaWQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuICAgIC5pcnMtZ3JpZC1wb2wge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDsgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDFweDsgaGVpZ2h0OiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgfVxuICAgIC5pcnMtZ3JpZC1wb2wuc21hbGwge1xuICAgICAgICBoZWlnaHQ6IDRweDtcbiAgICB9XG4gICAgLmlycy1ncmlkLXRleHQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDsgbGVmdDogMDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDlweDsgbGluZS1oZWlnaHQ6IDlweDtcbiAgICAgICAgcGFkZGluZzogMCAzcHg7XG4gICAgICAgIGNvbG9yOiAjMDAwO1xuICAgIH1cblxuLmlycy1kaXNhYmxlLW1hc2sge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogYmxvY2s7XG4gICAgdG9wOiAwOyBsZWZ0OiAtMSU7XG4gICAgd2lkdGg6IDEwMiU7IGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjApO1xuICAgIHotaW5kZXg6IDI7XG59XG4ubHQtaWU5IC5pcnMtZGlzYWJsZS1tYXNrIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uaXJzLWRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG59XG5cblxuLmlycy1oaWRkZW4taW5wdXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAwICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAwICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IC05OTk5ICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG4iLAoJCSJjb2RlLCAubGFiZWwge1xuICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoaW5saW5lLWZsZXgpO1xuICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICBmb250LXNpemU6ICRmcy14cztcbiAgcGFkZGluZzogJGd1dHRlci14eHM7XG4gIG1pbi1oZWlnaHQ6IHRvUmVtKDI4KTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAuMSk7XG4gIGNvbG9yOiAkYmVpZ2UtNzAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmVpZ2UtMjAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBmb250LXdlaWdodDogJGZ3LXJlZ3VsYXIgIWltcG9ydGFudDtcblxuICBpOm5vdCg6b25seS1jaGlsZCkge1xuICAgIG1hcmdpbi1yaWdodDogNXB4OyB9XG5cbiAgJi5sYWJlbC1zbWFsbCwgJi5sYWJlbC1zbSB7XG4gICAgZm9udC1zaXplOiAkZnMteHhzO1xuICAgIGhlaWdodDogdG9SZW0oMjIpOyB9XG5cbiAgJi5sYWJlbC1iaWcsICYubGFiZWwtbGcge1xuICAgIGZvbnQtc2l6ZTogJGZzLXNtO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtOyB9XG5cbiAgJi5sYWJlbC1ncmVlbiwgJi5sYWJlbC1zdWNjZXNzIHtcbiAgICBjb2xvcjogJGNvbG9yLXN1Y2Nlc3MtNTAwO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXN1Y2Nlc3MtMjAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zdWNjZXNzLTEwMDsgfVxuXG4gICYubGFiZWwtcmVkLCAmLmxhYmVsLWRhbmdlciB7XG4gICAgY29sb3I6ICRjb2xvci1kYW5nZXItNTAwO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWRhbmdlci01MDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRhbmdlci0xMDA7IH1cblxuICAmLmxhYmVsLWJsdWUsICYubGFiZWwtaW5mbyB7XG4gICAgY29sb3I6ICRjb2xvci1pbmZvLTUwMDtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1pbmZvLTUwMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItaW5mby0xMDA7IH1cblxuICAmLmxhYmVsLW9yYW5nZSwgJi5sYWJlbC13YXJuaW5nIHtcbiAgICBjb2xvcjogJGNvbG9yLXdhcm5pbmctNTAwO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXdhcm5pbmctMjAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13YXJuaW5nLTEwMDsgfVxuXG4gICYubGFiZWwtcHJpbWFyeSB7XG4gICAgY29sb3I6ICRmYztcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7IH1cblxuICAmLmxhYmVsLW1vZGUtbWFuZGF0b3J5IHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeS01MDA7IH1cblxuICAmLmxhYmVsLW1vZGUtb3B0aW9uYWwge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5LTUwMDsgfVxuXG4gICYubGFiZWwtbW9kZS1kaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnktNTAwOyB9XG5cbiAgLmxhYmVscy1saXN0ICYge1xuICAgIG1hcmdpbjogMCAkZ3V0dGVyLXhzICRndXR0ZXIteHMgMDsgfSB9XG5cbi5sYWJlbHMtbGlzdCB7XG4gIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICBAaW5jbHVkZSBmbGV4LXdyYXAod3JhcCk7XG4gIG1hcmdpbi1ib3R0b206IC0jeyRndXR0ZXIteHN9OyB9XG4iLAoJCSJhIHtcbiAgY29sb3I6ICMxOWFlZTU7XG4gIHBhZGRpbmc6IDJweDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IgMC4ycywgYmFja2dyb3VuZCAwLjJzKTtcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICRibGFjaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgaSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH0gfVxuIiwKCQkiQGltcG9ydCBcInNpbXBsZW1kZS9kaXN0L3NpbXBsZW1kZS5taW5cIjtcblxuLkNvZGVNaXJyb3Ige1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJvcmRlci1jb2xvciAwLjJzKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcblxuICAmLkNvZGVNaXJyb3ItZm9jdXNlZCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7IH0gfVxuXG4uQ29kZU1pcnJvciwgLkNvZGVNaXJyb3Itc2Nyb2xsIHtcbiAgY3Vyc29yOiB0ZXh0O1xuICBtaW4taGVpZ2h0OiB0b1JlbSgxNTApICFpbXBvcnRhbnQ7IH1cblxuLmVkaXRvci1wcmV2aWV3IHtcbiAgei1pbmRleDogNTAgIWltcG9ydGFudDtcblxuICBwIHtcbiAgICBtYXJnaW46IDVweCAwO1xuICAgIHBhZGRpbmc6IDA7IH1cblxuICB1bCB7XG4gICAgbWFyZ2luOiA1cHggMCA1cHggMjVweDtcblxuICAgIGxpIHtcbiAgICAgIG1hcmdpbjogMCAwIDVweCAwO1xuICAgICAgbGlzdC1zdHlsZTogY2lyY2xlOyB9IH0gfVxuXG4uZWRpdG9yLXRvb2xiYXIge1xuICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgcGFkZGluZzogJGd1dHRlci14eHM7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgJiwgJjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTsgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnB4OyB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIG1hcmdpbi10b3A6IDJweDsgfVxuXG4gIGEge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG4gICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGNlbnRlcik7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGJvcmRlci1jb2xvciAwLjJzLCBjb2xvciAwLjJzKTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgJjpob3ZlciwgJi5hY3RpdmUge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yOyB9IH1cblxuICAmLmZ1bGxzY3JlZW4ge1xuICAgIHRvcDogNTBweCAhaW1wb3J0YW50OyB9IH1cblxuLkNvZGVNaXJyb3ItZnVsbHNjcmVlbiB7XG4gIHRvcDogOTJweCAhaW1wb3J0YW50OyB9XG4iLAoJCSIvKipcbiAqIHNpbXBsZW1kZSB2MS4xMS4yXG4gKiBDb3B5cmlnaHQgTmV4dCBTdGVwIFdlYnMsIEluYy5cbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9OZXh0U3RlcFdlYnMvc2ltcGxlbWRlLW1hcmtkb3duLWVkaXRvclxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbi5Db2RlTWlycm9ye2NvbG9yOiMwMDB9LkNvZGVNaXJyb3ItbGluZXN7cGFkZGluZzo0cHggMH0uQ29kZU1pcnJvciBwcmV7cGFkZGluZzowIDRweH0uQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVyLC5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5Db2RlTWlycm9yLWd1dHRlcnN7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmNzt3aGl0ZS1zcGFjZTpub3dyYXB9LkNvZGVNaXJyb3ItbGluZW51bWJlcntwYWRkaW5nOjAgM3B4IDAgNXB4O21pbi13aWR0aDoyMHB4O3RleHQtYWxpZ246cmlnaHQ7Y29sb3I6Izk5OTt3aGl0ZS1zcGFjZTpub3dyYXB9LkNvZGVNaXJyb3ItZ3V0dGVybWFya2Vye2NvbG9yOiMwMDB9LkNvZGVNaXJyb3ItZ3V0dGVybWFya2VyLXN1YnRsZXtjb2xvcjojOTk5fS5Db2RlTWlycm9yLWN1cnNvcntib3JkZXItbGVmdDoxcHggc29saWQgIzAwMDtib3JkZXItcmlnaHQ6bm9uZTt3aWR0aDowfS5Db2RlTWlycm9yIGRpdi5Db2RlTWlycm9yLXNlY29uZGFyeWN1cnNvcntib3JkZXItbGVmdDoxcHggc29saWQgc2lsdmVyfS5jbS1mYXQtY3Vyc29yIC5Db2RlTWlycm9yLWN1cnNvcnt3aWR0aDphdXRvO2JvcmRlcjowIWltcG9ydGFudDtiYWNrZ3JvdW5kOiM3ZTd9LmNtLWZhdC1jdXJzb3IgZGl2LkNvZGVNaXJyb3ItY3Vyc29yc3t6LWluZGV4OjF9LmNtLWFuaW1hdGUtZmF0LWN1cnNvcnt3aWR0aDphdXRvO2JvcmRlcjowOy13ZWJraXQtYW5pbWF0aW9uOmJsaW5rIDEuMDZzIHN0ZXBzKDEpIGluZmluaXRlOy1tb3otYW5pbWF0aW9uOmJsaW5rIDEuMDZzIHN0ZXBzKDEpIGluZmluaXRlO2FuaW1hdGlvbjpibGluayAxLjA2cyBzdGVwcygxKSBpbmZpbml0ZTtiYWNrZ3JvdW5kLWNvbG9yOiM3ZTd9QC1tb3ota2V5ZnJhbWVzIGJsaW5rezUwJXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fX1ALXdlYmtpdC1rZXlmcmFtZXMgYmxpbmt7NTAle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9fUBrZXlmcmFtZXMgYmxpbmt7NTAle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9fS5jbS10YWJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9LkNvZGVNaXJyb3ItcnVsZXJ7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNjY2M7cG9zaXRpb246YWJzb2x1dGV9LmNtLXMtZGVmYXVsdCAuY20taGVhZGVye2NvbG9yOiMwMGZ9LmNtLXMtZGVmYXVsdCAuY20tcXVvdGV7Y29sb3I6IzA5MH0uY20tbmVnYXRpdmV7Y29sb3I6I2Q0NH0uY20tcG9zaXRpdmV7Y29sb3I6IzI5Mn0uY20taGVhZGVyLC5jbS1zdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfS5jbS1lbXtmb250LXN0eWxlOml0YWxpY30uY20tbGlua3t0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5jbS1zdHJpa2V0aHJvdWdoe3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LmNtLXMtZGVmYXVsdCAuY20ta2V5d29yZHtjb2xvcjojNzA4fS5jbS1zLWRlZmF1bHQgLmNtLWF0b217Y29sb3I6IzIxOX0uY20tcy1kZWZhdWx0IC5jbS1udW1iZXJ7Y29sb3I6IzE2NH0uY20tcy1kZWZhdWx0IC5jbS1kZWZ7Y29sb3I6IzAwZn0uY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZS0ye2NvbG9yOiMwNWF9LmNtLXMtZGVmYXVsdCAuY20tdmFyaWFibGUtM3tjb2xvcjojMDg1fS5jbS1zLWRlZmF1bHQgLmNtLWNvbW1lbnR7Y29sb3I6I2E1MH0uY20tcy1kZWZhdWx0IC5jbS1zdHJpbmd7Y29sb3I6I2ExMX0uY20tcy1kZWZhdWx0IC5jbS1zdHJpbmctMntjb2xvcjojZjUwfS5jbS1zLWRlZmF1bHQgLmNtLW1ldGEsLmNtLXMtZGVmYXVsdCAuY20tcXVhbGlmaWVye2NvbG9yOiM1NTV9LmNtLXMtZGVmYXVsdCAuY20tYnVpbHRpbntjb2xvcjojMzBhfS5jbS1zLWRlZmF1bHQgLmNtLWJyYWNrZXR7Y29sb3I6Izk5N30uY20tcy1kZWZhdWx0IC5jbS10YWd7Y29sb3I6IzE3MH0uY20tcy1kZWZhdWx0IC5jbS1hdHRyaWJ1dGV7Y29sb3I6IzAwY30uY20tcy1kZWZhdWx0IC5jbS1ocntjb2xvcjojOTk5fS5jbS1zLWRlZmF1bHQgLmNtLWxpbmt7Y29sb3I6IzAwY30uY20taW52YWxpZGNoYXIsLmNtLXMtZGVmYXVsdCAuY20tZXJyb3J7Y29sb3I6cmVkfS5Db2RlTWlycm9yLWNvbXBvc2luZ3tib3JkZXItYm90dG9tOjJweCBzb2xpZH1kaXYuQ29kZU1pcnJvciBzcGFuLkNvZGVNaXJyb3ItbWF0Y2hpbmdicmFja2V0e2NvbG9yOiMwZjB9ZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNoaW5nYnJhY2tldHtjb2xvcjojZjIyfS5Db2RlTWlycm9yLW1hdGNoaW5ndGFne2JhY2tncm91bmQ6cmdiYSgyNTUsMTUwLDAsLjMpfS5Db2RlTWlycm9yLWFjdGl2ZWxpbmUtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiNlOGYyZmZ9LkNvZGVNaXJyb3J7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6I2ZmZn0uQ29kZU1pcnJvci1zY3JvbGx7b3ZlcmZsb3c6c2Nyb2xsIWltcG9ydGFudDttYXJnaW4tYm90dG9tOi0zMHB4O21hcmdpbi1yaWdodDotMzBweDtwYWRkaW5nLWJvdHRvbTozMHB4O2hlaWdodDoxMDAlO291dGxpbmU6MDtwb3NpdGlvbjpyZWxhdGl2ZX0uQ29kZU1pcnJvci1zaXplcntwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItcmlnaHQ6MzBweCBzb2xpZCB0cmFuc3BhcmVudH0uQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVyLC5Db2RlTWlycm9yLWhzY3JvbGxiYXIsLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlciwuQ29kZU1pcnJvci12c2Nyb2xsYmFye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6NjtkaXNwbGF5Om5vbmV9LkNvZGVNaXJyb3ItdnNjcm9sbGJhcntyaWdodDowO3RvcDowO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6c2Nyb2xsfS5Db2RlTWlycm9yLWhzY3JvbGxiYXJ7Ym90dG9tOjA7bGVmdDowO292ZXJmbG93LXk6aGlkZGVuO292ZXJmbG93LXg6c2Nyb2xsfS5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXJ7cmlnaHQ6MDtib3R0b206MH0uQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVye2xlZnQ6MDtib3R0b206MH0uQ29kZU1pcnJvci1ndXR0ZXJze3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDttaW4taGVpZ2h0OjEwMCU7ei1pbmRleDozfS5Db2RlTWlycm9yLWd1dHRlcnt3aGl0ZS1zcGFjZTpub3JtYWw7aGVpZ2h0OjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO21hcmdpbi1ib3R0b206LTMwcHh9LkNvZGVNaXJyb3ItZ3V0dGVyLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo0O2JhY2tncm91bmQ6MCAwIWltcG9ydGFudDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5Db2RlTWlycm9yLWd1dHRlci1iYWNrZ3JvdW5ke3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3otaW5kZXg6NH0uQ29kZU1pcnJvci1ndXR0ZXItZWx0e3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpkZWZhdWx0O3otaW5kZXg6NH0uQ29kZU1pcnJvci1saW5lc3tjdXJzb3I6dGV4dDttaW4taGVpZ2h0OjFweH0uQ29kZU1pcnJvciBwcmV7LW1vei1ib3JkZXItcmFkaXVzOjA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJhZGl1czowO2JvcmRlci13aWR0aDowO2JhY2tncm91bmQ6MCAwO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bWFyZ2luOjA7d2hpdGUtc3BhY2U6cHJlO3dvcmQtd3JhcDpub3JtYWw7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O3otaW5kZXg6Mjtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzp2aXNpYmxlOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LWZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9uZTtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vbmV9LkNvZGVNaXJyb3Itd3JhcCBwcmV7d29yZC13cmFwOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpub3JtYWx9LkNvZGVNaXJyb3ItbGluZWJhY2tncm91bmR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7dG9wOjA7Ym90dG9tOjA7ei1pbmRleDowfS5Db2RlTWlycm9yLWxpbmV3aWRnZXR7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO292ZXJmbG93OmF1dG99LkNvZGVNaXJyb3ItY29kZXtvdXRsaW5lOjB9LkNvZGVNaXJyb3ItZ3V0dGVyLC5Db2RlTWlycm9yLWd1dHRlcnMsLkNvZGVNaXJyb3ItbGluZW51bWJlciwuQ29kZU1pcnJvci1zY3JvbGwsLkNvZGVNaXJyb3Itc2l6ZXJ7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9LkNvZGVNaXJyb3ItbWVhc3VyZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDowO292ZXJmbG93OmhpZGRlbjt2aXNpYmlsaXR5OmhpZGRlbn0uQ29kZU1pcnJvci1jdXJzb3J7cG9zaXRpb246YWJzb2x1dGV9LkNvZGVNaXJyb3ItbWVhc3VyZSBwcmV7cG9zaXRpb246c3RhdGljfWRpdi5Db2RlTWlycm9yLWN1cnNvcnN7dmlzaWJpbGl0eTpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDozfS5Db2RlTWlycm9yLWZvY3VzZWQgZGl2LkNvZGVNaXJyb3ItY3Vyc29ycyxkaXYuQ29kZU1pcnJvci1kcmFnY3Vyc29yc3t2aXNpYmlsaXR5OnZpc2libGV9LkNvZGVNaXJyb3Itc2VsZWN0ZWR7YmFja2dyb3VuZDojZDlkOWQ5fS5Db2RlTWlycm9yLWZvY3VzZWQgLkNvZGVNaXJyb3Itc2VsZWN0ZWQsLkNvZGVNaXJyb3ItbGluZTo6c2VsZWN0aW9uLC5Db2RlTWlycm9yLWxpbmU+c3Bhbjo6c2VsZWN0aW9uLC5Db2RlTWlycm9yLWxpbmU+c3Bhbj5zcGFuOjpzZWxlY3Rpb257YmFja2dyb3VuZDojZDdkNGYwfS5Db2RlTWlycm9yLWNyb3NzaGFpcntjdXJzb3I6Y3Jvc3NoYWlyfS5Db2RlTWlycm9yLWxpbmU6Oi1tb3otc2VsZWN0aW9uLC5Db2RlTWlycm9yLWxpbmU+c3Bhbjo6LW1vei1zZWxlY3Rpb24sLkNvZGVNaXJyb3ItbGluZT5zcGFuPnNwYW46Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQ6I2Q3ZDRmMH0uY20tc2VhcmNoaW5ne2JhY2tncm91bmQ6I2ZmYTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwwLC40KX0uY20tZm9yY2UtYm9yZGVye3BhZGRpbmctcmlnaHQ6LjFweH1AbWVkaWEgcHJpbnR7LkNvZGVNaXJyb3IgZGl2LkNvZGVNaXJyb3ItY3Vyc29yc3t2aXNpYmlsaXR5OmhpZGRlbn19LmNtLXRhYi13cmFwLWhhY2s6YWZ0ZXJ7Y29udGVudDonJ31zcGFuLkNvZGVNaXJyb3Itc2VsZWN0ZWR0ZXh0e2JhY2tncm91bmQ6MCAwfS5Db2RlTWlycm9ye2hlaWdodDphdXRvO21pbi1oZWlnaHQ6MzAwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtwYWRkaW5nOjEwcHg7Zm9udDppbmhlcml0O3otaW5kZXg6MX0uQ29kZU1pcnJvci1zY3JvbGx7bWluLWhlaWdodDozMDBweH0uQ29kZU1pcnJvci1mdWxsc2NyZWVue2JhY2tncm91bmQ6I2ZmZjtwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7dG9wOjUwcHg7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7aGVpZ2h0OmF1dG87ei1pbmRleDo5fS5Db2RlTWlycm9yLXNpZGVke3dpZHRoOjUwJSFpbXBvcnRhbnR9LmVkaXRvci10b29sYmFye3Bvc2l0aW9uOnJlbGF0aXZlO29wYWNpdHk6LjY7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstby11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7cGFkZGluZzowIDEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2JiYjtib3JkZXItbGVmdDoxcHggc29saWQgI2JiYjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNiYmI7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4fS5lZGl0b3ItdG9vbGJhcjphZnRlciwuZWRpdG9yLXRvb2xiYXI6YmVmb3Jle2Rpc3BsYXk6YmxvY2s7Y29udGVudDonICc7aGVpZ2h0OjFweH0uZWRpdG9yLXRvb2xiYXI6YmVmb3Jle21hcmdpbi1ib3R0b206OHB4fS5lZGl0b3ItdG9vbGJhcjphZnRlcnttYXJnaW4tdG9wOjhweH0uZWRpdG9yLXRvb2xiYXI6aG92ZXIsLmVkaXRvci13cmFwcGVyIGlucHV0LnRpdGxlOmZvY3VzLC5lZGl0b3Itd3JhcHBlciBpbnB1dC50aXRsZTpob3ZlcntvcGFjaXR5Oi44fS5lZGl0b3ItdG9vbGJhci5mdWxsc2NyZWVue3dpZHRoOjEwMCU7aGVpZ2h0OjUwcHg7b3ZlcmZsb3cteDphdXRvO292ZXJmbG93LXk6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDtwYWRkaW5nLXRvcDoxMHB4O3BhZGRpbmctYm90dG9tOjEwcHg7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MDtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7b3BhY2l0eToxO3otaW5kZXg6OX0uZWRpdG9yLXRvb2xiYXIuZnVsbHNjcmVlbjo6YmVmb3Jle3dpZHRoOjIwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsMSkgMCxyZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpO2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AscmlnaHQgdG9wLGNvbG9yLXN0b3AoMCxyZ2JhKDI1NSwyNTUsMjU1LDEpKSxjb2xvci1zdG9wKDEwMCUscmdiYSgyNTUsMjU1LDI1NSwwKSkpO2JhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCxyZ2JhKDI1NSwyNTUsMjU1LDEpIDAscmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKTtiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsMSkgMCxyZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpO2JhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsMSkgMCxyZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJnYmEoMjU1LDI1NSwyNTUsMSkgMCxyZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpO3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDttYXJnaW46MDtwYWRkaW5nOjB9LmVkaXRvci10b29sYmFyLmZ1bGxzY3JlZW46OmFmdGVye3dpZHRoOjIwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsMCkgMCxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwMCUpO2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AscmlnaHQgdG9wLGNvbG9yLXN0b3AoMCxyZ2JhKDI1NSwyNTUsMjU1LDApKSxjb2xvci1zdG9wKDEwMCUscmdiYSgyNTUsMjU1LDI1NSwxKSkpO2JhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCxyZ2JhKDI1NSwyNTUsMjU1LDApIDAscmdiYSgyNTUsMjU1LDI1NSwxKSAxMDAlKTtiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsMCkgMCxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwMCUpO2JhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudChsZWZ0LHJnYmEoMjU1LDI1NSwyNTUsMCkgMCxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwMCUpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJnYmEoMjU1LDI1NSwyNTUsMCkgMCxyZ2JhKDI1NSwyNTUsMjU1LDEpIDEwMCUpO3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7bWFyZ2luOjA7cGFkZGluZzowfS5lZGl0b3ItdG9vbGJhciBhe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtjb2xvcjojMmMzZTUwIWltcG9ydGFudDt3aWR0aDozMHB4O2hlaWdodDozMHB4O21hcmdpbjowO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czozcHg7Y3Vyc29yOnBvaW50ZXJ9LmVkaXRvci10b29sYmFyIGEuYWN0aXZlLC5lZGl0b3ItdG9vbGJhciBhOmhvdmVye2JhY2tncm91bmQ6I2ZjZmNmYztib3JkZXItY29sb3I6Izk1YTVhNn0uZWRpdG9yLXRvb2xiYXIgYTpiZWZvcmV7bGluZS1oZWlnaHQ6MzBweH0uZWRpdG9yLXRvb2xiYXIgaS5zZXBhcmF0b3J7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MDtib3JkZXItbGVmdDoxcHggc29saWQgI2Q5ZDlkOTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNmZmY7Y29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1pbmRlbnQ6LTEwcHg7bWFyZ2luOjAgNnB4fS5lZGl0b3ItdG9vbGJhciBhLmZhLWhlYWRlci14OmFmdGVye2ZvbnQtZmFtaWx5OkFyaWFsLFwiSGVsdmV0aWNhIE5ldWVcIixIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6NjUlO3ZlcnRpY2FsLWFsaWduOnRleHQtYm90dG9tO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoycHh9LmVkaXRvci10b29sYmFyIGEuZmEtaGVhZGVyLTE6YWZ0ZXJ7Y29udGVudDpcIjFcIn0uZWRpdG9yLXRvb2xiYXIgYS5mYS1oZWFkZXItMjphZnRlcntjb250ZW50OlwiMlwifS5lZGl0b3ItdG9vbGJhciBhLmZhLWhlYWRlci0zOmFmdGVye2NvbnRlbnQ6XCIzXCJ9LmVkaXRvci10b29sYmFyIGEuZmEtaGVhZGVyLWJpZ2dlcjphZnRlcntjb250ZW50Olwi4payXCJ9LmVkaXRvci10b29sYmFyIGEuZmEtaGVhZGVyLXNtYWxsZXI6YWZ0ZXJ7Y29udGVudDpcIuKWvFwifS5lZGl0b3ItdG9vbGJhci5kaXNhYmxlZC1mb3ItcHJldmlldyBhOm5vdCgubm8tZGlzYWJsZSl7cG9pbnRlci1ldmVudHM6bm9uZTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93OmluaGVyaXR9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjcwMHB4KXsuZWRpdG9yLXRvb2xiYXIgYS5uby1tb2JpbGV7ZGlzcGxheTpub25lfX0uZWRpdG9yLXN0YXR1c2JhcntwYWRkaW5nOjhweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM5NTk2OTQ7dGV4dC1hbGlnbjpyaWdodH0uZWRpdG9yLXN0YXR1c2JhciBzcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi13aWR0aDo0ZW07bWFyZ2luLWxlZnQ6MWVtfS5lZGl0b3ItcHJldmlldywuZWRpdG9yLXByZXZpZXctc2lkZXtwYWRkaW5nOjEwcHg7YmFja2dyb3VuZDojZmFmYWZhO292ZXJmbG93OmF1dG87ZGlzcGxheTpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZWRpdG9yLXN0YXR1c2JhciAubGluZXM6YmVmb3Jle2NvbnRlbnQ6J2xpbmVzOiAnfS5lZGl0b3Itc3RhdHVzYmFyIC53b3JkczpiZWZvcmV7Y29udGVudDond29yZHM6ICd9LmVkaXRvci1zdGF0dXNiYXIgLmNoYXJhY3RlcnM6YmVmb3Jle2NvbnRlbnQ6J2NoYXJhY3RlcnM6ICd9LmVkaXRvci1wcmV2aWV3e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowO3otaW5kZXg6N30uZWRpdG9yLXByZXZpZXctc2lkZXtwb3NpdGlvbjpmaXhlZDtib3R0b206MDt3aWR0aDo1MCU7dG9wOjUwcHg7cmlnaHQ6MDt6LWluZGV4Ojk7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS5lZGl0b3ItcHJldmlldy1hY3RpdmUsLmVkaXRvci1wcmV2aWV3LWFjdGl2ZS1zaWRle2Rpc3BsYXk6YmxvY2t9LmVkaXRvci1wcmV2aWV3LXNpZGU+cCwuZWRpdG9yLXByZXZpZXc+cHttYXJnaW4tdG9wOjB9LmVkaXRvci1wcmV2aWV3IHByZSwuZWRpdG9yLXByZXZpZXctc2lkZSBwcmV7YmFja2dyb3VuZDojZWVlO21hcmdpbi1ib3R0b206MTBweH0uZWRpdG9yLXByZXZpZXcgdGFibGUgdGQsLmVkaXRvci1wcmV2aWV3IHRhYmxlIHRoLC5lZGl0b3ItcHJldmlldy1zaWRlIHRhYmxlIHRkLC5lZGl0b3ItcHJldmlldy1zaWRlIHRhYmxlIHRoe2JvcmRlcjoxcHggc29saWQgI2RkZDtwYWRkaW5nOjVweH0uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1jb2RlIC5jbS10YWd7Y29sb3I6IzYzYTM1Y30uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1jb2RlIC5jbS1hdHRyaWJ1dGV7Y29sb3I6Izc5NWRhM30uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1jb2RlIC5jbS1zdHJpbmd7Y29sb3I6IzE4MzY5MX0uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1zZWxlY3RlZHtiYWNrZ3JvdW5kOiNkOWQ5ZDl9LkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItY29kZSAuY20taGVhZGVyLTF7Zm9udC1zaXplOjIwMCU7bGluZS1oZWlnaHQ6MjAwJX0uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1jb2RlIC5jbS1oZWFkZXItMntmb250LXNpemU6MTYwJTtsaW5lLWhlaWdodDoxNjAlfS5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWNvZGUgLmNtLWhlYWRlci0ze2ZvbnQtc2l6ZToxMjUlO2xpbmUtaGVpZ2h0OjEyNSV9LkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItY29kZSAuY20taGVhZGVyLTR7Zm9udC1zaXplOjExMCU7bGluZS1oZWlnaHQ6MTEwJX0uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1jb2RlIC5jbS1jb21tZW50e2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDUpO2JvcmRlci1yYWRpdXM6MnB4fS5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWNvZGUgLmNtLWxpbmt7Y29sb3I6IzdmOGM4ZH0uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1jb2RlIC5jbS11cmx7Y29sb3I6I2FhYjJiM30uQ29kZU1pcnJvciAuQ29kZU1pcnJvci1jb2RlIC5jbS1zdHJpa2V0aHJvdWdoe3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItcGxhY2Vob2xkZXJ7b3BhY2l0eTouNX0uQ29kZU1pcnJvciAuY20tc3BlbGwtZXJyb3I6bm90KC5jbS11cmwpOm5vdCguY20tY29tbWVudCk6bm90KC5jbS10YWcpOm5vdCguY20td29yZCl7YmFja2dyb3VuZDpyZ2JhKDI1NSwwLDAsLjE1KX0iLAoJCSJmb3JtIHtcbiAgLmZvcm0tZ3JvdXAge1xuICAgIC5taW5pY29sb3JzIHtcbiAgICAgIC5taW5pY29sb3JzLWlucHV0IHtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDM0cHg7IH1cbiAgICAgIC5taW5pY29sb3JzLXN3YXRjaCB7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgd2lkdGg6IDI0cHg7IH1cbiAgICAgIC5taW5pY29sb3JzLXBhbmVsIHtcbiAgICAgICAgdG9wOiAtMTE1cHggIWltcG9ydGFudDtcbiAgICAgICAgbGVmdDogMTAwcHggIWltcG9ydGFudDsgfSB9IH0gfVxuXG4iLAoJCSIubW9kYWwtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC43KTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgei1pbmRleDogMTAwMTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZSkge1xuICAgIHRvcDogMTIwcHg7IH0gfVxuXG4ubW9kYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICRiZWlnZS0xMDA7XG4gIG1pbi1oZWlnaHQ6IHRvUmVtKDU1MCk7XG4gIG1heC13aWR0aDogdG9SZW0oODUwKTtcbiAgbWFyZ2luOiAkZ3V0dGVyLXhsIGF1dG87XG4gIHBhZGRpbmc6ICRndXR0ZXItbGc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMnB4KTtcblxuICAubW9kYWwtY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6ICRmYy1saWdodDtcbiAgICBmb250LXNpemU6IDIzcHg7XG4gICAgdG9wOiAxMHB4O1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbG9yIDAuM3MpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGZjOyB9IH1cblxuICAubW9kYWwtaGVhZGVyIHtcbiAgICBtYXJnaW46IC0jeyRndXR0ZXItbGd9O1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgcGFkZGluZzogJGd1dHRlci1zbTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjsgfVxuXG4gIC5tb2RhbC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAkZnMtbGc7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LXRpdGxlcztcbiAgICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTtcbiAgICBjb2xvcjogJGZjO1xuICAgIG1hcmdpbjogMDtcblxuICAgIHN0cm9uZyB7XG4gICAgICBmb250LXdlaWdodDogJGZ3LXNlbWlib2xkOyB9IH0gfVxuIiwKCQkiJHBhcml0eS1oZWFkZXItaGVpZ2h0OiAyMnB4O1xuJHBhcml0eS1jb250ZW50LWhlaWdodDogMzBweDtcblxuQG1peGluIHJlc2V0LXJhbmdlLXNsaWRlci10aHVtYi1zdHlsZXMge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiAkcGFyaXR5LWNvbnRlbnQtaGVpZ2h0O1xuICBoZWlnaHQ6ICRwYXJpdHktY29udGVudC1oZWlnaHQ7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuQG1peGluIHJhbmdlLWFwcGVhcmFuY2Utbm9uZSB7XG4gICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICBAaW5jbHVkZSByZXNldC1yYW5nZS1zbGlkZXItdGh1bWItc3R5bGVzKCk7IH1cbiAgJjo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcmFuZ2Utc2xpZGVyLXRodW1iLXN0eWxlcygpOyB9XG4gICY6Oi1tcy10aHVtYiB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcmFuZ2Utc2xpZGVyLXRodW1iLXN0eWxlcygpOyB9IH1cblxuLnBhcml0eS13cmFwcGVyIHtcbiAgJi5hZG1pbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAucGFyaXR5LXNsaWRlciB7XG4gICAgICBtYXgtd2lkdGg6IDUwMHB4OyB9XG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgbWFyZ2luLXRvcDogMDsgfSB9XG4gIC5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tdG9wOiAtMzBweDsgfVxuICAuc3dpdGNoZXJ5IHtcbiAgICBtYXJnaW4tbGVmdDogMTVweDsgfSB9XG5cbmxhYmVsW2Zvcj1wYXJpdHldIHtcbiAgLnN3aXRjaGVyeSB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDsgfSB9XG5cbi5wYXJpdHktc2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oY29sdW1uKTtcbiAgaGVpZ2h0OiAwO1xuICBtYXgtd2lkdGg6IDQwMHB4O1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICBwYWRkaW5nLXRvcDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogMC4ycztcbiAgJi5leHBhbmRlZCB7XG4gICAgaGVpZ2h0OiAkcGFyaXR5LWhlYWRlci1oZWlnaHQgKyAkcGFyaXR5LWNvbnRlbnQtaGVpZ2h0O1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIC5sYWJlbHMge1xuICAgICAgaGVpZ2h0OiAkcGFyaXR5LWhlYWRlci1oZWlnaHQ7IH0gfVxuICAmOmFjdGl2ZSBvdXRwdXQ6OmJlZm9yZSB7XG4gICAgem9vbTogMS4xOyB9XG4gIC5sYWJlbHMge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleCgpO1xuICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChzcGFjZS1iZXR3ZWVuKTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgIC5tZW4ge1xuICAgICAgY29sb3I6ICRjb2xvci1tZW4tMjsgfVxuICAgIC53b21lbiB7XG4gICAgICBjb2xvcjogJGNvbG9yLXdvbWVuLTI7IH0gfVxuICAub3V0cHV0cyB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG4gICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoc3RyZXRjaCk7XG4gICAgaGVpZ2h0OiAkcGFyaXR5LWNvbnRlbnQtaGVpZ2h0O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAkd2hpdGU7IH1cblxuICBvdXRwdXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChjZW50ZXIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0cmFuc2l0aW9uOiAwLjFzO1xuXG4gICAgJi5wYXJpdHktd29tZW4ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdvbWVuLTI7XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgcmlnaHQ6IC0xcHg7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDUwJSkpOyB9IH1cblxuICAgICYucGFyaXR5LW1lbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbWVuLTI7XG4gICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBsZWZ0OiAtMXB4O1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7IH0gfVxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktNDAwO1xuICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICB0cmFuc2l0aW9uOiB6b29tIDAuMnM7IH1cbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiVcIjsgfSB9XG5cbiAgaW5wdXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICRwYXJpdHktaGVhZGVyLWhlaWdodDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmUge1xuICAgICAgcmFkaXVzOiAwOyB9XG4gICAgQGluY2x1ZGUgYXBwZWFyYW5jZShub25lKTtcbiAgICBAaW5jbHVkZSByYW5nZS1hcHBlYXJhbmNlLW5vbmUoKTtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsCgkJInRhYmxlIHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtICN7JGd1dHRlci1zbX0gKiAyKTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgbWFyZ2luOiAwICRndXR0ZXItc20gJGd1dHRlciAkZ3V0dGVyLXNtO1xuXG4gIHRoLCB0ZCB7XG4gICAgcGFkZGluZzogJGd1dHRlci1zbSAkZ3V0dGVyLXhzO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuICB0aCB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGNvbG9yOiAkZmMteGxpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtO1xuICAgIGZvbnQtc2l6ZTogJGZzLXNtO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYmxhY2s7IH1cblxuICB0Ym9keSB7XG4gICAgdGgsIHRkIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yOyB9XG5cbiAgICB0cjpsYXN0LWNoaWxkIHtcbiAgICAgIHRoLCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7IH0gfVxuXG4gICAgdGQge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgZm9udC13ZWlnaHQ6ICRmdy1yZWd1bGFyO1xuICAgICAgZm9udC1zaXplOiAkZnMtc207XG4gICAgICBsaW5lLWhlaWdodDogMS41OyB9XG5cbiAgICB0cltkYXRhLWxpbmtdOmhvdmVyIHRkIHtcbiAgICAgIGJhY2tncm91bmQ6ICRncmV5LTUwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyOyB9IH0gfVxuIiwKCQkiOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gIGNvbG9yOiAkYmxhY2s7IH1cblxuLy8gVElUTEVTXG5cbmh0bWwge1xuICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nLWh0bWw7XG4gIGNvbG9yOiAkZmMtbGlnaHQ7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC10ZXh0czsgfVxuXG5oMSwgaDIsIGgzLCBoNCB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC10aXRsZXM7IH1cblxuaDEge1xuICBmb250LXNpemU6ICRmcy1sZztcbiAgbWFyZ2luLWJvdHRvbTogJGd1dHRlci1zbTtcblxuICBzcGFuIHtcbiAgICBjb2xvcjogJGdyZXktNDAwOyB9IH1cblxuaDIge1xuICBmb250LXNpemU6IHRvUmVtKDIwKTtcbiAgZm9udC13ZWlnaHQ6ICRmdy1tZWRpdW07XG4gIG1hcmdpbjogJGd1dHRlci1zbSAwOyB9XG5cbmgzIHtcbiAgZm9udC1zaXplOiAkZnM7XG4gIG1hcmdpbjogJGd1dHRlci1zbSAwOyB9XG5cbi8vIFRFWFRcblxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6ICRmdy1tZWRpdW07IH1cblxuc21hbGwge1xuICBmb250LXNpemU6ICRmcy14czsgfVxuXG5wLCBsaSB7XG4gIGZvbnQtc2l6ZTogJGZzLXNtO1xuICBmb250LWZhbWlseTogJGZvbnQtdGV4dHM7XG4gIGZvbnQtd2VpZ2h0OiAkZnctcmVndWxhcjtcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZy1ib2R5MTsgfVxuXG5wcmUge1xuICBwYWRkaW5nOiAyMHB4OyB9XG5cbi5pbmxpbmUtbGluayB7XG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgJGNvbG9yLXByaW1hcnktNTAwLCAkY29sb3ItcHJpbWFyeS01MDAgMTAwJSk7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSA1MCU7XG4gIGJhY2tncm91bmQtcG9zaXRpb24teTogY2FsYygyMDAlIC0gMXB4KTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbi15IDAuMjVzIGVhc2UgMHM7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAxMDAlOyB9IH1cblxuLy8gTElTVFNcblxudWwuaW5saW5lLWxpc3Qge1xuICBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDsgfSB9XG5cbi8vIFBBRERJTkctV1JBUFBFUlxuLnBhZ2UtY29udGVudCB7XG4gIHBhZGRpbmc6IDAgMTVweDtcbiAgbWFyZ2luLXRvcDogODBweDsgfVxuXG4vLyBDT0xPUlNcblxuLnRleHQtbGlnaHQge1xuICBjb2xvcjogJGZjLWxpZ2h0OyB9XG5cbi50ZXh0LXhsaWdodCB7XG4gIGNvbG9yOiAkZmMteGxpZ2h0OyB9XG5cbi50ZXh0LXh4bGlnaHQge1xuICBjb2xvcjogJGZjLXh4bGlnaHQ7IH1cblxuLnRleHQtYmx1ZSB7XG4gIGNvbG9yOiAkY29sb3ItaW5mby01MDA7IH1cblxuLnRleHQtYmxhY2sge1xuICBjb2xvcjogJGdyZXktOTAwOyB9XG5cbi50ZXh0LWdyZWVuIHtcbiAgY29sb3I6ICRjb2xvci1zdWNjZXNzLTUwMDsgfVxuXG4udGV4dC1ncmV5IHtcbiAgY29sb3I6ICRncmV5LTcwMDsgfVxuXG4udGV4dC1saWdodC1ncmV5IHtcbiAgY29sb3I6ICRncmV5LTQwMDsgfVxuXG4udGV4dC1vcmFuZ2Uge1xuICBjb2xvcjogJGNvbG9yLXdhcm5pbmctNzAwOyB9XG5cbi50ZXh0LXJlZCB7XG4gIGNvbG9yOiAkY29sb3ItZGFuZ2VyLTcwMDsgfVxuXG4udGV4dC15ZWxsb3cge1xuICBjb2xvcjogJGNvbG9yLXByaW1hcnktNzAwOyB9XG5cbi50ZXh0LWJsdWUsIC50ZXh0LWdyZWVuLCAudGV4dC1saWdodC1ncmV5LCAudGV4dC1vcmFuZ2UsIC50ZXh0LXJlZCwgLnRleHQteWVsbG93IHtcbiAgaSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH0gfVxuXG4uZm9ybWF0dGVkLXRleHQge1xuICBmb250LXNpemU6ICRmcy1zbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcblxuICBwLCB1bCwgb2wsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGJsb2NrcXVvdGUsIHByZSB7XG4gICAgbWFyZ2luOiAkZ3V0dGVyLXNtIDA7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7IH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cblxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtdGl0bGVzO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtO1xuICAgIGNvbG9yOiAkZmM7IH1cblxuICBoMSwgLnRpdGxlLWxnIHtcbiAgICBmb250LXNpemU6IHRvUmVtKDI0KTtcbiAgICBmb250LXdlaWdodDogJGZ3LXNlbWlib2xkOyB9XG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogdG9SZW0oMjApO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctc2VtaWJvbGQ7IH1cblxuICBoMyB7XG4gICAgZm9udC1zaXplOiB0b1JlbSgxOCk7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDsgfVxuXG4gIGg0IHtcbiAgICBmb250LXNpemU6ICRmcztcbiAgICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTsgfVxuXG4gIGg1IHtcbiAgICBmb250LXNpemU6ICRmcy1zbTtcbiAgICBjb2xvcjogJGZjLWxpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbWVkaXVtOyB9XG5cbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogJGZzLXhzO1xuICAgIGNvbG9yOiAkZmMtbGlnaHQ7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1tZWRpdW07IH1cblxuICBwLCBsaSB7XG4gICAgY29sb3I6ICRmYy1saWdodDtcbiAgICBmb250LXdlaWdodDogJGZ3LXJlZ3VsYXI7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LXRleHRzO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsgfVxuXG4gIGJsb2NrcXVvdGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXItc207XG4gICAgZm9udC1zaXplOiAkZnM7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiA0cHg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICBjb250ZW50OiBcIiBcIjsgfSB9XG5cbiAgc3Ryb25nLCBiIHtcbiAgICBmb250LXdlaWdodDogJGZ3LXNlbWlib2xkOyB9XG5cbiAgaSwgZW0ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4gIGE6bm90KC5idG4pIHtcbiAgICBAZXh0ZW5kIC5pbmxpbmUtbGluaztcbiAgICBjb2xvcjogJGZjOyB9XG5cbiAgdWwsIG9sIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGNvdW50ZXItcmVzZXQ6IGxpc3QtY291bnRlcjtcbiAgICBwYWRkaW5nOiAwOyB9XG5cbiAgbGkge1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXIteHhzO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIDAgMCAkZ3V0dGVyLXNtO1xuICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaXN0LWNvdW50ZXI7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9IH1cblxuICB1bCBsaSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHRvcDogLjVlbTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogdG9SZW0oNik7XG4gICAgICBoZWlnaHQ6IHRvUmVtKDYpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktNTAwO1xuICAgICAgY29udGVudDogXCIgXCI7IH0gfVxuXG4gIG9sIGxpIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGZvbnQtc2l6ZTogJGZzLXNtO1xuICAgICAgZm9udC13ZWlnaHQ6ICRmdy1zZW1pYm9sZDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeS01MDA7XG4gICAgICBjb250ZW50OiBjb3VudGVyKGxpc3QtY291bnRlcikgXCIuXCI7IH0gfVxuXG4gIHByZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXktMTAwO1xuICAgIHBhZGRpbmc6ICRndXR0ZXIteHM7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9IH1cbiIsCgkJImlbY2xhc3NePVwid3VpLWljb24tXCJdOmJlZm9yZSwgaVtjbGFzcyo9XCIgd3VpLWljb24tXCJdOjpiZWZvcmUge1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcblx0Zm9udC12YXJpYW50OiBub3JtYWw7XG5cdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHRsaW5lLWhlaWdodDogMTtcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IH1cblxuLnptZGktaGMtc3BpbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzcGluO1xuICBhbmltYXRpb24tZHVyYXRpb246IDEwMDBtcztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsgfVxuXG5Aa2V5ZnJhbWVzIHNwaW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XG5cbiIsCgkJIi5ibG9jayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBtYXJnaW46ICRndXR0ZXItbGcgYXV0bztcbiAgbWF4LXdpZHRoOiAkY29udGFpbmVyLXdpZHRoO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICBwYWRkaW5nLXRvcDogJGd1dHRlcjtcblxuICAmLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6ICRndXR0ZXI7IH1cblxuICAmLnRyYW5zcGFyZW50IHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwOyB9XG5cbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuXG4gIC5ub25lIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGNvbG9yOiAkZ3JleS01MDA7XG4gICAgcDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDIwcHg7IH0gfVxuXG4gICYgPiAuYmxvY2stYnV0dG9ucyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAkZ3V0dGVyLXNtO1xuICAgIHRvcDogdG9SZW0oMTEpO1xuICAgIHotaW5kZXg6IDEwO1xuXG4gICAgLmJ0bi1sb2FkZXIge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzNHB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9XG5cbiAgICB1bCB7XG4gICAgICBtYXJnaW46IDA7XG5cbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tbGVmdDogNXB4OyB9IH1cblxuICAgICYgKyBoMiB7XG4gICAgICBtYXJnaW4tdG9wOiAtI3skZ3V0dGVyfTsgfSB9XG5cbiAgaDIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXgoKTtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICAgIG1pbi1oZWlnaHQ6IHRvUmVtKDY0KTtcbiAgICBtYXJnaW46IDAgMCAkZ3V0dGVyO1xuICAgIHBhZGRpbmc6ICRndXR0ZXIteHMgJGd1dHRlcjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICB6LWluZGV4OiA1O1xuXG4gICAgJiArIC5ibG9jay1jb250ZW50IHtcbiAgICAgIHBhZGRpbmctdG9wOiAwOyB9XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IC0jeyRndXR0ZXJ9OyB9XG5cbiAgICAmLCBhIHtcbiAgICAgIGNvbG9yOiAkZmM7XG4gICAgICBmb250LXdlaWdodDogJGZ3LXNlbWlib2xkO1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LXRpdGxlczsgfVxuXG4gICAgaSwgaW1nIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7IH1cbiAgICBpIHtcblxuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDtcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgIC5pY2hlY2tib3gge1xuICAgICAgdG9wOiAxNXB4OyB9XG4gICAgLnN3aXRjaGVyeSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7IH0gfVxuXG4gICYgPiBoMywgJiA+IGg0LCAmID4gaDUsICYgPiBoNiB7XG4gICAgY29sb3I6ICRncmV5LTcwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAkZ3V0dGVyLXNtO1xuICAgIHBhZGRpbmc6IDAgJGd1dHRlcjsgfVxuXG4gICYgPiBoMSwgJiA+IGgyLCAmID4gaDMsICYgPiBoNCwgJiA+IGg1LCAmID4gaDYge1xuICAgIC5sYWJlbC1saWdodC1ncmV5IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyB9IH1cblxuICAmID4gcCB7XG4gICAgbWFyZ2luOiAwICRndXR0ZXIgJGd1dHRlcjsgfVxuXG4gICYgPiAucmVjcnVpdGVycyB7XG4gICAgbWFyZ2luOiAwICRndXR0ZXIgJGd1dHRlcjsgfVxuXG4gICYgPiB1bCB7XG4gICAgbWFyZ2luOiAwICRndXR0ZXIgJGd1dHRlcjtcblxuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXI7IH1cblxuICAgICYuc3RhdHMge1xuICAgICAgbGkgPiBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGNvbG9yOiAkZ3JleS03MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICBtaW4td2lkdGg6IDMwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgICAgbGkgPiBzcGFuIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDsgfSB9IH1cblxuICAuYmxvY2stbGlua3Mge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS0xMDA7XG4gICAgYSB7XG4gICAgICBjb2xvcjogJGdyZXktNTAwO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGdyZXktMTAwO1xuICAgICAgICBjb2xvcjogJGdyZXktODAwOyB9XG4gICAgICBpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH0gfSB9IH1cblxuLmJsb2NrLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kOiAjZmNmNmRjO1xuICBjb2xvcjogIzY1NWY1NTsgfVxuXG4uYmxvY2suYmxvY2std2l0aG91dC1jb250ZW50IHtcbiAgaDIge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cblxuLmJsb2NrLmJsb2NrLXByb3Blci10ZXh0IHtcbiAgdWwsIG9sIHtcbiAgICBtYXJnaW46IDAgMjVweCAyMHB4IDQwcHg7IH1cbiAgdWwge1xuICAgIGxpIHtcbiAgICAgIGxpc3Qtc3R5bGU6IGNpcmNsZTtcbiAgICAgIG1hcmdpbjogNXB4IDA7IH0gfVxuICBvbCB7XG4gICAgbWFyZ2luLWxlZnQ6IDI1cHg7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgIGxpIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBpdGVtO1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBjb3VudGVyKGl0ZW0pIFwiLlwiO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5LTUwMDsgfVxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGNvdW50ZXItcmVzZXQ6IGl0ZW07IH0gfSB9XG4gIHByZSB7XG4gICAgbWFyZ2luOiAwIDI1cHggMjVweCAyNXB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktMjAwO1xuICAgIGJhY2tncm91bmQ6ICRncmV5LTEwMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3b3JkLXdyYXA6IG5vcm1hbDtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9IH1cblxuLy8gYmxvY2sgaGVscFxuXG4uc2xhY2staGVscC1ibG9jayB7XG4gIG1hcmdpbi10b3A6IC0jeyRndXR0ZXJ9O1xuXG4gIC5saW5rLXRvZ2dsZSB7XG4gICAgZm9udC1zaXplOiAkZnMteHM7IH0gfVxuXG4uYmxvY2staGVscCB7XG4gIGJhY2tncm91bmQ6ICRiZWlnZS0xMDA7XG4gIG1hcmdpbi10b3A6ICRndXR0ZXItc207XG4gIHBhZGRpbmc6ICRndXR0ZXItc207XG5cbiAgaW1nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgIG1heC13aWR0aDogMTAwJTsgfVxuXG4gIC5ibG9jay1oZWxwLXN0ZXAge1xuICAgIG1hcmdpbi1ib3R0b206ICRndXR0ZXI7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfSB9IH1cblxuLy8gYmxvY2sgc2VhcmNoIGFyZWFcblxuLndpdGgtc2VhcmNoLWFyZWEgaDIge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi5ibG9jay1zZWFyY2gtYXJlYSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiZWlnZS0yMDA7XG5cbiAgZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwYWRkaW5nOiAkZ3V0dGVyLXNtO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yOyB9XG5cbiAgLnNlYXJjaC1pbnB1dCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4KCk7XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgIHdpZHRoOiB0b1JlbSgzNjApO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgQGluY2x1ZGUgZmxleCgxIDAgYXV0byk7IH1cblxuICAgIC5ibG9jay1idXR0b25zIHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICBAaW5jbHVkZSBmbGV4KG5vbmUpO1xuXG4gICAgICAuYnRuIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogJGZpZWxkLWhlaWdodDsgfSB9IH0gfVxuXG4vLyBibG9jay1vcmdhbml6YXRpb24gbG9ja2VkXG4uYmxvY2stb3JnYW5pemF0aW9uLWxvY2tlZCB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0KSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgICBtYXJnaW46IDE1cHggYXV0bzsgfVxuICBwOmZpcnN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLXRvcDogMjVweDsgfSB9XG4iCgldLAoJIm5hbWVzIjogW10sCgkibWFwcGluZ3MiOiAiO0F1TXVDTSxlQUFlLENBQWYsS0FBZTtFR3JDbkIsRUFBRTtJQUNBLE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLElBQUk7SUFDRixPQUFPLEVBQUUsQ0FBQzs7OztBSGdDUixrQkFBa0IsQ0FBbEIsS0FBa0I7RUd6Q3RCLEVBQUU7SUFDQSxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixJQUFJO0lBQ0YsT0FBTyxFQUFFLENBQUM7Ozs7QUhvQ1IsYUFBYSxDQUFiLEtBQWE7RUc3Q2pCLEVBQUU7SUFDQSxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixJQUFJO0lBQ0YsT0FBTyxFQUFFLENBQUM7Ozs7QUh3Q1IsY0FBYyxDQUFkLEtBQWM7O0VHakRsQixBQUFBLEVBQUUsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0dBQUc7O0VBQ2YsQUFBQSxHQUFHLENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQztHQUFHOztFQUNmLEFBQUEsR0FBRyxDQUFDO0lBQ0YsT0FBTyxFQUFFLENBQUM7R0FBRzs7RUFDZixBQUFBLEdBQUcsQ0FBQztJQUNGLE9BQU8sRUFBRSxDQUFDO0dBQUc7O0VBQ2YsQUFBQSxJQUFJLENBQUM7SUFDSCxPQUFPLEVBQUUsQ0FBQztHQUFHOzs7QUhnRFgsVUFBVSxDQUFWLEtBQVU7RUd6RGQsRUFBRTtJQUNBLE9BQU8sRUFBRSxDQUFDOztFQUNaLEdBQUc7SUFDRCxPQUFPLEVBQUUsQ0FBQzs7RUFDWixHQUFHO0lBQ0QsT0FBTyxFQUFFLENBQUM7O0VBQ1osR0FBRztJQUNELE9BQU8sRUFBRSxDQUFDOztFQUNaLElBQUk7SUFDRixPQUFPLEVBQUUsQ0FBQzs7OztBSDRCUixlQUFlLENBQWYsTUFBZTtFR3ZCbkIsRUFBRTtJNUVSQSxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCcFU1QixHQUFHO0k1RVZELGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkJsVTVCLEdBQUc7STVFWkQsaUJBQW9CLEUrQzhVZCxpQkFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsaUJBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGlCQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGlCQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGlCQUFvQjs7RTZCaFU1QixHQUFHO0k1RWRELGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkI5VDVCLEdBQUc7STVFaEJELGlCQUFvQixFK0M4VWQsaUJBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGlCQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixpQkFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxpQkFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixpQkFBb0I7O0U2QjVUNUIsR0FBRztJNUVsQkQsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QjFUNUIsSUFBSTtJNUVwQkYsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7Ozs7QTBCM1N4QixrQkFBa0IsQ0FBbEIsTUFBa0I7RUczQnRCLEVBQUU7STVFUkEsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QnBVNUIsR0FBRztJNUVWRCxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCbFU1QixHQUFHO0k1RVpELGlCQUFvQixFK0M4VWQsaUJBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGlCQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixpQkFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxpQkFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixpQkFBb0I7O0U2QmhVNUIsR0FBRztJNUVkRCxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCOVQ1QixHQUFHO0k1RWhCRCxpQkFBb0IsRStDOFVkLGlCQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxpQkFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsaUJBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsaUJBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4saUJBQW9COztFNkI1VDVCLEdBQUc7STVFbEJELGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkIxVDVCLElBQUk7STVFcEJGLGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COzs7O0EwQnZTeEIsYUFBYSxDQUFiLE1BQWE7RUcvQmpCLEVBQUU7STVFUkEsaUJBQW9CLEUrQzhVZCxhQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxhQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixhQUFvQjtJL0N0VTFCLFlBQWUsRStDc1VULGFBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4sYUFBb0I7O0U2QnBVNUIsR0FBRztJNUVWRCxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCbFU1QixHQUFHO0k1RVpELGlCQUFvQixFK0M4VWQsaUJBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGlCQUFvQjtJL0N4VTFCLGFBQWdCLEUrQ3dVVixpQkFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxpQkFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixpQkFBb0I7O0U2QmhVNUIsR0FBRztJNUVkRCxpQkFBb0IsRStDOFVkLGFBQW9CO0kvQzFVMUIsY0FBaUIsRStDMFVYLGFBQW9CO0kvQ3hVMUIsYUFBZ0IsRStDd1VWLGFBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsYUFBb0I7SS9DcFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCOVQ1QixHQUFHO0k1RWhCRCxpQkFBb0IsRStDOFVkLGlCQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxpQkFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsaUJBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsaUJBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4saUJBQW9COztFNkI1VDVCLEdBQUc7STVFbEJELGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkIxVDVCLElBQUk7STVFcEJGLGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUx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cFUxQixTQUFZLEUrQ29VTixhQUFvQjs7RTZCOVQ1QixHQUFHO0k1RWhCRCxpQkFBb0IsRStDOFVkLGlCQUFvQjtJL0MxVTFCLGNBQWlCLEUrQzBVWCxpQkFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsaUJBQW9CO0kvQ3RVMUIsWUFBZSxFK0NzVVQsaUJBQW9CO0kvQ3BVMUIsU0FBWSxFK0NvVU4saUJBQW9COztFNkI1VDVCLEdBQUc7STVFbEJELGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COztFNkIxVDVCLElBQUk7STVFcEJGLGlCQUFvQixFK0M4VWQsYUFBb0I7SS9DMVUxQixjQUFpQixFK0MwVVgsYUFBb0I7SS9DeFUxQixhQUFnQixFK0N3VVYsYUFBb0I7SS9DdFUxQixZQUFlLEUrQ3NVVCxhQUFvQjtJL0NwVTFCLFNBQVksRStDb1VOLGFBQW9COzs7O0EwQi9TeEIsZUFBZSxDQUFmLEtBQWU7RUdMbkIsRUFBRTtJNUUxQkEsaUJBQW9CLEUrQ29VZCxhQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxhQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixhQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGFBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sYUFBb0I7O0U2QnhTNUIsR0FBRztJNUU1QkQsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCdFM1QixHQUFHO0k1RTlCRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkJwUzVCLEdBQUc7STVFaENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QmxTNUIsR0FBRztJNUVsQ0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCaFM1QixHQUFHO0k1RXBDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkI5UjVCLEdBQUc7STVFdENELGlCQUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QjVSNUIsR0FBRztJNUV4Q0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCMVI1QixHQUFHO0k1RTFDRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkJ4UjVCLEdBQUc7STVFNUNELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QnRSNUIsSUFBSTtJNUU5Q0YsaUJBQW9CLEUrQ29VZCxhQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxhQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixhQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGFBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sYUFBb0I7Ozs7QTBCalN4QixrQkFBa0IsQ0FBbEIsS0FBa0I7RUdUdEIsRUFBRTtJNUUxQkEsaUJBQW9CLEUrQ29VZCxhQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxhQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixhQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGFBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sYUFBb0I7O0U2QnhTNUIsR0FBRztJNUU1QkQsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCdFM1QixHQUFHO0k1RTlCRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkJwUzVCLEdBQUc7STVFaENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QmxTNUIsR0FBRztJNUVsQ0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCaFM1QixHQUFHO0k1RXBDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkI5UjVCLEdBQUc7STVFdENELGlCQUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QjVSNUIsR0FBRztJNUV4Q0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCMVI1QixHQUFHO0k1RTFDRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkJ4UjVCLEdBQUc7STVFNUNELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QnRSNUIsSUFBSTtJNUU5Q0YsaUJBQW9CLEUrQ29VZCxhQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxhQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixhQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGFBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sYUFBb0I7Ozs7QTBCN1J4QixhQUFhLENBQWIsS0FBYTtFR2JqQixFQUFFO0k1RTFCQSxpQkFBb0IsRStDb1VkLGFBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGFBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGFBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsYUFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixhQUFvQjs7RTZCeFM1QixHQUFHO0k1RTVCRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkJ0UzVCLEdBQUc7STVFOUJELGlCQUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QnBTNUIsR0FBRztJNUVoQ0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCbFM1QixHQUFHO0k1RWxDRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkJoUzVCLEdBQUc7STVFcENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QjlSNUIsR0FBRztJNUV0Q0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCNVI1QixHQUFHO0k1RXhDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkIxUjVCLEdBQUc7STVFMUNELGlCQUFvQixFK0NvVWQsZ0JBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGdCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixnQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QnhSNUIsR0FBRztJNUU1Q0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCdFI1QixJQUFJO0k1RTlD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b0I7SS9DNVQxQixZQUFlLEUrQzRUVCxnQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixnQkFBb0I7O0U2QmhTNUIsR0FBRztJNUVwQ0QsaUJBQW9CLEUrQ29VZCxpQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsaUJBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGlCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGlCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGlCQUFvQjs7RTZCOVI1QixHQUFHO0k1RXRDRCxpQkFBb0IsRStDb1VkLGdCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxnQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsZ0JBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsZ0JBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4sZ0JBQW9COztFNkI1UjVCLEdBQUc7STVFeENELGlCQUFvQixFK0NvVWQsaUJBQW9CO0kvQ2hVMUIsY0FBaUIsRStDZ1VYLGlCQUFvQjtJL0M5VDFCLGFBQWdCLEUrQzhUVixpQkFBb0I7SS9DNVQxQixZQUFlLEUrQzRUVCxpQkFBb0I7SS9DMVQxQixTQUFZLEUrQzBUTixpQkFBb0I7O0U2QjFSNUIsR0FBRztJNUUxQ0QsaUJBQW9CLEUrQ29VZCxnQkFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsZ0JBQW9CO0kvQzlUMUIsYUFBZ0IsRStDOFRWLGdCQUFvQjtJL0M1VDFCLFlBQWUsRStDNFRULGdCQUFvQjtJL0MxVDFCLFNBQVksRStDMFROLGdCQUFvQjs7RTZCeFI1QixHQUFHO0k1RTVDRCxpQkFBb0IsRStDb1VkLGlCQUFvQjtJL0NoVTFCLGNBQWlCLEUrQ2dVWCxpQkFBb0I7SS9DOVQxQixhQUFnQixFK0M4VFYsaUJBQW9CO0kvQzVUMUIsWUFBZSxFK0M0VFQsaUJBQW9CO0kvQzFUMUIsU0FBWSxFK0MwVE4saUJBQW9COztFNkJ0UjVCLElBQUk7STVFOUNGLGlCQUFvQixFK0NvVWQsYUFBb0I7SS9DaFUxQixjQUFpQixFK0NnVVgsYUFBb0I7SS9DOVQxQixhQUFnQixF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LFdBQWM7O0U2QjVQdEIsR0FBRztJNUVoSUQsaUJBQW9CLEUrQzRYZCxZQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFlBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsWUFBYztJL0NwWHBCLFlBQWUsRStDb1hULFlBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixZQUFjOztFNkIxUHRCLEdBQUc7STVFbElELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCeFB0QixHQUFHO0k1RXBJRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QnRQdEIsR0FBRztJNUV0SUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJwUHRCLEdBQUc7STVFeElELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCbFB0QixHQUFHO0k1RTFJRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QmhQdEIsR0FBRztJNUU1SUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkI5T3RCLElBQUk7STVFOUlGLGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7OztBMEJ6VmxCLGtCQUFrQixDQUFsQixNQUFrQjtFR3VGdEIsRUFBRTtJNUUxSEEsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJoUXRCLEdBQUc7STVFNUhELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCOVB0QixHQUFHO0k1RTlIRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QjVQdEIsR0FBRztJNUVoSUQsaUJBQW9CLEUrQzRYZCxZQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFlBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsWUFBYztJL0NwWHBCLFlBQWUsRStDb1hULFlBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixZQUFjOztFNkIxUHRCLEdBQUc7STVFbElELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCeFB0QixHQUFHO0k1RXBJRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QnRQdEIsR0FBRztJNUV0SUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJwUHRCLEdBQUc7STVFeElELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCbFB0QixHQUFHO0k1RTFJRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QmhQdEIsR0FBRztJNUU1SUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkI5T3RCLElBQUk7STVFOUlGLGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29Y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O0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sWUFBYzs7RTZCOVB0QixHQUFHO0k1RTlIRCxpQkFBb0IsRStDNFhkLFdBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsV0FBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixXQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsV0FBYztJL0NsWHBCLFNBQVksRStDa1hOLFdBQWM7O0U2QjVQdEIsR0FBRztJNUVoSUQsaUJBQW9CLEUrQzRYZCxZQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFlBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsWUFBYztJL0NwWHBCLFlBQWUsRStDb1hULFlBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixZQUFjOztFNkIxUHRCLEdBQUc7STVFbElELGlCQUFvQixFK0M0WGQsV0FBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxXQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFdBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxXQUFjO0kvQ2xYcEIsU0FBWSxFK0NrWE4sV0FBYzs7RTZCeFB0QixHQUFHO0k1RXBJRCxpQkFBb0IsRStDNFhkLFlBQWM7SS9DeFhwQixjQUFpQixFK0N3WFgsWUFBYztJL0N0WHBCLGFBQWdCLEUrQ3NYVixZQUFjO0kvQ3BYcEIsWUFBZSxFK0NvWFQsWUFBYztJL0NsWHBCLFNBQVksRStDa1hOLFlBQWM7O0U2QnRQdEIsR0FBRztJNUV0SUQsaUJBQW9CLEUrQzRYZCxXQUFjO0kvQ3hYcEIsY0FBaUIsRStDd1hYLFdBQWM7SS9DdFhwQixhQUFnQixFK0NzWFYsV0FBYztJL0NwWHBCLFlBQWUsRStDb1hULFdBQWM7SS9DbFhwQixTQUFZLEUrQ2tYTixXQUFjOztFNkJwUHRCLEdBQUc7STVFeElELGlCQUFvQixFK0M0WGQsWUFBYztJL0N4WHBCLGNBQWlCLEUrQ3dYWCxZQUFjO0kvQ3RYcEIsYUFBZ0IsRStDc1hWLFlBQWM7SS9DcFhwQixZQUFlLEUrQ29YVCxZ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YSxDQUFDLE9BQU8sQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUU7OztBQUFELEFBQUEsYUFBYSxDQUFDLGNBQWMsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUU7OztBQUFELEFBQUEsYUFBYSxDQUFDLGNBQWMsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUU7OztBQUFELEFBQUEsYUFBYSxDQUFDLFdBQVcsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUU7OztBQUFELEFBQUEsYUFBYSxDQUFDLFVBQVUsQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUU7OztBQUFELEFBQUEsYUFBYSxDQUFDLFlBQVksQ0FBQTtFQUFDLEtBQUssRUFBQyxJQUFJO0NBQUU7OztBQUFELEFBQUEsYUFBYSxDQUFDLFFBQVEsRUFBQyxhQUFhLENBQUMsYUFBYSxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRTs7O0FBQUQsQUFBQSxhQUFhLENBQUMsV0FBVyxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRTs7O0FBQUQsQUFBQSxhQUFhLENBQUMsV0FBVyxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRTs7O0FBQUQsQUFBQSxhQUFhLENBQUMsT0FBTyxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRTs7O0FBQUQsQUFBQSxhQUFhLENBQUMsYUFBYSxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRTs7O0FBQUQsQUFBQSxhQUFhLENBQUMsTUFBTSxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRTs7O0FBQUQsQUFBQSxhQUFhLENBQUMsUUFBUSxDQUFBO0VBQUMsS0FBSyxFQUFDLElBQUk7Q0FBRTs7O0FBQUQsQUFBQSxlQUFlLEVBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQTtFQUFDLEtBQUssRUFBQyxHQUFHO0NBQUU7OztBQUFELEFBQUEscUJBQXFCLENBQUE7RUFBQyxhQUFhLEVBQUMsU0FBUztDQUFFOzs7QUFBRCxBQUFBLEdBQUcsQUFBQSxXQUFXLENBQUMsSUFBSSxB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 */
