@sbb-esta/lyne-elements-dev 4.11.0-dev.1776664166 → 4.11.0-dev.1776682882
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete.component.js +2 -1
- package/calendar/calendar/calendar.component.js +1 -1
- package/calendar/calendar.js +1 -1
- package/{calendar.component-DjQOyRGl.js → calendar.component-Cq0m3E48.js} +2 -2
- package/calendar.js +1 -1
- package/calendar.pure.js +1 -1
- package/core/controllers/overlay-position-controller.js +4 -1
- package/development/autocomplete/autocomplete.component.js +3 -2
- package/development/calendar/calendar/calendar.component.js +1 -1
- package/development/calendar/calendar.js +1 -1
- package/development/{calendar.component-6p9vsp-V.js → calendar.component-Dto81mQ8.js} +3 -2
- package/development/calendar.js +1 -1
- package/development/calendar.pure.js +1 -1
- package/development/clock.component-CVPv4mCp.js +1 -1
- package/development/core/controllers/overlay-position-controller.js +3 -2
- package/development/form-field/form-field/form-field.component.js +1 -1
- package/development/form-field/form-field.js +1 -1
- package/development/{form-field.component-DfMO_ihX.js → form-field.component-D0NJclvI.js} +3 -2
- package/development/form-field.js +1 -1
- package/development/form-field.pure.js +1 -1
- package/development/toast/toast.component.js +1 -1
- package/development/{toast.component-BnbpuU9L.js → toast.component-Cuvs3VnH.js} +3 -2
- package/development/toast.js +1 -1
- package/development/toast.pure.js +1 -1
- package/form-field/form-field/form-field.component.js +1 -1
- package/form-field/form-field.js +1 -1
- package/{form-field.component-Cx5Keg_p.js → form-field.component-Bqw-VgJF.js} +2 -1
- package/form-field.js +1 -1
- package/form-field.pure.js +1 -1
- package/package.json +2 -2
- package/toast/toast.component.js +1 -1
- package/{toast.component-BDE1vYLS.js → toast.component-CkNywQOZ.js} +2 -2
- package/toast.js +1 -1
- package/toast.pure.js +1 -1
|
@@ -486,7 +486,8 @@ var SbbFormFieldElement = (() => {
|
|
|
486
486
|
return event.composedPath().some((el) => el instanceof window.HTMLElement && (el.getAttribute("tabindex") === "0" || el.hasAttribute("contenteditable")) || this._excludedFocusElements.includes(el.localName));
|
|
487
487
|
}
|
|
488
488
|
_onSlotLabelChange() {
|
|
489
|
-
|
|
489
|
+
const labels = Array.from(this.querySelectorAll("label"));
|
|
490
|
+
this._label = labels[0];
|
|
490
491
|
this._syncLabelInputReferences();
|
|
491
492
|
}
|
|
492
493
|
/**
|
|
@@ -703,4 +704,4 @@ var SbbFormFieldElement = (() => {
|
|
|
703
704
|
//#endregion
|
|
704
705
|
export { SbbFormFieldElement as n, SbbFormFieldControlEvent as t };
|
|
705
706
|
|
|
706
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQtRGZNT19paFguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1kaXZpZGVyLXdpZHRoOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1oaW50LWRpdmlkZXItd2lkdGgpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWljb24tc3ZnLXdpZHRoKSArIHZhcigtLXNiYi1mb3JtLWZpZWxkLWdhcClcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplOiBjYWxjKFxuICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KVxuICApO1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtbGluZS1oZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKSAqIHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpXG4gICk7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKFxuICAgIChcbiAgICAgICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCkgLSB2YXIoLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplKSAtIHZhcihcbiAgICAgICAgICAgIC0tc2JiLWZvcm0tZmllbGQtdGV4dC1saW5lLWhlaWdodFxuICAgICAgICAgICkgK1xuICAgICAgICAgIHZhcigtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZylcbiAgICAgICkgL1xuICAgICAgMlxuICApO1xuXG4gIC8vIExvY2sgc2JiLWljb24gc2l6ZVxuICAtLXNiYi1pY29uLXN2Zy13aWR0aDogdmFyKC0tc2JiLWZvcm0tZmllbGQtaWNvbi1zaXplKTtcbiAgLS1zYmItaWNvbi1zdmctaGVpZ2h0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1pY29uLXNpemUpO1xuXG4gIC8vIEFzIHRoZSBmb3JtIGZpZWxkIGhhcyBhbHdheXMgYSB3aGl0ZSBiYWNrZ3JvdW5kLCB3ZSBoYXZlIHRvIGZpeCB0aGUgZm9jdXMgb3V0bGluZSBjb2xvclxuICAvLyB0byBkZWZhdWx0IGNvbG9yIGZvciBjYXNlcyB3aGVyZSB0aGUgZm9ybSBmaWVsZCBpcyB1c2VkIGluIGEgbmVnYXRpdmUgY29udGV4dC5cbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kZWZhdWx0KSxcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKVxuICApO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWNvbG9yKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuOmhvc3QoOndoZXJlKDpub3QoW3dpZHRoPSdjb2xsYXBzZSddKSkpIHtcbiAgbWluLXdpZHRoOiAje3NiYi5weC10by1yZW0tYnVpbGQoMTUwKX07XG4gIHdpZHRoOiBtaW4oI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDMwMCl9LCAxMDAlKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICBjb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtbmVnYXRpdmUpO1xuXG4gIC0tc2JiLWZvcm0tZmllbGQtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMS1uZWdhdGl2ZSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtdGV4dC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbiAgLS1zYmItZm9ybS1maWVsZC1hcnJvdy1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtbmVnYXRpdmUpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogQnV0dG9uQm9yZGVyO1xuICB9XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1taW4taGVpZ2h0OiB2YXIoLS1zYmItc2l6ZS1lbGVtZW50LXhzKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMngpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWlucHV0LXRleHQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXMpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXh4cyk7XG5cbiAgLy8gVmFsdWVzIGZvdW5kIGJ5IHRyeSBhbmQgZXJyb3JcbiAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxMCl9O1xuICAtLV9zYmItZm9ybS1maWVsZC1mbG9hdGluZy1sYWJlbC10cmFuc2Zvcm06ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg1LjUpfTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtc3BhY2VyLW1hcmdpbi1ibG9jay1lbmQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgtOC41KX07XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC8vIFZhbHVlcyBmb3VuZCBieSB0cnkgYW5kIGVycm9yXG4gICAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxMSl9O1xuICAgIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDUpfTtcbiAgICAtLV9zYmItZm9ybS1maWVsZC1zcGFjZXItbWFyZ2luLWJsb2NrLWVuZDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKC04KX07XG4gIH1cbn1cblxuOmhvc3QoW3NpemU9J20nXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQtbSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KTtcbiAgLS1zYmItZm9ybS1maWVsZC1pbnB1dC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS1tKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14cyk7XG4gIC0tX3NiYi1mb3JtLWZpZWxkLWxhYmVsLXRvLWlucHV0LW92ZXJsYXBwaW5nOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG4gIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDguNSl9O1xuICAtLV9zYmItZm9ybS1maWVsZC1zcGFjZXItbWFyZ2luLWJsb2NrLWVuZDogY2FsYyhcbiAgICAtMSAqIHZhcigtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZylcbiAgKTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1fc2JiLWZvcm0tZmllbGQtZmxvYXRpbmctbGFiZWwtdHJhbnNmb3JtOiAje3NiYi5weC10by1yZW0tYnVpbGQoMTAuNSl9O1xuICB9XG59XG5cbjpob3N0KFtzaXplPSdsJ10pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1taW4taGVpZ2h0OiB2YXIoLS1zYmItc2l6ZS1lbGVtZW50LWwpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4eHMpO1xufVxuXG46aG9zdChbZXJyb3Itc3BhY2U9J3Jlc2VydmUnXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWhpbnQtbWluLWhlaWdodDogY2FsYyhcbiAgICB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSAqIHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14cylcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQtb3ZlcnJpZGU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtZGl2aWRlci13aWR0aCk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpLCB2YXIoLS1zYmItY29sb3Itc21va2UpKTtcbiAgLS1zYmItZm9ybS1maWVsZC1hcnJvdy1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogQnV0dG9uQm9yZGVyO1xuICB9XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYXJyb3ctY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXN0b3JtKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC10ZXh0LWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuOmhvc3QoOndoZXJlKDpzdGF0ZShkaXNhYmxlZCkpW25lZ2F0aXZlXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtY29sb3I6IHZhcigtLXNiYi1jb2xvci01KTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKTpub3QoW25lZ2F0aXZlXSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zbW9rZSkpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IHZhcigtLXNiYi1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItd2lkdGg6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItMy1uZWdhdGl2ZSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG59XG5cbi8vIFdlIG11c3Qgbm90IHVzZSA6d2hlcmUgaGVyZSwgYXMgaXQgbmVlZHMgdGhlIGFkZGVkIHNwZWNpZmljaXR5IHRvIHByb3Blcmx5IHdvcmtcbjpob3N0KDpzdGF0ZShmb2N1cykpIHtcbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBIaWdobGlnaHQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEhpZ2hsaWdodDtcbiAgfVxufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDpub3QoOndoZXJlKDpzdGF0ZShoYXMtZXJyb3IpLCA6c3RhdGUoaGFzLWhpbnQpKSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQ6IDA7XG59XG5cbjpob3N0KFtmbG9hdGluZy1sYWJlbF0pIHtcbiAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiBDYW52YXM7XG4gIH1cbn1cblxuOmhvc3QoOmlzKDpub3QoOnN0YXRlKHNsb3R0ZWQtbGFiZWwpKSwgW2hpZGRlbi1sYWJlbF0pKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtc2l6ZTogMHJlbTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6IDByZW07XG59XG5cbi8vIFNob3VsZCBiZSBhZnRlciBvdGhlciBkZWZpbml0aW9ucyB0byBvdmVycmlkZSBvdmVyZmxvd1xuLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG46aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fc3BhY2Utd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcblxuICBAaW5jbHVkZSBzYmIuemVyby13aWR0aC1zcGFjZTtcbn1cblxuLnNiYi1mb3JtLWZpZWxkX193cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMTtcbiAgZ2FwOiB2YXIoLS1zYmItZm9ybS1maWVsZC1nYXApO1xuICBwYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItcmFkaXVzKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCk7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLW1heC1oZWlnaHQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFVzZSA6OmJlZm9yZSB0byBhdm9pZCBjb250ZW50IHNoaWZ0aW5nIHdoZW4gYm9yZGVyIHdpZHRoIGNoYW5nZXMuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXdpZHRoKSB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItc3R5bGUpXG4gICAgICB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3IpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1yYWRpdXMpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpOnN0YXRlKGZvY3VzLW9yaWdpbi1rZXlib2FyZCkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1vdXRsaW5lLW9mZnNldCwgdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtb2Zmc2V0KSk7XG4gIH1cblxuICAvLyBJbiBoaWdoIGNvbnRyYXN0LCB0aGVyZSBpcyBubyBib3JkZXJsZXNzIHZhcmlhbnRcbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBub25lKSB7XG4gICAgOmhvc3QoOmlzKFtib3JkZXJsZXNzXSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSAmIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgOmhvc3QoOndoZXJlKDpzdGF0ZShmb2N1cyksIDpzdGF0ZShkaXNhYmxlZCkpW2JvcmRlcmxlc3NdKSAmIHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlKVxuICAgICAgICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcik7XG4gICAgICAgIGluc2V0LWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICAgICAgICBpbnNldC1ibG9jay1lbmQ6IDA7XG4gICAgICAgIHotaW5kZXg6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWZvY3VzLXVuZGVybGluZS16LWluZGV4LCBpbml0aWFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pIHtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcik7XG59XG5cbi8vIEVuc3VyZSBzbG90dGVkIGlubGluZSBlbGVtZW50cyBhcmUgdmVydGljYWxseSBjZW50ZXJlZFxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pLFxuOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLXdpZHRoOiB2YXIoLS1zYmItaWNvbi1zdmctd2lkdGgpO1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbjo6c2xvdHRlZChzYmItZm9ybS1maWVsZC1jbGVhcikge1xuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGVtcHR5KSwgOnN0YXRlKGRpc2FibGVkKSwgOnN0YXRlKHJlYWRvbmx5KSkpICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuc2xvdFtuYW1lPSdoaW50J10ge1xuICA6aG9zdCg6c3RhdGUoaGFzLWVycm9yKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG46OnNsb3R0ZWQoc2JiLWZvcm0tZmllbGQtdGV4dC1jb3VudGVyKSB7XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpLCA6c3RhdGUocmVhZG9ubHkpKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBBcyB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIHNob3duIGJlbG93IHRoZSBmb3JtIGZpZWxkIGJvcmRlciwgd2UgaGF2ZSB0byBzdHJldGNoIHRoZSB0b2dnbGUncyBoZWlnaHQuXG4vLyBUT0RPOiBNYXliZSBtb3ZlIHRoaXMgdG8gdGhlIGRhdGVwaWNrZXItdG9nZ2xlIGNvbXBvbmVudC5cbjo6c2xvdHRlZChzYmItZGF0ZXBpY2tlci10b2dnbGUpIHtcbiAgcGFkZGluZy1ibG9jay1lbmQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbkBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgLy8gQWxpZ24gd2l0aCBwcmVmaXggY29sb3JcbiAgOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yKTtcbiAgfVxufVxuXG4uc2JiLWZvcm0tZmllbGRfX3NlbGVjdC1pbnB1dC1pY29uIHtcbiAgQGluY2x1ZGUgc2JiLmFic29sdXRlLWNlbnRlci15O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQtaW5saW5lLWVuZDogMDtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKC0xICogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0KSAvIDIpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWFycm93LWNvbG9yKTtcblxuICA6aG9zdChcbiAgICAgIDppcyhcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShleHBsaWNpdC1pbnB1dC10eXBlLXNlbGVjdClcbiAgICAgIClcbiAgICApXG4gICAgJiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1tYXJnaW4tYmxvY2stc3RhcnQpO1xuXG4gIC8vIFByZXZlbnRzIG92ZXJmbG93aW5nIHBhcmVudFxuICBtaW4td2lkdGg6IDA7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtc3BhY2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiBjYWxjKHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSk7XG5cbiAgLy8gTW92ZXMgbGFiZWwgZG93biBhbmQgaW5wdXQgdXAgdG8gbWVldCBwb3NpdGlvbmluZyByZXF1aXJlbWVudHNcbiAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tX3NiYi1mb3JtLWZpZWxkLXNwYWNlci1tYXJnaW4tYmxvY2stZW5kKTtcbn1cblxuLy8gVG8gYXZvaWQgZG91YmxlZCBwYXlsb2FkLCB3ZSBncm91cCB0aGUgcnVsZXMuXG46aXMoLnNiYi1mb3JtLWZpZWxkX19sYWJlbCwgLnNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXIpIHtcbiAgOmhvc3QoOm5vdCg6c3RhdGUoc2xvdHRlZC1sYWJlbCkpKSAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgOmhvc3QoW2hpZGRlbi1sYWJlbF0pICYge1xuICAgIEBpbmNsdWRlIHNiYi5zY3JlZW4tcmVhZGVyLW9ubHk7XG4gIH1cbn1cblxuLnNiYi1mb3JtLWZpZWxkX19sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItY3Vyc29yLWRlZmF1bHQpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3IpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcblxuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCkpKSAmIHtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQpO1xuICB9XG5cbiAgOmhvc3QoW2Zsb2F0aW5nLWxhYmVsXSkgJiB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvLyBXZSBzaG91bGRuJ3QgY2F0Y2ggbW91c2UgZXZlbnRzIChsZXQgdGhlbSB0aHJvdWdoKS5cbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgZm9udC1zaXplO1xuXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbiwgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeCkpO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgICBwcm9wZXJ0eTogdHJhbnNmb3JtLCBmb250LXNpemU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgZmxvYXRpbmctbGFiZWwgaXMgYWN0aXZhdGVkIGFuZCB0aGVyZSBpcyBubyBmb2N1cyBpbiBpdCAoZXhjZXB0IGZvciBzZWxlY3QpIGFuZCBubyBwb3B1cCBpcyBvcGVuXG4gIC8vIGFuZCBpbnB1dCBpcyBlbXB0eSB0aGVuIGFwcGx5IHRoZSBsYWJlbCB0cmFuc2l0aW9uLlxuICAvLyBJZiBpdCBpcyBlbXB0eSBhbmQgcmVhZG9ubHksIGFsd2F5cyBhcHBseSB0cmFuc2l0aW9uXG4gIC8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuICA6aG9zdChcbiAgICAgIFtmbG9hdGluZy1sYWJlbF06aXMoXG4gICAgICAgICAgOm5vdChcbiAgICAgICAgICAgIDp3aGVyZSg6c3RhdGUoZm9jdXMpKTpub3QoOndoZXJlKDpzdGF0ZShpbnB1dC10eXBlLXNiYi1zZWxlY3QpKSksXG4gICAgICAgICAgICA6d2hlcmUoOnN0YXRlKGhhcy1wb3B1cC1vcGVuKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKVxuICAgICAgICApOndoZXJlKDpzdGF0ZShlbXB0eSkpXG4gICAgKVxuICAgICYge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybSkpO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoaW5wdXQtdHlwZS10ZXh0YXJlYSkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUgdGV4dGFyZWEgaXMgc2V0IHRvIENhbnZhcyBhbmQgdGhlcmVmb3JlIGhpZGVzIHRoZSBsYWJlbCBiZWhpbmQuXG4gICAgICAvLyBCeSBzZXR0aW5nIHRoZSB6LWluZGV4IHRvIDEsIHdlIG1vdmUgdGhlIGxhYmVsIGluIGZyb250IG9mIHRoZSB0ZXh0YXJlYS5cbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtZWxsaXBzaXMge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgOmhvc3QoXG4gICAgICBbc2l6ZT0ncyddOmlzKFxuICAgICAgICA6c3RhdGUoaW5wdXQtdHlwZS1pbnB1dCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNiYi1zZWxlY3QpLFxuICAgICAgICA6c3RhdGUoaW5wdXQtdHlwZS1zYmItZGF0ZS1pbnB1dCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNiYi10aW1lLWlucHV0KVxuICAgICAgKVxuICAgIClcbiAgICAmIHtcbiAgICAvLyBJbiBzaXplIHMsIHRoZSBuYXR1cmFsIGhlaWdodCBvZiB0aGUgdGV4dCBpbnB1dCBpcyB0b28gc21hbGwuXG4gICAgLy8gVG8gbm90IHJlc2VydmUgdG9vIG11Y2ggc3BhY2UsIHdlIGRlY3JlYXNlIHRoZSBoZWlnaHQuXG4gICAgbWFyZ2luLWJsb2NrLWVuZDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKC0yKX07XG4gIH1cbn1cblxuLnNiYi1mb3JtLWZpZWxkX19oaW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLWZvcm0tZmllbGQtaGludC1taW4taGVpZ2h0KTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoXG4gICAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQtb3ZlcnJpZGUsXG4gICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0KVxuICApO1xufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoaXBHcm91cEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jaGlwLnRzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS50cyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7IGkxOG5PcHRpb25hbCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQge1xuICBhcHBlbmRBcmlhRWxlbWVudHMsXG4gIHJlbW92ZUFyaWFFbGVtZW50cyxcbiAgdHlwZSBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW5UeXBlLFxuICBTYmJOZWdhdGl2ZU1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNlbGVjdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3QudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9mb3JtLWZpZWxkLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLnRzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbmNvbnN0IHBhdGNoZWRJbnB1dHMgPSBuZXcgV2Vha01hcDxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCwgUHJvcGVydHlEZXNjcmlwdG9yPigpO1xuY29uc3QgbmF0aXZlSW5wdXRFbGVtZW50cyA9IFsnaW5wdXQnLCAndGV4dGFyZWEnLCAnc2VsZWN0J107XG5cbi8qKiBBbiBpbnRlcmZhY2Ugd2hpY2ggYWxsb3dzIGEgY29udHJvbCB0byB3b3JrIGluc2lkZSBhIGBTYmJGb3JtRmllbGRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGZvcm0gZmllbGQgY29udHJvbC4gKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZW1wdHkuICovXG4gIHJlYWRvbmx5IGVtcHR5OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY29udHJvbCBpcyByZWFkb25seS4gKi9cbiAgcmVhZG9ubHkgcmVhZE9ubHk/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC4gKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgY29udHJvbC4gVGhpcyBpcyB1c2VkIGFzIGEgc3RhdGUgcmVwcmVzZW50YXRpb24uXG4gICAqIFdoZW4gdXNpbmcgJ3NlbGVjdCcsIHRoZSBmb3JtIGZpZWxkIHdpbGwgZGlzcGxheSB0aGUgZHJvcGRvd24gaWNvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiAnc2VsZWN0JyB8IHN0cmluZztcblxuICAvKipcbiAgICogSGFuZGxlcyBhIGNsaWNrIG9uIHRoZSBjb250cm9sJ3MgY29udGFpbmVyLlxuICAgKiBJZiBub3QgaW1wbGVtZW50ZWQsIGZvY3VzKCkgb2YgdGhlIGVsZW1lbnQgaXMgY2FsbGVkLlxuICAgKi9cbiAgb25Db250YWluZXJDbGljaz8oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkQ29udHJvbEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBwcml2YXRlIF9jb250cm9sOiBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB8IG51bGw7XG5cbiAgcHVibGljIGdldCBjb250cm9sKCk6IFNiYkZvcm1GaWVsZEVsZW1lbnRDb250cm9sIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2w7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29udHJvbDogU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wgfCBudWxsKSB7XG4gICAgc3VwZXIoJ2Zvcm1maWVsZGNvbnRyb2wnKTtcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcbiAgfVxufVxuXG4vKipcbiAqIEl0IHdyYXBzIGFuIGlucHV0IGVsZW1lbnQgYWRkaW5nIGxhYmVsLCBlcnJvcnMsIGljb24sIGV0Yy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGlucHV0L3NlbGVjdCBvciBhIHN1cHBvcnRlZCBub24tbmF0aXZlIGVsZW1lbnQuXG4gKiBAc2xvdCBsYWJlbCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGEgbGFiZWwuXG4gKiBAc2xvdCBwcmVmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3Qgc3VmZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBlcnJvciAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGVycm9yLlxuICogQHNsb3QgaGludCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGA8c2JiLWhpbnQ+YCBvciBhbiBgPHNiYi1mb3JtLWZpZWxkLXRleHQtY291bnRlcj5gIGVsZW1lbnQuXG4gKlxuICogQGNzc3Byb3AgWy0tc2JiLWZvcm0tZmllbGQtb3V0bGluZS1vZmZzZXRdIC0gVG8gb3ZlcnJpZGUgdGhlIGZvY3VzIG91dGxpbmUgb2Zmc2V0LFxuICogQGNzc3Byb3AgWy0tc2JiLWZvcm0tZmllbGQtZm9jdXMtdW5kZXJsaW5lLXotaW5kZXhdIC0gVG8gb3ZlcnJpZGUgdGhlIHotaW5kZXggb2YgdGhlIGZvY3VzIHVuZGVybGluZSBlZmZlY3QsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJGb3JtRmllbGRFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItZm9ybS1maWVsZCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8vIExpc3Qgb2YgZWxlbWVudHMgdGhhdCBzaG91bGQgbm90IGZvY3VzIGlucHV0IG9uIGNsaWNrXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cyA9IFsnYnV0dG9uJywgJ3NiYi1wb3BvdmVyJywgJ3NiYi1vcHRpb24nLCAnc2JiLWNoaXAnXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cyA9IFtcbiAgICAnaW5wdXQnLFxuICAgICdzZWxlY3QnLFxuICAgICd0ZXh0YXJlYScsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzID0gW1xuICAgICdlbWFpbCcsXG4gICAgJ251bWJlcicsXG4gICAgJ3Bhc3N3b3JkJyxcbiAgICAnc2VhcmNoJyxcbiAgICAndGVsJyxcbiAgICAndGV4dCcsXG4gICAgJ3VybCcsXG4gIF07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgYW4gZXJyb3IgbWVzc2FnZSwgaGludCBvciB0ZXh0LWNvdW50ZXIuXG4gICAqIGBub25lYCBkb2VzIG5vdCByZXNlcnZlIGFueSBzcGFjZS5cbiAgICogYHJlc2VydmVgIGRvZXMgcmVzZXJ2ZSBvbmUgcm93IGZvciBhbiBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZXJyb3Itc3BhY2UnLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBlcnJvclNwYWNlOiAnbm9uZScgfCAncmVzZXJ2ZScgPSAnbm9uZSc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBvcHRpb25hbC5cbiAgICogQGRlcHJlY2F0ZWQgU2V0IHRoZSAob3B0aW9uYWwpIGxhYmVsIHRleHQgbWFudWFsbHkuIFdpbGwgYmUgcmVtb3ZlZCB3aXRoIG5leHQgbWFqb3IgdmVyc2lvbi5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsLCBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdsJyB8ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIGZvcm0gZmllbGQgd2l0aG91dCBhIGJvcmRlci4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGNvbXBvbmVudDpcbiAgICogLSBgZGVmYXVsdGA6IHRoZSBjb21wb25lbnQgaGFzIGRlZmluZWQgd2lkdGggYW5kIG1pbi13aWR0aDtcbiAgICogLSBgY29sbGFwc2VgOiB0aGUgY29tcG9uZW50IGFkYXB0cyBpdHNlbGYgdG8gaXRzIGlubmVyIGlucHV0IGNvbnRlbnQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHdpZHRoOiAnZGVmYXVsdCcgfCAnY29sbGFwc2UnID0gJ2RlZmF1bHQnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHZpc3VhbGx5IGhpZGUgdGhlIGxhYmVsLiBJZiBoaWRkZW4sIHNjcmVlbiByZWFkZXJzIHdpbGwgc3RpbGwgcmVhZCBpdC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGRlbi1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhpZGRlbkxhYmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBmbG9hdC4gSWYgYWN0aXZhdGVkLCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGlucHV0IGlzIGhpZGRlbi4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Zsb2F0aW5nLWxhYmVsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZmxvYXRpbmdMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gZ2V0IHRoZSBgZXJyb3JgIHNsb3QuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2Vycm9yRWxlbWVudHM6IEVsZW1lbnRbXSA9IFtdO1xuXG4gIC8qKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gZ2V0IHRoZSBgaGludGAgc2xvdC4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGludEVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IG51bGwgPVxuICAgIG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbGFiZWwhOiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNsb3R0ZWQgbGFiZWwuICovXG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogSFRNTExhYmVsRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbDtcbiAgfVxuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcbiAgICAgICAgaWYgKG11dGF0aW9ucy5zb21lKChtKSA9PiBtLnR5cGUgPT09ICdhdHRyaWJ1dGVzJykgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgICAgICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRGb3JtTGlzdGVuZXIoKTtcbiAgICAgICAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgICAgICAgICAvLyBVc2VkIHRvIG5vdGlmeSB0aGUgcmVtYWluaW5nIGNoYXJzIGNvbXBvbmVudC5cbiAgICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnybVpbnB1dGF0dHJpYnV0ZWNoYW5nZScpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRGb3JtQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBwcml2YXRlIF9jb250cm9sOiBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9wcmV2aW91c1R5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgJ2ZvY3VzaW4nLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC50YXJnZXQgPT09IHRoaXMuaW5wdXRFbGVtZW50IHx8XG4gICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSAodGhpcy5pbnB1dEVsZW1lbnQgYXMgU2JiU2VsZWN0RWxlbWVudCB8IHVuZGVmaW5lZCk/LmlucHV0RWxlbWVudFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKCdmb2N1cycpO1xuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYGZvY3VzLW9yaWdpbi0ke3NiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfSxcbiAgICApO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgJ2ZvY3Vzb3V0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmlucHV0RWxlbWVudCB8fFxuICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gKHRoaXMuaW5wdXRFbGVtZW50IGFzIFNiYlNlbGVjdEVsZW1lbnQgfCB1bmRlZmluZWQpPy5pbnB1dEVsZW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnZm9jdXMnKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHRoaXMuaW50ZXJuYWxzLnN0YXRlcykge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnN0YXJ0c1dpdGgoJ2ZvY3VzLW9yaWdpbi0nKSkge1xuICAgICAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfSxcbiAgICApO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdkaXNwbGF5dmFsdWVjaGFuZ2UnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSk7XG4gICAgLy8gV2Ugd2FudCB0byBwcmV2ZW50IHRoZSBuYXRpdmUgYnJvd3NlciB2YWxpZGF0aW9uIG1lc3NhZ2UgcG9wb3ZlclxuICAgIC8vIHRvIGJlIHNob3duLiBUaGlzIGFsc28gcHJldmVudHMgYSBidWcgaW4gV2ViS2l0LCB3aGljaCB3b3VsZCBub3RcbiAgICAvLyBhbGxvdyBob3N0IGFzIHRoZSB2YWxpZGl0eSBhbmNob3I6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjk4MzJcbiAgICAvLyBUaGlzIGlzIGR1cGxpY2F0ZWQgZnJvbSB0aGUgZm9ybSBhc3NvY2lhdGVkIG1peGluIGZvciB0aGUgbmF0aXZlXG4gICAgLy8gaW5wdXQgY29udHJvbHMgKGUuZy4gPGlucHV0PiBvciA8c2VsZWN0PikuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdpbnZhbGlkJywgKGUpID0+IGUucHJldmVudERlZmF1bHQoKSwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZm9ybWZpZWxkY29udHJvbCcsIChlOiBTYmJGb3JtRmllbGRDb250cm9sRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuX2NvbnRyb2wgPSBlLmNvbnRyb2w7XG4gICAgICBpZiAodGhpcy5fY29ubmVjdElucHV0RWxlbWVudCgpID09PSAndW5jaGFuZ2VkJykge1xuICAgICAgICB0aGlzLl9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpO1xuICAgICAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgICAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2Fzc2lnblNsb3RzKCk7XG4gICAgdGhpcy5fY29ubmVjdElucHV0RWxlbWVudCgpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIHRoaXMuX3N5bmNTaXplKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3N5bmNTaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9pbnB1dEZvcm1BYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBpZiAodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSA9PT0gJ2lucHV0JyB8fCB0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl91bnBhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVdyYXBwZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0VsZW1lbnRGb2N1c0V4Y2x1ZGVkKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250cm9sPy5vbkNvbnRhaW5lckNsaWNrKSB7XG4gICAgICB0aGlzLl9jb250cm9sPy5vbkNvbnRhaW5lckNsaWNrKGV2ZW50KTtcbiAgICB9IGVsc2UgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkubG9jYWxOYW1lICE9PSAnbGFiZWwnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0JyAmJlxuICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUgIT09ICdzYmItc2VsZWN0J1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmNsaWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pbnB1dD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0VsZW1lbnRGb2N1c0V4Y2x1ZGVkKGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuc29tZShcbiAgICAgICAgKGVsKSA9PlxuICAgICAgICAgIChlbCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAmJlxuICAgICAgICAgICAgKGVsLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSA9PT0gJzAnIHx8IGVsLmhhc0F0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJykpKSB8fFxuICAgICAgICAgIHRoaXMuX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cy5pbmNsdWRlcygoZWwgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TbG90TGFiZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWxzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsJykpO1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGxhYmVscy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBEZXRlY3RlZCBtb3JlIHRoYW4gb25lIGxhYmVsIGluIHNiYi1mb3JtLWZpZWxkIyR7dGhpcy5pZH0uIE9ubHkgb25lIGxhYmVsIGlzIHN1cHBvcnRlZC5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbHNbMF07XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBvZiBgPGlucHV0PmAgdG8gYF9pZGAgYW5kIGBfaW5wdXRgIGFuZCB0byBvYnNlcnZlIHRoZSBuYXRpdmUgcmVhZG9ubHkgYW5kIGRpc2FibGVkIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RJbnB1dENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuICAgIHRoaXMuX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1lcnJvcjpub3QoW3Nsb3RdKScpLmZvckVhY2goKGUpID0+IGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29ubmVjdElucHV0RWxlbWVudCgpOiAnY2hhbmdlZCcgfCAnbm8taW5wdXQnIHwgJ3VuY2hhbmdlZCcge1xuICAgIGxldCBuZXdJbnB1dDogSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICh0aGlzLl9jb250cm9sPy5pZCkge1xuICAgICAgbmV3SW5wdXQgPSAodGhpcy5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQodGhpcy5fY29udHJvbC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZpbmQgdGhlIHNsb3R0ZWQgaW5wdXQgZWxlbWVudCwgZXZlbiBpZiBpdCdzIG5lc3RlZCAoZS5nLiBjaGlwIGdyb3VwKVxuICAgICAgY29uc3QgaW5wdXRDYW5kaWRhdGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignKjpub3QoW3Nsb3RdLHNiYi1jaGlwLWdyb3VwKScpLFxuICAgICAgKTtcbiAgICAgIG5ld0lucHV0ID1cbiAgICAgICAgKGlucHV0Q2FuZGlkYXRlcy5maW5kKChlKSA9PiB0aGlzLl9pc0lucHV0RWxlbWVudChlKSkgfHwgaW5wdXRDYW5kaWRhdGVzWzBdKSA/PyBudWxsO1xuICAgIH1cblxuICAgIGlmIChuZXdJbnB1dCA9PT0gdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybiAndW5jaGFuZ2VkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBpbnB1dC10eXBlLSR7dGhpcy5faW5wdXQubG9jYWxOYW1lfWApO1xuICAgICAgaWYgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ2lucHV0JyB8fCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICd0ZXh0YXJlYScpIHtcbiAgICAgICAgdGhpcy5fdW5wYXRjaElucHV0VmFsdWUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW5ld0lucHV0KSB7XG4gICAgICB0aGlzLl9pbnB1dCA9IG51bGw7XG4gICAgICByZXR1cm4gJ25vLWlucHV0JztcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dCA9IG5ld0lucHV0O1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRGb3JtTGlzdGVuZXIoKTtcbiAgICB0aGlzLl9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpO1xuICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3Jvd3MnKSB8fCAnMycpO1xuICAgICAgdGhpcy5fcGF0Y2hJbnB1dFZhbHVlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX3BhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2VsZWN0JyB8fCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0JykgJiZcbiAgICAgICF0aGlzLmhhc1VwZGF0ZWRcbiAgICApIHtcbiAgICAgIC8vIER1ZSB0byBTU1IgdGhlIGRyb3Bkb3duIGljb24gZm9yIHNlbGVjdHMgY2Fubm90IGJlIHJlbmRlcmVkIGluIHRoZSBmaXJzdCByZW5kZXIgcGFzcy5cbiAgICAgIC8vIER1ZSB0byB0aGlzIHdlIHNjaGVkdWxlIGEgcmUtcmVuZGVyIHRvIHJlbmRlciB0aGUgaWNvbi5cbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiB0aGlzLnJlcXVlc3RVcGRhdGUoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLl9pbnB1dCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydyZWFkb25seScsICdkaXNhYmxlZCcsICdmb3JtJywgJ2NsYXNzJywgJ2RhdGEtZXhwYW5kZWQnLCAnbWF4bGVuZ3RoJ10sXG4gICAgfSk7XG4gICAgLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBSZW5hbWUgaW5wdXQtdHlwZSB0byBpbnB1dC1lbGVtZW50IGFuZCBleHBsaWNpdC1pbnB1dC10eXBlIHRvIGlucHV0LXR5cGUuXG4gICAgLy8gQWxzbyBhZGFwdCBkb2N1bWVudGF0aW9uLlxuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYGlucHV0LXR5cGUtJHt0aGlzLl9pbnB1dC5sb2NhbE5hbWV9YCk7XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gICAgcmV0dXJuICdjaGFuZ2VkJztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0IHx8ICF0aGlzLl9sYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG5hdGl2ZUlucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQubG9jYWxOYW1lKSB8fFxuICAgICAgKGN1c3RvbUVsZW1lbnRzLmdldCh0aGlzLl9pbnB1dC5sb2NhbE5hbWUpIGFzIHsgZm9ybUFzc29jaWF0ZWQ/OiBib29sZWFuIH0gfCB1bmRlZmluZWQpXG4gICAgICAgID8uZm9ybUFzc29jaWF0ZWRcbiAgICApIHtcbiAgICAgIC8vIEZvciBuYXRpdmUgaW5wdXQgZWxlbWVudHMgd2UgdXNlIHRoZSBgZm9yYCBhdHRyaWJ1dGUgb24gdGhlIGxhYmVsIHRvIHJlZmVyZW5jZSB0aGUgaW5wdXRcbiAgICAgIC8vIHZpYSBpZCByZWZlcmVuY2UuXG4gICAgICB0aGlzLl9pbnB1dC5pZCB8fD0gYHNiYi1mb3JtLWZpZWxkLWlucHV0LSR7bmV4dElkKyt9YDtcbiAgICAgIHRoaXMuX2xhYmVsLmh0bWxGb3IgPSB0aGlzLl9pbnB1dC5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIG5vbi1uYXRpdmUgaW5wdXQgZWxlbWVudHMsIHRoYXQgZG8gbm90IHN1cHBvcnQgcmVmZXJlbmNlcyB2aWEgdGhlIGxhYmVsIGZvciBhdHRyaWJ1dGUsXG4gICAgICAvLyB3ZSB1c2UgYXJpYS1sYWJlbGxlZGJ5IG9uIHRoZSBpbnB1dCBlbGVtZW50IHRvIHJlZmVyZW5jZSB0aGUgbGFiZWwgZWxlbWVudCB2aWEgaWQuXG4gICAgICAvLyBUT0RPOiBNaWdyYXRlIHRvIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMgd2hlbiBhdmFpbGFibGU6XG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9hcmlhTGFiZWxsZWRCeUVsZW1lbnRzXG4gICAgICB0aGlzLl9sYWJlbC5pZCB8fD0gYHNiYi1mb3JtLWZpZWxkLWxhYmVsLSR7bmV4dElkKyt9YDtcbiAgICAgIGNvbnN0IGxhYmVsbGVkYnkgPVxuICAgICAgICB0aGlzLl9pbnB1dFxuICAgICAgICAgIC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpXG4gICAgICAgICAgPy5zcGxpdCgnICcpXG4gICAgICAgICAgLmZpbHRlcigobCkgPT4gISFsICYmIGwgIT09IHRoaXMuX2xhYmVsIS5pZCkgPz8gW107XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIFsuLi5sYWJlbGxlZGJ5LCB0aGlzLl9sYWJlbC5pZF0uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0lucHV0RWxlbWVudChpbnB1dDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBuYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKGlucHV0LmxvY2FsTmFtZSkgfHxcbiAgICAgICEhKGN1c3RvbUVsZW1lbnRzLmdldChpbnB1dC5sb2NhbE5hbWUpIGFzIHsgZm9ybUFzc29jaWF0ZWQ/OiBib29sZWFuIH0gfCB1bmRlZmluZWQpXG4gICAgICAgID8uZm9ybUFzc29jaWF0ZWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZElucHV0U3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgncmVhZG9ubHknLCB0aGlzLl9jb250cm9sPy5yZWFkT25seSA/PyB0aGlzLl9pbnB1dCEuaGFzQXR0cmlidXRlKCdyZWFkb25seScpKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdkaXNhYmxlZCcsIHRoaXMuX2NvbnRyb2w/LmRpc2FibGVkID8/IHRoaXMuX2lucHV0IS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hhcy1wb3B1cC1vcGVuJywgdGhpcy5faW5wdXQhLmhhc0F0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcpKTtcblxuICAgIGlmICh0aGlzLl9wcmV2aW91c1R5cGUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoYGV4cGxpY2l0LWlucHV0LXR5cGUtJHt0aGlzLl9wcmV2aW91c1R5cGV9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcHJldmlvdXNUeXBlID0gdGhpcy5fY29udHJvbD8udHlwZSA/PyAodGhpcy5faW5wdXQgYXMgeyB0eXBlPzogc3RyaW5nIH0pLnR5cGUgPz8gJ3RleHQnO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYGV4cGxpY2l0LWlucHV0LXR5cGUtJHt0aGlzLl9wcmV2aW91c1R5cGV9YCk7XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlcklucHV0Rm9ybUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0Rm9ybUFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIGNvbnN0IHsgc2lnbmFsIH0gPSAodGhpcy5faW5wdXRGb3JtQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpKTtcblxuICAgIGNvbnN0IGZvcm0gPVxuICAgICAgKHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IHVuZGVmaW5lZCk/LmZvcm0gPz9cbiAgICAgIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gICAgLy8gVGltZW91dCBuZWVkZWQgdG8gaGF2ZSB2YWx1ZSB1cGRhdGVkXG4gICAgY29uc3QgcmVzZXRIYW5kbGVyID0gKCk6IHVua25vd24gPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc2V0KCkpO1xuICAgIGZvcm0/LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgcmVzZXRIYW5kbGVyLCB7IHNpZ25hbCB9KTtcbiAgfVxuXG4gIC8vIFdlIG5lZWQgdG8gcGF0Y2ggdGhlIHZhbHVlIHByb3BlcnR5IG9mIHRoZSBIVE1MSW5wdXRFbGVtZW50IGluIG9yZGVyXG4gIC8vIHRvIGJlIGFibGUgdG8gcmVzZXQgdGhlIGZsb2F0aW5nIGxhYmVsIGluIHRoZSBlbXB0eSBzdGF0ZS5cbiAgcHJpdmF0ZSBfcGF0Y2hJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGlmICghaW5wdXRFbGVtZW50IHx8IHBhdGNoZWRJbnB1dHMuaGFzKGlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbERlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKGlucHV0RWxlbWVudCksXG4gICAgICAndmFsdWUnLFxuICAgICk7XG5cbiAgICBpZiAoIW9yaWdpbmFsRGVzY3JpcHRvciB8fCAhb3JpZ2luYWxEZXNjcmlwdG9yLnNldCB8fCAhb3JpZ2luYWxEZXNjcmlwdG9yLmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBhdGNoZWRJbnB1dHMuc2V0KGlucHV0RWxlbWVudCwgb3JpZ2luYWxEZXNjcmlwdG9yKTtcblxuICAgIGNvbnN0IHsgZ2V0OiBnZXR0ZXIsIHNldDogc2V0dGVyIH0gPSBvcmlnaW5hbERlc2NyaXB0b3I7XG4gICAgY29uc3QgY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICAgIC8vIFVzZWQgdG8gbm90aWZ5IHRoZSByZW1haW5pbmcgY2hhcnMgY29tcG9uZW50IHRvIHVwZGF0ZSBpdHMgY291bnRcbiAgICAgIC8vIHdoZW4gdGhlIHZhbHVlIGlzIGNoYW5nZWQgdmlhIGZvcm0gcmVzZXQgb3IgcHJvZ3JhbW1hdGljYWxseS5cbiAgICAgIC8vIFdlIG5lZWQgYSBjdXN0b20gZXZlbnQgZm9yIHRoaXMsIGJlY2F1c2UgdGhlIG5hdGl2ZSBpbnB1dCBldmVudCBpc1xuICAgICAgLy8gbm90IHRyaWdnZXJlZCBpbiB0aGVzZSBjYXNlcy5cbiAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ8m1aW5wdXQnKSk7XG4gICAgfTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dEVsZW1lbnQsICd2YWx1ZScsIHtcbiAgICAgIC4uLm9yaWdpbmFsRGVzY3JpcHRvcixcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGdldHRlci5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdWYWx1ZSkge1xuICAgICAgICBzZXR0ZXIuY2FsbCh0aGlzLCBuZXdWYWx1ZSk7XG4gICAgICAgIGNoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VucGF0Y2hJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3Qgb3JpZ2luYWxEZXNjcmlwdG9yID0gcGF0Y2hlZElucHV0cy5nZXQoaW5wdXRFbGVtZW50KTtcbiAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXRFbGVtZW50LCAndmFsdWUnLCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuICAgICAgcGF0Y2hlZElucHV0cy5kZWxldGUoaW5wdXRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICdlbXB0eScsXG4gICAgICB0aGlzLl9jb250cm9sPy5lbXB0eSA/P1xuICAgICAgICAoKCh0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgfHxcbiAgICAgICAgICAodGhpcy5faW5wdXQ/LmNvbnN0cnVjdG9yIGFzIHVuZGVmaW5lZCB8IHR5cGVvZiBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW5UeXBlKVxuICAgICAgICAgICAgPy5mb3JtRmllbGRBc3NvY2lhdGVkKSA/P1xuICAgICAgICAgIGZhbHNlKSAmJlxuICAgICAgICAgIHRoaXMuX2lzSW5wdXRFbXB0eSgpKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNoaXBHcm91cEVsZW06IFNiYkNoaXBHcm91cEVsZW1lbnQgfCBudWxsID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItY2hpcC1ncm91cCcpO1xuICAgIGlmIChjaGlwR3JvdXBFbGVtKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpICYmXG4gICAgICAgIChBcnJheS5pc0FycmF5KGNoaXBHcm91cEVsZW0udmFsdWUpXG4gICAgICAgICAgPyBjaGlwR3JvdXBFbGVtLnZhbHVlLmxlbmd0aCA9PT0gMFxuICAgICAgICAgIDogIWNoaXBHcm91cEVsZW0ucXVlcnlTZWxlY3Rvcignc2JiLWNoaXAnKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzLmluY2x1ZGVzKHRoaXMuX2lucHV0LnR5cGUpICYmXG4gICAgICAgIHRoaXMuX2lzSW5wdXRWYWx1ZUVtcHR5KClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuc2VsZWN0ZWRPcHRpb25zPy5pdGVtKDApPy5sYWJlbD8udHJpbSgpID09PSAnJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0Jykge1xuICAgICAgcmV0dXJuICh0aGlzLl9pbnB1dCBhcyBTYmJTZWxlY3RFbGVtZW50KS5nZXREaXNwbGF5VmFsdWU/LigpPy50cmltKCkgPT09ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNJbnB1dFZhbHVlRW1wdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0lucHV0VmFsdWVFbXB0eSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWU7XG4gICAgcmV0dXJuIFsnJywgdW5kZWZpbmVkLCBudWxsXS5pbmNsdWRlcyh2YWx1ZSkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHNldCB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgZm9yIHRoZSBzbG90dGVkIGlucHV0IHJlZmVyZW5jaW5nIGF2YWlsYWJsZSA8c2JiLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcbiAgICBpZiAodGhpcy5faW5wdXQgJiYgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPSByZW1vdmVBcmlhRWxlbWVudHMoXG4gICAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLFxuICAgICAgICAuLi4odGhpcy5fZXJyb3JFbGVtZW50cyA/PyBbXSksXG4gICAgICAgIC8vIEFsc28gcmVtb3ZlIGhpbnQgZWxlbWVudHMgc2luY2UgdGhlaXIgdmlzaWJpbGl0eSBkZXBlbmRzIG9uIGVycm9yIHN0YXRlXG4gICAgICAgIC4uLih0aGlzLl9oaW50RWxlbWVudHMgPz8gW10pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gZXJyb3JFbGVtZW50cztcbiAgICBmb3IgKGNvbnN0IGVsIG9mIHRoaXMuX2Vycm9yRWxlbWVudHMpIHtcbiAgICAgIC8vIEluc3RlYWQgb2YgZGVmaW5pbmcgYSBjb250YWluZXIgd2l0aCBhbiBhcmlhLWxpdmUgcmVnaW9uIGFzIGV4cGVjdGVkLCB3ZSBoYWQgdG8gY2hhbmdlXG4gICAgICAvLyBzZXR0aW5nIGl0IGZvciBldmVyeSBzbG90dGVkIGVsZW1lbnQgdG8gcHJvcGVybHkgd29yayBpbiBhbGwgYnJvd3NlcnMgYW5kIHNjcmVlbiByZWFkZXIgY29tYmluYXRpb25zLlxuICAgICAgZWwucm9sZSB8fD0gJ3N0YXR1cyc7XG4gICAgfVxuXG4gICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdoYXMtZXJyb3InLCAhIXRoaXMuX2Vycm9yRWxlbWVudHMubGVuZ3RoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gc2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBmb3IgdGhlIHNsb3R0ZWQgaW5wdXQgcmVmZXJlbmNpbmcgYXZhaWxhYmxlIDxzYmItaGludD4gaW5zdGFuY2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25TbG90SGludENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBoaW50RWxlbWVudHMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWRFbGVtZW50cygpO1xuICAgIGlmICh0aGlzLl9pbnB1dD8uYXJpYURlc2NyaWJlZEJ5RWxlbWVudHM/Lmxlbmd0aCAmJiB0aGlzLl9oaW50RWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPSByZW1vdmVBcmlhRWxlbWVudHMoXG4gICAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLFxuICAgICAgICAuLi50aGlzLl9oaW50RWxlbWVudHMsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX2hpbnRFbGVtZW50cyA9IGhpbnRFbGVtZW50cztcbiAgICB0aGlzLl9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hhcy1oaW50JywgISF0aGlzLl9oaW50RWxlbWVudHMubGVuZ3RoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnbkFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnB1dCkge1xuICAgICAgLy8gSGludCBlbGVtZW50cyBhcmUgb25seSBsaW5rZWQgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzXG4gICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuX2Vycm9yRWxlbWVudHMubGVuZ3RoID8gdGhpcy5fZXJyb3JFbGVtZW50cyA6IHRoaXMuX2hpbnRFbGVtZW50cztcbiAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzID0gYXBwZW5kQXJpYUVsZW1lbnRzKFxuICAgICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgICAgLi4uZWxlbWVudHMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZXJyb3Isc2JiLW1pbmktYnV0dG9uLHNiYi1taW5pLWJ1dHRvbi1saW5rLHNiYi1mb3JtLWZpZWxkLWNsZWFyLHNiYi1kYXRlcGlja2VyLW5leHQtZGF5LHNiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheSxzYmItZGF0ZXBpY2tlci10b2dnbGUsc2JiLXNlbGVjdCxzYmItYXV0b2NvbXBsZXRlLHNiYi1hdXRvY29tcGxldGUtZ3JpZCxzYmItY2hpcC1ncm91cCxzYmItaGludCxzYmItZm9ybS1maWVsZC10ZXh0LWNvdW50ZXInLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY1NpemUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgfCBTYmJTZWxlY3RFbGVtZW50PihcbiAgICAgICdzYmItYXV0b2NvbXBsZXRlLHNiYi1hdXRvY29tcGxldGUtZ3JpZCxzYmItc2VsZWN0JyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IChlbGVtZW50LnNpemUgPSB0aGlzLnNpemUgPT09ICdzJyA/ICdzJyA6ICdtJykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19zZWxlY3QtaW5wdXQtaWNvblwiXG4gICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3VmZml4XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zeW5jTmVnYXRpdmV9Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19oaW50XCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhpbnRcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdEhpbnRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZXJyb3JcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdEVycm9yQ2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWZvcm0tZmllbGQnOiBTYmJGb3JtRmllbGRFbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50RXZlbnRNYXAge1xuICAgIGZvcm1maWVsZGNvbnRyb2w6IFNiYkZvcm1GaWVsZENvbnRyb2xFdmVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FDZ0NBLElBQUksU0FBUztBQUViLElBQU0sZ0NBQWdCLElBQUksU0FBcUU7QUFDL0YsSUFBTSxzQkFBc0I7Q0FBQztDQUFTO0NBQVk7Q0FBUztBQXlCM0QsSUFBYSwyQkFBYixjQUE4QyxNQUFLO0NBR2pELElBQVcsVUFBTztBQUNoQixTQUFPLEtBQUs7O0NBR2QsWUFBbUIsU0FBMEM7QUFDM0QsUUFBTSxtQkFBbUI7QUFDekIsT0FBSyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O0lBaUJQLDZCQUFtQjttQkFBUyxpQkFBaUIsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQUF4RCw0QkFBNEIsWUFBNEI7Ozs2QkE2QmxFLFNBQVM7SUFBRSxXQUFXO0lBQWUsU0FBUztJQUFNLENBQUMsQ0FBQTsyQkFPckQsV0FBVyxFQUNYLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFBO3VCQU8zQixTQUFTLEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FBQTs2QkFHM0IsV0FBVyxFQUNYLFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtJQUFTLENBQUMsQ0FBQTt3QkFNMUMsU0FBUyxFQUFFLFNBQVMsTUFBTSxDQUFDLENBQUE7OEJBRzNCLFdBQVcsRUFDWCxTQUFTO0lBQUUsV0FBVztJQUFnQixTQUFTO0lBQU0sTUFBTTtJQUFTLENBQUMsQ0FBQTtnQ0FJckUsV0FBVyxFQUNYLFNBQVM7SUFBRSxXQUFXO0lBQWtCLFNBQVM7SUFBTSxNQUFNO0lBQVMsQ0FBQyxDQUFBO2lDQUl2RSxPQUFPLENBQUE7Z0NBR1AsT0FBTyxDQUFBO3lCQUdQLE9BQU8sQ0FBQTt5QkFJUCxPQUFPLENBQUE7QUEvQ1IsZ0JBQUEsTUFBQSxNQUFBLHdCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsZ0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBVSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVYsYUFBVTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDBCQUFBLDhCQUFBO0FBUTFCLGdCQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVIsV0FBUTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHdCQUFBLDRCQUFBO0FBTUssZ0JBQUEsTUFBQSxNQUFBLGtCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsVUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFJLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBSixPQUFJOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsb0JBQUEsd0JBQUE7QUFLakQsZ0JBQUEsTUFBQSxNQUFBLHdCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsZ0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBVSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVYsYUFBVTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDBCQUFBLDhCQUFBO0FBS0csZ0JBQUEsTUFBQSxNQUFBLG1CQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsV0FBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFLLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBTCxRQUFLOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEscUJBQUEseUJBQUE7QUFLbEQsZ0JBQUEsTUFBQSxNQUFBLHlCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFB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
|
|
707
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQtRDBOSmNsdkkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1kaXZpZGVyLXdpZHRoOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG4gIC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1oaW50LWRpdmlkZXItd2lkdGgpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWljb24tc3ZnLXdpZHRoKSArIHZhcigtLXNiYi1mb3JtLWZpZWxkLWdhcClcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplOiBjYWxjKFxuICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KVxuICApO1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtbGluZS1oZWlnaHQ6IGNhbGMoXG4gICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKSAqIHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpXG4gICk7XG4gIC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKFxuICAgIChcbiAgICAgICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCkgLSB2YXIoLS1zYmItZm9ybS1maWVsZC1sYWJlbC1zaXplKSAtIHZhcihcbiAgICAgICAgICAgIC0tc2JiLWZvcm0tZmllbGQtdGV4dC1saW5lLWhlaWdodFxuICAgICAgICAgICkgK1xuICAgICAgICAgIHZhcigtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZylcbiAgICAgICkgL1xuICAgICAgMlxuICApO1xuXG4gIC8vIExvY2sgc2JiLWljb24gc2l6ZVxuICAtLXNiYi1pY29uLXN2Zy13aWR0aDogdmFyKC0tc2JiLWZvcm0tZmllbGQtaWNvbi1zaXplKTtcbiAgLS1zYmItaWNvbi1zdmctaGVpZ2h0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1pY29uLXNpemUpO1xuXG4gIC8vIEFzIHRoZSBmb3JtIGZpZWxkIGhhcyBhbHdheXMgYSB3aGl0ZSBiYWNrZ3JvdW5kLCB3ZSBoYXZlIHRvIGZpeCB0aGUgZm9jdXMgb3V0bGluZSBjb2xvclxuICAvLyB0byBkZWZhdWx0IGNvbG9yIGZvciBjYXNlcyB3aGVyZSB0aGUgZm9ybSBmaWVsZCBpcyB1c2VkIGluIGEgbmVnYXRpdmUgY29udGV4dC5cbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kZWZhdWx0KSxcbiAgICB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKVxuICApO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWNvbG9yKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuOmhvc3QoOndoZXJlKDpub3QoW3dpZHRoPSdjb2xsYXBzZSddKSkpIHtcbiAgbWluLXdpZHRoOiAje3NiYi5weC10by1yZW0tYnVpbGQoMTUwKX07XG4gIHdpZHRoOiBtaW4oI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDMwMCl9LCAxMDAlKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICBjb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtbmVnYXRpdmUpO1xuXG4gIC0tc2JiLWZvcm0tZmllbGQtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMS1uZWdhdGl2ZSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtdGV4dC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtbmVnYXRpdmUpO1xuICAtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvci1kYXJrKTtcbiAgLS1zYmItZm9ybS1maWVsZC1hcnJvdy1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtbmVnYXRpdmUpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogQnV0dG9uQm9yZGVyO1xuICB9XG59XG5cbjpob3N0KFtzaXplPSdzJ10pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1taW4taGVpZ2h0OiB2YXIoLS1zYmItc2l6ZS1lbGVtZW50LXhzKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMngpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWlucHV0LXRleHQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXMpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXh4cyk7XG5cbiAgLy8gVmFsdWVzIGZvdW5kIGJ5IHRyeSBhbmQgZXJyb3JcbiAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxMCl9O1xuICAtLV9zYmItZm9ybS1maWVsZC1mbG9hdGluZy1sYWJlbC10cmFuc2Zvcm06ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg1LjUpfTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtc3BhY2VyLW1hcmdpbi1ibG9jay1lbmQ6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgtOC41KX07XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC8vIFZhbHVlcyBmb3VuZCBieSB0cnkgYW5kIGVycm9yXG4gICAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxMSl9O1xuICAgIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDUpfTtcbiAgICAtLV9zYmItZm9ybS1maWVsZC1zcGFjZXItbWFyZ2luLWJsb2NrLWVuZDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKC04KX07XG4gIH1cbn1cblxuOmhvc3QoW3NpemU9J20nXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQtbSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTN4KTtcbiAgLS1zYmItZm9ybS1maWVsZC1pbnB1dC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS1tKTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC10ZXh0LXNpemU6IHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14cyk7XG4gIC0tX3NiYi1mb3JtLWZpZWxkLWxhYmVsLXRvLWlucHV0LW92ZXJsYXBwaW5nOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCk7XG4gIC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybTogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDguNSl9O1xuICAtLV9zYmItZm9ybS1maWVsZC1zcGFjZXItbWFyZ2luLWJsb2NrLWVuZDogY2FsYyhcbiAgICAtMSAqIHZhcigtLV9zYmItZm9ybS1maWVsZC1sYWJlbC10by1pbnB1dC1vdmVybGFwcGluZylcbiAgKTtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1fc2JiLWZvcm0tZmllbGQtZmxvYXRpbmctbGFiZWwtdHJhbnNmb3JtOiAje3NiYi5weC10by1yZW0tYnVpbGQoMTAuNSl9O1xuICB9XG59XG5cbjpob3N0KFtzaXplPSdsJ10pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1taW4taGVpZ2h0OiB2YXIoLS1zYmItc2l6ZS1lbGVtZW50LWwpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4eHMpO1xufVxuXG46aG9zdChbZXJyb3Itc3BhY2U9J3Jlc2VydmUnXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWhpbnQtbWluLWhlaWdodDogY2FsYyhcbiAgICB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSAqIHZhcigtLXNiYi10ZXh0LWZvbnQtc2l6ZS14cylcbiAgKTtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQtb3ZlcnJpZGU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWhpbnQtZGl2aWRlci13aWR0aCk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpLCB2YXIoLS1zYmItY29sb3Itc21va2UpKTtcbiAgLS1zYmItZm9ybS1maWVsZC1hcnJvdy1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogQnV0dG9uQm9yZGVyO1xuICB9XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpLCA6c3RhdGUoZGlzYWJsZWQpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0zLW5lZ2F0aXZlKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYXJyb3ctY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNSk7XG59XG5cbjpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXNtb2tlKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLXN0b3JtKSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEdyYXlUZXh0ICFpbXBvcnRhbnQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC10ZXh0LWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBHcmF5VGV4dCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuOmhvc3QoOndoZXJlKDpzdGF0ZShkaXNhYmxlZCkpW25lZ2F0aXZlXSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLXRleHQtY29sb3I6IHZhcigtLXNiYi1jb2xvci01KTtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKTpub3QoW25lZ2F0aXZlXSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1sYWJlbC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zbW9rZSkpO1xuICAtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKSkge1xuICAtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLWJvcmRlci1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IHZhcigtLXNiYi1jb2xvci0zKTtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItd2lkdGg6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpO1xufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpKVtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItMy1uZWdhdGl2ZSk7XG4gIC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMy1uZWdhdGl2ZSk7XG59XG5cbi8vIFdlIG11c3Qgbm90IHVzZSA6d2hlcmUgaGVyZSwgYXMgaXQgbmVlZHMgdGhlIGFkZGVkIHNwZWNpZmljaXR5IHRvIHByb3Blcmx5IHdvcmtcbjpob3N0KDpzdGF0ZShmb2N1cykpIHtcbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLWNvbG9yOiBIaWdobGlnaHQ7XG4gICAgLS1zYmItZm9ybS1maWVsZC1wcmVmaXgtY29sb3I6IEhpZ2hsaWdodDtcbiAgfVxufVxuXG4vLyA6d2hlcmUgaXMgdG8gYWxpZ24gc3BlY2lmaWNpdHlcbjpob3N0KDpub3QoOndoZXJlKDpzdGF0ZShoYXMtZXJyb3IpLCA6c3RhdGUoaGFzLWhpbnQpKSkpIHtcbiAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQ6IDA7XG59XG5cbjpob3N0KFtmbG9hdGluZy1sYWJlbF0pIHtcbiAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItc2VsZWN0LXBsYWNlaG9sZGVyLWNvbG9yOiBDYW52YXM7XG4gIH1cbn1cblxuOmhvc3QoOmlzKDpub3QoOnN0YXRlKHNsb3R0ZWQtbGFiZWwpKSwgW2hpZGRlbi1sYWJlbF0pKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtc2l6ZTogMHJlbTtcbiAgLS1fc2JiLWZvcm0tZmllbGQtbGFiZWwtdG8taW5wdXQtb3ZlcmxhcHBpbmc6IDByZW07XG59XG5cbi8vIFNob3VsZCBiZSBhZnRlciBvdGhlciBkZWZpbml0aW9ucyB0byBvdmVycmlkZSBvdmVyZmxvd1xuLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG46aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSB7XG4gIC0tc2JiLWZvcm0tZmllbGQtb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fc3BhY2Utd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcblxuICBAaW5jbHVkZSBzYmIuemVyby13aWR0aC1zcGFjZTtcbn1cblxuLnNiYi1mb3JtLWZpZWxkX193cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMTtcbiAgZ2FwOiB2YXIoLS1zYmItZm9ybS1maWVsZC1nYXApO1xuICBwYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItcmFkaXVzKTtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWluLWhlaWdodCk7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLW1heC1oZWlnaHQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFVzZSA6OmJlZm9yZSB0byBhdm9pZCBjb250ZW50IHNoaWZ0aW5nIHdoZW4gYm9yZGVyIHdpZHRoIGNoYW5nZXMuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJvcmRlcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXdpZHRoKSB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItc3R5bGUpXG4gICAgICB2YXIoLS1zYmItZm9ybS1maWVsZC1ib3JkZXItY29sb3IpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1yYWRpdXMpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZm9jdXMpOnN0YXRlKGZvY3VzLW9yaWdpbi1rZXlib2FyZCkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1vdXRsaW5lLW9mZnNldCwgdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtb2Zmc2V0KSk7XG4gIH1cblxuICAvLyBJbiBoaWdoIGNvbnRyYXN0LCB0aGVyZSBpcyBubyBib3JkZXJsZXNzIHZhcmlhbnRcbiAgQG1lZGlhIChmb3JjZWQtY29sb3JzOiBub25lKSB7XG4gICAgOmhvc3QoOmlzKFtib3JkZXJsZXNzXSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNsaWRlcikpKSAmIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgOmhvc3QoOndoZXJlKDpzdGF0ZShmb2N1cyksIDpzdGF0ZShkaXNhYmxlZCkpW2JvcmRlcmxlc3NdKSAmIHtcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgdmFyKC0tc2JiLWZvcm0tZmllbGQtYm9yZGVyLXN0eWxlKVxuICAgICAgICAgIHZhcigtLXNiYi1mb3JtLWZpZWxkLWJvcmRlci1jb2xvcik7XG4gICAgICAgIGluc2V0LWlubGluZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtcGFkZGluZy1pbmxpbmUpO1xuICAgICAgICBpbnNldC1ibG9jay1lbmQ6IDA7XG4gICAgICAgIHotaW5kZXg6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWZvY3VzLXVuZGVybGluZS16LWluZGV4LCBpbml0aWFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pIHtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXByZWZpeC1jb2xvcik7XG59XG5cbi8vIEVuc3VyZSBzbG90dGVkIGlubGluZSBlbGVtZW50cyBhcmUgdmVydGljYWxseSBjZW50ZXJlZFxuOjpzbG90dGVkKCpbc2xvdD0ncHJlZml4J10pLFxuOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLXdpZHRoOiB2YXIoLS1zYmItaWNvbi1zdmctd2lkdGgpO1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbjo6c2xvdHRlZChzYmItZm9ybS1maWVsZC1jbGVhcikge1xuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGVtcHR5KSwgOnN0YXRlKGRpc2FibGVkKSwgOnN0YXRlKHJlYWRvbmx5KSkpICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuc2xvdFtuYW1lPSdoaW50J10ge1xuICA6aG9zdCg6c3RhdGUoaGFzLWVycm9yKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG46OnNsb3R0ZWQoc2JiLWZvcm0tZmllbGQtdGV4dC1jb3VudGVyKSB7XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoZGlzYWJsZWQpLCA6c3RhdGUocmVhZG9ubHkpKSkgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBBcyB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIHNob3duIGJlbG93IHRoZSBmb3JtIGZpZWxkIGJvcmRlciwgd2UgaGF2ZSB0byBzdHJldGNoIHRoZSB0b2dnbGUncyBoZWlnaHQuXG4vLyBUT0RPOiBNYXliZSBtb3ZlIHRoaXMgdG8gdGhlIGRhdGVwaWNrZXItdG9nZ2xlIGNvbXBvbmVudC5cbjo6c2xvdHRlZChzYmItZGF0ZXBpY2tlci10b2dnbGUpIHtcbiAgcGFkZGluZy1ibG9jay1lbmQ6IGNhbGMoKHZhcigtLXNiYi1mb3JtLWZpZWxkLW1pbi1oZWlnaHQpIC0gdmFyKC0tc2JiLXNpemUtaWNvbi11aS1zbWFsbCkpIC8gMik7XG59XG5cbkBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgLy8gQWxpZ24gd2l0aCBwcmVmaXggY29sb3JcbiAgOjpzbG90dGVkKCpbc2xvdD0nc3VmZml4J10pIHtcbiAgICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtcHJlZml4LWNvbG9yKTtcbiAgfVxufVxuXG4uc2JiLWZvcm0tZmllbGRfX3NlbGVjdC1pbnB1dC1pY29uIHtcbiAgQGluY2x1ZGUgc2JiLmFic29sdXRlLWNlbnRlci15O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQtaW5saW5lLWVuZDogMDtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBjYWxjKC0xICogdmFyKC0tc2JiLWZvcm0tZmllbGQtbWFyZ2luLWJsb2NrLXN0YXJ0KSAvIDIpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY29sb3I6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWFycm93LWNvbG9yKTtcblxuICA6aG9zdChcbiAgICAgIDppcyhcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSxcbiAgICAgICAgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShleHBsaWNpdC1pbnB1dC10eXBlLXNlbGVjdClcbiAgICAgIClcbiAgICApXG4gICAgJiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogMSAxIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItZm9ybS1maWVsZC1tYXJnaW4tYmxvY2stc3RhcnQpO1xuXG4gIC8vIFByZXZlbnRzIG92ZXJmbG93aW5nIHBhcmVudFxuICBtaW4td2lkdGg6IDA7XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtc3BhY2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiBjYWxjKHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSkgKiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSk7XG5cbiAgLy8gTW92ZXMgbGFiZWwgZG93biBhbmQgaW5wdXQgdXAgdG8gbWVldCBwb3NpdGlvbmluZyByZXF1aXJlbWVudHNcbiAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tX3NiYi1mb3JtLWZpZWxkLXNwYWNlci1tYXJnaW4tYmxvY2stZW5kKTtcbn1cblxuLy8gVG8gYXZvaWQgZG91YmxlZCBwYXlsb2FkLCB3ZSBncm91cCB0aGUgcnVsZXMuXG46aXMoLnNiYi1mb3JtLWZpZWxkX19sYWJlbCwgLnNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXIpIHtcbiAgOmhvc3QoOm5vdCg6c3RhdGUoc2xvdHRlZC1sYWJlbCkpKSAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgOmhvc3QoW2hpZGRlbi1sYWJlbF0pICYge1xuICAgIEBpbmNsdWRlIHNiYi5zY3JlZW4tcmVhZGVyLW9ubHk7XG4gIH1cbn1cblxuLnNiYi1mb3JtLWZpZWxkX19sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItY3Vyc29yLWRlZmF1bHQpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xuICBjb2xvcjogdmFyKC0tc2JiLWZvcm0tZmllbGQtbGFiZWwtY29sb3IpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi1mb3JtLWZpZWxkLWxhYmVsLXRleHQtc2l6ZSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcblxuICA6aG9zdCg6d2hlcmUoOnN0YXRlKGlucHV0LXR5cGUtc2VsZWN0KSwgOnN0YXRlKGlucHV0LXR5cGUtc2JiLXNlbGVjdCkpKSAmIHtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLXNiYi1mb3JtLWZpZWxkLXNlbGVjdC1pbmxpbmUtcGFkZGluZy1lbmQpO1xuICB9XG5cbiAgOmhvc3QoW2Zsb2F0aW5nLWxhYmVsXSkgJiB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyAvLyBXZSBzaG91bGRuJ3QgY2F0Y2ggbW91c2UgZXZlbnRzIChsZXQgdGhlbSB0aHJvdWdoKS5cbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgZm9udC1zaXplO1xuXG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbiwgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeCkpO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgICBwcm9wZXJ0eTogdHJhbnNmb3JtLCBmb250LXNpemU7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgZmxvYXRpbmctbGFiZWwgaXMgYWN0aXZhdGVkIGFuZCB0aGVyZSBpcyBubyBmb2N1cyBpbiBpdCAoZXhjZXB0IGZvciBzZWxlY3QpIGFuZCBubyBwb3B1cCBpcyBvcGVuXG4gIC8vIGFuZCBpbnB1dCBpcyBlbXB0eSB0aGVuIGFwcGx5IHRoZSBsYWJlbCB0cmFuc2l0aW9uLlxuICAvLyBJZiBpdCBpcyBlbXB0eSBhbmQgcmVhZG9ubHksIGFsd2F5cyBhcHBseSB0cmFuc2l0aW9uXG4gIC8vIDp3aGVyZSBpcyB0byBhbGlnbiBzcGVjaWZpY2l0eVxuICA6aG9zdChcbiAgICAgIFtmbG9hdGluZy1sYWJlbF06aXMoXG4gICAgICAgICAgOm5vdChcbiAgICAgICAgICAgIDp3aGVyZSg6c3RhdGUoZm9jdXMpKTpub3QoOndoZXJlKDpzdGF0ZShpbnB1dC10eXBlLXNiYi1zZWxlY3QpKSksXG4gICAgICAgICAgICA6d2hlcmUoOnN0YXRlKGhhcy1wb3B1cC1vcGVuKSlcbiAgICAgICAgICApLFxuICAgICAgICAgIDp3aGVyZSg6c3RhdGUocmVhZG9ubHkpKVxuICAgICAgICApOndoZXJlKDpzdGF0ZShlbXB0eSkpXG4gICAgKVxuICAgICYge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2JiLWZvcm0tZmllbGQtaW5wdXQtdGV4dC1zaXplKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tX3NiYi1mb3JtLWZpZWxkLWZsb2F0aW5nLWxhYmVsLXRyYW5zZm9ybSkpO1xuICB9XG5cbiAgLy8gOndoZXJlIGlzIHRvIGFsaWduIHNwZWNpZmljaXR5XG4gIDpob3N0KDp3aGVyZSg6c3RhdGUoaW5wdXQtdHlwZS10ZXh0YXJlYSkpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgICAvLyBUaGUgYmFja2dyb3VuZCBvZiB0aGUgdGV4dGFyZWEgaXMgc2V0IHRvIENhbnZhcyBhbmQgdGhlcmVmb3JlIGhpZGVzIHRoZSBsYWJlbCBiZWhpbmQuXG4gICAgICAvLyBCeSBzZXR0aW5nIHRoZSB6LWluZGV4IHRvIDEsIHdlIG1vdmUgdGhlIGxhYmVsIGluIGZyb250IG9mIHRoZSB0ZXh0YXJlYS5cbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG59XG5cbi5zYmItZm9ybS1maWVsZF9fbGFiZWwtZWxsaXBzaXMge1xuICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG59XG5cbi5zYmItZm9ybS1maWVsZF9faW5wdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgOmhvc3QoXG4gICAgICBbc2l6ZT0ncyddOmlzKFxuICAgICAgICA6c3RhdGUoaW5wdXQtdHlwZS1pbnB1dCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNlbGVjdCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNiYi1zZWxlY3QpLFxuICAgICAgICA6c3RhdGUoaW5wdXQtdHlwZS1zYmItZGF0ZS1pbnB1dCksXG4gICAgICAgIDpzdGF0ZShpbnB1dC10eXBlLXNiYi10aW1lLWlucHV0KVxuICAgICAgKVxuICAgIClcbiAgICAmIHtcbiAgICAvLyBJbiBzaXplIHMsIHRoZSBuYXR1cmFsIGhlaWdodCBvZiB0aGUgdGV4dCBpbnB1dCBpcyB0b28gc21hbGwuXG4gICAgLy8gVG8gbm90IHJlc2VydmUgdG9vIG11Y2ggc3BhY2UsIHdlIGRlY3JlYXNlIHRoZSBoZWlnaHQuXG4gICAgbWFyZ2luLWJsb2NrLWVuZDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKC0yKX07XG4gIH1cbn1cblxuLnNiYi1mb3JtLWZpZWxkX19oaW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLWhlaWdodDogdmFyKC0tc2JiLWZvcm0tZmllbGQtaGludC1taW4taGVpZ2h0KTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoXG4gICAgLS1zYmItZm9ybS1maWVsZC1oaW50LXBhZGRpbmctYmxvY2stc3RhcnQtb3ZlcnJpZGUsXG4gICAgdmFyKC0tc2JiLWZvcm0tZmllbGQtaGludC1wYWRkaW5nLWJsb2NrLXN0YXJ0KVxuICApO1xufVxuIiwiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHVuc2FmZUNTUyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL2F1dG9jb21wbGV0ZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoaXBHcm91cEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jaGlwLnRzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS50cyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7IGkxOG5PcHRpb25hbCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQge1xuICBhcHBlbmRBcmlhRWxlbWVudHMsXG4gIHJlbW92ZUFyaWFFbGVtZW50cyxcbiAgdHlwZSBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW5UeXBlLFxuICBTYmJOZWdhdGl2ZU1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNlbGVjdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3QudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9mb3JtLWZpZWxkLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLnRzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbmNvbnN0IHBhdGNoZWRJbnB1dHMgPSBuZXcgV2Vha01hcDxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCwgUHJvcGVydHlEZXNjcmlwdG9yPigpO1xuY29uc3QgbmF0aXZlSW5wdXRFbGVtZW50cyA9IFsnaW5wdXQnLCAndGV4dGFyZWEnLCAnc2VsZWN0J107XG5cbi8qKiBBbiBpbnRlcmZhY2Ugd2hpY2ggYWxsb3dzIGEgY29udHJvbCB0byB3b3JrIGluc2lkZSBhIGBTYmJGb3JtRmllbGRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGZvcm0gZmllbGQgY29udHJvbC4gKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZW1wdHkuICovXG4gIHJlYWRvbmx5IGVtcHR5OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY29udHJvbCBpcyByZWFkb25seS4gKi9cbiAgcmVhZG9ubHkgcmVhZE9ubHk/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC4gKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgY29udHJvbC4gVGhpcyBpcyB1c2VkIGFzIGEgc3RhdGUgcmVwcmVzZW50YXRpb24uXG4gICAqIFdoZW4gdXNpbmcgJ3NlbGVjdCcsIHRoZSBmb3JtIGZpZWxkIHdpbGwgZGlzcGxheSB0aGUgZHJvcGRvd24gaWNvbi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiAnc2VsZWN0JyB8IHN0cmluZztcblxuICAvKipcbiAgICogSGFuZGxlcyBhIGNsaWNrIG9uIHRoZSBjb250cm9sJ3MgY29udGFpbmVyLlxuICAgKiBJZiBub3QgaW1wbGVtZW50ZWQsIGZvY3VzKCkgb2YgdGhlIGVsZW1lbnQgaXMgY2FsbGVkLlxuICAgKi9cbiAgb25Db250YWluZXJDbGljaz8oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkQ29udHJvbEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBwcml2YXRlIF9jb250cm9sOiBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB8IG51bGw7XG5cbiAgcHVibGljIGdldCBjb250cm9sKCk6IFNiYkZvcm1GaWVsZEVsZW1lbnRDb250cm9sIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2w7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29udHJvbDogU2JiRm9ybUZpZWxkRWxlbWVudENvbnRyb2wgfCBudWxsKSB7XG4gICAgc3VwZXIoJ2Zvcm1maWVsZGNvbnRyb2wnKTtcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcbiAgfVxufVxuXG4vKipcbiAqIEl0IHdyYXBzIGFuIGlucHV0IGVsZW1lbnQgYWRkaW5nIGxhYmVsLCBlcnJvcnMsIGljb24sIGV0Yy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGlucHV0L3NlbGVjdCBvciBhIHN1cHBvcnRlZCBub24tbmF0aXZlIGVsZW1lbnQuXG4gKiBAc2xvdCBsYWJlbCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGEgbGFiZWwuXG4gKiBAc2xvdCBwcmVmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3Qgc3VmZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBlcnJvciAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGVycm9yLlxuICogQHNsb3QgaGludCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGA8c2JiLWhpbnQ+YCBvciBhbiBgPHNiYi1mb3JtLWZpZWxkLXRleHQtY291bnRlcj5gIGVsZW1lbnQuXG4gKlxuICogQGNzc3Byb3AgWy0tc2JiLWZvcm0tZmllbGQtb3V0bGluZS1vZmZzZXRdIC0gVG8gb3ZlcnJpZGUgdGhlIGZvY3VzIG91dGxpbmUgb2Zmc2V0LFxuICogQGNzc3Byb3AgWy0tc2JiLWZvcm0tZmllbGQtZm9jdXMtdW5kZXJsaW5lLXotaW5kZXhdIC0gVG8gb3ZlcnJpZGUgdGhlIHotaW5kZXggb2YgdGhlIGZvY3VzIHVuZGVybGluZSBlZmZlY3QsXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJGb3JtRmllbGRFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItZm9ybS1maWVsZCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8vIExpc3Qgb2YgZWxlbWVudHMgdGhhdCBzaG91bGQgbm90IGZvY3VzIGlucHV0IG9uIGNsaWNrXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cyA9IFsnYnV0dG9uJywgJ3NiYi1wb3BvdmVyJywgJ3NiYi1vcHRpb24nLCAnc2JiLWNoaXAnXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cyA9IFtcbiAgICAnaW5wdXQnLFxuICAgICdzZWxlY3QnLFxuICAgICd0ZXh0YXJlYScsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzID0gW1xuICAgICdlbWFpbCcsXG4gICAgJ251bWJlcicsXG4gICAgJ3Bhc3N3b3JkJyxcbiAgICAnc2VhcmNoJyxcbiAgICAndGVsJyxcbiAgICAndGV4dCcsXG4gICAgJ3VybCcsXG4gIF07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgYW4gZXJyb3IgbWVzc2FnZSwgaGludCBvciB0ZXh0LWNvdW50ZXIuXG4gICAqIGBub25lYCBkb2VzIG5vdCByZXNlcnZlIGFueSBzcGFjZS5cbiAgICogYHJlc2VydmVgIGRvZXMgcmVzZXJ2ZSBvbmUgcm93IGZvciBhbiBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZXJyb3Itc3BhY2UnLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBlcnJvclNwYWNlOiAnbm9uZScgfCAncmVzZXJ2ZScgPSAnbm9uZSc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBvcHRpb25hbC5cbiAgICogQGRlcHJlY2F0ZWQgU2V0IHRoZSAob3B0aW9uYWwpIGxhYmVsIHRleHQgbWFudWFsbHkuIFdpbGwgYmUgcmVtb3ZlZCB3aXRoIG5leHQgbWFqb3IgdmVyc2lvbi5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsLCBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdsJyB8ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIGZvcm0gZmllbGQgd2l0aG91dCBhIGJvcmRlci4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGNvbXBvbmVudDpcbiAgICogLSBgZGVmYXVsdGA6IHRoZSBjb21wb25lbnQgaGFzIGRlZmluZWQgd2lkdGggYW5kIG1pbi13aWR0aDtcbiAgICogLSBgY29sbGFwc2VgOiB0aGUgY29tcG9uZW50IGFkYXB0cyBpdHNlbGYgdG8gaXRzIGlubmVyIGlucHV0IGNvbnRlbnQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHdpZHRoOiAnZGVmYXVsdCcgfCAnY29sbGFwc2UnID0gJ2RlZmF1bHQnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHZpc3VhbGx5IGhpZGUgdGhlIGxhYmVsLiBJZiBoaWRkZW4sIHNjcmVlbiByZWFkZXJzIHdpbGwgc3RpbGwgcmVhZCBpdC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGRlbi1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhpZGRlbkxhYmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBmbG9hdC4gSWYgYWN0aXZhdGVkLCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGlucHV0IGlzIGhpZGRlbi4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Zsb2F0aW5nLWxhYmVsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZmxvYXRpbmdMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gZ2V0IHRoZSBgZXJyb3JgIHNsb3QuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2Vycm9yRWxlbWVudHM6IEVsZW1lbnRbXSA9IFtdO1xuXG4gIC8qKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gZ2V0IHRoZSBgaGludGAgc2xvdC4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGludEVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IG51bGwgPVxuICAgIG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbGFiZWwhOiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNsb3R0ZWQgbGFiZWwuICovXG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogSFRNTExhYmVsRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbDtcbiAgfVxuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcbiAgICAgICAgaWYgKG11dGF0aW9ucy5zb21lKChtKSA9PiBtLnR5cGUgPT09ICdhdHRyaWJ1dGVzJykgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgICAgICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRGb3JtTGlzdGVuZXIoKTtcbiAgICAgICAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgICAgICAgICAvLyBVc2VkIHRvIG5vdGlmeSB0aGUgcmVtYWluaW5nIGNoYXJzIGNvbXBvbmVudC5cbiAgICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnybVpbnB1dGF0dHJpYnV0ZWNoYW5nZScpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRGb3JtQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBwcml2YXRlIF9jb250cm9sOiBTYmJGb3JtRmllbGRFbGVtZW50Q29udHJvbCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9wcmV2aW91c1R5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgJ2ZvY3VzaW4nLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC50YXJnZXQgPT09IHRoaXMuaW5wdXRFbGVtZW50IHx8XG4gICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSAodGhpcy5pbnB1dEVsZW1lbnQgYXMgU2JiU2VsZWN0RWxlbWVudCB8IHVuZGVmaW5lZCk/LmlucHV0RWxlbWVudFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKCdmb2N1cycpO1xuICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYGZvY3VzLW9yaWdpbi0ke3NiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfSxcbiAgICApO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgJ2ZvY3Vzb3V0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmlucHV0RWxlbWVudCB8fFxuICAgICAgICAgIGV2ZW50LnRhcmdldCA9PT0gKHRoaXMuaW5wdXRFbGVtZW50IGFzIFNiYlNlbGVjdEVsZW1lbnQgfCB1bmRlZmluZWQpPy5pbnB1dEVsZW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnZm9jdXMnKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHRoaXMuaW50ZXJuYWxzLnN0YXRlcykge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnN0YXJ0c1dpdGgoJ2ZvY3VzLW9yaWdpbi0nKSkge1xuICAgICAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfSxcbiAgICApO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdkaXNwbGF5dmFsdWVjaGFuZ2UnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSk7XG4gICAgLy8gV2Ugd2FudCB0byBwcmV2ZW50IHRoZSBuYXRpdmUgYnJvd3NlciB2YWxpZGF0aW9uIG1lc3NhZ2UgcG9wb3ZlclxuICAgIC8vIHRvIGJlIHNob3duLiBUaGlzIGFsc28gcHJldmVudHMgYSBidWcgaW4gV2ViS2l0LCB3aGljaCB3b3VsZCBub3RcbiAgICAvLyBhbGxvdyBob3N0IGFzIHRoZSB2YWxpZGl0eSBhbmNob3I6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjk4MzJcbiAgICAvLyBUaGlzIGlzIGR1cGxpY2F0ZWQgZnJvbSB0aGUgZm9ybSBhc3NvY2lhdGVkIG1peGluIGZvciB0aGUgbmF0aXZlXG4gICAgLy8gaW5wdXQgY29udHJvbHMgKGUuZy4gPGlucHV0PiBvciA8c2VsZWN0PikuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdpbnZhbGlkJywgKGUpID0+IGUucHJldmVudERlZmF1bHQoKSwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZm9ybWZpZWxkY29udHJvbCcsIChlOiBTYmJGb3JtRmllbGRDb250cm9sRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuX2NvbnRyb2wgPSBlLmNvbnRyb2w7XG4gICAgICBpZiAodGhpcy5fY29ubmVjdElucHV0RWxlbWVudCgpID09PSAndW5jaGFuZ2VkJykge1xuICAgICAgICB0aGlzLl9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpO1xuICAgICAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgICAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2Fzc2lnblNsb3RzKCk7XG4gICAgdGhpcy5fY29ubmVjdElucHV0RWxlbWVudCgpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIHRoaXMuX3N5bmNTaXplKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3N5bmNTaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9pbnB1dEZvcm1BYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBpZiAodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSA9PT0gJ2lucHV0JyB8fCB0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl91bnBhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVdyYXBwZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0VsZW1lbnRGb2N1c0V4Y2x1ZGVkKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250cm9sPy5vbkNvbnRhaW5lckNsaWNrKSB7XG4gICAgICB0aGlzLl9jb250cm9sPy5vbkNvbnRhaW5lckNsaWNrKGV2ZW50KTtcbiAgICB9IGVsc2UgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkubG9jYWxOYW1lICE9PSAnbGFiZWwnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0JyAmJlxuICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUgIT09ICdzYmItc2VsZWN0J1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmNsaWNrKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pbnB1dD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0VsZW1lbnRGb2N1c0V4Y2x1ZGVkKGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuc29tZShcbiAgICAgICAgKGVsKSA9PlxuICAgICAgICAgIChlbCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAmJlxuICAgICAgICAgICAgKGVsLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSA9PT0gJzAnIHx8IGVsLmhhc0F0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJykpKSB8fFxuICAgICAgICAgIHRoaXMuX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cy5pbmNsdWRlcygoZWwgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TbG90TGFiZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWxzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsJykpO1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGxhYmVscy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBEZXRlY3RlZCBtb3JlIHRoYW4gb25lIGxhYmVsIGluIHNiYi1mb3JtLWZpZWxkIyR7dGhpcy5pZH0uIE9ubHkgb25lIGxhYmVsIGlzIHN1cHBvcnRlZC5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbHNbMF07XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBvZiBgPGlucHV0PmAgdG8gYF9pZGAgYW5kIGBfaW5wdXRgIGFuZCB0byBvYnNlcnZlIHRoZSBuYXRpdmUgcmVhZG9ubHkgYW5kIGRpc2FibGVkIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RJbnB1dENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuICAgIHRoaXMuX2Nvbm5lY3RJbnB1dEVsZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1lcnJvcjpub3QoW3Nsb3RdKScpLmZvckVhY2goKGUpID0+IGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29ubmVjdElucHV0RWxlbWVudCgpOiAnY2hhbmdlZCcgfCAnbm8taW5wdXQnIHwgJ3VuY2hhbmdlZCcge1xuICAgIGxldCBuZXdJbnB1dDogSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICh0aGlzLl9jb250cm9sPy5pZCkge1xuICAgICAgbmV3SW5wdXQgPSAodGhpcy5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQodGhpcy5fY29udHJvbC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZpbmQgdGhlIHNsb3R0ZWQgaW5wdXQgZWxlbWVudCwgZXZlbiBpZiBpdCdzIG5lc3RlZCAoZS5nLiBjaGlwIGdyb3VwKVxuICAgICAgY29uc3QgaW5wdXRDYW5kaWRhdGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignKjpub3QoW3Nsb3RdLHNiYi1jaGlwLWdyb3VwKScpLFxuICAgICAgKTtcbiAgICAgIG5ld0lucHV0ID1cbiAgICAgICAgKGlucHV0Q2FuZGlkYXRlcy5maW5kKChlKSA9PiB0aGlzLl9pc0lucHV0RWxlbWVudChlKSkgfHwgaW5wdXRDYW5kaWRhdGVzWzBdKSA/PyBudWxsO1xuICAgIH1cblxuICAgIGlmIChuZXdJbnB1dCA9PT0gdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybiAndW5jaGFuZ2VkJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBpbnB1dC10eXBlLSR7dGhpcy5faW5wdXQubG9jYWxOYW1lfWApO1xuICAgICAgaWYgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ2lucHV0JyB8fCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICd0ZXh0YXJlYScpIHtcbiAgICAgICAgdGhpcy5fdW5wYXRjaElucHV0VmFsdWUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW5ld0lucHV0KSB7XG4gICAgICB0aGlzLl9pbnB1dCA9IG51bGw7XG4gICAgICByZXR1cm4gJ25vLWlucHV0JztcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dCA9IG5ld0lucHV0O1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRGb3JtTGlzdGVuZXIoKTtcbiAgICB0aGlzLl9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpO1xuICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3Jvd3MnKSB8fCAnMycpO1xuICAgICAgdGhpcy5fcGF0Y2hJbnB1dFZhbHVlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX3BhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2VsZWN0JyB8fCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0JykgJiZcbiAgICAgICF0aGlzLmhhc1VwZGF0ZWRcbiAgICApIHtcbiAgICAgIC8vIER1ZSB0byBTU1IgdGhlIGRyb3Bkb3duIGljb24gZm9yIHNlbGVjdHMgY2Fubm90IGJlIHJlbmRlcmVkIGluIHRoZSBmaXJzdCByZW5kZXIgcGFzcy5cbiAgICAgIC8vIER1ZSB0byB0aGlzIHdlIHNjaGVkdWxlIGEgcmUtcmVuZGVyIHRvIHJlbmRlciB0aGUgaWNvbi5cbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiB0aGlzLnJlcXVlc3RVcGRhdGUoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLl9pbnB1dCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydyZWFkb25seScsICdkaXNhYmxlZCcsICdmb3JtJywgJ2NsYXNzJywgJ2RhdGEtZXhwYW5kZWQnLCAnbWF4bGVuZ3RoJ10sXG4gICAgfSk7XG4gICAgLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBSZW5hbWUgaW5wdXQtdHlwZSB0byBpbnB1dC1lbGVtZW50IGFuZCBleHBsaWNpdC1pbnB1dC10eXBlIHRvIGlucHV0LXR5cGUuXG4gICAgLy8gQWxzbyBhZGFwdCBkb2N1bWVudGF0aW9uLlxuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYGlucHV0LXR5cGUtJHt0aGlzLl9pbnB1dC5sb2NhbE5hbWV9YCk7XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gICAgcmV0dXJuICdjaGFuZ2VkJztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0IHx8ICF0aGlzLl9sYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG5hdGl2ZUlucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQubG9jYWxOYW1lKSB8fFxuICAgICAgKGN1c3RvbUVsZW1lbnRzLmdldCh0aGlzLl9pbnB1dC5sb2NhbE5hbWUpIGFzIHsgZm9ybUFzc29jaWF0ZWQ/OiBib29sZWFuIH0gfCB1bmRlZmluZWQpXG4gICAgICAgID8uZm9ybUFzc29jaWF0ZWRcbiAgICApIHtcbiAgICAgIC8vIEZvciBuYXRpdmUgaW5wdXQgZWxlbWVudHMgd2UgdXNlIHRoZSBgZm9yYCBhdHRyaWJ1dGUgb24gdGhlIGxhYmVsIHRvIHJlZmVyZW5jZSB0aGUgaW5wdXRcbiAgICAgIC8vIHZpYSBpZCByZWZlcmVuY2UuXG4gICAgICB0aGlzLl9pbnB1dC5pZCB8fD0gYHNiYi1mb3JtLWZpZWxkLWlucHV0LSR7bmV4dElkKyt9YDtcbiAgICAgIHRoaXMuX2xhYmVsLmh0bWxGb3IgPSB0aGlzLl9pbnB1dC5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIG5vbi1uYXRpdmUgaW5wdXQgZWxlbWVudHMsIHRoYXQgZG8gbm90IHN1cHBvcnQgcmVmZXJlbmNlcyB2aWEgdGhlIGxhYmVsIGZvciBhdHRyaWJ1dGUsXG4gICAgICAvLyB3ZSB1c2UgYXJpYS1sYWJlbGxlZGJ5IG9uIHRoZSBpbnB1dCBlbGVtZW50IHRvIHJlZmVyZW5jZSB0aGUgbGFiZWwgZWxlbWVudCB2aWEgaWQuXG4gICAgICAvLyBUT0RPOiBNaWdyYXRlIHRvIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMgd2hlbiBhdmFpbGFibGU6XG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9hcmlhTGFiZWxsZWRCeUVsZW1lbnRzXG4gICAgICB0aGlzLl9sYWJlbC5pZCB8fD0gYHNiYi1mb3JtLWZpZWxkLWxhYmVsLSR7bmV4dElkKyt9YDtcbiAgICAgIGNvbnN0IGxhYmVsbGVkYnkgPVxuICAgICAgICB0aGlzLl9pbnB1dFxuICAgICAgICAgIC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpXG4gICAgICAgICAgPy5zcGxpdCgnICcpXG4gICAgICAgICAgLmZpbHRlcigobCkgPT4gISFsICYmIGwgIT09IHRoaXMuX2xhYmVsIS5pZCkgPz8gW107XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIFsuLi5sYWJlbGxlZGJ5LCB0aGlzLl9sYWJlbC5pZF0uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0lucHV0RWxlbWVudChpbnB1dDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBuYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKGlucHV0LmxvY2FsTmFtZSkgfHxcbiAgICAgICEhKGN1c3RvbUVsZW1lbnRzLmdldChpbnB1dC5sb2NhbE5hbWUpIGFzIHsgZm9ybUFzc29jaWF0ZWQ/OiBib29sZWFuIH0gfCB1bmRlZmluZWQpXG4gICAgICAgID8uZm9ybUFzc29jaWF0ZWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZElucHV0U3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVTdGF0ZSgncmVhZG9ubHknLCB0aGlzLl9jb250cm9sPy5yZWFkT25seSA/PyB0aGlzLl9pbnB1dCEuaGFzQXR0cmlidXRlKCdyZWFkb25seScpKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdkaXNhYmxlZCcsIHRoaXMuX2NvbnRyb2w/LmRpc2FibGVkID8/IHRoaXMuX2lucHV0IS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hhcy1wb3B1cC1vcGVuJywgdGhpcy5faW5wdXQhLmhhc0F0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcpKTtcblxuICAgIGlmICh0aGlzLl9wcmV2aW91c1R5cGUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoYGV4cGxpY2l0LWlucHV0LXR5cGUtJHt0aGlzLl9wcmV2aW91c1R5cGV9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcHJldmlvdXNUeXBlID0gdGhpcy5fY29udHJvbD8udHlwZSA/PyAodGhpcy5faW5wdXQgYXMgeyB0eXBlPzogc3RyaW5nIH0pLnR5cGUgPz8gJ3RleHQnO1xuICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYGV4cGxpY2l0LWlucHV0LXR5cGUtJHt0aGlzLl9wcmV2aW91c1R5cGV9YCk7XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlcklucHV0Rm9ybUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0Rm9ybUFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIGNvbnN0IHsgc2lnbmFsIH0gPSAodGhpcy5faW5wdXRGb3JtQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpKTtcblxuICAgIGNvbnN0IGZvcm0gPVxuICAgICAgKHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IHVuZGVmaW5lZCk/LmZvcm0gPz9cbiAgICAgIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gICAgLy8gVGltZW91dCBuZWVkZWQgdG8gaGF2ZSB2YWx1ZSB1cGRhdGVkXG4gICAgY29uc3QgcmVzZXRIYW5kbGVyID0gKCk6IHVua25vd24gPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc2V0KCkpO1xuICAgIGZvcm0/LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgcmVzZXRIYW5kbGVyLCB7IHNpZ25hbCB9KTtcbiAgfVxuXG4gIC8vIFdlIG5lZWQgdG8gcGF0Y2ggdGhlIHZhbHVlIHByb3BlcnR5IG9mIHRoZSBIVE1MSW5wdXRFbGVtZW50IGluIG9yZGVyXG4gIC8vIHRvIGJlIGFibGUgdG8gcmVzZXQgdGhlIGZsb2F0aW5nIGxhYmVsIGluIHRoZSBlbXB0eSBzdGF0ZS5cbiAgcHJpdmF0ZSBfcGF0Y2hJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGlmICghaW5wdXRFbGVtZW50IHx8IHBhdGNoZWRJbnB1dHMuaGFzKGlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbERlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKGlucHV0RWxlbWVudCksXG4gICAgICAndmFsdWUnLFxuICAgICk7XG5cbiAgICBpZiAoIW9yaWdpbmFsRGVzY3JpcHRvciB8fCAhb3JpZ2luYWxEZXNjcmlwdG9yLnNldCB8fCAhb3JpZ2luYWxEZXNjcmlwdG9yLmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBhdGNoZWRJbnB1dHMuc2V0KGlucHV0RWxlbWVudCwgb3JpZ2luYWxEZXNjcmlwdG9yKTtcblxuICAgIGNvbnN0IHsgZ2V0OiBnZXR0ZXIsIHNldDogc2V0dGVyIH0gPSBvcmlnaW5hbERlc2NyaXB0b3I7XG4gICAgY29uc3QgY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICAgIC8vIFVzZWQgdG8gbm90aWZ5IHRoZSByZW1haW5pbmcgY2hhcnMgY29tcG9uZW50IHRvIHVwZGF0ZSBpdHMgY291bnRcbiAgICAgIC8vIHdoZW4gdGhlIHZhbHVlIGlzIGNoYW5nZWQgdmlhIGZvcm0gcmVzZXQgb3IgcHJvZ3JhbW1hdGljYWxseS5cbiAgICAgIC8vIFdlIG5lZWQgYSBjdXN0b20gZXZlbnQgZm9yIHRoaXMsIGJlY2F1c2UgdGhlIG5hdGl2ZSBpbnB1dCBldmVudCBpc1xuICAgICAgLy8gbm90IHRyaWdnZXJlZCBpbiB0aGVzZSBjYXNlcy5cbiAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ8m1aW5wdXQnKSk7XG4gICAgfTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dEVsZW1lbnQsICd2YWx1ZScsIHtcbiAgICAgIC4uLm9yaWdpbmFsRGVzY3JpcHRvcixcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGdldHRlci5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdWYWx1ZSkge1xuICAgICAgICBzZXR0ZXIuY2FsbCh0aGlzLCBuZXdWYWx1ZSk7XG4gICAgICAgIGNoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VucGF0Y2hJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3Qgb3JpZ2luYWxEZXNjcmlwdG9yID0gcGF0Y2hlZElucHV0cy5nZXQoaW5wdXRFbGVtZW50KTtcbiAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXRFbGVtZW50LCAndmFsdWUnLCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuICAgICAgcGF0Y2hlZElucHV0cy5kZWxldGUoaW5wdXRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICdlbXB0eScsXG4gICAgICB0aGlzLl9jb250cm9sPy5lbXB0eSA/P1xuICAgICAgICAoKCh0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgfHxcbiAgICAgICAgICAodGhpcy5faW5wdXQ/LmNvbnN0cnVjdG9yIGFzIHVuZGVmaW5lZCB8IHR5cGVvZiBTYmJGb3JtQXNzb2NpYXRlZElucHV0TWl4aW5UeXBlKVxuICAgICAgICAgICAgPy5mb3JtRmllbGRBc3NvY2lhdGVkKSA/P1xuICAgICAgICAgIGZhbHNlKSAmJlxuICAgICAgICAgIHRoaXMuX2lzSW5wdXRFbXB0eSgpKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNoaXBHcm91cEVsZW06IFNiYkNoaXBHcm91cEVsZW1lbnQgfCBudWxsID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItY2hpcC1ncm91cCcpO1xuICAgIGlmIChjaGlwR3JvdXBFbGVtKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpICYmXG4gICAgICAgIChBcnJheS5pc0FycmF5KGNoaXBHcm91cEVsZW0udmFsdWUpXG4gICAgICAgICAgPyBjaGlwR3JvdXBFbGVtLnZhbHVlLmxlbmd0aCA9PT0gMFxuICAgICAgICAgIDogIWNoaXBHcm91cEVsZW0ucXVlcnlTZWxlY3Rvcignc2JiLWNoaXAnKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzLmluY2x1ZGVzKHRoaXMuX2lucHV0LnR5cGUpICYmXG4gICAgICAgIHRoaXMuX2lzSW5wdXRWYWx1ZUVtcHR5KClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuc2VsZWN0ZWRPcHRpb25zPy5pdGVtKDApPy5sYWJlbD8udHJpbSgpID09PSAnJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0Jykge1xuICAgICAgcmV0dXJuICh0aGlzLl9pbnB1dCBhcyBTYmJTZWxlY3RFbGVtZW50KS5nZXREaXNwbGF5VmFsdWU/LigpPy50cmltKCkgPT09ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNJbnB1dFZhbHVlRW1wdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0lucHV0VmFsdWVFbXB0eSgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWU7XG4gICAgcmV0dXJuIFsnJywgdW5kZWZpbmVkLCBudWxsXS5pbmNsdWRlcyh2YWx1ZSkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHNldCB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgZm9yIHRoZSBzbG90dGVkIGlucHV0IHJlZmVyZW5jaW5nIGF2YWlsYWJsZSA8c2JiLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcbiAgICBpZiAodGhpcy5faW5wdXQgJiYgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPSByZW1vdmVBcmlhRWxlbWVudHMoXG4gICAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLFxuICAgICAgICAuLi4odGhpcy5fZXJyb3JFbGVtZW50cyA/PyBbXSksXG4gICAgICAgIC8vIEFsc28gcmVtb3ZlIGhpbnQgZWxlbWVudHMgc2luY2UgdGhlaXIgdmlzaWJpbGl0eSBkZXBlbmRzIG9uIGVycm9yIHN0YXRlXG4gICAgICAgIC4uLih0aGlzLl9oaW50RWxlbWVudHMgPz8gW10pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gZXJyb3JFbGVtZW50cztcbiAgICBmb3IgKGNvbnN0IGVsIG9mIHRoaXMuX2Vycm9yRWxlbWVudHMpIHtcbiAgICAgIC8vIEluc3RlYWQgb2YgZGVmaW5pbmcgYSBjb250YWluZXIgd2l0aCBhbiBhcmlhLWxpdmUgcmVnaW9uIGFzIGV4cGVjdGVkLCB3ZSBoYWQgdG8gY2hhbmdlXG4gICAgICAvLyBzZXR0aW5nIGl0IGZvciBldmVyeSBzbG90dGVkIGVsZW1lbnQgdG8gcHJvcGVybHkgd29yayBpbiBhbGwgYnJvd3NlcnMgYW5kIHNjcmVlbiByZWFkZXIgY29tYmluYXRpb25zLlxuICAgICAgZWwucm9sZSB8fD0gJ3N0YXR1cyc7XG4gICAgfVxuXG4gICAgdGhpcy5fYXNzaWduQXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoKTtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdoYXMtZXJyb3InLCAhIXRoaXMuX2Vycm9yRWxlbWVudHMubGVuZ3RoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gc2V0IHRoZSBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBmb3IgdGhlIHNsb3R0ZWQgaW5wdXQgcmVmZXJlbmNpbmcgYXZhaWxhYmxlIDxzYmItaGludD4gaW5zdGFuY2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25TbG90SGludENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBoaW50RWxlbWVudHMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWRFbGVtZW50cygpO1xuICAgIGlmICh0aGlzLl9pbnB1dD8uYXJpYURlc2NyaWJlZEJ5RWxlbWVudHM/Lmxlbmd0aCAmJiB0aGlzLl9oaW50RWxlbWVudHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5wdXQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPSByZW1vdmVBcmlhRWxlbWVudHMoXG4gICAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLFxuICAgICAgICAuLi50aGlzLl9oaW50RWxlbWVudHMsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX2hpbnRFbGVtZW50cyA9IGhpbnRFbGVtZW50cztcbiAgICB0aGlzLl9hc3NpZ25BcmlhRGVzY3JpYmVkQnlFbGVtZW50cygpO1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ2hhcy1oaW50JywgISF0aGlzLl9oaW50RWxlbWVudHMubGVuZ3RoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnbkFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnB1dCkge1xuICAgICAgLy8gSGludCBlbGVtZW50cyBhcmUgb25seSBsaW5rZWQgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzXG4gICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuX2Vycm9yRWxlbWVudHMubGVuZ3RoID8gdGhpcy5fZXJyb3JFbGVtZW50cyA6IHRoaXMuX2hpbnRFbGVtZW50cztcbiAgICAgIHRoaXMuX2lucHV0LmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzID0gYXBwZW5kQXJpYUVsZW1lbnRzKFxuICAgICAgICB0aGlzLl9pbnB1dC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgICAgLi4uZWxlbWVudHMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZXJyb3Isc2JiLW1pbmktYnV0dG9uLHNiYi1taW5pLWJ1dHRvbi1saW5rLHNiYi1mb3JtLWZpZWxkLWNsZWFyLHNiYi1kYXRlcGlja2VyLW5leHQtZGF5LHNiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheSxzYmItZGF0ZXBpY2tlci10b2dnbGUsc2JiLXNlbGVjdCxzYmItYXV0b2NvbXBsZXRlLHNiYi1hdXRvY29tcGxldGUtZ3JpZCxzYmItY2hpcC1ncm91cCxzYmItaGludCxzYmItZm9ybS1maWVsZC10ZXh0LWNvdW50ZXInLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY1NpemUoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgfCBTYmJTZWxlY3RFbGVtZW50PihcbiAgICAgICdzYmItYXV0b2NvbXBsZXRlLHNiYi1hdXRvY29tcGxldGUtZ3JpZCxzYmItc2VsZWN0JyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IChlbGVtZW50LnNpemUgPSB0aGlzLnNpemUgPT09ICdzJyA/ICdzJyA6ICdtJykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19zZWxlY3QtaW5wdXQtaWNvblwiXG4gICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3VmZml4XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zeW5jTmVnYXRpdmV9Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19oaW50XCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImhpbnRcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdEhpbnRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZXJyb3JcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdEVycm9yQ2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWZvcm0tZmllbGQnOiBTYmJGb3JtRmllbGRFbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50RXZlbnRNYXAge1xuICAgIGZvcm1maWVsZGNvbnRyb2w6IFNiYkZvcm1GaWVsZENvbnRyb2xFdmVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FDZ0NBLElBQUksU0FBUztBQUViLElBQU0sZ0NBQWdCLElBQUksU0FBcUU7QUFDL0YsSUFBTSxzQkFBc0I7Q0FBQztDQUFTO0NBQVk7Q0FBUztBQXlCM0QsSUFBYSwyQkFBYixjQUE4QyxNQUFLO0NBR2pELElBQVcsVUFBTztBQUNoQixTQUFPLEtBQUs7O0NBR2QsWUFBbUIsU0FBMEM7QUFDM0QsUUFBTSxtQkFBbUI7QUFDekIsT0FBSyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O0lBaUJQLDZCQUFtQjttQkFBUyxpQkFBaUIsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQUF4RCw0QkFBNEIsWUFBNEI7Ozs2QkE2QmxFLFNBQVM7SUFBRSxXQUFXO0lBQWUsU0FBUztJQUFNLENBQUMsQ0FBQTsyQkFPckQsV0FBVyxFQUNYLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFBO3VCQU8zQixTQUFTLEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FBQTs2QkFHM0IsV0FBVyxFQUNYLFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtJQUFTLENBQUMsQ0FBQTt3QkFNMUMsU0FBUyxFQUFFLFNBQVMsTUFBTSxDQUFDLENBQUE7OEJBRzNCLFdBQVcsRUFDWCxTQUFTO0lBQUUsV0FBVztJQUFnQixTQUFTO0lBQU0sTUFBTTtJQUFTLENBQUMsQ0FBQTtnQ0FJckUsV0FBVyxFQUNYLFNBQVM7SUFBRSxXQUFXO0lBQWtCLFNBQVM7SUFBTSxNQUFNO0lBQVMsQ0FBQyxDQUFBO2lDQUl2RSxPQUFPLENBQUE7Z0NBR1AsT0FBTyxDQUFBO3lCQUdQLE9BQU8sQ0FBQTt5QkFJUCxPQUFPLENBQUE7QUEvQ1IsZ0JBQUEsTUFBQSxNQUFBLHdCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsZ0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBVSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVYsYUFBVTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDBCQUFBLDhCQUFBO0FBUTFCLGdCQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVIsV0FBUTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHdCQUFBLDRCQUFBO0FBTUssZ0JBQUEsTUFBQSxNQUFBLGtCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsVUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFJLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBSixPQUFJOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsb0JBQUEsd0JBQUE7QUFLakQsZ0JBQUEsTUFBQSxNQUFBLHdCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsZ0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBVSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVYsYUFBVTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDBCQUFBLDhCQUFBO0FBS0csZ0JBQUEsTUFBQSxNQUFBLG1CQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsV0FBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFLLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBTCxRQUFLOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEscUJBQUEseUJBQUE7QUFLbEQsZ0JBQUEsTUFBQSxNQUFBLHlCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as SbbErrorElement } from "./error.component-xD_c9IBA.js";
|
|
2
|
-
import { n as SbbFormFieldElement, t as SbbFormFieldControlEvent } from "./form-field.component-
|
|
2
|
+
import { n as SbbFormFieldElement, t as SbbFormFieldControlEvent } from "./form-field.component-D0NJclvI.js";
|
|
3
3
|
import { SbbFormFieldClearElement } from "./form-field/form-field-clear/form-field-clear.component.js";
|
|
4
4
|
import { SbbFormFieldTextCounterElement } from "./form-field/form-field-text-counter/form-field-text-counter.component.js";
|
|
5
5
|
import { t as SbbHintElement } from "./hint.component-BsIzdUOV.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as SbbErrorElement } from "./error.component-xD_c9IBA.js";
|
|
2
|
-
import { n as SbbFormFieldElement, t as SbbFormFieldControlEvent } from "./form-field.component-
|
|
2
|
+
import { n as SbbFormFieldElement, t as SbbFormFieldControlEvent } from "./form-field.component-D0NJclvI.js";
|
|
3
3
|
import { SbbFormFieldClearElement } from "./form-field/form-field-clear/form-field-clear.component.js";
|
|
4
4
|
import { SbbFormFieldTextCounterElement } from "./form-field/form-field-text-counter/form-field-text-counter.component.js";
|
|
5
5
|
import { t as SbbHintElement } from "./hint.component-BsIzdUOV.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SbbToastElement } from "../toast.component-
|
|
1
|
+
import { t as SbbToastElement } from "../toast.component-Cuvs3VnH.js";
|
|
2
2
|
export { SbbToastElement };
|
|
@@ -188,7 +188,8 @@ var SbbToastElement = (() => {
|
|
|
188
188
|
this.dispatchOpenEvent();
|
|
189
189
|
if (this.timeout) {
|
|
190
190
|
const global = globalThis;
|
|
191
|
-
|
|
191
|
+
const setTimeout = global[global.Zone?.__symbol__?.("setTimeout")] ?? global.setTimeout;
|
|
192
|
+
this._closeTimeout = setTimeout(() => this.close(), this.timeout);
|
|
192
193
|
}
|
|
193
194
|
}
|
|
194
195
|
_onClick(event) {
|
|
@@ -271,4 +272,4 @@ var SbbToastElement = (() => {
|
|
|
271
272
|
//#endregion
|
|
272
273
|
export { SbbToastElement as t };
|
|
273
274
|
|
|
274
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LUJuYnB1VTlMLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90b2FzdC90b2FzdC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90b2FzdC90b2FzdC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi10b2FzdC1tYXgtd2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg0MDApfTtcbiAgLS1zYmItdG9hc3QtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi02eClcbiAgKTtcbiAgLS1zYmItdG9hc3QtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTtcbiAgLS1zYmItdG9hc3QtdGV4dC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtaW52ZXJ0ZWQpO1xuICAtLXNiYi10b2FzdC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0xLWludmVydGVkKTtcbiAgLS1zYmItdG9hc3QtbWFyZ2luOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXMpO1xuICAtLXNiYi10b2FzdC1wYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4eHMpO1xuICAtLXNiYi10b2FzdC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14cyk7XG4gIC0tc2JiLXRvYXN0LWJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1ib3JkZXItcmFkaXVzLTR4KTtcbiAgLS1zYmItdG9hc3QtY29udGFpbmVyLWRpc3BsYXk6IG5vbmU7XG4gIC0tc2JiLXRvYXN0LWNvbnRhaW5lci1wb3NpdGlvbjogZml4ZWQ7XG4gIC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb246IGluaXRpYWw7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBpbml0aWFsO1xuICAtLXNiYi10b2FzdC1nYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KTtcbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3ItZGFyayk7XG5cbiAgZGlzcGxheTogbm9uZTtcbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCksIDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkpIHtcbiAgLS1zYmItdG9hc3QtY29udGFpbmVyLWRpc3BsYXk6IGZsZXg7XG5cbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0nYm90dG9tLWxlZnQnXSksXG46aG9zdChbcG9zaXRpb249J2JvdHRvbS1zdGFydCddKSB7XG4gIC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb246IGZsZXgtc3RhcnQ7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBmbGV4LWVuZDtcbn1cblxuOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20tY2VudGVyJ10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogY2VudGVyO1xuICAtLXNiYi10b2FzdC12ZXJ0aWNhbC1wb3NpdGlvbjogZmxleC1lbmQ7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0nYm90dG9tLXJpZ2h0J10pLFxuOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20tZW5kJ10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogZmxleC1lbmQ7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBmbGV4LWVuZDtcbn1cblxuOmhvc3QoW3Bvc2l0aW9uPSd0b3AtbGVmdCddKSxcbjpob3N0KFtwb3NpdGlvbj0ndG9wLXN0YXJ0J10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogZmxleC1zdGFydDtcbiAgLS1zYmItdG9hc3QtdmVydGljYWwtcG9zaXRpb246IGZsZXgtc3RhcnQ7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0ndG9wLWNlbnRlciddKSB7XG4gIC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb246IGNlbnRlcjtcbiAgLS1zYmItdG9hc3QtdmVydGljYWwtcG9zaXRpb246IGZsZXgtc3RhcnQ7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0ndG9wLXJpZ2h0J10pLFxuOmhvc3QoW3Bvc2l0aW9uPSd0b3AtZW5kJ10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogZmxleC1lbmQ7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBmbGV4LXN0YXJ0O1xufVxuXG46aG9zdCg6c3RhdGUoZGFyaykpIHtcbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3ItZGVmYXVsdCk7XG59XG5cbi5zYmItdG9hc3RfX292ZXJsYXktY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHZhcigtLXNiYi10b2FzdC1jb250YWluZXItcG9zaXRpb24pO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgaW5zZXQ6IDA7XG4gIGRpc3BsYXk6IHZhcigtLXNiYi10b2FzdC1jb250YWluZXItZGlzcGxheSk7XG4gIGp1c3RpZnktY29udGVudDogdmFyKC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb24pO1xuICBhbGlnbi1pdGVtczogdmFyKC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uKTtcbn1cblxuLnNiYi10b2FzdCB7XG4gIHotaW5kZXg6IHZhcigtLXNiYi10b2FzdC16LWluZGV4LCB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpKTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIG1hcmdpbjogdmFyKC0tc2JiLXRvYXN0LW1hcmdpbik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi10b2FzdC1ib3JkZXItcmFkaXVzKTtcbiAgbWF4LXdpZHRoOiB2YXIoLS1zYmItdG9hc3QtbWF4LXdpZHRoKTtcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6IHZhcigtLXNiYi10b2FzdC10ZXh0LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXRvYXN0LWJhY2tncm91bmQtY29sb3IpO1xuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSkgJiB7XG4gICAgYW5pbWF0aW9uOiB7XG4gICAgICBuYW1lOiBvcGVuO1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi10b2FzdC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItdG9hc3QtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbik7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBhbmltYXRpb246IHtcbiAgICAgIG5hbWU6IGNsb3NlO1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi10b2FzdC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItdG9hc3QtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbik7XG4gICAgfVxuICB9XG59XG5cbi5zYmItdG9hc3Qtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc2JiLXRvYXN0LWdhcCk7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi10b2FzdC1wYWRkaW5nLWJsb2NrKTtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi10b2FzdC1wYWRkaW5nLWlubGluZSk7XG59XG5cbnNsb3Q6bm90KFtuYW1lPSdpY29uJ10pLFxuLnNiYi10b2FzdF9fY2xvc2Uge1xuICAvLyBBcyB0aGUgc2xvdHRlZCBjb250ZW50IGlzIGRpc3BsYXllZCBvbiBhIHdoaXRlIGJhY2tncm91bmQsIHdlIG5lZWQgdG8gZm9yY2UgbGlnaHQgbW9kZSBmb3IgdGhlbS5cbiAgY29sb3Itc2NoZW1lOiBvbmx5IGxpZ2h0O1xufVxuXG4uc2JiLXRvYXN0X19jb250ZW50IHtcbiAgQGluY2x1ZGUgc2JiLnRpdGxlLTYoJGV4Y2x1ZGUtc3BhY2luZzogdHJ1ZSk7XG5cbiAgZmxleDogMSAxIDA7XG59XG5cbi5zYmItdG9hc3RfX2Nsb3NlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnNiYi10b2FzdF9fY2xvc2UtZGl2aWRlciB7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi10b2FzdC1wYWRkaW5nLWJsb2NrKTtcbn1cblxuLnNiYi10b2FzdF9fY2xvc2UtYnV0dG9uIHtcbiAgbWFyZ2luLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHhzKTtcbn1cblxuQGtleWZyYW1lcyBvcGVuIHtcbiAgZnJvbSB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNsYXRlOiAwIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNsYXRlOiAwO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY2xvc2Uge1xuICBmcm9tIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNsYXRlOiAwO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zbGF0ZTogMCB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0yeCk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIGh0bWwsXG4gIG5vdGhpbmcsXG4gIHVuc2FmZUNTUyxcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBTYmJUcmFuc3BhcmVudEJ1dHRvbkVsZW1lbnQsXG4gIHR5cGUgU2JiVHJhbnNwYXJlbnRCdXR0b25MaW5rRWxlbWVudCxcbn0gZnJvbSAnLi4vYnV0dG9uLnB1cmUudHMnO1xuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgU2JiRGFya01vZGVDb250cm9sbGVyLCBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uL2NvcmUvZGVjb3JhdG9ycy50cyc7XG5pbXBvcnQgeyBpc0xlYW4sIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uIH0gZnJvbSAnLi4vY29yZS9kb20udHMnO1xuaW1wb3J0IHsgY29tcG9zZWRQYXRoSGFzQXR0cmlidXRlIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy50cyc7XG5pbXBvcnQgeyBpMThuQ2xvc2VBbGVydCB9IGZyb20gJy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQgeyBTYmJSZWFkb25seU1peGluIH0gZnJvbSAnLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHsgU2JiSWNvbk5hbWVNaXhpbiB9IGZyb20gJy4uL2ljb24udHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJMaW5rQnV0dG9uRWxlbWVudCwgU2JiTGlua0VsZW1lbnQsIFNiYkxpbmtTdGF0aWNFbGVtZW50IH0gZnJvbSAnLi4vbGluay50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RvYXN0LnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi9kaXZpZGVyLnRzJztcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBSZW1vdmUgY2FsbCB0byBkZWZpbmUuXG5TYmJUcmFuc3BhcmVudEJ1dHRvbkVsZW1lbnQuZGVmaW5lKCk7XG5cbnR5cGUgU2JiVG9hc3RQb3NpdGlvblZlcnRpY2FsID0gJ3RvcCcgfCAnYm90dG9tJztcbnR5cGUgU2JiVG9hc3RQb3NpdGlvbkhvcml6b250YWwgPSAnbGVmdCcgfCAnc3RhcnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBTYmJUb2FzdFBvc2l0aW9uID0gYCR7U2JiVG9hc3RQb3NpdGlvblZlcnRpY2FsfS0ke1NiYlRvYXN0UG9zaXRpb25Ib3Jpem9udGFsfWA7XG5cbi8vIEEgZ2xvYmFsIGNvbGxlY3Rpb24gb2YgZXhpc3RpbmcgdG9hc3RzXG5jb25zdCB0b2FzdFJlZnMgPSBuZXcgU2V0PFNiYlRvYXN0RWxlbWVudD4oKTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHRvYXN0IG5vdGlmaWNhdGlvbi5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBgc2JiLXRvYXN0YC5cbiAqIEBzbG90IGljb24gLSBBc3NpZ24gYSBjdXN0b20gaWNvbiB2aWEgc2xvdC5cbiAqIEBzbG90IGFjdGlvbiAtIFByb3ZpZGUgYSBjdXN0b20gYWN0aW9uIGZvciB0aGlzIHRvYXN0LlxuICogQGNzc3Byb3AgWy0tc2JiLXRvYXN0LXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlRvYXN0RWxlbWVudCBleHRlbmRzIFNiYkljb25OYW1lTWl4aW4oU2JiUmVhZG9ubHlNaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi10b2FzdCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoIG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGF1dG9tYXRpY2FsbHkgZGlzbWlzc2luZyB0aGUgdG9hc3QuXG4gICAqIElmIDAgKGRlZmF1bHQpLCBpdCBzdGF5cyBvcGVuIGluZGVmaW5pdGVseS5cbiAgICogRnJvbSBhY2Nlc3NpYmlsaXR5IHBlcnNwZWN0aXZlLCBpdCBpcyByZWNvbW1lbmRlZCB0byBzZXQgYSB0aW1lb3V0IG9mIGF0IGxlYXN0IDIwIHNlY29uZHMuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB0aW1lb3V0OiBudW1iZXIgPSAwO1xuXG4gIC8qKiBUaGUgcG9zaXRpb24gd2hlcmUgdG8gcGxhY2UgdGhlIHRvYXN0LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBwb3NpdGlvbjogU2JiVG9hc3RQb3NpdGlvbiA9ICdib3R0b20tY2VudGVyJztcblxuICAvKipcbiAgICogVGhlIEFSSUEgcG9saXRlbmVzcyBsZXZlbC5cbiAgICogQ2hlY2sgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL0FSSUFfTGl2ZV9SZWdpb25zI2xpdmVfcmVnaW9ucyBmb3IgZnVydGhlciBpbmZvXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgcG9saXRlbmVzczogJ3BvbGl0ZScgfCAnYXNzZXJ0aXZlJyB8ICdvZmYnID0gJ3BvbGl0ZSc7XG5cbiAgcHJpdmF0ZSBfY2xvc2VUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfZGFya01vZGVDb250cm9sbGVyID0gbmV3IFNiYkRhcmtNb2RlQ29udHJvbGxlcih0aGlzLCAoKSA9PiB7XG4gICAgdGhpcy5fc3luY1Nsb3R0ZWRFbGVtZW50cygpO1xuICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZSkgPT4gdGhpcy5fb25DbGljayhlKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIC8vIEFkZCB0aGlzIHRvYXN0IHRvIHRoZSBnbG9iYWwgY29sbGVjdGlvblxuICAgIHRvYXN0UmVmcy5hZGQodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcblxuICAgIC8vIFJlbW92ZSB0aGlzIGluc3RhbmNlXG4gICAgdG9hc3RSZWZzLmRlbGV0ZSh0aGlzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncG9saXRlbmVzcycpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhTGl2ZSA9IHRoaXMucG9saXRlbmVzcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgdG9hc3QuXG4gICAqIElmIHRoZXJlIGFyZSBvdGhlciBvcGVuZWQgdG9hc3RzIGluIHRoZSBwYWdlLCBjbG9zZSB0aGVtIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvc2VPdGhlclRvYXN0cygpO1xuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgdG9hc3QuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdjbG9zZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aGlzLl9jbG9zZVRpbWVvdXQpO1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG5cbiAgICAvLyBTdGFydCB0aGUgY291bnRkb3duIHRvIGNsb3NlIGl0XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3NiYi1kZXNpZ24tc3lzdGVtcy9seW5lLWFuZ3VsYXIvaXNzdWVzLzE5MFxuICAgICAgLy8gSWYgem9uZS5qcyBpcyBsb2FkZWQsIHNldFRpbWVvdXQgaXMgd3JhcHBlZCBhbmQgdHJhY2tlZCB3aGljaCB3aWxsIG1hcmtcbiAgICAgIC8vIGFueXRoaW5nIGluIEFuZ3VsYXIgYXMgdW5zdGFibGUgYXMgbG9uZyBhcyBzZXRUaW1lb3V0IGlzIG5vdCBmaW5pc2hlZC5cbiAgICAgIC8vIFRoaXMgb25seSBuZWVkcyB0byBiZSBmaXhlZCBpbiBwbGFjZXMgd2hlcmUgd2UgYWN0dWFsbHkgd2FudCB0byB3YWl0IGFcbiAgICAgIC8vIHNwZWNpZmljIGFtb3VudCBvZiB0aW1lIHdpdGhvdXQgYW4gaW50ZXJhY3Rpb24gKGUuZy4gZm9yIHRoaXMgY2FzZSkuXG4gICAgICBjb25zdCBnbG9iYWwgPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgICAgIGNvbnN0IHNldFRpbWVvdXQ6IHR5cGVvZiBnbG9iYWxUaGlzLnNldFRpbWVvdXQgPVxuICAgICAgICBnbG9iYWxbZ2xvYmFsLlpvbmU/Ll9fc3ltYm9sX18/Lignc2V0VGltZW91dCcpIGFzIHN0cmluZ10gPz8gZ2xvYmFsLnNldFRpbWVvdXQ7XG5cbiAgICAgIHRoaXMuX2Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLnRpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENsb3NlIHRoZSB0b2FzdCBvbiBjbGljayBvZiBhbnkgZWxlbWVudCB0aGF0IGhhcyB0aGUgJ3NiYi10b2FzdC1jbG9zZScgYXR0cmlidXRlLlxuICBwcml2YXRlIF9vbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3NlRWxlbWVudCA9IGNvbXBvc2VkUGF0aEhhc0F0dHJpYnV0ZShldmVudCwgJ3NiYi10b2FzdC1jbG9zZScsIHRoaXMpO1xuXG4gICAgaWYgKGNsb3NlRWxlbWVudCAmJiAhY2xvc2VFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItdG9hc3QtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogU2xvdHRlZCB0ZXh0IG5vZGVzIGFyZSBub3QgcmVhZCBjb3JyZWN0bHkgYnkgc2NyZWVuIHJlYWRlcnMgb24gQ2hyb21lLlxuICAgKiBUbyBhZGRyZXNzIHRoZSBwcm9ibGVtLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBhIHJvb3QgdGV4dCBub2RlLFxuICAgKiB3ZSB3cmFwIHRoZSB3aG9sZSBjb250ZW50IGluIGEgPHNwYW4+IHRhZ1xuICAgKi9cbiAgcHJpdmF0ZSBfb25Db250ZW50U2xvdENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzbG90Tm9kZXMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWROb2RlcygpO1xuXG4gICAgaWYgKHNsb3ROb2Rlcy5zb21lKChlbCkgPT4gZWwubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSkge1xuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHRoaXMucHJlcGVuZChzcGFuKTtcbiAgICAgIHNwYW4uYXBwZW5kKC4uLnNsb3ROb2Rlcyk7XG4gICAgfVxuICAgIHRoaXMuX3N5bmNTbG90dGVkRWxlbWVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNTbG90dGVkRWxlbWVudHMoKTogdm9pZCB7XG4gICAgLy8gRm9yY2UgdGhlIHZpc3VhbCBzdGF0ZSBvbiBzbG90dGVkIGJ1dHRvbnNcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw8U2JiVHJhbnNwYXJlbnRCdXR0b25FbGVtZW50IHwgU2JiVHJhbnNwYXJlbnRCdXR0b25MaW5rRWxlbWVudD4oXG4gICAgICAnc2JiLXRyYW5zcGFyZW50LWJ1dHRvbiwgc2JiLXRyYW5zcGFyZW50LWJ1dHRvbi1saW5rJyxcbiAgICApLmZvckVhY2goKGJ0bikgPT4ge1xuICAgICAgYnRuLm5lZ2F0aXZlID0gdGhpcy5faXNMaWdodE1vZGUoKTtcbiAgICAgIGJ0bi5zaXplID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG4gICAgfSk7XG5cbiAgICAvLyBGb3JjZSBuZWdhdGl2ZSBvbiBzbG90dGVkIGxpbmtzXG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPFNiYkxpbmtFbGVtZW50IHwgU2JiTGlua0J1dHRvbkVsZW1lbnQgfCBTYmJMaW5rU3RhdGljRWxlbWVudD4oXG4gICAgICAnc2JiLWxpbmssIHNiYi1saW5rLWJ1dHRvbiwgc2JiLWxpbmstc3RhdGljJyxcbiAgICApLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIGxpbmsubmVnYXRpdmUgPSB0aGlzLl9pc0xpZ2h0TW9kZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcml2YXRlIF9vblRvYXN0QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIC8vIE9uIHRvYXN0IG9wZW5lZFxuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaW5jZSB3ZSBkbyBub3Qgc3RhY2sgdG9hc3RzLCB3ZSBmb3JjZSB0aGUgY2xvc2luZyBvbiBvdGhlciBleGlzdGluZyBvcGVuZWQgb25lc1xuICAgKi9cbiAgcHJpdmF0ZSBfY2xvc2VPdGhlclRvYXN0cygpOiB2b2lkIHtcbiAgICB0b2FzdFJlZnMuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgaWYgKHQuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHQuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgICB0LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pc0xpZ2h0TW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2RhcmtNb2RlQ29udHJvbGxlci5tYXRjaGVzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdG9hc3RfX292ZXJsYXktY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdG9hc3RcIiBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25Ub2FzdEFuaW1hdGlvbkVuZH0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10b2FzdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAke3RoaXMucmVuZGVySWNvblNsb3QoKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdG9hc3RfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vbkNvbnRlbnRTbG90Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25cIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNTbG90dGVkRWxlbWVudHN9Pjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXRvYXN0X19jbG9zZVwiPlxuICAgICAgICAgICAgPHNiYi1kaXZpZGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRvYXN0X19jbG9zZS1kaXZpZGVyXCJcbiAgICAgICAgICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMuX2lzTGlnaHRNb2RlKCl9XG4gICAgICAgICAgICA+PC9zYmItZGl2aWRlcj5cbiAgICAgICAgICAgICR7IXRoaXMucmVhZE9ubHlcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10b2FzdF9fY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMuX2lzTGlnaHRNb2RlKCl9XG4gICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7aTE4bkNsb3NlQWxlcnRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgICAgICAgICBzYmItdG9hc3QtY2xvc2VcbiAgICAgICAgICAgICAgICA+PC9zYmItdHJhbnNwYXJlbnQtYnV0dG9uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b2FzdCc6IFNiYlRvYXN0RWxlbWVudDtcbiAgfVxufVxuIl0sIm1h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
|
|
275
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LUN1dnMzVm5ILmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90b2FzdC90b2FzdC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90b2FzdC90b2FzdC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi10b2FzdC1tYXgtd2lkdGg6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg0MDApfTtcbiAgLS1zYmItdG9hc3QtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi02eClcbiAgKTtcbiAgLS1zYmItdG9hc3QtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTtcbiAgLS1zYmItdG9hc3QtdGV4dC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTMtaW52ZXJ0ZWQpO1xuICAtLXNiYi10b2FzdC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItYmFja2dyb3VuZC1jb2xvci0xLWludmVydGVkKTtcbiAgLS1zYmItdG9hc3QtbWFyZ2luOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXMpO1xuICAtLXNiYi10b2FzdC1wYWRkaW5nLWJsb2NrOiB2YXIoLS1zYmItc3BhY2luZy1yZXNwb25zaXZlLXh4eHMpO1xuICAtLXNiYi10b2FzdC1wYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14cyk7XG4gIC0tc2JiLXRvYXN0LWJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1ib3JkZXItcmFkaXVzLTR4KTtcbiAgLS1zYmItdG9hc3QtY29udGFpbmVyLWRpc3BsYXk6IG5vbmU7XG4gIC0tc2JiLXRvYXN0LWNvbnRhaW5lci1wb3NpdGlvbjogZml4ZWQ7XG4gIC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb246IGluaXRpYWw7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBpbml0aWFsO1xuICAtLXNiYi10b2FzdC1nYXA6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KTtcbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3ItZGFyayk7XG5cbiAgZGlzcGxheTogbm9uZTtcbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCksIDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkpIHtcbiAgLS1zYmItdG9hc3QtY29udGFpbmVyLWRpc3BsYXk6IGZsZXg7XG5cbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0nYm90dG9tLWxlZnQnXSksXG46aG9zdChbcG9zaXRpb249J2JvdHRvbS1zdGFydCddKSB7XG4gIC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb246IGZsZXgtc3RhcnQ7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBmbGV4LWVuZDtcbn1cblxuOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20tY2VudGVyJ10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogY2VudGVyO1xuICAtLXNiYi10b2FzdC12ZXJ0aWNhbC1wb3NpdGlvbjogZmxleC1lbmQ7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0nYm90dG9tLXJpZ2h0J10pLFxuOmhvc3QoW3Bvc2l0aW9uPSdib3R0b20tZW5kJ10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogZmxleC1lbmQ7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBmbGV4LWVuZDtcbn1cblxuOmhvc3QoW3Bvc2l0aW9uPSd0b3AtbGVmdCddKSxcbjpob3N0KFtwb3NpdGlvbj0ndG9wLXN0YXJ0J10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogZmxleC1zdGFydDtcbiAgLS1zYmItdG9hc3QtdmVydGljYWwtcG9zaXRpb246IGZsZXgtc3RhcnQ7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0ndG9wLWNlbnRlciddKSB7XG4gIC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb246IGNlbnRlcjtcbiAgLS1zYmItdG9hc3QtdmVydGljYWwtcG9zaXRpb246IGZsZXgtc3RhcnQ7XG59XG5cbjpob3N0KFtwb3NpdGlvbj0ndG9wLXJpZ2h0J10pLFxuOmhvc3QoW3Bvc2l0aW9uPSd0b3AtZW5kJ10pIHtcbiAgLS1zYmItdG9hc3QtaG9yaXpvbnRhbC1wb3NpdGlvbjogZmxleC1lbmQ7XG4gIC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uOiBmbGV4LXN0YXJ0O1xufVxuXG46aG9zdCg6c3RhdGUoZGFyaykpIHtcbiAgLS1zYmItZm9jdXMtb3V0bGluZS1jb2xvcjogdmFyKC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3ItZGVmYXVsdCk7XG59XG5cbi5zYmItdG9hc3RfX292ZXJsYXktY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHZhcigtLXNiYi10b2FzdC1jb250YWluZXItcG9zaXRpb24pO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgaW5zZXQ6IDA7XG4gIGRpc3BsYXk6IHZhcigtLXNiYi10b2FzdC1jb250YWluZXItZGlzcGxheSk7XG4gIGp1c3RpZnktY29udGVudDogdmFyKC0tc2JiLXRvYXN0LWhvcml6b250YWwtcG9zaXRpb24pO1xuICBhbGlnbi1pdGVtczogdmFyKC0tc2JiLXRvYXN0LXZlcnRpY2FsLXBvc2l0aW9uKTtcbn1cblxuLnNiYi10b2FzdCB7XG4gIHotaW5kZXg6IHZhcigtLXNiYi10b2FzdC16LWluZGV4LCB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpKTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIG1hcmdpbjogdmFyKC0tc2JiLXRvYXN0LW1hcmdpbik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi10b2FzdC1ib3JkZXItcmFkaXVzKTtcbiAgbWF4LXdpZHRoOiB2YXIoLS1zYmItdG9hc3QtbWF4LXdpZHRoKTtcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6IHZhcigtLXNiYi10b2FzdC10ZXh0LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXRvYXN0LWJhY2tncm91bmQtY29sb3IpO1xuXG4gIDpob3N0KDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSkgJiB7XG4gICAgYW5pbWF0aW9uOiB7XG4gICAgICBuYW1lOiBvcGVuO1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi10b2FzdC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItdG9hc3QtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbik7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBhbmltYXRpb246IHtcbiAgICAgIG5hbWU6IGNsb3NlO1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi10b2FzdC1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItdG9hc3QtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbik7XG4gICAgfVxuICB9XG59XG5cbi5zYmItdG9hc3Qtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc2JiLXRvYXN0LWdhcCk7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi10b2FzdC1wYWRkaW5nLWJsb2NrKTtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi10b2FzdC1wYWRkaW5nLWlubGluZSk7XG59XG5cbnNsb3Q6bm90KFtuYW1lPSdpY29uJ10pLFxuLnNiYi10b2FzdF9fY2xvc2Uge1xuICAvLyBBcyB0aGUgc2xvdHRlZCBjb250ZW50IGlzIGRpc3BsYXllZCBvbiBhIHdoaXRlIGJhY2tncm91bmQsIHdlIG5lZWQgdG8gZm9yY2UgbGlnaHQgbW9kZSBmb3IgdGhlbS5cbiAgY29sb3Itc2NoZW1lOiBvbmx5IGxpZ2h0O1xufVxuXG4uc2JiLXRvYXN0X19jb250ZW50IHtcbiAgQGluY2x1ZGUgc2JiLnRpdGxlLTYoJGV4Y2x1ZGUtc3BhY2luZzogdHJ1ZSk7XG5cbiAgZmxleDogMSAxIDA7XG59XG5cbi5zYmItdG9hc3RfX2Nsb3NlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnNiYi10b2FzdF9fY2xvc2UtZGl2aWRlciB7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi10b2FzdC1wYWRkaW5nLWJsb2NrKTtcbn1cblxuLnNiYi10b2FzdF9fY2xvc2UtYnV0dG9uIHtcbiAgbWFyZ2luLWlubGluZTogdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS14eHhzKTtcbn1cblxuQGtleWZyYW1lcyBvcGVuIHtcbiAgZnJvbSB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNsYXRlOiAwIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNsYXRlOiAwO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY2xvc2Uge1xuICBmcm9tIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNsYXRlOiAwO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zbGF0ZTogMCB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0yeCk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIGh0bWwsXG4gIG5vdGhpbmcsXG4gIHVuc2FmZUNTUyxcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQge1xuICBTYmJUcmFuc3BhcmVudEJ1dHRvbkVsZW1lbnQsXG4gIHR5cGUgU2JiVHJhbnNwYXJlbnRCdXR0b25MaW5rRWxlbWVudCxcbn0gZnJvbSAnLi4vYnV0dG9uLnB1cmUudHMnO1xuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgU2JiRGFya01vZGVDb250cm9sbGVyLCBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uL2NvcmUvZGVjb3JhdG9ycy50cyc7XG5pbXBvcnQgeyBpc0xlYW4sIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uIH0gZnJvbSAnLi4vY29yZS9kb20udHMnO1xuaW1wb3J0IHsgY29tcG9zZWRQYXRoSGFzQXR0cmlidXRlIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy50cyc7XG5pbXBvcnQgeyBpMThuQ2xvc2VBbGVydCB9IGZyb20gJy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQgeyBTYmJSZWFkb25seU1peGluIH0gZnJvbSAnLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHsgU2JiSWNvbk5hbWVNaXhpbiB9IGZyb20gJy4uL2ljb24udHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJMaW5rQnV0dG9uRWxlbWVudCwgU2JiTGlua0VsZW1lbnQsIFNiYkxpbmtTdGF0aWNFbGVtZW50IH0gZnJvbSAnLi4vbGluay50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RvYXN0LnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi9kaXZpZGVyLnRzJztcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBSZW1vdmUgY2FsbCB0byBkZWZpbmUuXG5TYmJUcmFuc3BhcmVudEJ1dHRvbkVsZW1lbnQuZGVmaW5lKCk7XG5cbnR5cGUgU2JiVG9hc3RQb3NpdGlvblZlcnRpY2FsID0gJ3RvcCcgfCAnYm90dG9tJztcbnR5cGUgU2JiVG9hc3RQb3NpdGlvbkhvcml6b250YWwgPSAnbGVmdCcgfCAnc3RhcnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnIHwgJ2VuZCc7XG5leHBvcnQgdHlwZSBTYmJUb2FzdFBvc2l0aW9uID0gYCR7U2JiVG9hc3RQb3NpdGlvblZlcnRpY2FsfS0ke1NiYlRvYXN0UG9zaXRpb25Ib3Jpem9udGFsfWA7XG5cbi8vIEEgZ2xvYmFsIGNvbGxlY3Rpb24gb2YgZXhpc3RpbmcgdG9hc3RzXG5jb25zdCB0b2FzdFJlZnMgPSBuZXcgU2V0PFNiYlRvYXN0RWxlbWVudD4oKTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHRvYXN0IG5vdGlmaWNhdGlvbi5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBgc2JiLXRvYXN0YC5cbiAqIEBzbG90IGljb24gLSBBc3NpZ24gYSBjdXN0b20gaWNvbiB2aWEgc2xvdC5cbiAqIEBzbG90IGFjdGlvbiAtIFByb3ZpZGUgYSBjdXN0b20gYWN0aW9uIGZvciB0aGlzIHRvYXN0LlxuICogQGNzc3Byb3AgWy0tc2JiLXRvYXN0LXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlRvYXN0RWxlbWVudCBleHRlbmRzIFNiYkljb25OYW1lTWl4aW4oU2JiUmVhZG9ubHlNaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi10b2FzdCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoIG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGF1dG9tYXRpY2FsbHkgZGlzbWlzc2luZyB0aGUgdG9hc3QuXG4gICAqIElmIDAgKGRlZmF1bHQpLCBpdCBzdGF5cyBvcGVuIGluZGVmaW5pdGVseS5cbiAgICogRnJvbSBhY2Nlc3NpYmlsaXR5IHBlcnNwZWN0aXZlLCBpdCBpcyByZWNvbW1lbmRlZCB0byBzZXQgYSB0aW1lb3V0IG9mIGF0IGxlYXN0IDIwIHNlY29uZHMuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB0aW1lb3V0OiBudW1iZXIgPSAwO1xuXG4gIC8qKiBUaGUgcG9zaXRpb24gd2hlcmUgdG8gcGxhY2UgdGhlIHRvYXN0LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBwb3NpdGlvbjogU2JiVG9hc3RQb3NpdGlvbiA9ICdib3R0b20tY2VudGVyJztcblxuICAvKipcbiAgICogVGhlIEFSSUEgcG9saXRlbmVzcyBsZXZlbC5cbiAgICogQ2hlY2sgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL0FSSUFfTGl2ZV9SZWdpb25zI2xpdmVfcmVnaW9ucyBmb3IgZnVydGhlciBpbmZvXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgcG9saXRlbmVzczogJ3BvbGl0ZScgfCAnYXNzZXJ0aXZlJyB8ICdvZmYnID0gJ3BvbGl0ZSc7XG5cbiAgcHJpdmF0ZSBfY2xvc2VUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfZGFya01vZGVDb250cm9sbGVyID0gbmV3IFNiYkRhcmtNb2RlQ29udHJvbGxlcih0aGlzLCAoKSA9PiB7XG4gICAgdGhpcy5fc3luY1Nsb3R0ZWRFbGVtZW50cygpO1xuICAgIHRoaXMucmVxdWVzdFVwZGF0ZSgpO1xuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZSkgPT4gdGhpcy5fb25DbGljayhlKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIC8vIEFkZCB0aGlzIHRvYXN0IHRvIHRoZSBnbG9iYWwgY29sbGVjdGlvblxuICAgIHRvYXN0UmVmcy5hZGQodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcblxuICAgIC8vIFJlbW92ZSB0aGlzIGluc3RhbmNlXG4gICAgdG9hc3RSZWZzLmRlbGV0ZSh0aGlzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncG9saXRlbmVzcycpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5hcmlhTGl2ZSA9IHRoaXMucG9saXRlbmVzcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgdG9hc3QuXG4gICAqIElmIHRoZXJlIGFyZSBvdGhlciBvcGVuZWQgdG9hc3RzIGluIHRoZSBwYWdlLCBjbG9zZSB0aGVtIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvc2VPdGhlclRvYXN0cygpO1xuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgb3BlbmVkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgdG9hc3QuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdjbG9zZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aGlzLl9jbG9zZVRpbWVvdXQpO1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG5cbiAgICAvLyBTdGFydCB0aGUgY291bnRkb3duIHRvIGNsb3NlIGl0XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3NiYi1kZXNpZ24tc3lzdGVtcy9seW5lLWFuZ3VsYXIvaXNzdWVzLzE5MFxuICAgICAgLy8gSWYgem9uZS5qcyBpcyBsb2FkZWQsIHNldFRpbWVvdXQgaXMgd3JhcHBlZCBhbmQgdHJhY2tlZCB3aGljaCB3aWxsIG1hcmtcbiAgICAgIC8vIGFueXRoaW5nIGluIEFuZ3VsYXIgYXMgdW5zdGFibGUgYXMgbG9uZyBhcyBzZXRUaW1lb3V0IGlzIG5vdCBmaW5pc2hlZC5cbiAgICAgIC8vIFRoaXMgb25seSBuZWVkcyB0byBiZSBmaXhlZCBpbiBwbGFjZXMgd2hlcmUgd2UgYWN0dWFsbHkgd2FudCB0byB3YWl0IGFcbiAgICAgIC8vIHNwZWNpZmljIGFtb3VudCBvZiB0aW1lIHdpdGhvdXQgYW4gaW50ZXJhY3Rpb24gKGUuZy4gZm9yIHRoaXMgY2FzZSkuXG4gICAgICBjb25zdCBnbG9iYWwgPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgICAgIGNvbnN0IHNldFRpbWVvdXQ6IHR5cGVvZiBnbG9iYWxUaGlzLnNldFRpbWVvdXQgPVxuICAgICAgICBnbG9iYWxbZ2xvYmFsLlpvbmU/Ll9fc3ltYm9sX18/Lignc2V0VGltZW91dCcpIGFzIHN0cmluZ10gPz8gZ2xvYmFsLnNldFRpbWVvdXQ7XG5cbiAgICAgIHRoaXMuX2Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLnRpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENsb3NlIHRoZSB0b2FzdCBvbiBjbGljayBvZiBhbnkgZWxlbWVudCB0aGF0IGhhcyB0aGUgJ3NiYi10b2FzdC1jbG9zZScgYXR0cmlidXRlLlxuICBwcml2YXRlIF9vbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNsb3NlRWxlbWVudCA9IGNvbXBvc2VkUGF0aEhhc0F0dHJpYnV0ZShldmVudCwgJ3NiYi10b2FzdC1jbG9zZScsIHRoaXMpO1xuXG4gICAgaWYgKGNsb3NlRWxlbWVudCAmJiAhY2xvc2VFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItdG9hc3QtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogU2xvdHRlZCB0ZXh0IG5vZGVzIGFyZSBub3QgcmVhZCBjb3JyZWN0bHkgYnkgc2NyZWVuIHJlYWRlcnMgb24gQ2hyb21lLlxuICAgKiBUbyBhZGRyZXNzIHRoZSBwcm9ibGVtLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBhIHJvb3QgdGV4dCBub2RlLFxuICAgKiB3ZSB3cmFwIHRoZSB3aG9sZSBjb250ZW50IGluIGEgPHNwYW4+IHRhZ1xuICAgKi9cbiAgcHJpdmF0ZSBfb25Db250ZW50U2xvdENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzbG90Tm9kZXMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWROb2RlcygpO1xuXG4gICAgaWYgKHNsb3ROb2Rlcy5zb21lKChlbCkgPT4gZWwubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSkge1xuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHRoaXMucHJlcGVuZChzcGFuKTtcbiAgICAgIHNwYW4uYXBwZW5kKC4uLnNsb3ROb2Rlcyk7XG4gICAgfVxuICAgIHRoaXMuX3N5bmNTbG90dGVkRWxlbWVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNTbG90dGVkRWxlbWVudHMoKTogdm9pZCB7XG4gICAgLy8gRm9yY2UgdGhlIHZpc3VhbCBzdGF0ZSBvbiBzbG90dGVkIGJ1dHRvbnNcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw8U2JiVHJhbnNwYXJlbnRCdXR0b25FbGVtZW50IHwgU2JiVHJhbnNwYXJlbnRCdXR0b25MaW5rRWxlbWVudD4oXG4gICAgICAnc2JiLXRyYW5zcGFyZW50LWJ1dHRvbiwgc2JiLXRyYW5zcGFyZW50LWJ1dHRvbi1saW5rJyxcbiAgICApLmZvckVhY2goKGJ0bikgPT4ge1xuICAgICAgYnRuLm5lZ2F0aXZlID0gdGhpcy5faXNMaWdodE1vZGUoKTtcbiAgICAgIGJ0bi5zaXplID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG4gICAgfSk7XG5cbiAgICAvLyBGb3JjZSBuZWdhdGl2ZSBvbiBzbG90dGVkIGxpbmtzXG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPFNiYkxpbmtFbGVtZW50IHwgU2JiTGlua0J1dHRvbkVsZW1lbnQgfCBTYmJMaW5rU3RhdGljRWxlbWVudD4oXG4gICAgICAnc2JiLWxpbmssIHNiYi1saW5rLWJ1dHRvbiwgc2JiLWxpbmstc3RhdGljJyxcbiAgICApLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIGxpbmsubmVnYXRpdmUgPSB0aGlzLl9pc0xpZ2h0TW9kZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcml2YXRlIF9vblRvYXN0QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIC8vIE9uIHRvYXN0IG9wZW5lZFxuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaW5jZSB3ZSBkbyBub3Qgc3RhY2sgdG9hc3RzLCB3ZSBmb3JjZSB0aGUgY2xvc2luZyBvbiBvdGhlciBleGlzdGluZyBvcGVuZWQgb25lc1xuICAgKi9cbiAgcHJpdmF0ZSBfY2xvc2VPdGhlclRvYXN0cygpOiB2b2lkIHtcbiAgICB0b2FzdFJlZnMuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgaWYgKHQuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHQuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgICB0LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pc0xpZ2h0TW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX2RhcmtNb2RlQ29udHJvbGxlci5tYXRjaGVzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdG9hc3RfX292ZXJsYXktY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdG9hc3RcIiBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25Ub2FzdEFuaW1hdGlvbkVuZH0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10b2FzdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAke3RoaXMucmVuZGVySWNvblNsb3QoKX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdG9hc3RfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vbkNvbnRlbnRTbG90Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25cIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNTbG90dGVkRWxlbWVudHN9Pjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXRvYXN0X19jbG9zZVwiPlxuICAgICAgICAgICAgPHNiYi1kaXZpZGVyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRvYXN0X19jbG9zZS1kaXZpZGVyXCJcbiAgICAgICAgICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMuX2lzTGlnaHRNb2RlKCl9XG4gICAgICAgICAgICA+PC9zYmItZGl2aWRlcj5cbiAgICAgICAgICAgICR7IXRoaXMucmVhZE9ubHlcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10b2FzdF9fY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMuX2lzTGlnaHRNb2RlKCl9XG4gICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7aTE4bkNsb3NlQWxlcnRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgICAgICAgICBzYmItdG9hc3QtY2xvc2VcbiAgICAgICAgICAgICAgICA+PC9zYmItdHJhbnNwYXJlbnQtYnV0dG9uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b2FzdCc6IFNiYlRvYXN0RWxlbWVudDtcbiAgfVxufVxuIl0sIm1h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
|
package/development/toast.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SbbToastElement } from "./toast.component-
|
|
1
|
+
import { t as SbbToastElement } from "./toast.component-Cuvs3VnH.js";
|
|
2
2
|
export { SbbToastElement };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../../form-field.component-
|
|
1
|
+
import { n as e, t } from "../../form-field.component-Bqw-VgJF.js";
|
|
2
2
|
export { t as SbbFormFieldControlEvent, e as SbbFormFieldElement };
|
package/form-field/form-field.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as e, t } from "../form-field.component-
|
|
1
|
+
import { n as e, t } from "../form-field.component-Bqw-VgJF.js";
|
|
2
2
|
e.define(), console.warn("The entrypoint '@sbb-esta/elements/form-field/form-field.js' has been deprecated.\nUse either '@sbb-esta/elements/form-field.js' or '@sbb-esta/elements/form-field.pure.js' instead.");
|
|
3
3
|
//#endregion
|
|
4
4
|
export { t as SbbFormFieldControlEvent, e as SbbFormFieldElement };
|
|
@@ -328,7 +328,8 @@ var g = "@charset \"UTF-8\";:host{--sbb-form-field-hint-divider-width: var(--sbb
|
|
|
328
328
|
return e.composedPath().some((e) => e instanceof window.HTMLElement && (e.getAttribute("tabindex") === "0" || e.hasAttribute("contenteditable")) || this._excludedFocusElements.includes(e.localName));
|
|
329
329
|
}
|
|
330
330
|
_onSlotLabelChange() {
|
|
331
|
-
|
|
331
|
+
let e = Array.from(this.querySelectorAll("label"));
|
|
332
|
+
this._label = e[0], this._syncLabelInputReferences();
|
|
332
333
|
}
|
|
333
334
|
_onSlotInputChange() {
|
|
334
335
|
this._assignSlots(), this._connectInputElement();
|
package/form-field.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./error.component-B_D8WUP5.js";
|
|
2
|
-
import { n as t, t as n } from "./form-field.component-
|
|
2
|
+
import { n as t, t as n } from "./form-field.component-Bqw-VgJF.js";
|
|
3
3
|
import { SbbFormFieldClearElement as r } from "./form-field/form-field-clear/form-field-clear.component.js";
|
|
4
4
|
import { SbbFormFieldTextCounterElement as i } from "./form-field/form-field-text-counter/form-field-text-counter.component.js";
|
|
5
5
|
import { t as a } from "./hint.component-BVUUrSSu.js";
|
package/form-field.pure.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./error.component-B_D8WUP5.js";
|
|
2
|
-
import { n as t, t as n } from "./form-field.component-
|
|
2
|
+
import { n as t, t as n } from "./form-field.component-Bqw-VgJF.js";
|
|
3
3
|
import { SbbFormFieldClearElement as r } from "./form-field/form-field-clear/form-field-clear.component.js";
|
|
4
4
|
import { SbbFormFieldTextCounterElement as i } from "./form-field/form-field-text-counter/form-field-text-counter.component.js";
|
|
5
5
|
import { t as a } from "./hint.component-BVUUrSSu.js";
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements-dev",
|
|
3
|
-
"version": "4.11.0-dev.
|
|
3
|
+
"version": "4.11.0-dev.1776682882",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
7
7
|
"web components",
|
|
8
8
|
"lit",
|
|
9
|
-
"https://github.com/sbb-design-systems/lyne-components/commit/
|
|
9
|
+
"https://github.com/sbb-design-systems/lyne-components/commit/4c07d152b59712c431abf4ba869dff6059b51513"
|
|
10
10
|
],
|
|
11
11
|
"type": "module",
|
|
12
12
|
"exports": {
|
package/toast/toast.component.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../toast.component-
|
|
1
|
+
import { t as e } from "../toast.component-CkNywQOZ.js";
|
|
2
2
|
export { e as SbbToastElement };
|
|
@@ -120,8 +120,8 @@ var y = /* @__PURE__ */ new Set(), b = (() => {
|
|
|
120
120
|
}
|
|
121
121
|
_handleOpening() {
|
|
122
122
|
if (this.state = "opened", this.dispatchOpenEvent(), this.timeout) {
|
|
123
|
-
let e = globalThis;
|
|
124
|
-
this._closeTimeout = (
|
|
123
|
+
let e = globalThis, t = e[e.Zone?.__symbol__?.("setTimeout")] ?? e.setTimeout;
|
|
124
|
+
this._closeTimeout = t(() => this.close(), this.timeout);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
_onClick(e) {
|
package/toast.js
CHANGED
package/toast.pure.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./toast.component-
|
|
1
|
+
import { t as e } from "./toast.component-CkNywQOZ.js";
|
|
2
2
|
export { e as SbbToastElement };
|