
.dz-upload {
    display: block;
    background-color: red;
    height: 10px;
    width: 0%;
}
.fade-enter-active, .fade-leave-active {
      transition: opacity 2s
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
      opacity: 0
}


.tag-input[data-v-7f69e7de] {
  width: 100%;
  border: 1px solid #eee;
  font-size: 0.9em;
  height: 50px;
  box-sizing: border-box;
  padding: 0 10px;
}
.tag-input__tag[data-v-7f69e7de] {
  height: 30px;
  float: left;
  margin-right: 10px;
  background-color: #eee;
  margin-top: 10px;
  line-height: 30px;
  padding: 0 5px;
  border-radius: 5px;
}
.tag-input__tag > span[data-v-7f69e7de] {
  cursor: pointer;
  opacity: 0.75;
}
.tag-input__text[data-v-7f69e7de] {
  border: none;
  outline: none;
  font-size: 0.9em;
  line-height: 50px;
  background: none;
}


.map {
   position: absolute;
   overflow :hidden
}
.vue2leaflet-map {
    height: 66% !important;
    width: 66% !important;
}


.map {
   position: absolute;
   overflow :hidden
}
.vue2leaflet-map {
    height: 66% !important;
    width: 66% !important;
}


.dz-upload {
    display: block;
    background-color: red;
    height: 10px;
    width: 0%;
}
.fade-enter-active, .fade-leave-active {
      transition: opacity 2s
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
      opacity: 0
}


.dz-upload {
    display: block;
    background-color: red;
    height: 10px;
    width: 0%;
}
.fade-enter-active, .fade-leave-active {
      transition: opacity 2s
}
.fade-enter, .fade-leave-to {
      opacity: 0
}


.dz-upload {
    display: block;
    background-color: red;
    height: 10px;
    width: 0%;
}
.fade-enter-active, .fade-leave-active {
      transition: opacity 2s
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
      opacity: 0
}


.dz-upload {
    display: block;
    background-color: red;
    height: 10px;
    width: 0%;
}
.fade-enter-active, .fade-leave-active {
      transition: opacity 2s
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
      opacity: 0
}


.dz-upload {
    display: block;
    background-color: red;
    height: 10px;
    width: 0%;
}
.fade-enter-active, .fade-leave-active {
      transition: opacity 2s
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
      opacity: 0
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiO0FBc0dBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO01BQ0E7QUFDQTtBQUNBO01BQ0E7QUFDQTs7O0FDckRBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7OztBQ3FMQTtHQUNBO0dBQ0E7QUFDQTtBQUNBO0lBQ0E7SUFDQTtBQUNBOzs7QUN6RUE7R0FDQTtHQUNBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7QUFDQTs7O0FDN0dBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO01BQ0E7QUFDQTtBQUNBO01BQ0E7QUFDQTs7O0FDVkE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBOzs7QUMzQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBOzs7QUMrQkE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBOzs7QUN0RUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBO0FBQ0E7TUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbXBvbmVudHMvTmV3UG9zdC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbXBvbmVudHMvUHJvZmlsZS9UYWdJbnB1dC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbXBvbmVudHMvUHJvZmlsZS9Qcm9maWxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvY29tcG9uZW50cy9Qcm9maWxlL1Nob3dQcm9maWxlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvY29tcG9uZW50cy9Hcm91cHMvTmV3R3JvdXAudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9jb21wb25lbnRzL0dyb3Vwcy9Qb3N0L05ld0dyb3VwUG9zdC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbXBvbmVudHMvR3JvdXBzL05ld0pvaW5SZXF1ZXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvY29tcG9uZW50cy9Hcm91cHMvR3JvdXBJbWFnZS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbXBvbmVudHMvR3JvdXBzL05ld093bmVyLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgYmctd2hpdGUgcm91bmRlZCBzaGFkb3cgXCI+XG4gPGRpdiB2LXNob3c9XCJsb2FkaW5nXCIgY2xhc3M9XCJ3LWZ1bGwgbWF4LXcteHMgbXQtMzIgbWItMTJcIj5cbjxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBcIj5cbiAgICA8ZGl2IGNsYXNzPVwidy0xNiBoLTE2IGJvcmRlci1iLTIgYm9yZGVyLWdyYXktOTAwIHJvdW5kZWQtZnVsbCBhbmltYXRlLXNwaW5cIj48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG4gICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LThcIiB2LWlmPVwiYXV0aFVzZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyA6c3JjPVwiYXV0aFVzZXIuYXZhdGFyVXJpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvYmplY3QtY292ZXIgdy04IGgtOCByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xIG14LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwicG9zdE1lc3NhZ2VcIiBuYW1lPVwiYm9keVwiIGNsYXNzPVwidy1mdWxsIGgtOCBwbC00IGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbFwiIDpwbGFjZWhvbGRlcj1cIiR0KCdtZXNzYWdlLmFkZGFwb3N0JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHYtaWY9XCJwb3N0TWVzc2FnZVwiIEBjbGljaz1cImRpc3BhdGNoUG9zdE1lc3NhZ2UoKTtcIiBjbGFzcz1cInB4LTIgcHktMSBtbC0yIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbFwiPnt7ICR0KCdtZXNzYWdlLmRvcG9zdCcpIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZ1ZS1kcm9wem9uZSAgdi1vbjp2ZHJvcHpvbmUtdXBsb2FkLXByb2dyZXNzPVwic2VuZGluZ1wiIHYtb246dmRyb3B6b25lLXMzLXVwbG9hZC1lcnJvcj1cInMzVXBsb2FkRXJyb3JcIlxuICAgICAgICB2LW9uOnZkcm9wem9uZS1zMy11cGxvYWQtc3VjY2Vzcz1cInMzVXBsb2FkU3VjY2Vzc1wiIDphd3NzMz1cImF3c3MzXCIgQHZkcm9wem9uZS1zdWNjZXNzPVwiYWRkZWRcIiByZWY9XCJteVZ1ZURyb3B6b25lXCIgaWQ9XCJkcm9wem9uZVwiIDpvcHRpb25zPVwiZHJvcHpvbmVPcHRpb25zXCI+PC92dWUtZHJvcHpvbmU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAge3sgJHQoJ21lc3NhZ2UudG90YWxrYicpIH19OiB7eyB0b3RhbEtCIH19IEtpbG9ieXRlc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCB7IG1hcEdldHRlcnMgfSBmcm9tICd2dWV4JztcbmltcG9ydCB2dWUyRHJvcHpvbmUgZnJvbSAndnVlMi1kcm9wem9uZSdcbmltcG9ydCAndnVlMi1kcm9wem9uZS9kaXN0L3Z1ZTJEcm9wem9uZS5taW4uY3NzJ1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgdnVlRHJvcHpvbmU6IHZ1ZTJEcm9wem9uZVxuICAgIH0sXG4gICAgZGF0YTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsb2FkaW5nIDogZmFsc2UsXG4gICAgICB0b3RhbEtCOiAwLFxuICAgICAgZHJvcHpvbmVPcHRpb25zOiB7XG4gICAgICAgICAgdXJsOiAnL2ZpbGUtdXBsb2FkJyxcbiAgICAgICAgICBtYXhGaWxlczogMSxcbiAgICAgICAgICBhY2NlcHRlZEZpbGVzOiAnaW1hZ2UvcG5nLGltYWdlL2pwZyxpbWFnZS9naWYsaW1hZ2UvanBlZyx2aWRlby9tcDQnLFxuICAgICAgICAgIGRpY3REZWZhdWx0TWVzc2FnZTogdGhpcy4kdCgnbWVzc2FnZS5kcm9wem9uZScpLFxuICAgICAgfSxcbiAgICAgIGF3c3MzOiB7XG4gICAgICBzaWduaW5nVVJMOiAnL3NpZ25hdHVyZScsIC8vV2hlcmUgeW91IHdpbGwgZ2V0IHNpZ25lZCB1cmxcbiAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgcGFyYW1zIDoge30sXG4gICAgICBzZW5kRmlsZVRvU2VydmVyIDpmYWxzZSAvL0lmIHlvdSB3YW50IHRvIHVwbG9hZCBmaWxlIHRvIHlvdXIgc2VydmVyIGFsb25nIHdpdGggczNcbiAgICAgICAgfVxuICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgc2VuZGluZyhmaWxlLCB0b3RhbEJ5dGVzLCB0b3RhbEJ5dGVzU2VudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxLQiA9IE1hdGguZmxvb3IodG90YWxCeXRlc1NlbnQvMTAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIHMzVXBsb2FkRXJyb3IoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICBhbGVydCgnQW4gZXJyb3Igb2NjdXJlZCcpO1xuICAgICAgICB9LFxuICAgICAgICBzM1VwbG9hZFN1Y2Nlc3MoZmlsZW5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxLQiA9IFwiQWxsXCI7XG4gICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VwZGF0ZUNvbW1lbnRVcGxvYWRlZEZpbGVuYW1lJywgZmlsZW5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBhZGRlZChmaWxlLCByZXNwb25zZSkge1xuICAgICAgICB9LFxuICAgICAgICBkaXNwYXRjaFBvc3RNZXNzYWdlKCkge1xuICAgICAgICAgICAgdGhpcy4kcmVmcy5teVZ1ZURyb3B6b25lLmVuYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy4kcmVmcy5teVZ1ZURyb3B6b25lLnJlbW92ZUFsbEZpbGVzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Bvc3RNZXNzYWdlJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIG5hbWU6IFwiTmV3UG9zdFwiLFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIHBvc3RNZXNzYWdlOiB7XG4gICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMucG9zdE1lc3NhZ2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0KHBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCd1cGRhdGVNZXNzYWdlJywgcG9zdE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgYXV0aFVzZXI6ICdhdXRoVXNlcicsXG4gICAgICAgIH0pLFxuXG4gICAgfVxuXG59XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuLmR6LXVwbG9hZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xuICAgIGhlaWdodDogMTBweDtcbiAgICB3aWR0aDogMCU7XG59XG4gLmZhZGUtZW50ZXItYWN0aXZlLCAuZmFkZS1sZWF2ZS1hY3RpdmUge1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyc1xuICAgfVxuICAgLmZhZGUtZW50ZXIsIC5mYWRlLWxlYXZlLXRvIC8qIC5mYWRlLWxlYXZlLWFjdGl2ZSBiZWxvdyB2ZXJzaW9uIDIuMS44ICovIHtcbiAgICAgIG9wYWNpdHk6IDBcbiAgIH1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGFnLWlucHV0XCI+XG4gICAgPGRpdiB2LWZvcj1cIih0YWcsIGluZGV4KSBpbiBteXRhZ3NcIiA6a2V5PVwiaW5kZXhcIiBjbGFzcz1cInRhZy1pbnB1dF9fdGFnXCI+XG4gICAgICA8c3BhbiBAY2xpY2s9J3JlbW92ZVRhZyhpbmRleCknPng8L3NwYW4+XG4gICAgICB7eyB0YWcgfX1cbiAgICA8L2Rpdj5cbiAgICA8aW5wdXQgcmVmPVwidGhhdFwiXG4gICAgICB0eXBlPSd0ZXh0J1xuICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBhIFRhZ1wiXG4gICAgICBjbGFzcz0ndGFnLWlucHV0X190ZXh0J1xuICAgICAgQGtleWRvd24uZW50ZXI9J2FkZFRhZydcbiAgICAgIEBrZXlkb3duLjE4OD0nYWRkVGFnJ1xuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBkYXRhICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICB9XG4gICAgfSxcbiAgICBwcm9wczogW1wibXl0YWdzXCIsIFwidXNlcmlkXCIsIFwiYWRkdXJsXCIsIFwicmVtb3ZldXJsXCJdLFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYWRkVGFnIChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHZhciB2YWwgPSB0aGlzLiRyZWZzW1widGhhdFwiXS52YWx1ZTtcbiAgICAgICAgaWYgKHZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlZBTFwiKTtcbiAgICAgICAgICB0aGlzLm15dGFncy5wdXNoKHZhbClcbiAgICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcblxuICAgICAgICAgIGF4aW9zLnBvc3QodGhpcy5hZGR1cmwsIHsgdmFsdWU6IHZhbCB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgfVxuXG5cblxuXG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZVRhZyAoaW5kZXgpIHtcbiAgICAgICAgICAgICBheGlvcy5wb3N0KHRoaXMucmVtb3ZldXJsLCB7IHZhbHVlOiB0aGlzLm15dGFnc1tpbmRleF0gfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMubXl0YWdzLnNwbGljZShpbmRleCwgMSlcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbW91bnRlZCgpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUQUdJTlBVVFwiKTtcbiAgICAgIGNvbnNvbGUubG9nKFwiTVlUQUdTOlwiK3RoaXMubXl0YWdzKTtcbiAgICAgICAvLyB0aGlzLnRhZ3MgPSB0aGlzLm15dGFncztcbiAgICB9XG4gIH1cbjwvc2NyaXB0PlxuPHN0eWxlIHNjb3BlZD5cbiAgLnRhZy1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIGhlaWdodDogNTBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgfVxuXG4gIC50YWctaW5wdXRfX3RhZyB7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICB9XG5cbiAgLnRhZy1pbnB1dF9fdGFnID4gc3BhbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gIH1cblxuICAudGFnLWlucHV0X190ZXh0IHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG48ZGl2ICA+XG48ZGl2IGNsYXNzPVwiYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHRhYnMgc206ZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGRhdGEtdGFyZ2V0PVwicGFuZWwtMVwiIEBjbGljaz1cIm9uVGFiQ2xpY2tcIiA6Y2xhc3M9XCJjdXJyZW50VGFiPT0ncGFuZWwtMScgPyBgYm9yZGVyLWItMiBib3JkZXItYmx1ZS01MDBgIDogYGBcIiBjbGFzcz1cImJsb2NrIHB4LTYgcHktNCBmb250LW1lZGl1bSB0ZXh0LWdyYXktNjAwIHRleHQtYmx1ZS01MDAgdGFiIGhvdmVyOnRleHQtYmx1ZS01MDAgZm9jdXM6b3V0bGluZS1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+PGJ1dHRvbiBkYXRhLXRhcmdldD1cInBhbmVsLTJcIiA6Y2xhc3M9XCJjdXJyZW50VGFiPT0ncGFuZWwtMicgPyBgYm9yZGVyLWItMiBib3JkZXItYmx1ZS01MDBgIDogYGBcIiBAY2xpY2s9XCJvblRhYkNsaWNrXCIgY2xhc3M9XCJibG9jayBweC02IHB5LTQgdGFiIGV4dC1ncmF5LTYwMCBob3Zlcjp0ZXh0LWJsdWUtNTAwIGZvY3VzOm91dGxpbmUtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHByb2ZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj48YnV0dG9uIGRhdGEtdGFyZ2V0PVwicGFuZWwtM1wiIDpjbGFzcz1cImN1cnJlbnRUYWI9PSdwYW5lbC0zJyA/IGBib3JkZXItYi0yIGJvcmRlci1ibHVlLTUwMGAgOiBgYFwiIEBjbGljaz1cIm9uVGFiQ2xpY2tcIiBjbGFzcz1cImJsb2NrIHB4LTYgcHktNCB0ZXh0LWdyYXktNjAwIHRhYiBob3Zlcjp0ZXh0LWJsdWUtNTAwIGZvY3VzOm91dGxpbmUtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwicGFuZWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UHJvZmlsZURldGFpbHMgOmF1dGhVc2VyPVwiYXV0aFVzZXJcIiA6Y3VycmVudFRhYj1cImN1cnJlbnRUYWJcIiA6cHJvZmlsZURhdGE9XCJwcm9maWxlRGF0YVwiIDpzaG93TW9yZUZyaWVuZHM9XCJzaG93TW9yZUZyaWVuZHNcIiA6dGFnU3RyaW5nPVwidGFnU3RyaW5nXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTUgcGFuZWwtMiB0YWItY29udGVudFwiIHYtaWY9XCJjdXJyZW50VGFiPT0ncGFuZWwtMidcIj5cbjxmb3JtIGNsYXNzPVwicHgtOCBwdC02IHBiLTggbWItNCBiZy13aGl0ZSByb3VuZGVkIHNoYWRvdy1tZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJibG9jayBtYi0yIHRleHQtc20gZm9udC1ib2xkIHRleHQtZ3JheS03MDBcIiBmb3I9XCJ0YWdzXCI+XG4gICAgICAgICAgVGFnc1xuICAgICAgPC9sYWJlbD5cblxuICAgICAgPFRhZ0lucHV0IDphZGR1cmw9XCInL2FwaS9hZGR0YWcvJythdXRoVXNlci5pZFwiIDpyZW1vdmV1cmw9XCInL2FwaS9yZW1vdmV0YWcvJythdXRoVXNlci5pZFwiIDpteXRhZ3M9XCJwcm9maWxlRGF0YS50YWdzXCIgOnVzZXJpZD1cImF1dGhVc2VyLmlkXCIgLz5cbiAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJibG9jayBtYi0yIHRleHQtc20gZm9udC1ib2xkIHRleHQtZ3JheS03MDBcIiBmb3I9XCJ0YWdzXCI+XG4gICAgICAgICAgV2Vic2l0ZSBVUkxcbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxpbnB1dCBAa2V5dXA9XCJ1c2VyaW5wdXRcIiB2LW1vZGVsPVwicHJvZmlsZURhdGEud2Vic2l0ZVwiIGNsYXNzPVwidy1mdWxsIHB4LTMgcHktMiBsZWFkaW5nLXRpZ2h0IGJvcmRlciByb3VuZGVkIHNoYWRvdyBhcHBlYXJhbmNlLW5vbmUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnNoYWRvdy1vdXRsaW5lXCIgaWQ9XCJ3ZWJzaXRlXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cImh0dHA6Ly93d3cuc3VwZXJtb2QubmV0XCI+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgcHQtNFwiPlxuXG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IGJnLXdoaXRlIHJvdW5kZWQgc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJhdXRoVXNlclwiIDpzcmM9XCJhdXRoVXNlci5hdmF0YXJVcmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9iamVjdC1jb3ZlciB3LTggaC04IHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgYmctd2hpdGUgcm91bmRlZCBzaGFkb3cgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnVlLWRyb3B6b25lIEB2ZHJvcHpvbmUtc3VjY2Vzcz1cImFkZGVkXCIgcmVmPVwibXlWdWVEcm9wem9uZVwiIGlkPVwiZHJvcHpvbmVcIiA6b3B0aW9ucz1cImRyb3B6b25lT3B0aW9uc1wiPjwvdnVlLWRyb3B6b25lPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBwdC00XCI+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IGJnLXdoaXRlIHJvdW5kZWQgc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJhdXRoVXNlclwiIDpzcmM9XCJhdXRoVXNlci5iYW5uZXJVcmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9iamVjdC1jb3ZlciB3LTggaC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBiZy13aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZ1ZS1kcm9wem9uZSBAdmRyb3B6b25lLXN1Y2Nlc3M9XCJhZGRlZFwiIHJlZj1cIm15VnVlQmFubmVyRHJvcHpvbmVcIiBpZD1cImJhbm5lckRyb3B6b25lXCIgOm9wdGlvbnM9XCJiYW5uZXJEcm9wem9uZU9wdGlvbnNcIj48L3Z1ZS1kcm9wem9uZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS01IHBhbmVsLTMgdGFiLWNvbnRlbnRcIiB2LWlmPVwiY3VycmVudFRhYj09J3BhbmVsLTMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yLzMgb3ZlcmZsb3cteC1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoJ21lc3NhZ2UubWFya21hcCcpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGwtbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNlbnRlcj1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnpvb209XCJ6b29tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMS8zIG92ZXJmbG93LXgtaGlkZGVuIG1hcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPVwibWFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdXBkYXRlOnpvb209XCJ6b29tVXBkYXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZTpjZW50ZXI9XCJjZW50ZXJVcGRhdGVkXCIgQGNsaWNrPVwiYWRkTWFya2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsLW1hcmtlciB2LWZvcj1cIm1hcmtlciwgaW5kZXggaW4gbWFya2Vyc1wiIHYtYmluZDprZXk9XCJpbmRleFwiIDpsYXQtbG5nPVwibWFya2VyXCIgQGNsaWNrPVwicmVtb3ZlTWFya2VyKGluZGV4KVwiPjwvbC1tYXJrZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGwtdGlsZS1sYXllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dXJsPVwidXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sLXRpbGUtbGF5ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sLW1hcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG5cbjwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBQcm9maWxlU3RvcnkgZnJvbSAnLi9Qcm9maWxlU3RvcnknO1xuaW1wb3J0IFByb2ZpbGVEZXRhaWxzIGZyb20gJy4vUHJvZmlsZURldGFpbHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnO1xuaW1wb3J0IHZ1ZTJEcm9wem9uZSBmcm9tICd2dWUyLWRyb3B6b25lJ1xuaW1wb3J0ICd2dWUyLWRyb3B6b25lL2Rpc3QvdnVlMkRyb3B6b25lLm1pbi5jc3MnXG5pbXBvcnQgeyBMTWFwLCBMVGlsZUxheWVyLCBMTWFya2VyIH0gZnJvbSAndnVlMi1sZWFmbGV0JztcbmltcG9ydCAnbGVhZmxldC9kaXN0L2xlYWZsZXQuY3NzJztcbmltcG9ydCBcImxlYWZsZXQvZGlzdC9pbWFnZXMvbWFya2VyLXNoYWRvdy5wbmdcIjtcbmltcG9ydCBcImxlYWZsZXQvZGlzdC9pbWFnZXMvbWFya2VyLWljb24ucG5nXCI7XG5pbXBvcnQgXCJsZWFmbGV0L2Rpc3QvaW1hZ2VzL21hcmtlci1pY29uLTJ4LnBuZ1wiO1xuaW1wb3J0IFRhZ0lucHV0IGZyb20gXCIuL1RhZ0lucHV0XCI7XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICB2dWVEcm9wem9uZTogdnVlMkRyb3B6b25lLFxuICAgICAgICBMTWFwLFxuICAgICAgICBMVGlsZUxheWVyLFxuICAgICAgICBMTWFya2VyLFxuICAgICAgICBQcm9maWxlU3RvcnksXG4gICAgICAgICBUYWdJbnB1dCxcbiAgICAgICAgIFByb2ZpbGVEZXRhaWxzXG4gICAgfSxcbiAgICBtb3VudGVkKCkge1xuICAgICAgICBheGlvcy5nZXQoJy9hcGkvcHJvZmlsZWRhdGEvMCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01vcmVGcmllbmRzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS5mcmllbmRzLmxlbmd0aD49Nikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01vcmVGcmllbmRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLmZyaWVuZHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcIkEgbmV0d29yayBlcnJvciBvY2N1cmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICBheGlvcy5nZXQoJy9hcGkvZ2V0bWFwLzAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya2VycyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMLmxhdExuZyhyZXMuZGF0YVswXSwgcmVzLmRhdGFbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KFwiQSBuZXR3b3JrIGVycm9yIG9jY3VyZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBkZWxldGUgTC5JY29uLkRlZmF1bHQucHJvdG90eXBlLl9nZXRJY29uVXJsO1xuICAgICAgICBMLkljb24uRGVmYXVsdC5tZXJnZU9wdGlvbnMoe1xuICAgICAgICBpY29uUmV0aW5hVXJsOiByZXF1aXJlKFwibGVhZmxldC9kaXN0L2ltYWdlcy9tYXJrZXItaWNvbi0yeC5wbmdcIiksXG4gICAgICAgIGljb25Vcmw6IHJlcXVpcmUoXCJsZWFmbGV0L2Rpc3QvaW1hZ2VzL21hcmtlci1pY29uLnBuZ1wiKSxcbiAgICAgICAgc2hhZG93VXJsOiByZXF1aXJlKFwibGVhZmxldC9kaXN0L2ltYWdlcy9tYXJrZXItc2hhZG93LnBuZ1wiKVxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuXG4gICAgICAgIHNob3dNb3JlRnJpZW5kcyA6IHRydWUsXG4gICAgICAgIHByb2ZpbGVEYXRhOiBbXSxcbiAgICAgICAgY3VycmVudFRhYiA6ICdwYW5lbC0xJyxcbiAgICAgIGRyb3B6b25lT3B0aW9uczoge1xuICAgICAgICAgIHVybDogJy9wcm9maWxlLXVwbG9hZC9hdmF0YXJ1cmknLFxuICAgICAgICAgIG1heEZpbGVzOiAxLFxuICAgICAgICAgIGFhY2NlcHRlZEZpbGVzOiAnaW1hZ2UvcG5nLGltYWdlL2pwZyxpbWFnZS9naWYsaW1hZ2UvanBlZycsXG4gICAgICAgICAgbWF4RmlsZXNpemU6IDEwMDAwMDAsXG4gICAgICAgICAgZGljdERlZmF1bHRNZXNzYWdlOiB0aGlzLiR0KCdtZXNzYWdlLmF2YXRhckRyb3BmaWxlcycpXG4gICAgICB9LFxuICAgICAgIGJhbm5lckRyb3B6b25lT3B0aW9uczoge1xuICAgICAgICAgIHVybDogJy9wcm9maWxlLXVwbG9hZC9iYW5uZXJ1cmknLFxuICAgICAgICAgIG1heEZpbGVzOiAxLFxuICAgICAgICAgIGFhY2NlcHRlZEZpbGVzOiAnaW1hZ2UvcG5nLGltYWdlL2pwZyxpbWFnZS9naWYsaW1hZ2UvanBlZycsXG4gICAgICAgICAgbWF4RmlsZXNpemU6IDEwMDAwMDAsXG4gICAgICAgICAgZGljdERlZmF1bHRNZXNzYWdlOiB0aGlzLiR0KCdtZXNzYWdlLmJhbm5lckRyb3BmaWxlcycpXG4gICAgICB9LFxuICAgICAgdXJsOiAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLFxuICAgICBjZW50ZXI6IFsgNDAuNzU2MzcxMjMsIC03My45ODU0NTMyMSBdLFxuICAgICB6b29tOiAyLFxuICAgICAgIG1hcmtlcnM6IFtcbiAgICAgICAgTC5sYXRMbmcoNDAuNzU2MzcxMjMsIC03My45ODU0NTMyMSlcbiAgICAgIF1cbiAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHRhZ1N0cmluZygpIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSAnJztcbiAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVEYXRhLnRhZ3MpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wcm9maWxlRGF0YS50YWdzLmxlbmd0aDsgaSArKykge1xuICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoPjApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyICsgXCIgXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQURESU5HIFwiK3RoaXMucHJvZmlsZURhdGEudGFnc1tpXSk7XG4gICAgICAgICAgICAgICAgc3RyPXN0cit0aGlzLnByb2ZpbGVEYXRhLnRhZ3NbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9LFxuICAgICAgICB1c2VyaW5wdXQoZXZlbnQpIHtcbiAgICAgICAgICAgIGxldCB3ZWJzaXRlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgYXhpb3MucG9zdCgnL2FwaS9zZXRpbnB1dC93ZWJzaXRlJywgeyB2YWx1ZTogd2Vic2l0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlTWFya2VyKGluZGV4KSB7XG4gICAgICB0aGlzLm1hcmtlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGF4aW9zLmdldCgnL2FwaS9zZXRtYXAvMC8wJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcIkEgbmV0d29yayBlcnJvciBvY2N1cmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgfSxcbiAgICBhZGRNYXJrZXIoZXZlbnQpIHtcbiAgICAgIHRoaXMubWFya2Vycz1bXTtcbiAgICAgIHRoaXMubWFya2Vycy5wdXNoKGV2ZW50LmxhdGxuZyk7XG4gICAgICBheGlvcy5nZXQoJy9hcGkvc2V0bWFwLycrZXZlbnQubGF0bG5nLmxhdCtcIi9cIitldmVudC5sYXRsbmcubG5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoXCJBIG5ldHdvcmsgZXJyb3Igb2NjdXJlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgIH0sXG4gICAgICAgIGFkZGVkKGZpbGUsIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2Uuc3RhdHVzO1xuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhID09ICdPSycpIHtcbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdmZXRjaEF1dGhVc2VyJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlRGF0YSA9PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgYWxlcnQoJ0EgZmlsZSB1cGxvYWQgZXJyb3Igb2NjdXJlZCwgaW1hZ2Ugc2l6ZSBsaW1pdCBpcyAxTUInKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUucmVtb3ZlQWxsRmlsZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGlzcGF0Y2hQb3N0TWVzc2FnZSgpIHtcbiAgICAgICAgICAgIHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZS5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZS5yZW1vdmVBbGxGaWxlcygpO1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Bvc3RNZXNzYWdlJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHpvb21VcGRhdGVkICh6b29tKSB7XG4gICAgICAgICAgICB0aGlzLnpvb20gPSB6b29tO1xuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5tYXJrZXJzKVxuICAgICAgICB9LFxuICAgICAgICBjZW50ZXJVcGRhdGVkIChjZW50ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyO1xuICAgICAgICB9LFxuICAgICAgICBvblRhYkNsaWNrKGV2ZW50KSB7XG5cbiAgICAgICAgbGV0IGNsYXNzU3RyaW5nID0gZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS10YXJnZXQnKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiID0gY2xhc3NTdHJpbmc7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudFRhYik7XG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBuYW1lOiBcIlByb2ZpbGVcIixcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBwb3N0TWVzc2FnZToge1xuICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLnBvc3RNZXNzYWdlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldChwb3N0TWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgndXBkYXRlTWVzc2FnZScsIHBvc3RNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgIGF1dGhVc2VyOiAnYXV0aFVzZXInLFxuICAgICAgICB9KSxcblxuICAgIH1cblxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbiAubWFwIHtcbiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgIG92ZXJmbG93IDpoaWRkZW5cbiB9XG4gLnZ1ZTJsZWFmbGV0LW1hcCB7XG4gICAgaGVpZ2h0OiA2NiUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogNjYlICFpbXBvcnRhbnQ7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuPGRpdiAgPlxuPGRpdiBjbGFzcz1cImJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB0YWJzIHNtOmZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLXRhcmdldD1cInBhbmVsLTFcIiBAY2xpY2s9XCJvblRhYkNsaWNrXCIgOmNsYXNzPVwiY3VycmVudFRhYj09J3BhbmVsLTEnID8gYGJvcmRlci1iLTIgYm9yZGVyLWJsdWUtNTAwYCA6IGBgXCIgY2xhc3M9XCJibG9jayBweC02IHB5LTQgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCB0ZXh0LWJsdWUtNTAwIHRhYiBob3Zlcjp0ZXh0LWJsdWUtNTAwIGZvY3VzOm91dGxpbmUtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdi1pZj1cInByb2ZpbGVEYXRhLm1hcENoYW5nZWQgPT0gMVwiIGRhdGEtdGFyZ2V0PVwicGFuZWwtMlwiIDpjbGFzcz1cImN1cnJlbnRUYWI9PSdwYW5lbC0yJyA/IGBib3JkZXItYi0yIGJvcmRlci1ibHVlLTUwMGAgOiBgYFwiIEBjbGljaz1cIm9uVGFiQ2xpY2tcIiBjbGFzcz1cImJsb2NrIHB4LTYgcHktNCB0ZXh0LWdyYXktNjAwIHRhYiBob3Zlcjp0ZXh0LWJsdWUtNTAwIGZvY3VzOm91dGxpbmUtbm9uZVwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJwYW5lbHNcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2ZpbGVEZXRhaWxzIDphdXRoVXNlcj1cImF1dGhVc2VyXCIgOmN1cnJlbnRUYWI9XCJjdXJyZW50VGFiXCIgOnByb2ZpbGVEYXRhPVwicHJvZmlsZURhdGFcIiA6c2hvd01vcmVGcmllbmRzPVwic2hvd01vcmVGcmllbmRzXCIgOnRhZ1N0cmluZz1cInRhZ1N0cmluZ1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS01IHBhbmVsLTMgdGFiLWNvbnRlbnRcIiB2LWlmPVwiY3VycmVudFRhYj09J3BhbmVsLTInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yLzMgb3ZlcmZsb3cteC1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bC1tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2VudGVyPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6em9vbT1cInpvb21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xLzMgb3ZlcmZsb3cteC1oaWRkZW4gbWFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9XCJtYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB1cGRhdGU6em9vbT1cInpvb21VcGRhdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdXBkYXRlOmNlbnRlcj1cImNlbnRlclVwZGF0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGwtbWFya2VyIHYtZm9yPVwibWFya2VyLCBpbmRleCBpbiBtYXJrZXJzXCIgdi1iaW5kOmtleT1cImluZGV4XCIgOmxhdC1sbmc9XCJtYXJrZXJcIj48L2wtbWFya2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsLXRpbGUtbGF5ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnVybD1cInVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbC10aWxlLWxheWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbC1tYXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuXG48L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgUHJvZmlsZURldGFpbHMgZnJvbSAnLi9Qcm9maWxlRGV0YWlscyc7XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAndnVleCc7XG5pbXBvcnQgdnVlMkRyb3B6b25lIGZyb20gJ3Z1ZTItZHJvcHpvbmUnXG5pbXBvcnQgJ3Z1ZTItZHJvcHpvbmUvZGlzdC92dWUyRHJvcHpvbmUubWluLmNzcydcbmltcG9ydCB7IExNYXAsIExUaWxlTGF5ZXIsIExNYXJrZXIgfSBmcm9tICd2dWUyLWxlYWZsZXQnO1xuaW1wb3J0ICdsZWFmbGV0L2Rpc3QvbGVhZmxldC5jc3MnO1xuaW1wb3J0IFwibGVhZmxldC9kaXN0L2ltYWdlcy9tYXJrZXItc2hhZG93LnBuZ1wiO1xuaW1wb3J0IFwibGVhZmxldC9kaXN0L2ltYWdlcy9tYXJrZXItaWNvbi5wbmdcIjtcbmltcG9ydCBcImxlYWZsZXQvZGlzdC9pbWFnZXMvbWFya2VyLWljb24tMngucG5nXCI7XG5pbXBvcnQgVGFnSW5wdXQgZnJvbSBcIi4vVGFnSW5wdXRcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHZ1ZURyb3B6b25lOiB2dWUyRHJvcHpvbmUsXG4gICAgICAgIExNYXAsXG4gICAgICAgIExUaWxlTGF5ZXIsXG4gICAgICAgIExNYXJrZXIsXG4gICAgICAgICBUYWdJbnB1dCxcbiAgICAgICAgIFByb2ZpbGVEZXRhaWxzXG4gICAgfSxcbiAgICBwcm9wczogW1wiaWRcIl0sXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgZGVsZXRlIEwuSWNvbi5EZWZhdWx0LnByb3RvdHlwZS5fZ2V0SWNvblVybDtcbiAgICAgICAgTC5JY29uLkRlZmF1bHQubWVyZ2VPcHRpb25zKHtcbiAgICAgICAgaWNvblJldGluYVVybDogcmVxdWlyZShcImxlYWZsZXQvZGlzdC9pbWFnZXMvbWFya2VyLWljb24tMngucG5nXCIpLFxuICAgICAgICBpY29uVXJsOiByZXF1aXJlKFwibGVhZmxldC9kaXN0L2ltYWdlcy9tYXJrZXItaWNvbi5wbmdcIiksXG4gICAgICAgIHNoYWRvd1VybDogcmVxdWlyZShcImxlYWZsZXQvZGlzdC9pbWFnZXMvbWFya2VyLXNoYWRvdy5wbmdcIilcbiAgICAgICAgfSk7XG4gICAgICAgIGF4aW9zLmdldCgnL2FwaS9wcm9maWxlZGF0YS8nK3RoaXMuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01vcmVGcmllbmRzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS5mcmllbmRzLmxlbmd0aD49Nikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01vcmVGcmllbmRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLmZyaWVuZHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcIkEgbmV0d29yayBlcnJvciBvY2N1cmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICBheGlvcy5nZXQoJy9hcGkvZ2V0bWFwLycrdGhpcy5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcmtlcnMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTC5sYXRMbmcocmVzLmRhdGFbMF0sIHJlcy5kYXRhWzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcIkEgbmV0d29yayBlcnJvciBvY2N1cmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuXG4gICAgICAgIHNob3dNb3JlRnJpZW5kcyA6IGZhbHNlLFxuICAgICAgICBwcm9maWxlRGF0YTogW10sXG4gICAgICAgIGN1cnJlbnRUYWIgOiAncGFuZWwtMScsXG4gICAgICBkcm9wem9uZU9wdGlvbnM6IHtcbiAgICAgICAgICB1cmw6ICcvcHJvZmlsZS11cGxvYWQnLFxuICAgICAgICAgIG1heEZpbGVzOiAxLFxuICAgICAgICAgIGFhY2NlcHRlZEZpbGVzOiAnaW1hZ2UvcG5nLGltYWdlL2pwZyxpbWFnZS9naWYsaW1hZ2UvanBlZycsXG4gICAgICAgICAgbWF4RmlsZXNpemU6IDEwMDAwMDAsXG4gICAgICAgICAgZGljdERlZmF1bHRNZXNzYWdlOiB0aGlzLiR0KCdtZXNzYWdlLmF2YXRhckRyb3BmaWxlcycpXG4gICAgICB9LFxuICAgICAgdXJsOiAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLFxuICAgICBjZW50ZXI6IFsgNDAuNzU2MzcxMjMsIC03My45ODU0NTMyMSBdLFxuICAgICB6b29tOiAyLFxuICAgICAgIG1hcmtlcnM6IFtcbiAgICAgICAgTC5sYXRMbmcoNDAuNzU2MzcxMjMsIC03My45ODU0NTMyMSlcbiAgICAgIF1cbiAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHRhZ1N0cmluZygpIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSAnJztcbiAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVEYXRhLnRhZ3MpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wcm9maWxlRGF0YS50YWdzLmxlbmd0aDsgaSArKykge1xuICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoPjApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyICsgXCIgXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQURESU5HIFwiK3RoaXMucHJvZmlsZURhdGEudGFnc1tpXSk7XG4gICAgICAgICAgICAgICAgc3RyPXN0cit0aGlzLnByb2ZpbGVEYXRhLnRhZ3NbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9LFxuICAgICAgICB1c2VyaW5wdXQoZXZlbnQpIHtcbiAgICAgICAgICAgIGxldCB3ZWJzaXRlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgYXhpb3MucG9zdCgnL2FwaS9zZXRpbnB1dC93ZWJzaXRlJywgeyB2YWx1ZTogd2Vic2l0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlTWFya2VyKGluZGV4KSB7XG4gICAgICB0aGlzLm1hcmtlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGF4aW9zLmdldCgnL2FwaS9zZXRtYXAvMC8wJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcIkEgbmV0d29yayBlcnJvciBvY2N1cmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgfSxcbiAgICBhZGRNYXJrZXIoZXZlbnQpIHtcbiAgICAgIHRoaXMubWFya2Vycz1bXTtcbiAgICAgIHRoaXMubWFya2Vycy5wdXNoKGV2ZW50LmxhdGxuZyk7XG4gICAgICBheGlvcy5nZXQoJy9hcGkvc2V0bWFwLycrZXZlbnQubGF0bG5nLmxhdCtcIi9cIitldmVudC5sYXRsbmcubG5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoXCJBIG5ldHdvcmsgZXJyb3Igb2NjdXJlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgIH0sXG4gICAgICAgIGFkZGVkKGZpbGUsIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2Uuc3RhdHVzO1xuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhID09ICdPSycpIHtcbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdmZXRjaEF1dGhVc2VyJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlRGF0YSA9PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgYWxlcnQoJ0EgZmlsZSB1cGxvYWQgZXJyb3Igb2NjdXJlZCwgaW1hZ2Ugc2l6ZSBsaW1pdCBpcyAxTUInKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUucmVtb3ZlQWxsRmlsZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGlzcGF0Y2hQb3N0TWVzc2FnZSgpIHtcbiAgICAgICAgICAgIHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZS5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZS5yZW1vdmVBbGxGaWxlcygpO1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Bvc3RNZXNzYWdlJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHpvb21VcGRhdGVkICh6b29tKSB7XG4gICAgICAgICAgICB0aGlzLnpvb20gPSB6b29tO1xuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5tYXJrZXJzKVxuICAgICAgICB9LFxuICAgICAgICBjZW50ZXJVcGRhdGVkIChjZW50ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyO1xuICAgICAgICB9LFxuICAgICAgICBvblRhYkNsaWNrKGV2ZW50KSB7XG5cbiAgICAgICAgbGV0IGNsYXNzU3RyaW5nID0gZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS10YXJnZXQnKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiID0gY2xhc3NTdHJpbmc7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudFRhYik7XG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBuYW1lOiBcIlByb2ZpbGVcIixcbiAgICBjb21wdXRlZDoge1xuICAgICAgICBwb3N0TWVzc2FnZToge1xuICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLnBvc3RNZXNzYWdlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldChwb3N0TWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgndXBkYXRlTWVzc2FnZScsIHBvc3RNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgIGF1dGhVc2VyOiAnYXV0aFVzZXInLFxuICAgICAgICB9KSxcblxuICAgIH1cblxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbiAubWFwIHtcbiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgIG92ZXJmbG93IDpoaWRkZW5cbiB9XG4gLnZ1ZTJsZWFmbGV0LW1hcCB7XG4gICAgaGVpZ2h0OiA2NiUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogNjYlICFpbXBvcnRhbnQ7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgYmctd2hpdGUgcm91bmRlZCBzaGFkb3cgXCI+XG5cbiA8ZGl2IHYtc2hvdz1cImxvYWRpbmdcIiBjbGFzcz1cInctZnVsbCBtYXgtdy14cyBtdC0zMiBtYi0xMlwiPlxuPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTE2IGgtMTYgYm9yZGVyLWItMiBib3JkZXItZ3JheS05MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtc3BpblwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbiAgICAgICAgPGRpdiB2LWlmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctOFwiIHYtaWY9XCJhdXRoVXNlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJhdXRoVXNlci5hdmF0YXJVcmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9iamVjdC1jb3ZlciB3LTggaC04IHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTEgbXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJwb3N0TWVzc2FnZVwiIG5hbWU9XCJib2R5XCIgY2xhc3M9XCJ3LWZ1bGwgaC04IHBsLTQgYmctZ3JheS0yMDAgcm91bmRlZC1mdWxsXCIgOnBsYWNlaG9sZGVyPVwiJHQoJ21lc3NhZ2UuYWRkYWdyb3VwJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHYtaWY9XCJwb3N0TWVzc2FnZVwiIEBjbGljaz1cImRpc3BhdGNoUG9zdE1lc3NhZ2UoKTtcIiBjbGFzcz1cInB4LTIgcHktMSBtbC0yIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbFwiPnt7ICR0KCdtZXNzYWdlLmRvY3JlYXRlJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tNFwiPlxuICAgICAgICAgICAgICAgICAgICA8dnVlLWRyb3B6b25lICB2LW9uOnZkcm9wem9uZS11cGxvYWQtcHJvZ3Jlc3M9XCJzZW5kaW5nXCIgdi1vbjp2ZHJvcHpvbmUtczMtdXBsb2FkLWVycm9yPVwiczNVcGxvYWRFcnJvclwiXG4gICAgICAgIHYtb246dmRyb3B6b25lLXMzLXVwbG9hZC1zdWNjZXNzPVwiczNVcGxvYWRTdWNjZXNzXCIgOmF3c3MzPVwiYXdzczNcIiBAdmRyb3B6b25lLXN1Y2Nlc3M9XCJhZGRlZFwiIHJlZj1cIm15VnVlRHJvcHpvbmVcIiBpZD1cImRyb3B6b25lXCIgOm9wdGlvbnM9XCJkcm9wem9uZU9wdGlvbnNcIj48L3Z1ZS1kcm9wem9uZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICB7eyAkdCgnbWVzc2FnZS50b3RhbGtiJykgfX06IHt7IHRvdGFsS0IgfX0gS2lsb2J5dGVzXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnO1xuaW1wb3J0IHZ1ZTJEcm9wem9uZSBmcm9tICd2dWUyLWRyb3B6b25lJ1xuaW1wb3J0ICd2dWUyLWRyb3B6b25lL2Rpc3QvdnVlMkRyb3B6b25lLm1pbi5jc3MnXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICB2dWVEcm9wem9uZTogdnVlMkRyb3B6b25lXG4gICAgfSxcbiAgICBkYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRpbmcgOiBmYWxzZSxcbiAgICAgIHRvdGFsS0I6IDAsXG4gICAgICBkcm9wem9uZU9wdGlvbnM6IHtcbiAgICAgICAgICB1cmw6ICcvZmlsZS11cGxvYWQnLFxuICAgICAgICAgIG1heEZpbGVzOiAxLFxuICAgICAgICAgIGFjY2VwdGVkRmlsZXM6ICdpbWFnZS9wbmcsaW1hZ2UvanBnLGltYWdlL2dpZixpbWFnZS9qcGVnLHZpZGVvL21wNCcsXG4gICAgICAgICAgZGljdERlZmF1bHRNZXNzYWdlOiB0aGlzLiR0KCdtZXNzYWdlLmRyb3B6b25lJyksXG4gICAgICB9LFxuICAgICAgYXdzczM6IHtcbiAgICAgIHNpZ25pbmdVUkw6ICcvc2lnbmF0dXJlJywgLy9XaGVyZSB5b3Ugd2lsbCBnZXQgc2lnbmVkIHVybFxuICAgICAgaGVhZGVyczoge30sXG4gICAgICBwYXJhbXMgOiB7fSxcbiAgICAgIHNlbmRGaWxlVG9TZXJ2ZXIgOmZhbHNlIC8vSWYgeW91IHdhbnQgdG8gdXBsb2FkIGZpbGUgdG8geW91ciBzZXJ2ZXIgYWxvbmcgd2l0aCBzM1xuICAgICAgICB9XG4gICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzZW5kaW5nKGZpbGUsIHRvdGFsQnl0ZXMsIHRvdGFsQnl0ZXNTZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbEtCID0gTWF0aC5mbG9vcih0b3RhbEJ5dGVzU2VudC8xMDAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgczNVcGxvYWRFcnJvcihlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIGFsZXJ0KCdBbiBlcnJvciBvY2N1cmVkJyk7XG4gICAgICAgIH0sXG4gICAgICAgIHMzVXBsb2FkU3VjY2VzcyhmaWxlbmFtZSkge1xuICAgICAgICAgICAgdGhpcy50b3RhbEtCID0gXCJBbGxcIjtcbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgndXBkYXRlR3JvdXBVcGxvYWRlZEZpbGVuYW1lJywgZmlsZW5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBhZGRlZChmaWxlLCByZXNwb25zZSkge1xuICAgICAgICB9LFxuICAgICAgICBkaXNwYXRjaFBvc3RNZXNzYWdlKCkge1xuICAgICAgICAgICAgdGhpcy4kcmVmcy5teVZ1ZURyb3B6b25lLmVuYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy4kcmVmcy5teVZ1ZURyb3B6b25lLnJlbW92ZUFsbEZpbGVzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Bvc3RHcm91cCcsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBuYW1lOiBcIk5ld0dyb3VwXCIsXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgcG9zdE1lc3NhZ2U6IHtcbiAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5wb3N0TWVzc2FnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQocG9zdE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ3VwZGF0ZU1lc3NhZ2UnLCBwb3N0TWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICBhdXRoVXNlcjogJ2F1dGhVc2VyJyxcbiAgICAgICAgfSksXG5cbiAgICB9XG5cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4uZHotdXBsb2FkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICAgIHdpZHRoOiAwJTtcbn1cbiAuZmFkZS1lbnRlci1hY3RpdmUsIC5mYWRlLWxlYXZlLWFjdGl2ZSB7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDJzXG4gICB9XG4gICAuZmFkZS1lbnRlciwgLmZhZGUtbGVhdmUtdG8gLyogLmZhZGUtbGVhdmUtYWN0aXZlIGJlbG93IHZlcnNpb24gMi4xLjggKi8ge1xuICAgICAgb3BhY2l0eTogMFxuICAgfVxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgbXQtNCBiZy13aGl0ZSByb3VuZGVkIHNoYWRvdyBcIj5cbiA8ZGl2IHYtc2hvdz1cImxvYWRpbmdcIiBjbGFzcz1cInctZnVsbCBtYXgtdy14cyBtdC0zMiBtYi0xMlwiPlxuPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTE2IGgtMTYgYm9yZGVyLWItMiBib3JkZXItZ3JheS05MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtc3BpblwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbiAgICAgICAgPGRpdiB2LWlmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LThcIiB2LWlmPVwiYXV0aFVzZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJvdXRlci1saW5rIDp0bz1cIicvJythdXRoVXNlci51c2VyTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIDpzcmM9XCJhdXRoVXNlci5hdmF0YXJVcmlcIiBjbGFzcz1cIm9iamVjdC1jb3ZlciB3LTggaC04IHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JvdXRlci1saW5rPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtMSBteC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cInBvc3RHcm91cE1lc3NhZ2VcIiBuYW1lPVwiYm9keVwiIGNsYXNzPVwidy1mdWxsIGgtOCBwbC00IGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbFwiIDpwbGFjZWhvbGRlcj1cIiR0KCdtZXNzYWdlLmFkZGFwb3N0JylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHYtaWY9XCJwb3N0R3JvdXBNZXNzYWdlXCIgQGNsaWNrPVwiZGlzcGF0Y2hQb3N0R3JvdXBNZXNzYWdlKCk7XCIgY2xhc3M9XCJweC0yIHB5LTEgbWwtMiBiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGxcIj57eyAkdCgnbWVzc2FnZS5kb3Bvc3QnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS00XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2dWUtZHJvcHpvbmUgIHYtb246dmRyb3B6b25lLXVwbG9hZC1wcm9ncmVzcz1cInNlbmRpbmdcIiB2LW9uOnZkcm9wem9uZS1zMy11cGxvYWQtZXJyb3I9XCJzM1VwbG9hZEVycm9yXCJcbiAgICAgICAgdi1vbjp2ZHJvcHpvbmUtczMtdXBsb2FkLXN1Y2Nlc3M9XCJzM1VwbG9hZFN1Y2Nlc3NcIiA6YXdzczM9XCJhd3NzM1wiIEB2ZHJvcHpvbmUtc3VjY2Vzcz1cImFkZGVkXCIgcmVmPVwibXlWdWVEcm9wem9uZVwiIGlkPVwiZHJvcHpvbmVcIiA6b3B0aW9ucz1cImRyb3B6b25lT3B0aW9uc1wiPjwvdnVlLWRyb3B6b25lPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIHt7ICR0KCdtZXNzYWdlLnRvdGFsa2InKSB9fToge3sgdG90YWxLQiB9fSBLaWxvYnl0ZXNcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAndnVleCc7XG5pbXBvcnQgdnVlMkRyb3B6b25lIGZyb20gJ3Z1ZTItZHJvcHpvbmUnXG5pbXBvcnQgJ3Z1ZTItZHJvcHpvbmUvZGlzdC92dWUyRHJvcHpvbmUubWluLmNzcydcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHZ1ZURyb3B6b25lOiB2dWUyRHJvcHpvbmVcbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9hZGluZyA6IGZhbHNlLFxuICAgICAgdG90YWxLQjogMCxcbiAgICAgIGRyb3B6b25lT3B0aW9uczoge1xuICAgICAgICAgIHVybDogJy9maWxlLXVwbG9hZCcsXG4gICAgICAgICAgbWF4RmlsZXM6IDEsXG4gICAgICAgICAgYWNjZXB0ZWRGaWxlczogJ2ltYWdlL3BuZyxpbWFnZS9qcGcsaW1hZ2UvZ2lmLGltYWdlL2pwZWcsdmlkZW8vbXA0JyxcbiAgICAgICAgICBkaWN0RGVmYXVsdE1lc3NhZ2U6IHRoaXMuJHQoJ21lc3NhZ2UuZHJvcHpvbmUnKSxcbiAgICAgIH0sXG4gICAgICBhd3NzMzoge1xuICAgICAgc2lnbmluZ1VSTDogJy9zaWduYXR1cmUnLCAvL1doZXJlIHlvdSB3aWxsIGdldCBzaWduZWQgdXJsXG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIHBhcmFtcyA6IHt9LFxuICAgICAgc2VuZEZpbGVUb1NlcnZlciA6ZmFsc2UgLy9JZiB5b3Ugd2FudCB0byB1cGxvYWQgZmlsZSB0byB5b3VyIHNlcnZlciBhbG9uZyB3aXRoIHMzXG4gICAgICAgIH1cbiAgICB9XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHNlbmRpbmcoZmlsZSwgdG90YWxCeXRlcywgdG90YWxCeXRlc1NlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsS0IgPSBNYXRoLmZsb29yKHRvdGFsQnl0ZXNTZW50LzEwMDApO1xuICAgICAgICB9LFxuICAgICAgICBzM1VwbG9hZEVycm9yKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgYWxlcnQoJ0FuIGVycm9yIG9jY3VyZWQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgczNVcGxvYWRTdWNjZXNzKGZpbGVuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnRvdGFsS0IgPSBcIkFsbFwiO1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCd1cGRhdGVHcm91cENvbW1lbnRVcGxvYWRlZEZpbGVuYW1lJywgZmlsZW5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBhZGRlZChmaWxlLCByZXNwb25zZSkge1xuICAgICAgICB9LFxuICAgICAgICBkaXNwYXRjaFBvc3RHcm91cE1lc3NhZ2UoKSB7XG4gICAgICAgICAgICB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUuZW5hYmxlKCk7XG4gICAgICAgICAgICB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUucmVtb3ZlQWxsRmlsZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncG9zdEdyb3VwTWVzc2FnZScsIHsgdGhhdDogdGhpcywgcGFnZTogdGhpcy4kcm91dGUucGFyYW1zLmlkIH0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBuYW1lOiBcIk5ld0dyb3VwUG9zdFwiLFxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIHBvc3RHcm91cE1lc3NhZ2U6IHtcbiAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdFVFRJTkcgOlwiK3RoaXMuJHN0b3JlLmdldHRlcnMucG9zdEdyb3VwTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMucG9zdEdyb3VwTWVzc2FnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQocG9zdEdyb3VwTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiU0VUVElOR0c6XCIrcG9zdEdyb3VwTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCd1cGRhdGVHcm91cE1lc3NhZ2UnLCBwb3N0R3JvdXBNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAuLi5tYXBHZXR0ZXJzKHtcbiAgICAgICAgICAgIGF1dGhVc2VyOiAnYXV0aFVzZXInLFxuICAgICAgICB9KSxcblxuICAgIH1cblxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbi5kei11cGxvYWQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgd2lkdGg6IDAlO1xufVxuIC5mYWRlLWVudGVyLWFjdGl2ZSwgLmZhZGUtbGVhdmUtYWN0aXZlIHtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMnNcbiAgIH1cbiAgIC5mYWRlLWVudGVyLCAuZmFkZS1sZWF2ZS10byB7XG4gICAgICBvcGFjaXR5OiAwXG4gICB9XG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicC00IG10LTQgYmctd2hpdGUgcm91bmRlZCBzaGFkb3dcIj5cblxuIDxkaXYgdi1zaG93PVwibG9hZGluZ1wiIGNsYXNzPVwidy1mdWxsIG1heC13LXhzIG10LTMyIG1iLTEyXCI+XG48ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgXCI+XG4gICAgPGRpdiBjbGFzcz1cInctMTYgaC0xNiBib3JkZXItYi0yIGJvcmRlci1ncmF5LTkwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1zcGluXCI+PC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuICAgICAgICA8ZGl2IHYtaWY9XCIhbG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiB2LWlmPVwiIXNob3dKb2luZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICBCZWNvbWUgYSBtZW1iZXIgLSBwcm92aWRlIGEgcmVhc29uXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTggbXQtNFwiIHYtaWY9XCJhdXRoVXNlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cImF1dGhVc2VyLmF2YXRhclVyaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvYmplY3QtY292ZXIgdy04IGgtOCByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTEgbXgtNFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHYtbW9kZWw9XCJwb3N0TWVzc2FnZVwiIG5hbWU9XCJib2R5XCIgY2xhc3M9XCJ3LWZ1bGwgcGwtNCBiZy1ncmF5LTIwMCBoLTM2XCIgOnBsYWNlaG9sZGVyPVwiJHQoJ21lc3NhZ2UucmVhc29uJylcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdi1pZj1cInBvc3RNZXNzYWdlXCIgQGNsaWNrPVwiZGlzcGF0Y2hKb2luUmVxdWVzdCgpO1wiIGNsYXNzPVwiaC04IHB4LTIgcHktMSBtbC0yIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbFwiPnt7ICR0KCdtZXNzYWdlLnNlbmQnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHYtaWY9XCJzaG93Sm9pbmVkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICR0KCdtZXNzYWdlLmpvaW5zdWNjZXNzJykgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnO1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwb3N0TWVzc2FnZSA6ICcnLFxuICAgICAgbG9hZGluZyA6IGZhbHNlLFxuICAgICAgc2hvd0pvaW5lZCA6IGZhbHNlXG4gICAgfVxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuXG4gICAgICAgIGRpc3BhdGNoSm9pblJlcXVlc3QoKSB7XG4gICAgICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncG9zdEdyb3VwSm9pblJlcXVlc3QnLCB7IHBvc3RNZXNzYWdlOiB0aGlzLnBvc3RNZXNzYWdlLCBncm91cGlkOiB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQsIHRoYXQgOiB0aGlzIH0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBuYW1lOiBcIk5ld0pvaW5SZXF1ZXN0XCIsXG4gICAgY29tcHV0ZWQ6IHtcblxuXG4gICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgYXV0aFVzZXI6ICdhdXRoVXNlcicsXG4gICAgICAgIH0pLFxuXG4gICAgfVxuXG59XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuLmR6LXVwbG9hZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xuICAgIGhlaWdodDogMTBweDtcbiAgICB3aWR0aDogMCU7XG59XG4gLmZhZGUtZW50ZXItYWN0aXZlLCAuZmFkZS1sZWF2ZS1hY3RpdmUge1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyc1xuICAgfVxuICAgLmZhZGUtZW50ZXIsIC5mYWRlLWxlYXZlLXRvIC8qIC5mYWRlLWxlYXZlLWFjdGl2ZSBiZWxvdyB2ZXJzaW9uIDIuMS44ICovIHtcbiAgICAgIG9wYWNpdHk6IDBcbiAgIH1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgYmctd2hpdGUgcm91bmRlZCBzaGFkb3cgXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC00IG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoJ21lc3NhZ2UuY3VycmVudGltYWdlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJwaG90b1R5cGU9PSdtcDQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2dWUtcGx5ciA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmlkZW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3Nzb3JpZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheXNpbmxpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNyYz1cInBob3RvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidmlkZW8vbXA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC92aWRlbz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdnVlLXBseXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgOnNyYz1cInBob3RvXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTQgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJHQoJ21lc3NhZ2UubmV3aW1hZ2UnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZ1ZS1kcm9wem9uZSAgdi1vbjp2ZHJvcHpvbmUtdXBsb2FkLXByb2dyZXNzPVwic2VuZGluZ1wiIHYtb246dmRyb3B6b25lLXMzLXVwbG9hZC1lcnJvcj1cInMzVXBsb2FkRXJyb3JcIlxuICAgICAgICB2LW9uOnZkcm9wem9uZS1zMy11cGxvYWQtc3VjY2Vzcz1cInMzVXBsb2FkU3VjY2Vzc1wiIDphd3NzMz1cImF3c3MzXCIgQHZkcm9wem9uZS1zdWNjZXNzPVwiYWRkZWRcIiByZWY9XCJteVZ1ZURyb3B6b25lXCIgaWQ9XCJkcm9wem9uZVwiIDpvcHRpb25zPVwiZHJvcHpvbmVPcHRpb25zXCI+PC92dWUtZHJvcHpvbmU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAge3sgJHQoJ21lc3NhZ2UudG90YWxrYicpIH19OiB7eyB0b3RhbEtCIH19IEtpbG9ieXRlc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIlxuaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnO1xuaW1wb3J0IHZ1ZTJEcm9wem9uZSBmcm9tICd2dWUyLWRyb3B6b25lJ1xuaW1wb3J0ICd2dWUyLWRyb3B6b25lL2Rpc3QvdnVlMkRyb3B6b25lLm1pbi5jc3MnXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICB2dWVEcm9wem9uZTogdnVlMkRyb3B6b25lXG4gICAgfSxcbiAgICBwcm9wczogW1wiZ3JvdXBEZXRhaWxcIl0sXG4gICAgZGF0YTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwaG90b1R5cGUgOiAnJyxcbiAgICAgIHBob3RvIDogJycsXG4gICAgICB0b3RhbEtCOiAwLFxuICAgICAgZHJvcHpvbmVPcHRpb25zOiB7XG4gICAgICAgICAgdXJsOiAnL2ZpbGUtdXBsb2FkJyxcbiAgICAgICAgICBtYXhGaWxlczogMSxcbiAgICAgICAgICBhY2NlcHRlZEZpbGVzOiAnaW1hZ2UvcG5nLGltYWdlL2pwZyxpbWFnZS9naWYsaW1hZ2UvanBlZyx2aWRlby9tcDQnLFxuICAgICAgICAgIGRpY3REZWZhdWx0TWVzc2FnZTogdGhpcy4kdCgnbWVzc2FnZS5kcm9wem9uZScpLFxuICAgICAgfSxcbiAgICAgIGF3c3MzOiB7XG4gICAgICBzaWduaW5nVVJMOiAnL3NpZ25hdHVyZScsIC8vV2hlcmUgeW91IHdpbGwgZ2V0IHNpZ25lZCB1cmxcbiAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgcGFyYW1zIDoge30sXG4gICAgICBzZW5kRmlsZVRvU2VydmVyIDpmYWxzZSAvL0lmIHlvdSB3YW50IHRvIHVwbG9hZCBmaWxlIHRvIHlvdXIgc2VydmVyIGFsb25nIHdpdGggczNcbiAgICAgICAgfVxuICAgIH1cbiAgICB9LFxuICAgIG1vdW50ZWQoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZ3JvdXBEZXRhaWwpO1xuICAgICAgICB0aGlzLnBob3RvVHlwZSA9IHRoaXMuZ3JvdXBEZXRhaWwucGhvdG9UeXBlO1xuICAgICAgICB0aGlzLnBob3RvID0gdGhpcy5ncm91cERldGFpbC5waG90bztcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgc2VuZGluZyhmaWxlLCB0b3RhbEJ5dGVzLCB0b3RhbEJ5dGVzU2VudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxLQiA9IE1hdGguZmxvb3IodG90YWxCeXRlc1NlbnQvMTAwMCk7XG4gICAgICAgIH0sXG4gICAgICAgIHMzVXBsb2FkRXJyb3IoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICBhbGVydCgnQW4gZXJyb3Igb2NjdXJlZCcpO1xuICAgICAgICB9LFxuICAgICAgICBzM1VwbG9hZFN1Y2Nlc3MoZmlsZW5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxLQiA9IFwiQWxsXCI7XG4gICAgICAgICAgICAgYXhpb3MucG9zdCgnL2FwaS9wb3N0Z3JvdXBpbWFnZS8nK3RoaXMuJHJvdXRlLnBhcmFtcy5pZCwgeyB1cGxvYWRlZEZpbGVuYW1lIDogZmlsZW5hbWUgfSlcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cz09J2Vycm9yJykge1xuICAgICAgICAgICAgICAgIGFsZXJ0KHJlcy5kYXRhLmRldGFpbHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob3RvID0gcmVzLmRhdGEucGhvdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob3RvVHlwZSA9IHJlcy5kYXRhLnBob3RvVHlwZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgYWRkZWQoZmlsZSwgcmVzcG9uc2UpIHtcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIG5hbWU6IFwiR3JvdXBJbWFnZVwiLFxuICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgLi4ubWFwR2V0dGVycyh7XG4gICAgICAgICAgICBhdXRoVXNlcjogJ2F1dGhVc2VyJyxcbiAgICAgICAgfSksXG5cbiAgICB9XG5cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4uZHotdXBsb2FkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICAgIHdpZHRoOiAwJTtcbn1cbiAuZmFkZS1lbnRlci1hY3RpdmUsIC5mYWRlLWxlYXZlLWFjdGl2ZSB7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDJzXG4gICB9XG4gICAuZmFkZS1lbnRlciwgLmZhZGUtbGVhdmUtdG8gLyogLmZhZGUtbGVhdmUtYWN0aXZlIGJlbG93IHZlcnNpb24gMi4xLjggKi8ge1xuICAgICAgb3BhY2l0eTogMFxuICAgfVxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBtdC00IGJnLXdoaXRlIHJvdW5kZWQgc2hhZG93IFwiPlxuXG4gPGRpdiB2LXNob3c9XCJsb2FkaW5nXCIgY2xhc3M9XCJ3LWZ1bGwgbWF4LXcteHMgbXQtMzIgbWItMTJcIj5cbjxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBcIj5cbiAgICA8ZGl2IGNsYXNzPVwidy0xNiBoLTE2IGJvcmRlci1iLTIgYm9yZGVyLWdyYXktOTAwIHJvdW5kZWQtZnVsbCBhbmltYXRlLXNwaW5cIj48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG4gICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHA+e3sgJHQoJ21lc3NhZ2UueW91YXJlb3duZXInKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgdi1pZj1cImdyb3VwRGV0YWlscy5udW1iZXJPZkpvaW5SZXF1ZXN0cyA+IDBcIj57eyAkdCgnbWVzc2FnZS55b3VoYXZlJykgfX0ge3sgZ3JvdXBEZXRhaWxzLm51bWJlck9mSm9pblJlcXVlc3RzIH19IHt7ICR0KCdtZXNzYWdlLmpvaW5yZXF1ZXN0cycpIH19LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgdi1pZj1cImdyb3VwRGV0YWlscy5udW1iZXJPZkpvaW5SZXF1ZXN0cyA+IDBcIiBjbGFzcz1cInRleHQtYmx1ZS03MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyb3V0ZXItbGluayB0bz1cIi9qb2lucmVxdWVzdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICR0KCdtZXNzYWdlLmNsaWNraGVyZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3JvdXRlci1saW5rPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnO1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICB9LFxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwb3N0TWVzc2FnZSA6ICcnLFxuICAgICAgbG9hZGluZyA6IGZhbHNlLFxuICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcblxuICAgICAgICBkaXNwYXRjaEpvaW5SZXF1ZXN0KCkge1xuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3Bvc3RHcm91cEpvaW5SZXF1ZXN0JywgeyBwb3N0TWVzc2FnZTogdGhpcy5wb3N0TWVzc2FnZSwgZ3JvdXBpZDogdGhpcy4kcm91dGUucGFyYW1zLmlkIH0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBuYW1lOiBcIk5ld0pvaW5SZXF1ZXN0XCIsXG4gICAgY29tcHV0ZWQ6IHtcblxuXG4gICAgICAgIC4uLm1hcEdldHRlcnMoe1xuICAgICAgICAgICAgYXV0aFVzZXI6ICdhdXRoVXNlcicsXG4gICAgICAgICAgICBncm91cERldGFpbHM6ICdncm91cERldGFpbHMnLFxuICAgICAgICB9KSxcblxuICAgIH1cblxufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbi5kei11cGxvYWQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgd2lkdGg6IDAlO1xufVxuIC5mYWRlLWVudGVyLWFjdGl2ZSwgLmZhZGUtbGVhdmUtYWN0aXZlIHtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMnNcbiAgIH1cbiAgIC5mYWRlLWVudGVyLCAuZmFkZS1sZWF2ZS10byAvKiAuZmFkZS1sZWF2ZS1hY3RpdmUgYmVsb3cgdmVyc2lvbiAyLjEuOCAqLyB7XG4gICAgICBvcGFjaXR5OiAwXG4gICB9XG48L3N0eWxlPiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/