/*!*************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./assets/styles/app.css ***!
  \*************************************************************************************************/
body {
    background-color: transparent;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/product/DetailProduct.vue?vue&type=style&index=0&id=b71e4d5a&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/

.main-image img[data-v-b71e4d5a] {
    transition: all 0.3s ease-in-out;
}
.img-thumbnail[data-v-b71e4d5a] {
    border-radius: 8px;
    transition: transform 0.2s ease, border-color 0.3s ease;
}
.img-thumbnail[data-v-b71e4d5a]:hover {
    transform: scale(1.05);
    border-color: #0d6efd;
}
.border-primary[data-v-b71e4d5a] {
    border: 2px solid #0d6efd !important;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/components/order/NewOrder.vue?vue&type=style&index=0&id=3f17252c&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/

.table th[data-v-3f17252c],
.table td[data-v-3f17252c] {
    vertical-align: middle;
}
.table td input[data-v-3f17252c],
.table td select[data-v-3f17252c] {
    width: 100%;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQTtJQUNJLDZCQUE2QjtBQUNqQzs7Ozs7O0FDcUhBO0lBQ0ksZ0NBQWdDO0FBQ3BDO0FBRUE7SUFDSSxrQkFBa0I7SUFDbEIsdURBQXVEO0FBQzNEO0FBRUE7SUFDSSxzQkFBc0I7SUFDdEIscUJBQXFCO0FBQ3pCO0FBRUE7SUFDSSxvQ0FBb0M7QUFDeEM7Ozs7OztBQzJMQTs7SUFFSSxzQkFBc0I7QUFDMUI7QUFFQTs7SUFFSSxXQUFXO0FBQ2YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FwcC5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2NvbXBvbmVudHMvcHJvZHVjdC9EZXRhaWxQcm9kdWN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvY29tcG9uZW50cy9vcmRlci9OZXdPcmRlci52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiYm9keSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCI8dGVtcGxhdGU+XG4gICAgPGRpdj5cbiAgICAgICAgPCEtLSBMb2FkZXIgLS0+XG4gICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cImhlaWdodDogODB2aDtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCIgc3R5bGU9XCJ3aWR0aDogM3JlbTsgaGVpZ2h0OiAzcmVtO1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMyB0ZXh0LXNlY29uZGFyeVwiPkNhcmdhbmRvIGRhdG9zIGRlbCBwcm9kdWN0by4uLjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbnRlbmlkbyAtLT5cbiAgICAgICAgPGRpdiB2LWVsc2U+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0aXRsZSBmdy1ib2xkXCI+RGV0YWxsZSBQcm9kdWN0bzwvaDM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1zdGFydCBwdC0zXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBHYWxlcsOtYSBkZSBpbcOhZ2VuZXMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSW1hZ2VuIHByaW5jaXBhbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4taW1hZ2UgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyA6c3JjPVwic2VsZWN0ZWRJbWFnZSB8fCAocHJvZHVjdC5pbWFnZXMubGVuZ3RoID4gMCA/IHByb2R1Y3QuaW1hZ2VzWzBdLmltYWdlIDogJycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJJbWFnZW4gcHJpbmNpcGFsXCIgY2xhc3M9XCJpbWctZmx1aWQgcm91bmRlZCBzaGFkb3ctc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWF4LWhlaWdodDogNDAwcHg7IG9iamVjdC1maXQ6IGNvdmVyO1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGh1bWJuYWlscyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiaW1hZ2UgaW4gcHJvZHVjdC5pbWFnZXNcIiA6a2V5PVwiaW1hZ2UuaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJpbWFnZS5hY3RpdmVcIiA6c3JjPVwiaW1hZ2UuaW1hZ2VcIiBjbGFzcz1cImltZy10aHVtYm5haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7ICdib3JkZXItcHJpbWFyeSc6IHNlbGVjdGVkSW1hZ2UgPT09IGltYWdlLmltYWdlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA4MHB4OyBoZWlnaHQ6IDgwcHg7IG9iamVjdC1maXQ6IGNvdmVyOyBjdXJzb3I6IHBvaW50ZXI7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2VsZWN0ZWRJbWFnZSA9IGltYWdlLmltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBJbmZvcm1hY2nDs24gZGVsIHByb2R1Y3RvIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC00IG10LW1kLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiZnctYm9sZCBtYi0zXCI+e3sgcHJvZHVjdC5uYW1lIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTFcIj48c3Ryb25nPlNLVTo8L3N0cm9uZz4ge3sgcHJvZHVjdC5za3UgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBtYi0xXCI+PHN0cm9uZz5DYXRlZ29yw61hOjwvc3Ryb25nPiB7eyBwcm9kdWN0LmNhdGVnb3J5Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBtYi0zXCI+PHN0cm9uZz5GbG9yZXLDrWE6PC9zdHJvbmc+IHt7IHByb2R1Y3QuZmxvd2VyX3Nob3AubmFtZSB9fTwvcD5cblxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm10LTNcIiBzdHlsZT1cInRleHQtYWxpZ246IGp1c3RpZnk7XCI+e3sgcHJvZHVjdC5kZXNjcmlwdGlvbiB9fTwvcD5cblxuICAgICAgICAgICAgICAgICAgICA8aHIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJmdy1ib2xkIHRleHQtc3VjY2VzcyBtYi0wIG1lLTNcIj4ke3sgcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlKS50b0ZpeGVkKDIpIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJwcm9kdWN0LmRpc2NvdW50X3ZhbHVlID4gMFwiIGNsYXNzPVwiYmFkZ2UgYmctZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLXt7IHByb2R1Y3QuZGlzY291bnRfdmFsdWUgfX0ge3sgcHJvZHVjdC5kaXNjb3VudF90eXBlID09PSAncGVyY2VudCcgPyAnJScgOiAnTVhOJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5TdG9jayBkaXNwb25pYmxlOjwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gOmNsYXNzPVwieyAndGV4dC1kYW5nZXInOiBwcm9kdWN0LnN0b2NrIDw9IHByb2R1Y3QubWluaW11bV9zdG9jayB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvZHVjdC5zdG9jayB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwicHJvZHVjdC5vY2Nhc2lvbnM/Lmxlbmd0aFwiIGNsYXNzPVwibWItMyBwdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIGZ3LXNlbWlib2xkIGQtYmxvY2sgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZWFsIHBhcmE6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtZm9yPVwib2NjYXNpb24gaW4gcHJvZHVjdC5vY2Nhc2lvbnNcIiA6a2V5PVwib2NjYXNpb24uaWRcIiBjbGFzcz1cImJhZGdlIGJnLWRhbmdlciB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9jY2FzaW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgZC1ub25lXCI+IDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWUtMlwiPiA8aSBjbGFzcz1cImJpIGJpLWNhcnQtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZ2FyIGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fycml0byA8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIj4gPGkgY2xhc3M9XCJiaSBiaS1oZWFydFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYXZvcml0byA8L2J1dHRvbj4gPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3BzOiBbJ3Byb2R1Y3RJZCddLFxuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9kdWN0OiBudWxsLFxuICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlOiBudWxsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBtb3VudGVkKCkge1xuICAgICAgICB0aGlzLmdldFByb2R1Y3REZXRhaWwoKTtcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYXN5bmMgZ2V0UHJvZHVjdERldGFpbCgpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuJGF4aW9zLmdldChgL2FqYXgvcHJvZHVjdHMvJHt0aGlzLnByb2R1Y3RJZH1gKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3QgPSByZXNwb25zZS5kYXRhLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZHVjdC5pbWFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSB0aGlzLnByb2R1Y3QuaW1hZ2VzWzBdLmltYWdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZW4gbGEgc29saWNpdHVkIEFKQVg6JywgZXJyb3IpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLm1haW4taW1hZ2UgaW1nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcbn1cblxuLmltZy10aHVtYm5haWwge1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4zcyBlYXNlO1xufVxuXG4uaW1nLXRodW1ibmFpbDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICBib3JkZXItY29sb3I6ICMwZDZlZmQ7XG59XG5cbi5ib3JkZXItcHJpbWFyeSB7XG4gICAgYm9yZGVyOiAycHggc29saWQgIzBkNmVmZCAhaW1wb3J0YW50O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiZnctYm9sZFwiPkNyZWFyIE9yZGVuPC9oMz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IHYtaWY9XCJlcnJvcnNcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPnt7IGVycm9ycyB9fTwvZGl2PlxuICAgICAgICA8ZGl2IHYtaWY9XCJzdWNjZXNzTWVzc2FnZVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtc3VjY2Vzc1wiPnt7IHN1Y2Nlc3NNZXNzYWdlIH19PC9kaXY+XG5cbiAgICAgICAgPGZvcm0gQHN1Ym1pdC5wcmV2ZW50PVwic2hvd01vZGFsXCI+XG4gICAgICAgICAgICA8IS0tIFNlbGVjY2nDs24gZGUgRmxvcmVyw61hIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvd2VyX3Nob3BcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnctc2VtaWJvbGRcIj5GbG9yZXLDrWE8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2hhbmdlPVwiKCkgPT4geyBmZXRjaFByb2R1Y3RzKCk7IGZldGNoTWV0aG9kc0J5Rmxvd2VyU2hvcCgpOyB9XCIgdi1tb2RlbD1cIm9yZGVyLmZsb3dlcl9zaG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+U2VsZWNjaW9uZSB1bmEgZmxvcmVyw61hPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cInNob3AgaW4gZmxvd2VyU2hvcHNcIiA6a2V5PVwic2hvcC5pZFwiIDp2YWx1ZT1cInNob3AuaWRcIj57eyBzaG9wLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJtZXRob2RcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Nw6l0b2RvIGRlIHBhZ288L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCIgdi1tb2RlbD1cIm9yZGVyLnBheW1lbnRfbWV0aG9kXCIgbmFtZT1cIm1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZXRob2RcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+U2VsZWNjaW9uZSBtw6l0b2RvIGRlIHBhZ288L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwibSBpbiBtZXRob2RzXCIgOmtleT1cIm0uaWRcIiA6dmFsdWU9XCJtLmlkXCI+e3sgbS5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUYWJsYSBkZSBwcm9kdWN0b3MgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIGFsaWduLW1pZGRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwidGFibGUtbGlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAyNSVcIj5Qcm9kdWN0bzwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxMCVcIj5QcmVjaW88L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTUlXCI+VGlwbyBkZXNjdWVudG88L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTAlXCI+VmFsb3IgZGVzY3VlbnRvPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDEwJVwiPkNhbnRpZGFkPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDEwJVwiPlN1YnRvdGFsPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDEwJVwiPkFjY2lvbmVzPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIG9yZGVyLml0ZW1zXCIgOmtleT1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiIHYtbW9kZWw9XCJpdGVtLnByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJ1cGRhdGVJdGVtRGF0YShpbmRleClcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+U2VsZWNjaW9uZSBwcm9kdWN0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJwcm9kdWN0IGluIHByb2R1Y3RzXCIgOmtleT1cInByb2R1Y3QuaWRcIiA6dmFsdWU9XCJwcm9kdWN0LmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ke3sgZm9ybWF0TW9uZXkoaXRlbS5wcmljZSkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50OiAnUG9yY2VudGFqZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQ6ICdGaWpvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVtpdGVtLmRpc2NvdW50X3R5cGVdIHx8ICdTaW4gZGVzY3VlbnRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJpdGVtLmRpc2NvdW50X3ZhbHVlID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbS5kaXNjb3VudF90eXBlID09PSAncGVyY2VudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kaXNjb3VudF92YWx1ZSB9fSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7eyBmb3JtYXRNb25leShpdGVtLmRpc2NvdW50X3ZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+4oCUPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1tb2RlbC5udW1iZXI9XCJpdGVtLnF1YW50aXR5XCIgbWluPVwiMVwiIEBpbnB1dD1cInVwZGF0ZVN1YnRvdGFsKGluZGV4KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ke3sgZm9ybWF0TW9uZXkoaXRlbS5zdWJ0b3RhbCkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tc21cIiBAY2xpY2s9XCJyZW1vdmVJdGVtKGluZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHYtaWY9XCIhb3JkZXIuaXRlbXMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiN1wiIGNsYXNzPVwidGV4dC1jZW50ZXIgdGV4dC1tdXRlZFwiPk5vIGhheSBwcm9kdWN0b3MgYWdyZWdhZG9zPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zbSBtYi0zXCIgQGNsaWNrPVwiYWRkSXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1wbHVzLWNpcmNsZSBtZS0xXCI+PC9pPiBBZ3JlZ2FyIHByb2R1Y3RvXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiZnctYm9sZFwiPlRvdGFsOiAke3sgZm9ybWF0TW9uZXkodG90YWwpIH19PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXNtLXJvdyBqdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnQganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIDpkaXNhYmxlZD1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSBtZS0yXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXIgT3JkZW5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuXG4gICAgICAgIDwhLS0gTW9kYWwgZGUgY29uZmlybWFjacOzbiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsIGZhZGVcIiBpZD1cImNvbmZpcm1Nb2RhbFwiIHJlZj1cImNvbmZpcm1Nb2RhbFwiIHRhYmluZGV4PVwiLTFcIiBhcmlhLWxhYmVsbGVkYnk9XCJjb25maXJtTW9kYWxMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgZnctYm9sZFwiIGlkPVwiY29uZmlybU1vZGFsTGFiZWxcIj5Db25maXJtYXIgY3JlYWNpw7NuIGRlIG9yZGVuPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2VycmFyXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+UG9yIHNlZ3VyaWRhZCwgaW5ncmVzYSB0dSBjb250cmFzZcOxYSBwYXJhIGNvbmZpcm1hciBsYSBjcmVhY2nDs24gZGUgZXN0YSBvcmRlbi48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgdi1tb2RlbD1cImNvbmZpcm1QYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJDb250cmFzZcOxYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJwYXNzd29yZEVycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBtdC0yXCI+e3sgcGFzc3dvcmRFcnJvciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+Q2FuY2VsYXI8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgQGNsaWNrPVwiY29uZmlybUFuZFNhdmVPcmRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJsb2FkaW5nVmVyaWZ5UGFzc3dvcmRcIj5FbnZpYW5kby4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2U+Q29uZmlybWFyPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmbG93ZXJTaG9wczogW10sXG4gICAgICAgICAgICBwcm9kdWN0czogW10sXG4gICAgICAgICAgICBtZXRob2RzOiBbXSxcbiAgICAgICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgICAgICAgZmxvd2VyX3Nob3A6IFwiXCIsXG4gICAgICAgICAgICAgICAgcGF5bWVudF9tZXRob2Q6IFwiXCIsXG4gICAgICAgICAgICAgICAgaXRlbXM6IFtdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkOiBcIlwiLFxuICAgICAgICAgICAgcGFzc3dvcmRFcnJvcjogbnVsbCxcbiAgICAgICAgICAgIGVycm9yczogbnVsbCxcbiAgICAgICAgICAgIHN1Y2Nlc3NNZXNzYWdlOiBudWxsLFxuICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBsb2FkaW5nVmVyaWZ5UGFzc3dvcmQ6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjb21wdXRlZDoge1xuICAgICAgICB0b3RhbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9yZGVyLml0ZW1zLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBpdGVtLnN1YnRvdGFsLCAwKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgbW91bnRlZCgpIHtcbiAgICAgICAgdGhpcy5mZXRjaEZsb3dlclNob3BzKCk7XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIGZldGNoRmxvd2VyU2hvcHMoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KFwiL2FqYXgvZmxvd2VyLXNob3BzXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmxvd2VyU2hvcHMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgZmxvd2VyIHNob3BzXCIsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZmV0Y2hNZXRob2RzQnlGbG93ZXJTaG9wKCkge1xuICAgICAgICAgICAgdGhpcy5vcmRlci5wYXltZW50X21ldGhvZCA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLm1ldGhvZHMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLm9yZGVyLmZsb3dlcl9zaG9wKSByZXR1cm47XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KGAvYWpheC9mbG93ZXItc2hvcHMvJHt0aGlzLm9yZGVyLmZsb3dlcl9zaG9wfS9tZXRob2RzYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGZldGNoaW5nIG1ldGhvZHMnLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGZldGNoUHJvZHVjdHMoKSB7XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gW107XG4gICAgICAgICAgICB0aGlzLm9yZGVyLml0ZW1zID0gW107XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcmRlci5mbG93ZXJfc2hvcCkgcmV0dXJuO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy4kYXhpb3MuZ2V0KGAvYWpheC9mbG93ZXItc2hvcHMvJHt0aGlzLm9yZGVyLmZsb3dlcl9zaG9wfS9wcm9kdWN0c2ApO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSByZXNwb25zZS5kYXRhLnByb2R1Y3RzLm1hcChwID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBwYXJzZUZsb2F0KHAucHJpY2UpLFxuICAgICAgICAgICAgICAgICAgICBkaXNjb3VudF92YWx1ZTogcGFyc2VGbG9hdChwLmRpc2NvdW50X3ZhbHVlKVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIHByb2R1Y3RzXCIsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYWRkSXRlbSgpIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXIuaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogXCJcIixcbiAgICAgICAgICAgICAgICBwcmljZTogMCxcbiAgICAgICAgICAgICAgICBkaXNjb3VudF90eXBlOiBcIlwiLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50X3ZhbHVlOiAwLFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiAxLFxuICAgICAgICAgICAgICAgIHN1YnRvdGFsOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlSXRlbShpbmRleCkge1xuICAgICAgICAgICAgdGhpcy5vcmRlci5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVJdGVtRGF0YShpbmRleCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMub3JkZXIuaXRlbXNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdHMuZmluZChwID0+IHAuaWQgPT09IGl0ZW0ucHJvZHVjdF9pZCk7XG5cbiAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgaXRlbS5wcmljZSA9IHByb2R1Y3QucHJpY2U7XG4gICAgICAgICAgICAgICAgaXRlbS5kaXNjb3VudF90eXBlID0gcHJvZHVjdC5kaXNjb3VudF90eXBlIHx8IFwiXCI7XG4gICAgICAgICAgICAgICAgaXRlbS5kaXNjb3VudF92YWx1ZSA9IHByb2R1Y3QuZGlzY291bnRfdmFsdWUgfHwgMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJ0b3RhbChpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZVN1YnRvdGFsKGluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5vcmRlci5pdGVtc1tpbmRleF07XG4gICAgICAgICAgICBsZXQgc3VidG90YWwgPSBpdGVtLnByaWNlICogaXRlbS5xdWFudGl0eTtcblxuICAgICAgICAgICAgLy8gQXBsaWNhciBkZXNjdWVudG8gc2kgZXhpc3RlXG4gICAgICAgICAgICBpZiAoaXRlbS5kaXNjb3VudF90eXBlID09PSBcInBlcmNlbnRcIikge1xuICAgICAgICAgICAgICAgIHN1YnRvdGFsIC09IHN1YnRvdGFsICogKGl0ZW0uZGlzY291bnRfdmFsdWUgLyAxMDApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmRpc2NvdW50X3R5cGUgPT09IFwiZml4ZWRcIikge1xuICAgICAgICAgICAgICAgIHN1YnRvdGFsIC09IGl0ZW0uZGlzY291bnRfdmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0uc3VidG90YWwgPSBzdWJ0b3RhbCA+IDAgPyBzdWJ0b3RhbCA6IDA7XG4gICAgICAgIH0sXG4gICAgICAgIHNob3dNb2RhbCgpIHtcbiAgICAgICAgICAgIHRoaXMucGFzc3dvcmRFcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1QYXNzd29yZCA9IFwiXCI7XG5cbiAgICAgICAgICAgIGNvbnN0IG1vZGFsRWwgPSB0aGlzLiRyZWZzLmNvbmZpcm1Nb2RhbDtcbiAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gbmV3IGJvb3RzdHJhcC5Nb2RhbChtb2RhbEVsKTtcbiAgICAgICAgICAgIG1vZGFsLnNob3coKTtcblxuICAgICAgICAgICAgLy8gR3VhcmRhIGxhIGluc3RhbmNpYSBwYXJhIGNlcnJhcmxhIGRlc3B1w6lzXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1Nb2RhbEluc3RhbmNlID0gbW9kYWw7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGNvbmZpcm1BbmRTYXZlT3JkZXIoKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdWZXJpZnlQYXNzd29yZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlybVBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVmVyaWZ5UGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhc3N3b3JkRXJyb3IgPSBcIkRlYmVzIGluZ3Jlc2FyIHR1IGNvbnRyYXNlw7FhLlwiO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRheGlvcy5wb3N0KFwiL2FqYXgvdXNlcnMvdmVyaWZ5LXBhc3N3b3JkXCIsIHsgcGFzc3dvcmQ6IHRoaXMuY29uZmlybVBhc3N3b3JkIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybU1vZGFsSW5zdGFuY2UuaGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlT3JkZXIoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXNzd29yZEVycm9yID0gZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IFwiQ29udHJhc2XDsWEgaW5jb3JyZWN0YS5cIjtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nVmVyaWZ5UGFzc3dvcmQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgc2F2ZU9yZGVyKCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc01lc3NhZ2UgPSBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgICAgIGZsb3dlcl9zaG9wOiB0aGlzLm9yZGVyLmZsb3dlcl9zaG9wLFxuICAgICAgICAgICAgICAgIHBheW1lbnRfbWV0aG9kOiB0aGlzLm9yZGVyLnBheW1lbnRfbWV0aG9kLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLm9yZGVyLml0ZW1zLm1hcChpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RfaWQ6IGkucHJvZHVjdF9pZCxcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IGkucXVhbnRpdHlcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy4kYXhpb3MucG9zdChcIi9hamF4L29yZGVyc1wiLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc01lc3NhZ2UgPSBcIk9yZGVuIGNyZWFkYSBleGl0b3NhbWVudGUuXCI7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9hZG1pbi9vcmRlcic7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gZXJyb3IucmVzcG9uc2U/LmRhdGE/LmVycm9yIHx8IFwiRXJyb3IgYWwgY3JlYXIgbGEgb3JkZW4uXCI7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXRNb25leSh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAnMC4wMCc7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2VzLU1YJywge1xuICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgICAgICAgICAgIH0pLmZvcm1hdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4udGFibGUgdGgsXG4udGFibGUgdGQge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi50YWJsZSB0ZCBpbnB1dCxcbi50YWJsZSB0ZCBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/