uikit 3.16.14 → 3.16.15-dev.2cfa865fb
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/CHANGELOG.md +7 -1
- package/build/build.js +1 -1
- package/build/icons.js +1 -1
- package/build/less.js +1 -1
- package/build/prefix.js +1 -1
- package/build/release.js +1 -1
- package/build/scope.js +1 -1
- package/build/scss.js +1 -1
- package/build/util.js +1 -1
- package/dist/css/uikit-core-rtl.css +1 -1
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +1 -1
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +1 -1
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +1 -1
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +1 -1
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +1 -1
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +1 -1
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1 -1
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +1 -1
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +1 -1
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +1 -1
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +1 -1
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +1 -1
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +1 -1
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +1 -1
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +1 -1
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +3 -3
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +1 -1
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +10 -44
- package/dist/js/uikit.min.js +1 -9517
- package/package.json +3 -3
- package/src/js/core/drop.js +1 -1
package/dist/js/uikit.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! UIkit 3.16.
|
|
1
|
+
/*! UIkit 3.16.15-dev.2cfa865fb | https://www.getuikit.com | (c) 2014 - 2023 YOOtheme | MIT License */
|
|
2
2
|
|
|
3
3
|
(function (global, factory) {
|
|
4
4
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -2158,7 +2158,7 @@
|
|
|
2158
2158
|
};
|
|
2159
2159
|
App.util = util;
|
|
2160
2160
|
App.options = {};
|
|
2161
|
-
App.version = "3.16.
|
|
2161
|
+
App.version = "3.16.15-dev.2cfa865fb";
|
|
2162
2162
|
|
|
2163
2163
|
const PREFIX = "uk-";
|
|
2164
2164
|
const DATA = "__uikit__";
|
|
@@ -3449,7 +3449,7 @@
|
|
|
3449
3449
|
) : Math.min(
|
|
3450
3450
|
offset(this.boundary[i])[end],
|
|
3451
3451
|
viewports[i][end] - viewportOffset
|
|
3452
|
-
) - targetOffset[end]) - positionOffset,
|
|
3452
|
+
) - targetOffset[this.inset ? start : end]) - positionOffset,
|
|
3453
3453
|
[`overflow-${axis}`]: "auto"
|
|
3454
3454
|
});
|
|
3455
3455
|
this.positionAt(this.$el, this.target, this.boundary);
|
|
@@ -4950,9 +4950,7 @@
|
|
|
4950
4950
|
function install$2({ modal }) {
|
|
4951
4951
|
modal.dialog = function(content, options) {
|
|
4952
4952
|
const dialog = modal(
|
|
4953
|
-
`<div class="uk-modal">
|
|
4954
|
-
<div class="uk-modal-dialog">${content}</div>
|
|
4955
|
-
</div>`,
|
|
4953
|
+
`<div class="uk-modal"> <div class="uk-modal-dialog">${content}</div> </div>`,
|
|
4956
4954
|
options
|
|
4957
4955
|
);
|
|
4958
4956
|
dialog.show();
|
|
@@ -4969,39 +4967,21 @@
|
|
|
4969
4967
|
};
|
|
4970
4968
|
modal.alert = function(message, options) {
|
|
4971
4969
|
return openDialog(
|
|
4972
|
-
({ i18n }) => `<div class="uk-modal-body">${isString(message) ? message : html(message)}</div>
|
|
4973
|
-
<div class="uk-modal-footer uk-text-right">
|
|
4974
|
-
<button class="uk-button uk-button-primary uk-modal-close" autofocus>${i18n.ok}</button>
|
|
4975
|
-
</div>`,
|
|
4970
|
+
({ i18n }) => `<div class="uk-modal-body">${isString(message) ? message : html(message)}</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-primary uk-modal-close" autofocus>${i18n.ok}</button> </div>`,
|
|
4976
4971
|
options,
|
|
4977
4972
|
(deferred) => deferred.resolve()
|
|
4978
4973
|
);
|
|
4979
4974
|
};
|
|
4980
4975
|
modal.confirm = function(message, options) {
|
|
4981
4976
|
return openDialog(
|
|
4982
|
-
({ i18n }) => `<form>
|
|
4983
|
-
<div class="uk-modal-body">${isString(message) ? message : html(message)}</div>
|
|
4984
|
-
<div class="uk-modal-footer uk-text-right">
|
|
4985
|
-
<button class="uk-button uk-button-default uk-modal-close" type="button">${i18n.cancel}</button>
|
|
4986
|
-
<button class="uk-button uk-button-primary" autofocus>${i18n.ok}</button>
|
|
4987
|
-
</div>
|
|
4988
|
-
</form>`,
|
|
4977
|
+
({ i18n }) => `<form> <div class="uk-modal-body">${isString(message) ? message : html(message)}</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">${i18n.cancel}</button> <button class="uk-button uk-button-primary" autofocus>${i18n.ok}</button> </div> </form>`,
|
|
4989
4978
|
options,
|
|
4990
4979
|
(deferred) => deferred.reject()
|
|
4991
4980
|
);
|
|
4992
4981
|
};
|
|
4993
4982
|
modal.prompt = function(message, value, options) {
|
|
4994
4983
|
return openDialog(
|
|
4995
|
-
({ i18n }) => `<form class="uk-form-stacked">
|
|
4996
|
-
<div class="uk-modal-body">
|
|
4997
|
-
<label>${isString(message) ? message : html(message)}</label>
|
|
4998
|
-
<input class="uk-input" value="${value || ""}" autofocus>
|
|
4999
|
-
</div>
|
|
5000
|
-
<div class="uk-modal-footer uk-text-right">
|
|
5001
|
-
<button class="uk-button uk-button-default uk-modal-close" type="button">${i18n.cancel}</button>
|
|
5002
|
-
<button class="uk-button uk-button-primary">${i18n.ok}</button>
|
|
5003
|
-
</div>
|
|
5004
|
-
</form>`,
|
|
4984
|
+
({ i18n }) => `<form class="uk-form-stacked"> <div class="uk-modal-body"> <label>${isString(message) ? message : html(message)}</label> <input class="uk-input" value="${value || ""}" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">${i18n.cancel}</button> <button class="uk-button uk-button-primary">${i18n.ok}</button> </div> </form>`,
|
|
5005
4985
|
options,
|
|
5006
4986
|
(deferred) => deferred.resolve(null),
|
|
5007
4987
|
(dialog) => $("input", dialog.$el).value
|
|
@@ -7512,15 +7492,7 @@
|
|
|
7512
7492
|
pauseOnHover: false,
|
|
7513
7493
|
velocity: 2,
|
|
7514
7494
|
Animations: Animations$1,
|
|
7515
|
-
template: `<div class="uk-lightbox uk-overflow-hidden">
|
|
7516
|
-
<ul class="uk-lightbox-items"></ul>
|
|
7517
|
-
<div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque">
|
|
7518
|
-
<button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button>
|
|
7519
|
-
</div>
|
|
7520
|
-
<a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href uk-slidenav-previous uk-lightbox-item="previous"></a>
|
|
7521
|
-
<a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href uk-slidenav-next uk-lightbox-item="next"></a>
|
|
7522
|
-
<div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div>
|
|
7523
|
-
</div>`
|
|
7495
|
+
template: `<div class="uk-lightbox uk-overflow-hidden"> <ul class="uk-lightbox-items"></ul> <div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque"> <button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button> </div> <a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href uk-slidenav-previous uk-lightbox-item="previous"></a> <a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href uk-slidenav-next uk-lightbox-item="next"></a> <div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div> </div>`
|
|
7524
7496
|
}),
|
|
7525
7497
|
created() {
|
|
7526
7498
|
const $el = $(this.template);
|
|
@@ -7839,10 +7811,7 @@
|
|
|
7839
7811
|
this.$mount(
|
|
7840
7812
|
append(
|
|
7841
7813
|
container,
|
|
7842
|
-
`<div class="${this.clsMsg}${this.status ? ` ${this.clsMsg}-${this.status}` : ""}" role="alert">
|
|
7843
|
-
<a href class="${this.clsClose}" data-uk-close></a>
|
|
7844
|
-
<div>${this.message}</div>
|
|
7845
|
-
</div>`
|
|
7814
|
+
`<div class="${this.clsMsg}${this.status ? ` ${this.clsMsg}-${this.status}` : ""}" role="alert"> <a href class="${this.clsClose}" data-uk-close></a> <div>${this.message}</div> </div>`
|
|
7846
7815
|
)
|
|
7847
7816
|
);
|
|
7848
7817
|
},
|
|
@@ -9211,9 +9180,7 @@
|
|
|
9211
9180
|
_show() {
|
|
9212
9181
|
this.tooltip = append(
|
|
9213
9182
|
this.container,
|
|
9214
|
-
`<div id="${this.id}" class="uk-${this.$options.name}" role="tooltip">
|
|
9215
|
-
<div class="uk-${this.$options.name}-inner">${this.title}</div>
|
|
9216
|
-
</div>`
|
|
9183
|
+
`<div id="${this.id}" class="uk-${this.$options.name}" role="tooltip"> <div class="uk-${this.$options.name}-inner">${this.title}</div> </div>`
|
|
9217
9184
|
);
|
|
9218
9185
|
on(this.tooltip, "toggled", (e, toggled) => {
|
|
9219
9186
|
if (!toggled) {
|
|
@@ -9514,4 +9481,3 @@
|
|
|
9514
9481
|
return App;
|
|
9515
9482
|
|
|
9516
9483
|
}));
|
|
9517
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlraXQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qcy91dGlsL2xhbmcuanMiLCIuLi8uLi9zcmMvanMvdXRpbC9hdHRyLmpzIiwiLi4vLi4vc3JjL2pzL3V0aWwvZmlsdGVyLmpzIiwiLi4vLi4vc3JjL2pzL3V0aWwvc2VsZWN0b3IuanMiLCIuLi8uLi9zcmMvanMvdXRpbC9ldmVudC5qcyIsIi4uLy4uL3NyYy9qcy91dGlsL3N0eWxlLmpzIiwiLi4vLi4vc3JjL2pzL3V0aWwvY2xhc3MuanMiLCIuLi8uLi9zcmMvanMvdXRpbC9hbmltYXRpb24uanMiLCIuLi8uLi9zcmMvanMvdXRpbC9kb20uanMiLCIuLi8uLi9zcmMvanMvdXRpbC9kaW1lbnNpb25zLmpzIiwiLi4vLi4vc3JjL2pzL3V0aWwvZW52LmpzIiwiLi4vLi4vc3JjL2pzL3V0aWwvZmFzdGRvbS5qcyIsIi4uLy4uL3NyYy9qcy91dGlsL21vdXNlLmpzIiwiLi4vLi4vc3JjL2pzL3V0aWwvb2JzZXJ2ZXIuanMiLCIuLi8uLi9zcmMvanMvdXRpbC9wbGF5ZXIuanMiLCIuLi8uLi9zcmMvanMvdXRpbC92aWV3cG9ydC5qcyIsIi4uLy4uL3NyYy9qcy91dGlsL3Bvc2l0aW9uLmpzIiwiLi4vLi4vc3JjL2pzL2FwaS93YXRjaC5qcyIsIi4uLy4uL3NyYy9qcy9hcGkvdXBkYXRlLmpzIiwiLi4vLi4vc3JjL2pzL2FwaS9jb21wdXRlZC5qcyIsIi4uLy4uL3NyYy9qcy9hcGkvZXZlbnRzLmpzIiwiLi4vLi4vc3JjL2pzL2FwaS9vYnNlcnZlci5qcyIsIi4uLy4uL3NyYy9qcy9hcGkvb3B0aW9ucy5qcyIsIi4uLy4uL3NyYy9qcy9hcGkvcHJvcHMuanMiLCIuLi8uLi9zcmMvanMvYXBpL2hvb2tzLmpzIiwiLi4vLi4vc3JjL2pzL2FwaS9zdGF0ZS5qcyIsIi4uLy4uL3NyYy9qcy9hcGkvYXBwLmpzIiwiLi4vLi4vc3JjL2pzL2FwaS9jb21wb25lbnQuanMiLCIuLi8uLi9zcmMvanMvYXBpL2dsb2JhbC5qcyIsIi4uLy4uL3NyYy9qcy9hcGkvaW5zdGFuY2UuanMiLCIuLi8uLi9zcmMvanMvYXBpL2luZGV4LmpzIiwiLi4vLi4vc3JjL2pzL2FwaS9ib290LmpzIiwiLi4vLi4vc3JjL2pzL21peGluL2NsYXNzLmpzIiwiLi4vLi4vc3JjL2pzL21peGluL3RvZ2dsYWJsZS5qcyIsIi4uLy4uL3NyYy9qcy91dGlsL2tleXMuanMiLCIuLi8uLi9zcmMvanMvYXBpL29ic2VydmFibGVzLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvYWNjb3JkaW9uLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvYWxlcnQuanMiLCIuLi8uLi9zcmMvanMvY29yZS92aWRlby5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL2NvdmVyLmpzIiwiLi4vLi4vc3JjL2pzL21peGluL3Bvc2l0aW9uLmpzIiwiLi4vLi4vc3JjL2pzL21peGluL2NvbnRhaW5lci5qcyIsIi4uLy4uL3NyYy9qcy9taXhpbi9pbnRlcm5hbC9zY3JvbGwuanMiLCIuLi8uLi9zcmMvanMvY29yZS9kcm9wLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvZHJvcG5hdi5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL2Zvcm0tY3VzdG9tLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvbWFyZ2luLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvZ3JpZC5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL2hlaWdodC1tYXRjaC5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL2hlaWdodC12aWV3cG9ydC5qcyIsIi4uLy4uL3NyYy9qcy9taXhpbi9zdmcuanMiLCIuLi8uLi9zcmMvanMvbWl4aW4vaTE4bi5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL2ljb24uanMiLCIuLi8uLi9zcmMvanMvY29yZS9pbWcuanMiLCIuLi8uLi9zcmMvanMvbWl4aW4vbWVkaWEuanMiLCIuLi8uLi9zcmMvanMvY29yZS9sZWFkZXIuanMiLCIuLi8uLi9zcmMvanMvbWl4aW4vbW9kYWwuanMiLCIuLi8uLi9zcmMvanMvY29yZS9tb2RhbC5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL25hdi5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL25hdmJhci5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL29mZmNhbnZhcy5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL292ZXJmbG93LWF1dG8uanMiLCIuLi8uLi9zcmMvanMvY29yZS9yZXNwb25zaXZlLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvc2Nyb2xsLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvc2Nyb2xsc3B5LmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvc2Nyb2xsc3B5LW5hdi5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL3N0aWNreS5qcyIsIi4uLy4uL3NyYy9qcy91dGlsL3N2Zy5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL3N2Zy5qcyIsIi4uLy4uL3NyYy9qcy9jb3JlL3N3aXRjaGVyLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvdGFiLmpzIiwiLi4vLi4vc3JjL2pzL2NvcmUvdG9nZ2xlLmpzIiwiLi4vLi4vc3JjL2pzL3Vpa2l0LWNvcmUuanMiLCIuLi8uLi9zcmMvanMvY29tcG9uZW50cy9jb3VudGRvd24uanMiLCIuLi8uLi9zcmMvanMvbWl4aW4vaW50ZXJuYWwvYW5pbWF0ZS1mYWRlLmpzIiwiLi4vLi4vc3JjL2pzL21peGluL2ludGVybmFsL2FuaW1hdGUtc2xpZGUuanMiLCIuLi8uLi9zcmMvanMvbWl4aW4vYW5pbWF0ZS5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL2ZpbHRlci5qcyIsIi4uLy4uL3NyYy9qcy9taXhpbi9pbnRlcm5hbC9zbGlkZXNob3ctYW5pbWF0aW9ucy5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL2ludGVybmFsL2xpZ2h0Ym94LWFuaW1hdGlvbnMuanMiLCIuLi8uLi9zcmMvanMvbWl4aW4vaW50ZXJuYWwvc2xpZGVzaG93LXRyYW5zaXRpb25lci5qcyIsIi4uLy4uL3NyYy9qcy9taXhpbi9zbGlkZXItbmF2LmpzIiwiLi4vLi4vc3JjL2pzL21peGluL3NsaWRlci1kcmFnLmpzIiwiLi4vLi4vc3JjL2pzL21peGluL3NsaWRlci1hdXRvcGxheS5qcyIsIi4uLy4uL3NyYy9qcy9taXhpbi9zbGlkZXIuanMiLCIuLi8uLi9zcmMvanMvbWl4aW4vc2xpZGVzaG93LmpzIiwiLi4vLi4vc3JjL2pzL2NvbXBvbmVudHMvbGlnaHRib3gtcGFuZWwuanMiLCIuLi8uLi9zcmMvanMvY29tcG9uZW50cy9saWdodGJveC5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL25vdGlmaWNhdGlvbi5qcyIsIi4uLy4uL3NyYy9qcy9taXhpbi9wYXJhbGxheC5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL3BhcmFsbGF4LmpzIiwiLi4vLi4vc3JjL2pzL21peGluL3NsaWRlci1yZWFjdGl2ZS5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL2ludGVybmFsL3NsaWRlci1wcmVsb2FkLmpzIiwiLi4vLi4vc3JjL2pzL2NvbXBvbmVudHMvaW50ZXJuYWwvc2xpZGVyLXRyYW5zaXRpb25lci5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL3NsaWRlci5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL3NsaWRlci1wYXJhbGxheC5qcyIsIi4uLy4uL3NyYy9qcy9jb21wb25lbnRzL2ludGVybmFsL3NsaWRlc2hvdy1hbmltYXRpb25zLmpzIiwiLi4vLi4vc3JjL2pzL2NvbXBvbmVudHMvc2xpZGVzaG93LmpzIiwiLi4vLi4vc3JjL2pzL2NvbXBvbmVudHMvc29ydGFibGUuanMiLCIuLi8uLi9zcmMvanMvY29tcG9uZW50cy90b29sdGlwLmpzIiwiLi4vLi4vc3JjL2pzL2NvbXBvbmVudHMvdXBsb2FkLmpzIiwiLi4vLi4vc3JjL2pzL3Vpa2l0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgaGFzT3duUHJvcGVydHksIHRvU3RyaW5nIH0gPSBPYmplY3QucHJvdG90eXBlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xufVxuXG5jb25zdCBoeXBoZW5hdGVSZSA9IC9cXEIoW0EtWl0pL2c7XG5cbmV4cG9ydCBjb25zdCBoeXBoZW5hdGUgPSBtZW1vaXplKChzdHIpID0+IHN0ci5yZXBsYWNlKGh5cGhlbmF0ZVJlLCAnLSQxJykudG9Mb3dlckNhc2UoKSk7XG5cbmNvbnN0IGNhbWVsaXplUmUgPSAvLShcXHcpL2c7XG5cbmV4cG9ydCBjb25zdCBjYW1lbGl6ZSA9IG1lbW9pemUoKHN0cikgPT5cbiAgICAoc3RyLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpKS5yZXBsYWNlKGNhbWVsaXplUmUsIChfLCBjKSA9PiBjLnRvVXBwZXJDYXNlKCkpXG4pO1xuXG5leHBvcnQgY29uc3QgdWNmaXJzdCA9IG1lbW9pemUoKHN0cikgPT4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBzZWFyY2gpIHtcbiAgICByZXR1cm4gc3RyPy5zdGFydHNXaXRoPy4oc2VhcmNoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc2VhcmNoKSB7XG4gICAgcmV0dXJuIHN0cj8uZW5kc1dpdGg/LihzZWFyY2gpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5jbHVkZXMob2JqLCBzZWFyY2gpIHtcbiAgICByZXR1cm4gb2JqPy5pbmNsdWRlcz8uKHNlYXJjaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHJldHVybiBhcnJheT8uZmluZEluZGV4Py4ocHJlZGljYXRlKTtcbn1cblxuZXhwb3J0IGNvbnN0IHsgaXNBcnJheSwgZnJvbTogdG9BcnJheSB9ID0gQXJyYXk7XG5leHBvcnQgY29uc3QgeyBhc3NpZ24gfSA9IE9iamVjdDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93KG9iaikge1xuICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iaiA9PT0gb2JqLndpbmRvdztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRG9jdW1lbnQob2JqKSB7XG4gICAgcmV0dXJuIG5vZGVUeXBlKG9iaikgPT09IDk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUob2JqKSB7XG4gICAgcmV0dXJuIG5vZGVUeXBlKG9iaikgPj0gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudChvYmopIHtcbiAgICByZXR1cm4gbm9kZVR5cGUob2JqKSA9PT0gMTtcbn1cblxuZnVuY3Rpb24gbm9kZVR5cGUob2JqKSB7XG4gICAgcmV0dXJuICFpc1dpbmRvdyhvYmopICYmIGlzT2JqZWN0KG9iaikgJiYgb2JqLm5vZGVUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWModmFsdWUpIHtcbiAgICByZXR1cm4gaXNOdW1iZXIodmFsdWUpIHx8IChpc1N0cmluZyh2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gICAgcmV0dXJuICEoaXNBcnJheShvYmopID8gb2JqLmxlbmd0aCA6IGlzT2JqZWN0KG9iaikgPyBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA6IGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0Jvb2xlYW4odmFsdWUpIHtcbiAgICByZXR1cm4gaXNCb29sZWFuKHZhbHVlKVxuICAgICAgICA/IHZhbHVlXG4gICAgICAgIDogdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAnJ1xuICAgICAgICA/IHRydWVcbiAgICAgICAgOiB2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJzAnXG4gICAgICAgID8gZmFsc2VcbiAgICAgICAgOiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICByZXR1cm4gaXNOYU4obnVtYmVyKSA/IGZhbHNlIDogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9GbG9hdCh2YWx1ZSkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Ob2RlKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KVswXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTm9kZXMoZWxlbWVudCkge1xuICAgIHJldHVybiBpc05vZGUoZWxlbWVudCkgPyBbZWxlbWVudF0gOiBBcnJheS5mcm9tKGVsZW1lbnQgfHwgW10pLmZpbHRlcihpc05vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9XaW5kb3coZWxlbWVudCkge1xuICAgIGlmIChpc1dpbmRvdyhlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG5cbiAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgIGNvbnN0IGRvY3VtZW50ID0gaXNEb2N1bWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50Py5vd25lckRvY3VtZW50O1xuXG4gICAgcmV0dXJuIGRvY3VtZW50Py5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICAgIHJldHVybiAoXG4gICAgICAgIHZhbHVlID09PSBvdGhlciB8fFxuICAgICAgICAoaXNPYmplY3QodmFsdWUpICYmXG4gICAgICAgICAgICBpc09iamVjdChvdGhlcikgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IE9iamVjdC5rZXlzKG90aGVyKS5sZW5ndGggJiZcbiAgICAgICAgICAgIGVhY2godmFsdWUsICh2YWwsIGtleSkgPT4gdmFsID09PSBvdGhlcltrZXldKSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3dhcCh2YWx1ZSwgYSwgYikge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7YX18JHtifWAsICdnJyksIChtYXRjaCkgPT4gKG1hdGNoID09PSBhID8gYiA6IGEpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhc3QoYXJyYXkpIHtcbiAgICByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKG9iaiwgY2IpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKGZhbHNlID09PSBjYihvYmpba2V5XSwga2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydEJ5KGFycmF5LCBwcm9wKSB7XG4gICAgcmV0dXJuIGFycmF5XG4gICAgICAgIC5zbGljZSgpXG4gICAgICAgIC5zb3J0KCh7IFtwcm9wXTogcHJvcEEgPSAwIH0sIHsgW3Byb3BdOiBwcm9wQiA9IDAgfSkgPT5cbiAgICAgICAgICAgIHByb3BBID4gcHJvcEIgPyAxIDogcHJvcEIgPiBwcm9wQSA/IC0xIDogMFxuICAgICAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgcmV0dXJuIGFycmF5LnJlZHVjZShcbiAgICAgICAgKHN1bSwgaXRlbSkgPT4gc3VtICsgdG9GbG9hdChpc0Z1bmN0aW9uKGl0ZXJhdGVlKSA/IGl0ZXJhdGVlKGl0ZW0pIDogaXRlbVtpdGVyYXRlZV0pLFxuICAgICAgICAwXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZUJ5KGFycmF5LCBwcm9wKSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKTtcbiAgICByZXR1cm4gYXJyYXkuZmlsdGVyKCh7IFtwcm9wXTogY2hlY2sgfSkgPT4gKHNlZW4uaGFzKGNoZWNrKSA/IGZhbHNlIDogc2Vlbi5hZGQoY2hlY2spKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrKG9iaiwgcHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMucmVkdWNlKChyZXMsIHByb3ApID0+ICh7IC4uLnJlcywgW3Byb3BdOiBvYmpbcHJvcF0gfSksIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbWluID0gMCwgbWF4ID0gMSkge1xuICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh0b051bWJlcihudW1iZXIpIHx8IDAsIG1pbiksIG1heCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge31cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVyc2VjdFJlY3QoLi4ucmVjdHMpIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBbJ2JvdHRvbScsICd0b3AnXSxcbiAgICAgICAgWydyaWdodCcsICdsZWZ0J10sXG4gICAgXS5ldmVyeShcbiAgICAgICAgKFttaW5Qcm9wLCBtYXhQcm9wXSkgPT5cbiAgICAgICAgICAgIE1hdGgubWluKC4uLnJlY3RzLm1hcCgoeyBbbWluUHJvcF06IG1pbiB9KSA9PiBtaW4pKSAtXG4gICAgICAgICAgICAgICAgTWF0aC5tYXgoLi4ucmVjdHMubWFwKCh7IFttYXhQcm9wXTogbWF4IH0pID0+IG1heCkpID5cbiAgICAgICAgICAgIDBcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9pbnRJblJlY3QocG9pbnQsIHJlY3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBwb2ludC54IDw9IHJlY3QucmlnaHQgJiZcbiAgICAgICAgcG9pbnQueCA+PSByZWN0LmxlZnQgJiZcbiAgICAgICAgcG9pbnQueSA8PSByZWN0LmJvdHRvbSAmJlxuICAgICAgICBwb2ludC55ID49IHJlY3QudG9wXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gcmF0aW8oZGltZW5zaW9ucywgcHJvcCwgdmFsdWUpIHtcbiAgICBjb25zdCBhUHJvcCA9IHByb3AgPT09ICd3aWR0aCcgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBbYVByb3BdOiBkaW1lbnNpb25zW3Byb3BdXG4gICAgICAgICAgICA/IE1hdGgucm91bmQoKHZhbHVlICogZGltZW5zaW9uc1thUHJvcF0pIC8gZGltZW5zaW9uc1twcm9wXSlcbiAgICAgICAgICAgIDogZGltZW5zaW9uc1thUHJvcF0sXG4gICAgICAgIFtwcm9wXTogdmFsdWUsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gY29udGFpbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7XG4gICAgZGltZW5zaW9ucyA9IHsgLi4uZGltZW5zaW9ucyB9O1xuXG4gICAgZm9yIChjb25zdCBwcm9wIGluIGRpbWVuc2lvbnMpIHtcbiAgICAgICAgZGltZW5zaW9ucyA9XG4gICAgICAgICAgICBkaW1lbnNpb25zW3Byb3BdID4gbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gcmF0aW8oZGltZW5zaW9ucywgcHJvcCwgbWF4RGltZW5zaW9uc1twcm9wXSlcbiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpbWVuc2lvbnM7XG59XG5cbmZ1bmN0aW9uIGNvdmVyKGRpbWVuc2lvbnMsIG1heERpbWVuc2lvbnMpIHtcbiAgICBkaW1lbnNpb25zID0gY29udGFpbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBkaW1lbnNpb25zKSB7XG4gICAgICAgIGRpbWVuc2lvbnMgPVxuICAgICAgICAgICAgZGltZW5zaW9uc1twcm9wXSA8IG1heERpbWVuc2lvbnNbcHJvcF1cbiAgICAgICAgICAgICAgICA/IHJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zO1xuICAgIH1cblxuICAgIHJldHVybiBkaW1lbnNpb25zO1xufVxuXG5leHBvcnQgY29uc3QgRGltZW5zaW9ucyA9IHsgcmF0aW8sIGNvbnRhaW4sIGNvdmVyIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRleChpLCBlbGVtZW50cywgY3VycmVudCA9IDAsIGZpbml0ZSA9IGZhbHNlKSB7XG4gICAgZWxlbWVudHMgPSB0b05vZGVzKGVsZW1lbnRzKTtcblxuICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSBlbGVtZW50cztcblxuICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBpID0gaXNOdW1lcmljKGkpXG4gICAgICAgID8gdG9OdW1iZXIoaSlcbiAgICAgICAgOiBpID09PSAnbmV4dCdcbiAgICAgICAgPyBjdXJyZW50ICsgMVxuICAgICAgICA6IGkgPT09ICdwcmV2aW91cydcbiAgICAgICAgPyBjdXJyZW50IC0gMVxuICAgICAgICA6IGkgPT09ICdsYXN0J1xuICAgICAgICA/IGxlbmd0aCAtIDFcbiAgICAgICAgOiBlbGVtZW50cy5pbmRleE9mKHRvTm9kZShpKSk7XG5cbiAgICBpZiAoZmluaXRlKSB7XG4gICAgICAgIHJldHVybiBjbGFtcChpLCAwLCBsZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBpICU9IGxlbmd0aDtcblxuICAgIHJldHVybiBpIDwgMCA/IGkgKyBsZW5ndGggOiBpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVtb2l6ZShmbikge1xuICAgIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICByZXR1cm4gKGtleSkgPT4gY2FjaGVba2V5XSB8fCAoY2FjaGVba2V5XSA9IGZuKGtleSkpO1xufVxuXG5leHBvcnQgY2xhc3MgRGVmZXJyZWQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IGlzRnVuY3Rpb24sIGlzT2JqZWN0LCBpc1VuZGVmaW5lZCwgdG9Ob2RlLCB0b05vZGVzIH0gZnJvbSAnLi9sYW5nJztcblxuZXhwb3J0IGZ1bmN0aW9uIGF0dHIoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmFtZSkge1xuICAgICAgICAgICAgYXR0cihlbGVtZW50LCBrZXksIG5hbWVba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShlbGVtZW50KT8uZ2V0QXR0cmlidXRlKG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgZWwgb2YgdG9Ob2RlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5jYWxsKGVsLCBhdHRyKGVsLCBuYW1lKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWwsIG5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzQXR0cihlbGVtZW50LCBuYW1lKSB7XG4gICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZSgoZWxlbWVudCkgPT4gZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQXR0cihlbGVtZW50LCBuYW1lKSB7XG4gICAgdG9Ob2RlcyhlbGVtZW50KS5mb3JFYWNoKChlbGVtZW50KSA9PiBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhKGVsZW1lbnQsIGF0dHJpYnV0ZSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBbYXR0cmlidXRlLCBgZGF0YS0ke2F0dHJpYnV0ZX1gXSkge1xuICAgICAgICBpZiAoaGFzQXR0cihlbGVtZW50LCBuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIGF0dHIoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgeyBpc0VsZW1lbnQsIGlzU3RyaW5nLCBzdGFydHNXaXRoLCB0b0FycmF5LCB0b05vZGUsIHRvTm9kZXMgfSBmcm9tICcuL2xhbmcnO1xuXG5jb25zdCB2b2lkRWxlbWVudHMgPSB7XG4gICAgYXJlYTogdHJ1ZSxcbiAgICBiYXNlOiB0cnVlLFxuICAgIGJyOiB0cnVlLFxuICAgIGNvbDogdHJ1ZSxcbiAgICBlbWJlZDogdHJ1ZSxcbiAgICBocjogdHJ1ZSxcbiAgICBpbWc6IHRydWUsXG4gICAgaW5wdXQ6IHRydWUsXG4gICAga2V5Z2VuOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgbWV0YTogdHJ1ZSxcbiAgICBwYXJhbTogdHJ1ZSxcbiAgICBzb3VyY2U6IHRydWUsXG4gICAgdHJhY2s6IHRydWUsXG4gICAgd2JyOiB0cnVlLFxufTtcbmV4cG9ydCBmdW5jdGlvbiBpc1ZvaWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKChlbGVtZW50KSA9PiB2b2lkRWxlbWVudHNbZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCldKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmlzaWJsZShlbGVtZW50KSB7XG4gICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShcbiAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgZWxlbWVudC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aFxuICAgICk7XG59XG5cbmV4cG9ydCBjb25zdCBzZWxJbnB1dCA9ICdpbnB1dCxzZWxlY3QsdGV4dGFyZWEsYnV0dG9uJztcbmV4cG9ydCBmdW5jdGlvbiBpc0lucHV0KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKChlbGVtZW50KSA9PiBtYXRjaGVzKGVsZW1lbnQsIHNlbElucHV0KSk7XG59XG5cbmV4cG9ydCBjb25zdCBzZWxGb2N1c2FibGUgPSBgJHtzZWxJbnB1dH0sYVtocmVmXSxbdGFiaW5kZXhdYDtcbmV4cG9ydCBmdW5jdGlvbiBpc0ZvY3VzYWJsZShlbGVtZW50KSB7XG4gICAgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsRm9jdXNhYmxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmVudChlbGVtZW50KSB7XG4gICAgcmV0dXJuIHRvTm9kZShlbGVtZW50KT8ucGFyZW50RWxlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLmZpbHRlcigoZWxlbWVudCkgPT4gbWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvcikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQubWF0Y2hlcyhzZWxlY3RvcikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIHJldHVybiBpc0VsZW1lbnQoZWxlbWVudClcbiAgICAgICAgPyBlbGVtZW50LmNsb3Nlc3Qoc3RhcnRzV2l0aChzZWxlY3RvciwgJz4nKSA/IHNlbGVjdG9yLnNsaWNlKDEpIDogc2VsZWN0b3IpXG4gICAgICAgIDogdG9Ob2RlcyhlbGVtZW50KVxuICAgICAgICAgICAgICAubWFwKChlbGVtZW50KSA9PiBjbG9zZXN0KGVsZW1lbnQsIHNlbGVjdG9yKSlcbiAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIHJldHVybiBpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgPyAhIWNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpXG4gICAgICAgIDogdG9Ob2RlKHNlbGVjdG9yKS5jb250YWlucyh0b05vZGUoZWxlbWVudCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyZW50cyhlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgICB3aGlsZSAoKGVsZW1lbnQgPSBwYXJlbnQoZWxlbWVudCkpKSB7XG4gICAgICAgIGlmICghc2VsZWN0b3IgfHwgbWF0Y2hlcyhlbGVtZW50LCBzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZHJlbihlbGVtZW50LCBzZWxlY3Rvcikge1xuICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBlbGVtZW50ID8gdG9BcnJheShlbGVtZW50LmNoaWxkcmVuKSA6IFtdO1xuICAgIHJldHVybiBzZWxlY3RvciA/IGZpbHRlcihjaGlsZHJlbiwgc2VsZWN0b3IpIDogY2hpbGRyZW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleChlbGVtZW50LCByZWYpIHtcbiAgICByZXR1cm4gcmVmID8gdG9Ob2RlcyhlbGVtZW50KS5pbmRleE9mKHRvTm9kZShyZWYpKSA6IGNoaWxkcmVuKHBhcmVudChlbGVtZW50KSkuaW5kZXhPZihlbGVtZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZVNpdGVBbmNob3IoZWwpIHtcbiAgICBlbCA9IHRvTm9kZShlbCk7XG4gICAgcmV0dXJuIGVsICYmIFsnb3JpZ2luJywgJ3BhdGhuYW1lJywgJ3NlYXJjaCddLmV2ZXJ5KChwYXJ0KSA9PiBlbFtwYXJ0XSA9PT0gbG9jYXRpb25bcGFydF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0ZWRFbGVtZW50KGVsKSB7XG4gICAgaWYgKGlzU2FtZVNpdGVBbmNob3IoZWwpKSB7XG4gICAgICAgIGVsID0gdG9Ob2RlKGVsKTtcbiAgICAgICAgY29uc3QgaWQgPSBkZWNvZGVVUklDb21wb25lbnQoZWwuaGFzaCkuc3Vic3RyaW5nKDEpO1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGlkKVswXTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBhdHRyIH0gZnJvbSAnLi9hdHRyJztcbmltcG9ydCB7IGNsb3Nlc3QsIGluZGV4LCBtYXRjaGVzLCBwYXJlbnQgfSBmcm9tICcuL2ZpbHRlcic7XG5pbXBvcnQgeyBpc0RvY3VtZW50LCBpc1N0cmluZywgbWVtb2l6ZSwgdG9Ob2RlLCB0b05vZGVzIH0gZnJvbSAnLi9sYW5nJztcblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGZpbmQoc2VsZWN0b3IsIGdldENvbnRleHQoc2VsZWN0b3IsIGNvbnRleHQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5QWxsKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGZpbmRBbGwoc2VsZWN0b3IsIGdldENvbnRleHQoc2VsZWN0b3IsIGNvbnRleHQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gdG9Ob2RlKF9xdWVyeShzZWxlY3RvciwgdG9Ob2RlKGNvbnRleHQpLCAncXVlcnlTZWxlY3RvcicpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbGwoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gdG9Ob2RlcyhfcXVlcnkoc2VsZWN0b3IsIHRvTm9kZShjb250ZXh0KSwgJ3F1ZXJ5U2VsZWN0b3JBbGwnKSk7XG59XG5cbmNvbnN0IGNvbnRleHRTZWxlY3RvclJlID0gLyhefFteXFxcXF0sKVxccypbIT4rfi1dLztcbmNvbnN0IGlzQ29udGV4dFNlbGVjdG9yID0gbWVtb2l6ZSgoc2VsZWN0b3IpID0+IHNlbGVjdG9yLm1hdGNoKGNvbnRleHRTZWxlY3RvclJlKSk7XG5cbmZ1bmN0aW9uIGdldENvbnRleHQoc2VsZWN0b3IsIGNvbnRleHQgPSBkb2N1bWVudCkge1xuICAgIHJldHVybiAoaXNTdHJpbmcoc2VsZWN0b3IpICYmIGlzQ29udGV4dFNlbGVjdG9yKHNlbGVjdG9yKSkgfHwgaXNEb2N1bWVudChjb250ZXh0KVxuICAgICAgICA/IGNvbnRleHRcbiAgICAgICAgOiBjb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG59XG5cbmNvbnN0IGNvbnRleHRTYW5pdGl6ZVJlID0gLyhbIT4rfi1dKSg/PVxccytbIT4rfi1dfFxccyokKS9nO1xuY29uc3Qgc2FuYXRpemUgPSBtZW1vaXplKChzZWxlY3RvcikgPT4gc2VsZWN0b3IucmVwbGFjZShjb250ZXh0U2FuaXRpemVSZSwgJyQxIConKSk7XG5cbmZ1bmN0aW9uIF9xdWVyeShzZWxlY3RvciwgY29udGV4dCA9IGRvY3VtZW50LCBxdWVyeUZuKSB7XG4gICAgaWYgKCFzZWxlY3RvciB8fCAhaXNTdHJpbmcoc2VsZWN0b3IpKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcjtcbiAgICB9XG5cbiAgICBzZWxlY3RvciA9IHNhbmF0aXplKHNlbGVjdG9yKTtcblxuICAgIGlmIChpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikpIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSBzcGxpdFNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgICAgc2VsZWN0b3IgPSAnJztcbiAgICAgICAgZm9yIChsZXQgc2VsIG9mIHNwbGl0KSB7XG4gICAgICAgICAgICBsZXQgY3R4ID0gY29udGV4dDtcblxuICAgICAgICAgICAgaWYgKHNlbFswXSA9PT0gJyEnKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0b3JzID0gc2VsLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICBjdHggPSBjbG9zZXN0KHBhcmVudChjb250ZXh0KSwgc2VsZWN0b3JzWzBdKTtcbiAgICAgICAgICAgICAgICBzZWwgPSBzZWxlY3RvcnMuc2xpY2UoMSkuam9pbignICcpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbC5sZW5ndGggJiYgc3BsaXQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VsWzBdID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RvcnMgPSBzZWwuc3Vic3RyKDEpLnRyaW0oKS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSAoY3R4IHx8IGNvbnRleHQpLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgY3R4ID0gbWF0Y2hlcyhwcmV2LCBzZWwuc3Vic3RyKDEpKSA/IHByZXYgOiBudWxsO1xuICAgICAgICAgICAgICAgIHNlbCA9IHNlbGVjdG9ycy5zbGljZSgxKS5qb2luKCcgJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RvciArPSBgJHtzZWxlY3RvciA/ICcsJyA6ICcnfSR7ZG9tUGF0aChjdHgpfSAke3NlbH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dCA9IGRvY3VtZW50O1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0W3F1ZXJ5Rm5dKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuY29uc3Qgc2VsZWN0b3JSZSA9IC8uKj9bXlxcXFxdKD86LHwkKS9nO1xuXG5jb25zdCBzcGxpdFNlbGVjdG9yID0gbWVtb2l6ZSgoc2VsZWN0b3IpID0+XG4gICAgc2VsZWN0b3IubWF0Y2goc2VsZWN0b3JSZSkubWFwKChzZWxlY3RvcikgPT4gc2VsZWN0b3IucmVwbGFjZSgvLCQvLCAnJykudHJpbSgpKVxuKTtcblxuZnVuY3Rpb24gZG9tUGF0aChlbGVtZW50KSB7XG4gICAgY29uc3QgbmFtZXMgPSBbXTtcbiAgICB3aGlsZSAoZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNvbnN0IGlkID0gYXR0cihlbGVtZW50LCAnaWQnKTtcbiAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBuYW1lcy51bnNoaWZ0KGAjJHtlc2NhcGUoaWQpfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgeyB0YWdOYW1lIH0gPSBlbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRhZ05hbWUgIT09ICdIVE1MJykge1xuICAgICAgICAgICAgICAgIHRhZ05hbWUgKz0gYDpudGgtY2hpbGQoJHtpbmRleChlbGVtZW50KSArIDF9KWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuYW1lcy51bnNoaWZ0KHRhZ05hbWUpO1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmFtZXMuam9pbignID4gJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoY3NzKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKGNzcykgPyBDU1MuZXNjYXBlKGNzcykgOiAnJztcbn1cbiIsImltcG9ydCB7IGZpbmRBbGwgfSBmcm9tICcuL3NlbGVjdG9yJztcbmltcG9ydCB7IGNsb3Nlc3QsIHdpdGhpbiB9IGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCB0b05vZGUsIHRvTm9kZXMgfSBmcm9tICcuL2xhbmcnO1xuXG5leHBvcnQgZnVuY3Rpb24gb24oLi4uYXJncykge1xuICAgIGxldCBbdGFyZ2V0cywgdHlwZXMsIHNlbGVjdG9yLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSA9IGZhbHNlXSA9IGdldEFyZ3MoYXJncyk7XG5cbiAgICBpZiAobGlzdGVuZXIubGVuZ3RoID4gMSkge1xuICAgICAgICBsaXN0ZW5lciA9IGRldGFpbChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgaWYgKHVzZUNhcHR1cmU/LnNlbGYpIHtcbiAgICAgICAgbGlzdGVuZXIgPSBzZWxmRmlsdGVyKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgbGlzdGVuZXIgPSBkZWxlZ2F0ZShzZWxlY3RvciwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4gb2ZmKHRhcmdldHMsIHR5cGVzLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvZmYoLi4uYXJncykge1xuICAgIGxldCBbdGFyZ2V0cywgdHlwZXMsICwgbGlzdGVuZXIsIHVzZUNhcHR1cmUgPSBmYWxzZV0gPSBnZXRBcmdzKGFyZ3MpO1xuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmNlKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbZWxlbWVudCwgdHlwZXMsIHNlbGVjdG9yLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSA9IGZhbHNlLCBjb25kaXRpb25dID0gZ2V0QXJncyhhcmdzKTtcbiAgICBjb25zdCBvZmYgPSBvbihcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgdHlwZXMsXG4gICAgICAgIHNlbGVjdG9yLFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIWNvbmRpdGlvbiB8fCBjb25kaXRpb24oZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgb2ZmKCk7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXNlQ2FwdHVyZVxuICAgICk7XG5cbiAgICByZXR1cm4gb2ZmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJpZ2dlcih0YXJnZXRzLCBldmVudCwgZGV0YWlsKSB7XG4gICAgcmV0dXJuIHRvRXZlbnRUYXJnZXRzKHRhcmdldHMpLmV2ZXJ5KCh0YXJnZXQpID0+XG4gICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUV2ZW50KGV2ZW50LCB0cnVlLCB0cnVlLCBkZXRhaWwpKVxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFdmVudChlLCBidWJibGVzID0gdHJ1ZSwgY2FuY2VsYWJsZSA9IGZhbHNlLCBkZXRhaWwpIHtcbiAgICBpZiAoaXNTdHJpbmcoZSkpIHtcbiAgICAgICAgZSA9IG5ldyBDdXN0b21FdmVudChlLCB7IGJ1YmJsZXMsIGNhbmNlbGFibGUsIGRldGFpbCB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZTtcbn1cblxuZnVuY3Rpb24gZ2V0QXJncyhhcmdzKSB7XG4gICAgLy8gRXZlbnQgdGFyZ2V0c1xuICAgIGFyZ3NbMF0gPSB0b0V2ZW50VGFyZ2V0cyhhcmdzWzBdKTtcblxuICAgIC8vIEV2ZW50IHR5cGVzXG4gICAgaWYgKGlzU3RyaW5nKGFyZ3NbMV0pKSB7XG4gICAgICAgIGFyZ3NbMV0gPSBhcmdzWzFdLnNwbGl0KCcgJyk7XG4gICAgfVxuXG4gICAgLy8gRGVsZWdhdGU/XG4gICAgaWYgKGlzRnVuY3Rpb24oYXJnc1syXSkpIHtcbiAgICAgICAgYXJncy5zcGxpY2UoMiwgMCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzO1xufVxuXG5mdW5jdGlvbiBkZWxlZ2F0ZShzZWxlY3RvciwgbGlzdGVuZXIpIHtcbiAgICByZXR1cm4gKGUpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9XG4gICAgICAgICAgICBzZWxlY3RvclswXSA9PT0gJz4nXG4gICAgICAgICAgICAgICAgPyBmaW5kQWxsKHNlbGVjdG9yLCBlLmN1cnJlbnRUYXJnZXQpXG4gICAgICAgICAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVsZW1lbnQpID0+IHdpdGhpbihlLnRhcmdldCwgZWxlbWVudCkpWzBdXG4gICAgICAgICAgICAgICAgOiBjbG9zZXN0KGUudGFyZ2V0LCBzZWxlY3Rvcik7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGUuY3VycmVudCA9IGN1cnJlbnQ7XG4gICAgICAgICAgICBsaXN0ZW5lci5jYWxsKHRoaXMsIGUpO1xuICAgICAgICAgICAgZGVsZXRlIGUuY3VycmVudDtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGRldGFpbChsaXN0ZW5lcikge1xuICAgIHJldHVybiAoZSkgPT4gKGlzQXJyYXkoZS5kZXRhaWwpID8gbGlzdGVuZXIoZSwgLi4uZS5kZXRhaWwpIDogbGlzdGVuZXIoZSkpO1xufVxuXG5mdW5jdGlvbiBzZWxmRmlsdGVyKGxpc3RlbmVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gZS5jdXJyZW50VGFyZ2V0IHx8IGUudGFyZ2V0ID09PSBlLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lci5jYWxsKG51bGwsIGUpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gaXNFdmVudFRhcmdldCh0YXJnZXQpIHtcbiAgICByZXR1cm4gdGFyZ2V0ICYmICdhZGRFdmVudExpc3RlbmVyJyBpbiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvRXZlbnRUYXJnZXQodGFyZ2V0KSB7XG4gICAgcmV0dXJuIGlzRXZlbnRUYXJnZXQodGFyZ2V0KSA/IHRhcmdldCA6IHRvTm9kZSh0YXJnZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9FdmVudFRhcmdldHModGFyZ2V0KSB7XG4gICAgcmV0dXJuIGlzQXJyYXkodGFyZ2V0KVxuICAgICAgICA/IHRhcmdldC5tYXAodG9FdmVudFRhcmdldCkuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIDogaXNTdHJpbmcodGFyZ2V0KVxuICAgICAgICA/IGZpbmRBbGwodGFyZ2V0KVxuICAgICAgICA6IGlzRXZlbnRUYXJnZXQodGFyZ2V0KVxuICAgICAgICA/IFt0YXJnZXRdXG4gICAgICAgIDogdG9Ob2Rlcyh0YXJnZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUb3VjaChlKSB7XG4gICAgcmV0dXJuIGUucG9pbnRlclR5cGUgPT09ICd0b3VjaCcgfHwgISFlLnRvdWNoZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudFBvcyhlKSB7XG4gICAgY29uc3QgeyBjbGllbnRYOiB4LCBjbGllbnRZOiB5IH0gPSBlLnRvdWNoZXM/LlswXSB8fCBlLmNoYW5nZWRUb3VjaGVzPy5bMF0gfHwgZTtcblxuICAgIHJldHVybiB7IHgsIHkgfTtcbn1cbiIsImltcG9ydCB7XG4gICAgZWFjaCxcbiAgICBoeXBoZW5hdGUsXG4gICAgaXNBcnJheSxcbiAgICBpc051bWJlcixcbiAgICBpc051bWVyaWMsXG4gICAgaXNPYmplY3QsXG4gICAgaXNTdHJpbmcsXG4gICAgaXNVbmRlZmluZWQsXG4gICAgbWVtb2l6ZSxcbiAgICBzdGFydHNXaXRoLFxuICAgIHRvTm9kZXMsXG59IGZyb20gJy4vbGFuZyc7XG5cbmNvbnN0IGNzc051bWJlciA9IHtcbiAgICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCc6IHRydWUsXG4gICAgJ2NvbHVtbi1jb3VudCc6IHRydWUsXG4gICAgJ2ZpbGwtb3BhY2l0eSc6IHRydWUsXG4gICAgJ2ZsZXgtZ3Jvdyc6IHRydWUsXG4gICAgJ2ZsZXgtc2hyaW5rJzogdHJ1ZSxcbiAgICAnZm9udC13ZWlnaHQnOiB0cnVlLFxuICAgICdsaW5lLWhlaWdodCc6IHRydWUsXG4gICAgb3BhY2l0eTogdHJ1ZSxcbiAgICBvcmRlcjogdHJ1ZSxcbiAgICBvcnBoYW5zOiB0cnVlLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogdHJ1ZSxcbiAgICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiB0cnVlLFxuICAgIHdpZG93czogdHJ1ZSxcbiAgICAnei1pbmRleCc6IHRydWUsXG4gICAgem9vbTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjc3MoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlLCBwcmlvcml0eSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gdG9Ob2RlcyhlbGVtZW50KTtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHByb3BlcnR5KSkge1xuICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wTmFtZShwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHksXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtZXJpYyh2YWx1ZSkgJiYgIWNzc051bWJlcltwcm9wZXJ0eV1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7dmFsdWV9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlIHx8IGlzTnVtYmVyKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkocHJvcGVydHkpKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QocHJvcGVydHkpKSB7XG4gICAgICAgICAgICBwcmlvcml0eSA9IHZhbHVlO1xuICAgICAgICAgICAgZWFjaChwcm9wZXJ0eSwgKHZhbHVlLCBwcm9wZXJ0eSkgPT4gY3NzKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgcHJpb3JpdHkpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudHNbMF07XG59XG5cbi8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24tc2V0cHJvcGVydHlcbmV4cG9ydCBjb25zdCBwcm9wTmFtZSA9IG1lbW9pemUoKG5hbWUpID0+IHZlbmRvclByb3BOYW1lKG5hbWUpKTtcblxuZnVuY3Rpb24gdmVuZG9yUHJvcE5hbWUobmFtZSkge1xuICAgIGlmIChzdGFydHNXaXRoKG5hbWUsICctLScpKSB7XG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cblxuICAgIG5hbWUgPSBoeXBoZW5hdGUobmFtZSk7XG5cbiAgICBjb25zdCB7IHN0eWxlIH0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICBpZiAobmFtZSBpbiBzdHlsZSkge1xuICAgICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByZWZpeCBvZiBbJ3dlYmtpdCcsICdtb3onXSkge1xuICAgICAgICBjb25zdCBwcmVmaXhlZE5hbWUgPSBgLSR7cHJlZml4fS0ke25hbWV9YDtcbiAgICAgICAgaWYgKHByZWZpeGVkTmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHByZWZpeGVkTmFtZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCB7IGF0dHIgfSBmcm9tICcuL2F0dHInO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQsIHRvTm9kZXMgfSBmcm9tICcuL2xhbmcnO1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgLi4uYXJncykge1xuICAgIGFwcGx5KGVsZW1lbnQsIGFyZ3MsICdhZGQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQsIC4uLmFyZ3MpIHtcbiAgICBhcHBseShlbGVtZW50LCBhcmdzLCAncmVtb3ZlJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDbGFzc2VzKGVsZW1lbnQsIGNscykge1xuICAgIGF0dHIoZWxlbWVudCwgJ2NsYXNzJywgKHZhbHVlKSA9PlxuICAgICAgICAodmFsdWUgfHwgJycpLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXGIke2Nsc31cXFxcYlxcXFxzP2AsICdnJyksICcnKVxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlQ2xhc3MoZWxlbWVudCwgLi4uYXJncykge1xuICAgIGFyZ3NbMF0gJiYgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgYXJnc1swXSk7XG4gICAgYXJnc1sxXSAmJiBhZGRDbGFzcyhlbGVtZW50LCBhcmdzWzFdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNscykge1xuICAgIFtjbHNdID0gZ2V0Q2xhc3NlcyhjbHMpO1xuICAgIHJldHVybiAhIWNscyAmJiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoKG5vZGUpID0+IG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNscykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWxlbWVudCwgY2xzLCBmb3JjZSkge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBnZXRDbGFzc2VzKGNscyk7XG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKGZvcmNlKSkge1xuICAgICAgICBmb3JjZSA9ICEhZm9yY2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRvTm9kZXMoZWxlbWVudCkpIHtcbiAgICAgICAgZm9yIChjb25zdCBjbHMgb2YgY2xhc3Nlcykge1xuICAgICAgICAgICAgbm9kZS5jbGFzc0xpc3QudG9nZ2xlKGNscywgZm9yY2UpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBseShlbGVtZW50LCBhcmdzLCBmbikge1xuICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYXJncywgYXJnKSA9PiBhcmdzLmNvbmNhdChnZXRDbGFzc2VzKGFyZykpLCBbXSk7XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdG9Ob2RlcyhlbGVtZW50KSkge1xuICAgICAgICBub2RlLmNsYXNzTGlzdFtmbl0oLi4uYXJncyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRDbGFzc2VzKHN0cikge1xuICAgIHJldHVybiBTdHJpbmcoc3RyKS5zcGxpdCgvWyAsXS8pLmZpbHRlcihCb29sZWFuKTtcbn1cbiIsImltcG9ydCB7IGF0dHIgfSBmcm9tICcuL2F0dHInO1xuaW1wb3J0IHsgb25jZSwgdHJpZ2dlciB9IGZyb20gJy4vZXZlbnQnO1xuaW1wb3J0IHsgY3NzLCBwcm9wTmFtZSB9IGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IHsgc3RhcnRzV2l0aCwgdG9Ob2RlcyB9IGZyb20gJy4vbGFuZyc7XG5pbXBvcnQgeyBhZGRDbGFzcywgaGFzQ2xhc3MsIHJlbW92ZUNsYXNzLCByZW1vdmVDbGFzc2VzIH0gZnJvbSAnLi9jbGFzcyc7XG5cbmZ1bmN0aW9uIHRyYW5zaXRpb24oZWxlbWVudCwgcHJvcHMsIGR1cmF0aW9uID0gNDAwLCB0aW1pbmcgPSAnbGluZWFyJykge1xuICAgIGR1cmF0aW9uID0gTWF0aC5yb3VuZChkdXJhdGlvbik7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICB0b05vZGVzKGVsZW1lbnQpLm1hcChcbiAgICAgICAgICAgIChlbGVtZW50KSA9PlxuICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNzcyhlbGVtZW50LCBuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKSwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIG9uY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25lbmQgdHJhbnNpdGlvbmNhbmNlbGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IHR5cGUgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0cmFuc2l0aW9uY2FuY2VsZWQnID8gcmVqZWN0KCkgOiByZXNvbHZlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc2VsZjogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogT2JqZWN0LmtleXMocHJvcHMpLm1hcChwcm9wTmFtZSkuam9pbignLCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBgJHtkdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246IHRpbWluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IFRyYW5zaXRpb24gPSB7XG4gICAgc3RhcnQ6IHRyYW5zaXRpb24sXG5cbiAgICBhc3luYyBzdG9wKGVsZW1lbnQpIHtcbiAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgY2FuY2VsKGVsZW1lbnQpIHtcbiAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmNhbmNlbGVkJyk7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sXG5cbiAgICBpblByb2dyZXNzKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGhhc0NsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7XG4gICAgfSxcbn07XG5cbmNvbnN0IGFuaW1hdGlvblByZWZpeCA9ICd1ay1hbmltYXRpb24tJztcblxuZnVuY3Rpb24gYW5pbWF0ZShlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uID0gMjAwLCBvcmlnaW4sIG91dCkge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgdG9Ob2RlcyhlbGVtZW50KS5tYXAoXG4gICAgICAgICAgICAoZWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWxlbWVudCwgJ2FuaW1hdGlvbmNhbmNlbGVkJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0cmlnZ2VyKGVsZW1lbnQsICdhbmltYXRpb25lbmQnKSwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIG9uY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmVuZCBhbmltYXRpb25jYW5jZWxlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyB0eXBlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gJ2FuaW1hdGlvbmNhbmNlbGVkJyA/IHJlamVjdCgpIDogcmVzb2x2ZShlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NlcyhlbGVtZW50LCBgJHthbmltYXRpb25QcmVmaXh9XFxcXFMqYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzZWxmOiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgYCR7ZHVyYXRpb259bXNgKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgYW5pbWF0aW9uLCBhbmltYXRpb25QcmVmaXggKyAob3V0ID8gJ2xlYXZlJyA6ICdlbnRlcicpKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChhbmltYXRpb24sIGFuaW1hdGlvblByZWZpeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbiAmJiBhZGRDbGFzcyhlbGVtZW50LCBgdWstdHJhbnNmb3JtLW9yaWdpbi0ke29yaWdpbn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCAmJiBhZGRDbGFzcyhlbGVtZW50LCBgJHthbmltYXRpb25QcmVmaXh9cmV2ZXJzZWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICk7XG59XG5cbmNvbnN0IGluUHJvZ3Jlc3NSZSA9IG5ldyBSZWdFeHAoYCR7YW5pbWF0aW9uUHJlZml4fShlbnRlcnxsZWF2ZSlgKTtcblxuZXhwb3J0IGNvbnN0IEFuaW1hdGlvbiA9IHtcbiAgICBpbjogYW5pbWF0ZSxcblxuICAgIG91dChlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCB0cnVlKTtcbiAgICB9LFxuXG4gICAgaW5Qcm9ncmVzcyhlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBpblByb2dyZXNzUmUudGVzdChhdHRyKGVsZW1lbnQsICdjbGFzcycpKTtcbiAgICB9LFxuXG4gICAgY2FuY2VsKGVsZW1lbnQpIHtcbiAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAnYW5pbWF0aW9uY2FuY2VsZWQnKTtcbiAgICB9LFxufTtcbiIsImltcG9ydCB7IG9uY2UgfSBmcm9tICcuL2V2ZW50JztcbmltcG9ydCB7IHBhcmVudCB9IGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCB7IGZpbmQsIGZpbmRBbGwgfSBmcm9tICcuL3NlbGVjdG9yJztcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBzdGFydHNXaXRoLCB0b0FycmF5LCB0b05vZGUsIHRvTm9kZXMgfSBmcm9tICcuL2xhbmcnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZHkoZm4pIHtcbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgIGZuKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvbmNlKGRvY3VtZW50LCAnRE9NQ29udGVudExvYWRlZCcsIGZuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGFnKGVsZW1lbnQsIC4uLnRhZ05hbWVzKSB7XG4gICAgcmV0dXJuIHRhZ05hbWVzLnNvbWUoKHRhZ05hbWUpID0+IGVsZW1lbnQ/LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eShlbGVtZW50KSB7XG4gICAgZWxlbWVudCA9ICQoZWxlbWVudCk7XG4gICAgZWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICByZXR1cm4gZWxlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh0bWwocGFyZW50LCBodG1sKSB7XG4gICAgcmV0dXJuIGlzVW5kZWZpbmVkKGh0bWwpID8gJChwYXJlbnQpLmlubmVySFRNTCA6IGFwcGVuZChlbXB0eShwYXJlbnQpLCBodG1sKTtcbn1cblxuZXhwb3J0IGNvbnN0IHByZXBlbmQgPSBhcHBseUZuKCdwcmVwZW5kJyk7XG5leHBvcnQgY29uc3QgYXBwZW5kID0gYXBwbHlGbignYXBwZW5kJyk7XG5leHBvcnQgY29uc3QgYmVmb3JlID0gYXBwbHlGbignYmVmb3JlJyk7XG5leHBvcnQgY29uc3QgYWZ0ZXIgPSBhcHBseUZuKCdhZnRlcicpO1xuXG5mdW5jdGlvbiBhcHBseUZuKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyZWYsIGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0b05vZGVzKGlzU3RyaW5nKGVsZW1lbnQpID8gZnJhZ21lbnQoZWxlbWVudCkgOiBlbGVtZW50KTtcbiAgICAgICAgJChyZWYpPy5bZm5dKC4uLm5vZGVzKTtcbiAgICAgICAgcmV0dXJuIHVud3JhcFNpbmdsZShub2Rlcyk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZShlbGVtZW50KSB7XG4gICAgdG9Ob2RlcyhlbGVtZW50KS5mb3JFYWNoKChlbGVtZW50KSA9PiBlbGVtZW50LnJlbW92ZSgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBBbGwoZWxlbWVudCwgc3RydWN0dXJlKSB7XG4gICAgc3RydWN0dXJlID0gdG9Ob2RlKGJlZm9yZShlbGVtZW50LCBzdHJ1Y3R1cmUpKTtcblxuICAgIHdoaWxlIChzdHJ1Y3R1cmUuZmlyc3RDaGlsZCkge1xuICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUuZmlyc3RDaGlsZDtcbiAgICB9XG5cbiAgICBhcHBlbmQoc3RydWN0dXJlLCBlbGVtZW50KTtcblxuICAgIHJldHVybiBzdHJ1Y3R1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwSW5uZXIoZWxlbWVudCwgc3RydWN0dXJlKSB7XG4gICAgcmV0dXJuIHRvTm9kZXMoXG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkubWFwKChlbGVtZW50KSA9PlxuICAgICAgICAgICAgZWxlbWVudC5oYXNDaGlsZE5vZGVzKClcbiAgICAgICAgICAgICAgICA/IHdyYXBBbGwodG9BcnJheShlbGVtZW50LmNoaWxkTm9kZXMpLCBzdHJ1Y3R1cmUpXG4gICAgICAgICAgICAgICAgOiBhcHBlbmQoZWxlbWVudCwgc3RydWN0dXJlKVxuICAgICAgICApXG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcChlbGVtZW50KSB7XG4gICAgdG9Ob2RlcyhlbGVtZW50KVxuICAgICAgICAubWFwKHBhcmVudClcbiAgICAgICAgLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleClcbiAgICAgICAgLmZvckVhY2goKHBhcmVudCkgPT4gcGFyZW50LnJlcGxhY2VXaXRoKC4uLnBhcmVudC5jaGlsZE5vZGVzKSk7XG59XG5cbmNvbnN0IGZyYWdtZW50UmUgPSAvXlxccyo8KFxcdyt8ISlbXj5dKj4vO1xuY29uc3Qgc2luZ2xlVGFnUmUgPSAvXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPik/JC87XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFnbWVudChodG1sKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHNpbmdsZVRhZ1JlLmV4ZWMoaHRtbCk7XG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobWF0Y2hlc1sxXSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaWYgKGZyYWdtZW50UmUudGVzdChodG1sKSkge1xuICAgICAgICBjb250YWluZXIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBodG1sLnRyaW0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29udGFpbmVyLnRleHRDb250ZW50ID0gaHRtbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW53cmFwU2luZ2xlKGNvbnRhaW5lci5jaGlsZE5vZGVzKTtcbn1cblxuZnVuY3Rpb24gdW53cmFwU2luZ2xlKG5vZGVzKSB7XG4gICAgcmV0dXJuIG5vZGVzLmxlbmd0aCA+IDEgPyBub2RlcyA6IG5vZGVzWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHkobm9kZSwgZm4pIHtcbiAgICBpZiAoIWlzRWxlbWVudChub2RlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm4obm9kZSk7XG4gICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IG5vZGUubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICBhcHBseShub2RlLCBmbik7XG4gICAgICAgIG5vZGUgPSBuZXh0O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaXNIdG1sKHNlbGVjdG9yKSA/IHRvTm9kZShmcmFnbWVudChzZWxlY3RvcikpIDogZmluZChzZWxlY3RvciwgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAkJChzZWxlY3RvciwgY29udGV4dCkge1xuICAgIHJldHVybiBpc0h0bWwoc2VsZWN0b3IpID8gdG9Ob2RlcyhmcmFnbWVudChzZWxlY3RvcikpIDogZmluZEFsbChzZWxlY3RvciwgY29udGV4dCk7XG59XG5cbmZ1bmN0aW9uIGlzSHRtbChzdHIpIHtcbiAgICByZXR1cm4gaXNTdHJpbmcoc3RyKSAmJiBzdGFydHNXaXRoKHN0ci50cmltKCksICc8Jyk7XG59XG4iLCJpbXBvcnQgeyBvbiB9IGZyb20gJy4vZXZlbnQnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnLi9zdHlsZSc7XG5pbXBvcnQgeyAkLCBhcHBlbmQsIHJlbW92ZSB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7XG4gICAgZWFjaCxcbiAgICBpc0RvY3VtZW50LFxuICAgIGlzRWxlbWVudCxcbiAgICBpc1N0cmluZyxcbiAgICBpc1VuZGVmaW5lZCxcbiAgICBpc1dpbmRvdyxcbiAgICBtZW1vaXplLFxuICAgIHN1bUJ5LFxuICAgIHRvRmxvYXQsXG4gICAgdG9Ob2RlLFxuICAgIHRvV2luZG93LFxuICAgIHVjZmlyc3QsXG59IGZyb20gJy4vbGFuZyc7XG5cbmNvbnN0IGRpcnMgPSB7XG4gICAgd2lkdGg6IFsnbGVmdCcsICdyaWdodCddLFxuICAgIGhlaWdodDogWyd0b3AnLCAnYm90dG9tJ10sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGltZW5zaW9ucyhlbGVtZW50KSB7XG4gICAgY29uc3QgcmVjdCA9IGlzRWxlbWVudChlbGVtZW50KVxuICAgICAgICA/IHRvTm9kZShlbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICA6IHsgaGVpZ2h0OiBoZWlnaHQoZWxlbWVudCksIHdpZHRoOiB3aWR0aChlbGVtZW50KSwgdG9wOiAwLCBsZWZ0OiAwIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgICAgdG9wOiByZWN0LnRvcCxcbiAgICAgICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgICAgICBib3R0b206IHJlY3QudG9wICsgcmVjdC5oZWlnaHQsXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyByZWN0LndpZHRoLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvZmZzZXQoZWxlbWVudCwgY29vcmRpbmF0ZXMpIHtcbiAgICBjb25zdCBjdXJyZW50T2Zmc2V0ID0gZGltZW5zaW9ucyhlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsWSwgc2Nyb2xsWCB9ID0gdG9XaW5kb3coZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG9mZnNldEJ5ID0geyBoZWlnaHQ6IHNjcm9sbFksIHdpZHRoOiBzY3JvbGxYIH07XG5cbiAgICAgICAgZm9yIChjb25zdCBkaXIgaW4gZGlycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGRpcnNbZGlyXSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRbcHJvcF0gKz0gb2Zmc2V0QnlbZGlyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgY29uc3QgcG9zID0gY3NzKGVsZW1lbnQsICdwb3NpdGlvbicpO1xuXG4gICAgZWFjaChjc3MoZWxlbWVudCwgWydsZWZ0JywgJ3RvcCddKSwgKHZhbHVlLCBwcm9wKSA9PlxuICAgICAgICBjc3MoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgcHJvcCxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzW3Byb3BdIC1cbiAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0W3Byb3BdICtcbiAgICAgICAgICAgICAgICB0b0Zsb2F0KHBvcyA9PT0gJ2Fic29sdXRlJyAmJiB2YWx1ZSA9PT0gJ2F1dG8nID8gcG9zaXRpb24oZWxlbWVudClbcHJvcF0gOiB2YWx1ZSlcbiAgICAgICAgKVxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbihlbGVtZW50KSB7XG4gICAgbGV0IHsgdG9wLCBsZWZ0IH0gPSBvZmZzZXQoZWxlbWVudCk7XG5cbiAgICBjb25zdCB7XG4gICAgICAgIG93bmVyRG9jdW1lbnQ6IHsgYm9keSwgZG9jdW1lbnRFbGVtZW50IH0sXG4gICAgICAgIG9mZnNldFBhcmVudCxcbiAgICB9ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgIGxldCBwYXJlbnQgPSBvZmZzZXRQYXJlbnQgfHwgZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgd2hpbGUgKFxuICAgICAgICBwYXJlbnQgJiZcbiAgICAgICAgKHBhcmVudCA9PT0gYm9keSB8fCBwYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCkgJiZcbiAgICAgICAgY3NzKHBhcmVudCwgJ3Bvc2l0aW9uJykgPT09ICdzdGF0aWMnXG4gICAgKSB7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIGlmIChpc0VsZW1lbnQocGFyZW50KSkge1xuICAgICAgICBjb25zdCBwYXJlbnRPZmZzZXQgPSBvZmZzZXQocGFyZW50KTtcbiAgICAgICAgdG9wIC09IHBhcmVudE9mZnNldC50b3AgKyB0b0Zsb2F0KGNzcyhwYXJlbnQsICdib3JkZXJUb3BXaWR0aCcpKTtcbiAgICAgICAgbGVmdCAtPSBwYXJlbnRPZmZzZXQubGVmdCArIHRvRmxvYXQoY3NzKHBhcmVudCwgJ2JvcmRlckxlZnRXaWR0aCcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0b3A6IHRvcCAtIHRvRmxvYXQoY3NzKGVsZW1lbnQsICdtYXJnaW5Ub3AnKSksXG4gICAgICAgIGxlZnQ6IGxlZnQgLSB0b0Zsb2F0KGNzcyhlbGVtZW50LCAnbWFyZ2luTGVmdCcpKSxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCkge1xuICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICBjb25zdCBvZmZzZXQgPSBbZWxlbWVudC5vZmZzZXRUb3AsIGVsZW1lbnQub2Zmc2V0TGVmdF07XG5cbiAgICB3aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgb2Zmc2V0WzBdICs9IGVsZW1lbnQub2Zmc2V0VG9wICsgdG9GbG9hdChjc3MoZWxlbWVudCwgYGJvcmRlclRvcFdpZHRoYCkpO1xuICAgICAgICBvZmZzZXRbMV0gKz0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgdG9GbG9hdChjc3MoZWxlbWVudCwgYGJvcmRlckxlZnRXaWR0aGApKTtcblxuICAgICAgICBpZiAoY3NzKGVsZW1lbnQsICdwb3NpdGlvbicpID09PSAnZml4ZWQnKSB7XG4gICAgICAgICAgICBjb25zdCB3aW4gPSB0b1dpbmRvdyhlbGVtZW50KTtcbiAgICAgICAgICAgIG9mZnNldFswXSArPSB3aW4uc2Nyb2xsWTtcbiAgICAgICAgICAgIG9mZnNldFsxXSArPSB3aW4uc2Nyb2xsWDtcbiAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xufVxuXG5leHBvcnQgY29uc3QgaGVpZ2h0ID0gZGltZW5zaW9uKCdoZWlnaHQnKTtcbmV4cG9ydCBjb25zdCB3aWR0aCA9IGRpbWVuc2lvbignd2lkdGgnKTtcblxuZnVuY3Rpb24gZGltZW5zaW9uKHByb3ApIHtcbiAgICBjb25zdCBwcm9wTmFtZSA9IHVjZmlyc3QocHJvcCk7XG4gICAgcmV0dXJuIChlbGVtZW50LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudFtgaW5uZXIke3Byb3BOYW1lfWBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNEb2N1bWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvYyA9IGVsZW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heChkb2NbYG9mZnNldCR7cHJvcE5hbWV9YF0sIGRvY1tgc2Nyb2xsJHtwcm9wTmFtZX1gXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIHZhbHVlID0gY3NzKGVsZW1lbnQsIHByb3ApO1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2F1dG8nID8gZWxlbWVudFtgb2Zmc2V0JHtwcm9wTmFtZX1gXSA6IHRvRmxvYXQodmFsdWUpIHx8IDA7XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAtIGJveE1vZGVsQWRqdXN0KGVsZW1lbnQsIHByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNzcyhcbiAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgIHByb3AsXG4gICAgICAgICAgICAgICAgIXZhbHVlICYmIHZhbHVlICE9PSAwID8gJycgOiArdmFsdWUgKyBib3hNb2RlbEFkanVzdChlbGVtZW50LCBwcm9wKSArICdweCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm94TW9kZWxBZGp1c3QoZWxlbWVudCwgcHJvcCwgc2l6aW5nID0gJ2JvcmRlci1ib3gnKSB7XG4gICAgcmV0dXJuIGNzcyhlbGVtZW50LCAnYm94U2l6aW5nJykgPT09IHNpemluZ1xuICAgICAgICA/IHN1bUJ5KFxuICAgICAgICAgICAgICBkaXJzW3Byb3BdLm1hcCh1Y2ZpcnN0KSxcbiAgICAgICAgICAgICAgKHByb3ApID0+XG4gICAgICAgICAgICAgICAgICB0b0Zsb2F0KGNzcyhlbGVtZW50LCBgcGFkZGluZyR7cHJvcH1gKSkgK1xuICAgICAgICAgICAgICAgICAgdG9GbG9hdChjc3MoZWxlbWVudCwgYGJvcmRlciR7cHJvcH1XaWR0aGApKVxuICAgICAgICAgIClcbiAgICAgICAgOiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxpcFBvc2l0aW9uKHBvcykge1xuICAgIGZvciAoY29uc3QgZGlyIGluIGRpcnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIGluIGRpcnNbZGlyXSkge1xuICAgICAgICAgICAgaWYgKGRpcnNbZGlyXVtpXSA9PT0gcG9zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpcnNbZGlyXVsxIC0gaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUHgodmFsdWUsIHByb3BlcnR5ID0gJ3dpZHRoJywgZWxlbWVudCA9IHdpbmRvdywgb2Zmc2V0RGltID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdG9GbG9hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1bUJ5KHBhcnNlQ2FsYyh2YWx1ZSksICh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB1bml0ID0gcGFyc2VVbml0KHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdW5pdFxuICAgICAgICAgICAgPyBwZXJjZW50KFxuICAgICAgICAgICAgICAgICAgdW5pdCA9PT0gJ3ZoJ1xuICAgICAgICAgICAgICAgICAgICAgID8gZ2V0Vmlld3BvcnRIZWlnaHQoKVxuICAgICAgICAgICAgICAgICAgICAgIDogdW5pdCA9PT0gJ3Z3J1xuICAgICAgICAgICAgICAgICAgICAgID8gd2lkdGgodG9XaW5kb3coZWxlbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgOiBvZmZzZXREaW1cbiAgICAgICAgICAgICAgICAgICAgICA/IGVsZW1lbnRbYG9mZnNldCR7dWNmaXJzdChwcm9wZXJ0eSl9YF1cbiAgICAgICAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbnMoZWxlbWVudClbcHJvcGVydHldLFxuICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9KTtcbn1cblxuY29uc3QgY2FsY1JlID0gLy0/XFxkKyg/OlxcLlxcZCspPyg/OnZbd2hdfCV8cHgpPy9nO1xuY29uc3QgcGFyc2VDYWxjID0gbWVtb2l6ZSgoY2FsYykgPT4gY2FsYy50b1N0cmluZygpLnJlcGxhY2UoL1xccy9nLCAnJykubWF0Y2goY2FsY1JlKSB8fCBbXSk7XG5jb25zdCB1bml0UmUgPSAvKD86dltod118JSkkLztcbmNvbnN0IHBhcnNlVW5pdCA9IG1lbW9pemUoKHN0cikgPT4gKHN0ci5tYXRjaCh1bml0UmUpIHx8IFtdKVswXSk7XG5cbmZ1bmN0aW9uIHBlcmNlbnQoYmFzZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gKGJhc2UgKiB0b0Zsb2F0KHZhbHVlKSkgLyAxMDA7XG59XG5cbmxldCB2aDtcbmxldCB2aEVsO1xuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydEhlaWdodCgpIHtcbiAgICBpZiAodmgpIHtcbiAgICAgICAgcmV0dXJuIHZoO1xuICAgIH1cbiAgICBpZiAoIXZoRWwpIHtcbiAgICAgICAgdmhFbCA9ICQoJzxkaXY+Jyk7XG4gICAgICAgIGNzcyh2aEVsLCB7XG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgICAgfSk7XG4gICAgICAgIG9uKHdpbmRvdywgJ3Jlc2l6ZScsICgpID0+ICh2aCA9IG51bGwpKTtcbiAgICB9XG5cbiAgICBhcHBlbmQoZG9jdW1lbnQuYm9keSwgdmhFbCk7XG4gICAgdmggPSB2aEVsLmNsaWVudEhlaWdodDtcbiAgICByZW1vdmUodmhFbCk7XG4gICAgcmV0dXJuIHZoO1xufVxuIiwiZXhwb3J0IGNvbnN0IGluQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0IGNvbnN0IGlzUnRsID0gaW5Ccm93c2VyICYmIGRvY3VtZW50LmRpciA9PT0gJ3J0bCc7XG5cbmV4cG9ydCBjb25zdCBoYXNUb3VjaCA9IGluQnJvd3NlciAmJiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3c7XG5jb25zdCBoYXNQb2ludGVyRXZlbnRzID0gaW5Ccm93c2VyICYmIHdpbmRvdy5Qb2ludGVyRXZlbnQ7XG5cbmV4cG9ydCBjb25zdCBwb2ludGVyRG93biA9IGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmRvd24nIDogaGFzVG91Y2ggPyAndG91Y2hzdGFydCcgOiAnbW91c2Vkb3duJztcbmV4cG9ydCBjb25zdCBwb2ludGVyTW92ZSA9IGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcm1vdmUnIDogaGFzVG91Y2ggPyAndG91Y2htb3ZlJyA6ICdtb3VzZW1vdmUnO1xuZXhwb3J0IGNvbnN0IHBvaW50ZXJVcCA9IGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcnVwJyA6IGhhc1RvdWNoID8gJ3RvdWNoZW5kJyA6ICdtb3VzZXVwJztcbmV4cG9ydCBjb25zdCBwb2ludGVyRW50ZXIgPSBoYXNQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJlbnRlcicgOiBoYXNUb3VjaCA/ICcnIDogJ21vdXNlZW50ZXInO1xuZXhwb3J0IGNvbnN0IHBvaW50ZXJMZWF2ZSA9IGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmxlYXZlJyA6IGhhc1RvdWNoID8gJycgOiAnbW91c2VsZWF2ZSc7XG5leHBvcnQgY29uc3QgcG9pbnRlckNhbmNlbCA9IGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmNhbmNlbCcgOiAndG91Y2hjYW5jZWwnO1xuIiwiLypcbiAgICBCYXNlZCBvbjpcbiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgV2lsc29uIFBhZ2Ugd2lsc29ucGFnZUBtZS5jb21cbiAgICBodHRwczovL2dpdGh1Yi5jb20vd2lsc29ucGFnZS9mYXN0ZG9tXG4qL1xuXG5leHBvcnQgY29uc3QgZmFzdGRvbSA9IHtcbiAgICByZWFkczogW10sXG4gICAgd3JpdGVzOiBbXSxcblxuICAgIHJlYWQodGFzaykge1xuICAgICAgICB0aGlzLnJlYWRzLnB1c2godGFzayk7XG4gICAgICAgIHNjaGVkdWxlRmx1c2goKTtcbiAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgfSxcblxuICAgIHdyaXRlKHRhc2spIHtcbiAgICAgICAgdGhpcy53cml0ZXMucHVzaCh0YXNrKTtcbiAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICByZXR1cm4gdGFzaztcbiAgICB9LFxuXG4gICAgY2xlYXIodGFzaykge1xuICAgICAgICByZW1vdmUodGhpcy5yZWFkcywgdGFzayk7XG4gICAgICAgIHJlbW92ZSh0aGlzLndyaXRlcywgdGFzayk7XG4gICAgfSxcblxuICAgIGZsdXNoLFxufTtcblxuZnVuY3Rpb24gZmx1c2gocmVjdXJzaW9uKSB7XG4gICAgcnVuVGFza3MoZmFzdGRvbS5yZWFkcyk7XG4gICAgcnVuVGFza3MoZmFzdGRvbS53cml0ZXMuc3BsaWNlKDApKTtcblxuICAgIGZhc3Rkb20uc2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgICBpZiAoZmFzdGRvbS5yZWFkcy5sZW5ndGggfHwgZmFzdGRvbS53cml0ZXMubGVuZ3RoKSB7XG4gICAgICAgIHNjaGVkdWxlRmx1c2gocmVjdXJzaW9uICsgMSk7XG4gICAgfVxufVxuXG5jb25zdCBSRUNVUlNJT05fTElNSVQgPSA0O1xuZnVuY3Rpb24gc2NoZWR1bGVGbHVzaChyZWN1cnNpb24pIHtcbiAgICBpZiAoZmFzdGRvbS5zY2hlZHVsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZhc3Rkb20uc2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBpZiAocmVjdXJzaW9uICYmIHJlY3Vyc2lvbiA8IFJFQ1VSU0lPTl9MSU1JVCkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IGZsdXNoKHJlY3Vyc2lvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBmbHVzaCgxKSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBydW5UYXNrcyh0YXNrcykge1xuICAgIGxldCB0YXNrO1xuICAgIHdoaWxlICgodGFzayA9IHRhc2tzLnNoaWZ0KCkpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0YXNrKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZShhcnJheSwgaXRlbSkge1xuICAgIGNvbnN0IGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICByZXR1cm4gfmluZGV4ICYmIGFycmF5LnNwbGljZShpbmRleCwgMSk7XG59XG4iLCJpbXBvcnQgeyBnZXRFdmVudFBvcywgb24gfSBmcm9tICcuL2V2ZW50JztcbmltcG9ydCB7IGxhc3QsIHBvaW50SW5SZWN0IH0gZnJvbSAnLi9sYW5nJztcblxuZXhwb3J0IGZ1bmN0aW9uIE1vdXNlVHJhY2tlcigpIHt9XG5cbk1vdXNlVHJhY2tlci5wcm90b3R5cGUgPSB7XG4gICAgcG9zaXRpb25zOiBbXSxcblxuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gW107XG5cbiAgICAgICAgbGV0IHBvc2l0aW9uO1xuICAgICAgICB0aGlzLnVuYmluZCA9IG9uKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgKGUpID0+IChwb3NpdGlvbiA9IGdldEV2ZW50UG9zKGUpKSk7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zLmxlbmd0aCA+IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MCk7XG4gICAgfSxcblxuICAgIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy51bmJpbmQ/LigpO1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgIH0sXG5cbiAgICBtb3Zlc1RvKHRhcmdldCkge1xuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgeyBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20gfSA9IHA7XG5cbiAgICAgICAgY29uc3QgW3ByZXZQb3NpdGlvbl0gPSB0aGlzLnBvc2l0aW9ucztcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBsYXN0KHRoaXMucG9zaXRpb25zKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IFtwcmV2UG9zaXRpb24sIHBvc2l0aW9uXTtcblxuICAgICAgICBpZiAocG9pbnRJblJlY3QocG9zaXRpb24sIHApKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWFnb25hbHMgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgeyB4OiBsZWZ0LCB5OiB0b3AgfSxcbiAgICAgICAgICAgICAgICB7IHg6IHJpZ2h0LCB5OiBib3R0b20gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgeyB4OiBsZWZ0LCB5OiBib3R0b20gfSxcbiAgICAgICAgICAgICAgICB7IHg6IHJpZ2h0LCB5OiB0b3AgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIGRpYWdvbmFscy5zb21lKChkaWFnb25hbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0KHBhdGgsIGRpYWdvbmFsKTtcbiAgICAgICAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24gJiYgcG9pbnRJblJlY3QoaW50ZXJzZWN0aW9uLCBwKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbn07XG5cbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9wYXVsYm91cmtlLm5ldC9nZW9tZXRyeS9wb2ludGxpbmVwbGFuZS9cbmZ1bmN0aW9uIGludGVyc2VjdChbeyB4OiB4MSwgeTogeTEgfSwgeyB4OiB4MiwgeTogeTIgfV0sIFt7IHg6IHgzLCB5OiB5MyB9LCB7IHg6IHg0LCB5OiB5NCB9XSkge1xuICAgIGNvbnN0IGRlbm9taW5hdG9yID0gKHk0IC0geTMpICogKHgyIC0geDEpIC0gKHg0IC0geDMpICogKHkyIC0geTEpO1xuXG4gICAgLy8gTGluZXMgYXJlIHBhcmFsbGVsXG4gICAgaWYgKGRlbm9taW5hdG9yID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB1YSA9ICgoeDQgLSB4MykgKiAoeTEgLSB5MykgLSAoeTQgLSB5MykgKiAoeDEgLSB4MykpIC8gZGVub21pbmF0b3I7XG5cbiAgICBpZiAodWEgPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gb2JqZWN0IHdpdGggdGhlIHggYW5kIHkgY29vcmRpbmF0ZXMgb2YgdGhlIGludGVyc2VjdGlvblxuICAgIHJldHVybiB7IHg6IHgxICsgdWEgKiAoeDIgLSB4MSksIHk6IHkxICsgdWEgKiAoeTIgLSB5MSkgfTtcbn1cbiIsImltcG9ydCB7IG9uIH0gZnJvbSAnLi9ldmVudCc7XG5pbXBvcnQgeyBub29wLCB0b05vZGVzIH0gZnJvbSAnLi9sYW5nJztcbmltcG9ydCB7IGluQnJvd3NlciB9IGZyb20gJy4vZW52JztcblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVJbnRlcnNlY3Rpb24odGFyZ2V0cywgY2IsIG9wdGlvbnMgPSB7fSwgeyBpbnRlcnNlY3RpbmcgPSB0cnVlIH0gPSB7fSkge1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICBpbnRlcnNlY3RpbmdcbiAgICAgICAgICAgID8gKGVudHJpZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZW50cmllcy5zb21lKChlbnRyeSkgPT4gZW50cnkuaXNJbnRlcnNlY3RpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY2IoZW50cmllcywgb2JzZXJ2ZXIpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IGNiLFxuICAgICAgICBvcHRpb25zXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGVsIG9mIHRvTm9kZXModGFyZ2V0cykpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9ic2VydmVyO1xufVxuXG5jb25zdCBoYXNSZXNpemVPYnNlcnZlciA9IGluQnJvd3NlciAmJiB3aW5kb3cuUmVzaXplT2JzZXJ2ZXI7XG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZVJlc2l6ZSh0YXJnZXRzLCBjYiwgb3B0aW9ucyA9IHsgYm94OiAnYm9yZGVyLWJveCcgfSkge1xuICAgIGlmIChoYXNSZXNpemVPYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gb2JzZXJ2ZShSZXNpemVPYnNlcnZlciwgdGFyZ2V0cywgY2IsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIFNhZmFyaSA8IDEzLjFcbiAgICBpbml0UmVzaXplTGlzdGVuZXIoKTtcbiAgICBsaXN0ZW5lcnMuYWRkKGNiKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG9ic2VydmU6IG5vb3AsXG4gICAgICAgIHVub2JzZXJ2ZTogbm9vcCxcbiAgICAgICAgZGlzY29ubmVjdCgpIHtcbiAgICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUoY2IpO1xuICAgICAgICB9LFxuICAgIH07XG59XG5cbmxldCBsaXN0ZW5lcnM7XG5mdW5jdGlvbiBpbml0UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgaWYgKGxpc3RlbmVycykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzID0gbmV3IFNldCgpO1xuXG4gICAgLy8gdGhyb3R0bGUgJ3Jlc2l6ZSdcbiAgICBsZXQgcGVuZGluZ1Jlc2l6ZTtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSAoKSA9PiB7XG4gICAgICAgIGlmIChwZW5kaW5nUmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGVuZGluZ1Jlc2l6ZSA9IHRydWU7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAocGVuZGluZ1Jlc2l6ZSA9IGZhbHNlKSk7XG4gICAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBsaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG9uKHdpbmRvdywgJ2xvYWQgcmVzaXplJywgaGFuZGxlUmVzaXplKTtcbiAgICBvbihkb2N1bWVudCwgJ2xvYWRlZG1ldGFkYXRhIGxvYWQnLCBoYW5kbGVSZXNpemUsIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZU11dGF0aW9uKHRhcmdldHMsIGNiLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9ic2VydmUoTXV0YXRpb25PYnNlcnZlciwgdGFyZ2V0cywgY2IsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBvYnNlcnZlKE9ic2VydmVyLCB0YXJnZXRzLCBjYiwgb3B0aW9ucykge1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE9ic2VydmVyKGNiKTtcbiAgICBmb3IgKGNvbnN0IGVsIG9mIHRvTm9kZXModGFyZ2V0cykpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9ic2VydmVyO1xufVxuIiwiaW1wb3J0IHsgaXNUYWcgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBvbmNlIH0gZnJvbSAnLi9ldmVudCc7XG5pbXBvcnQgeyBpbmNsdWRlcywgbm9vcCB9IGZyb20gJy4vbGFuZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5KGVsKSB7XG4gICAgaWYgKGlzSUZyYW1lKGVsKSkge1xuICAgICAgICBjYWxsKGVsLCB7IGZ1bmM6ICdwbGF5VmlkZW8nLCBtZXRob2Q6ICdwbGF5JyB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MNShlbCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVsLnBsYXkoKS5jYXRjaChub29wKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gbm9vcFxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF1c2UoZWwpIHtcbiAgICBpZiAoaXNJRnJhbWUoZWwpKSB7XG4gICAgICAgIGNhbGwoZWwsIHsgZnVuYzogJ3BhdXNlVmlkZW8nLCBtZXRob2Q6ICdwYXVzZScgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlzSFRNTDUoZWwpKSB7XG4gICAgICAgIGVsLnBhdXNlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbXV0ZShlbCkge1xuICAgIGlmIChpc0lGcmFtZShlbCkpIHtcbiAgICAgICAgY2FsbChlbCwgeyBmdW5jOiAnbXV0ZScsIG1ldGhvZDogJ3NldFZvbHVtZScsIHZhbHVlOiAwIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0hUTUw1KGVsKSkge1xuICAgICAgICBlbC5tdXRlZCA9IHRydWU7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWaWRlbyhlbCkge1xuICAgIHJldHVybiBpc0hUTUw1KGVsKSB8fCBpc0lGcmFtZShlbCk7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTDUoZWwpIHtcbiAgICByZXR1cm4gaXNUYWcoZWwsICd2aWRlbycpO1xufVxuXG5mdW5jdGlvbiBpc0lGcmFtZShlbCkge1xuICAgIHJldHVybiBpc1RhZyhlbCwgJ2lmcmFtZScpICYmIChpc1lvdXR1YmUoZWwpIHx8IGlzVmltZW8oZWwpKTtcbn1cblxuZnVuY3Rpb24gaXNZb3V0dWJlKGVsKSB7XG4gICAgcmV0dXJuICEhZWwuc3JjLm1hdGNoKFxuICAgICAgICAvXFwvXFwvLio/eW91dHViZSgtbm9jb29raWUpP1xcLlthLXpdK1xcLyh3YXRjaFxcP3Y9W14mXFxzXSt8ZW1iZWQpfHlvdXR1XFwuYmVcXC8uKi9cbiAgICApO1xufVxuXG5mdW5jdGlvbiBpc1ZpbWVvKGVsKSB7XG4gICAgcmV0dXJuICEhZWwuc3JjLm1hdGNoKC92aW1lb1xcLmNvbVxcL3ZpZGVvXFwvLiovKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsbChlbCwgY21kKSB7XG4gICAgYXdhaXQgZW5hYmxlQXBpKGVsKTtcbiAgICBwb3N0KGVsLCBjbWQpO1xufVxuXG5mdW5jdGlvbiBwb3N0KGVsLCBjbWQpIHtcbiAgICB0cnkge1xuICAgICAgICBlbC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHsgZXZlbnQ6ICdjb21tYW5kJywgLi4uY21kIH0pLCAnKicpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gbm9vcFxuICAgIH1cbn1cblxuY29uc3Qgc3RhdGVLZXkgPSAnX3VrUGxheWVyJztcbmxldCBjb3VudGVyID0gMDtcbmZ1bmN0aW9uIGVuYWJsZUFwaShlbCkge1xuICAgIGlmIChlbFtzdGF0ZUtleV0pIHtcbiAgICAgICAgcmV0dXJuIGVsW3N0YXRlS2V5XTtcbiAgICB9XG5cbiAgICBjb25zdCB5b3V0dWJlID0gaXNZb3V0dWJlKGVsKTtcbiAgICBjb25zdCB2aW1lbyA9IGlzVmltZW8oZWwpO1xuXG4gICAgY29uc3QgaWQgPSArK2NvdW50ZXI7XG4gICAgbGV0IHBvbGxlcjtcblxuICAgIHJldHVybiAoZWxbc3RhdGVLZXldID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgeW91dHViZSAmJlxuICAgICAgICAgICAgb25jZShlbCwgJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSAoKSA9PiBwb3N0KGVsLCB7IGV2ZW50OiAnbGlzdGVuaW5nJywgaWQgfSk7XG4gICAgICAgICAgICAgICAgcG9sbGVyID0gc2V0SW50ZXJ2YWwobGlzdGVuZXIsIDEwMCk7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIG9uY2Uod2luZG93LCAnbWVzc2FnZScsIHJlc29sdmUsIGZhbHNlLCAoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgKHlvdXR1YmUgJiYgZGF0YT8uaWQgPT09IGlkICYmIGRhdGEuZXZlbnQgPT09ICdvblJlYWR5JykgfHxcbiAgICAgICAgICAgICAgICAgICAgKHZpbWVvICYmIE51bWJlcihkYXRhPy5wbGF5ZXJfaWQpID09PSBpZClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWwuc3JjID0gYCR7ZWwuc3JjfSR7aW5jbHVkZXMoZWwuc3JjLCAnPycpID8gJyYnIDogJz8nfSR7XG4gICAgICAgICAgICB5b3V0dWJlID8gJ2VuYWJsZWpzYXBpPTEnIDogYGFwaT0xJnBsYXllcl9pZD0ke2lkfWBcbiAgICAgICAgfWA7XG4gICAgfSkudGhlbigoKSA9PiBjbGVhckludGVydmFsKHBvbGxlcikpKTtcbn1cbiIsImltcG9ydCB7IGNzcyB9IGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IHsgaXNWaXNpYmxlLCBwYXJlbnRzIH0gZnJvbSAnLi9maWx0ZXInO1xuaW1wb3J0IHsgb2Zmc2V0LCBvZmZzZXRQb3NpdGlvbiB9IGZyb20gJy4vZGltZW5zaW9ucyc7XG5pbXBvcnQge1xuICAgIGNsYW1wLFxuICAgIGZpbmRJbmRleCxcbiAgICBpbmNsdWRlcyxcbiAgICBpbnRlcnNlY3RSZWN0LFxuICAgIGlzV2luZG93LFxuICAgIHRvRmxvYXQsXG4gICAgdG9XaW5kb3csXG4gICAgdWNmaXJzdCxcbn0gZnJvbSAnLi9sYW5nJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5WaWV3KGVsZW1lbnQsIG9mZnNldFRvcCA9IDAsIG9mZnNldExlZnQgPSAwKSB7XG4gICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBpbnRlcnNlY3RSZWN0KFxuICAgICAgICAuLi5vdmVyZmxvd1BhcmVudHMoZWxlbWVudClcbiAgICAgICAgICAgIC5tYXAoKHBhcmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0IH0gPSBvZmZzZXRWaWV3cG9ydChwYXJlbnQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3AgLSBvZmZzZXRUb3AsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQgLSBvZmZzZXRMZWZ0LFxuICAgICAgICAgICAgICAgICAgICBib3R0b206IGJvdHRvbSArIG9mZnNldFRvcCxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0ICsgb2Zmc2V0TGVmdCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jb25jYXQob2Zmc2V0KGVsZW1lbnQpKVxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxJbnRvVmlldyhlbGVtZW50LCB7IG9mZnNldDogb2Zmc2V0QnkgPSAwIH0gPSB7fSkge1xuICAgIGNvbnN0IHBhcmVudHMgPSBpc1Zpc2libGUoZWxlbWVudCkgPyBzY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGZhbHNlLCBbJ2hpZGRlbiddKSA6IFtdO1xuICAgIHJldHVybiBwYXJlbnRzLnJlZHVjZShcbiAgICAgICAgKGZuLCBzY3JvbGxFbGVtZW50LCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBvZmZzZXRIZWlnaHQgfSA9IHNjcm9sbEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IG9mZnNldFZpZXdwb3J0KHNjcm9sbEVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgbWF4U2Nyb2xsID0gc2Nyb2xsSGVpZ2h0IC0gdmlld3BvcnQuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgeyBoZWlnaHQ6IGVsSGVpZ2h0LCB0b3A6IGVsVG9wIH0gPSBwYXJlbnRzW2kgLSAxXVxuICAgICAgICAgICAgICAgID8gb2Zmc2V0Vmlld3BvcnQocGFyZW50c1tpIC0gMV0pXG4gICAgICAgICAgICAgICAgOiBvZmZzZXQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGxldCB0b3AgPSBNYXRoLmNlaWwoZWxUb3AgLSB2aWV3cG9ydC50b3AgLSBvZmZzZXRCeSArIHNjcm9sbFRvcCk7XG5cbiAgICAgICAgICAgIGlmIChvZmZzZXRCeSA+IDAgJiYgb2Zmc2V0SGVpZ2h0IDwgZWxIZWlnaHQgKyBvZmZzZXRCeSkge1xuICAgICAgICAgICAgICAgIHRvcCArPSBvZmZzZXRCeTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0QnkgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG9wID4gbWF4U2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0QnkgLT0gdG9wIC0gbWF4U2Nyb2xsO1xuICAgICAgICAgICAgICAgIHRvcCA9IG1heFNjcm9sbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG9wIDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldEJ5IC09IHRvcDtcbiAgICAgICAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gc2Nyb2xsVG8oc2Nyb2xsRWxlbWVudCwgdG9wIC0gc2Nyb2xsVG9wKS50aGVuKGZuKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICApKCk7XG5cbiAgICBmdW5jdGlvbiBzY3JvbGxUbyhlbGVtZW50LCB0b3ApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGwgPSBlbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gZ2V0RHVyYXRpb24oTWF0aC5hYnModG9wKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICAgIChmdW5jdGlvbiBzdGVwKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNlbnQgPSBlYXNlKGNsYW1wKChEYXRlLm5vdygpIC0gc3RhcnQpIC8gZHVyYXRpb24pKTtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsICsgdG9wICogcGVyY2VudDtcblxuICAgICAgICAgICAgICAgIC8vIHNjcm9sbCBtb3JlIGlmIHdlIGhhdmUgbm90IHJlYWNoZWQgb3VyIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgICAgaWYgKHBlcmNlbnQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREdXJhdGlvbihkaXN0KSB7XG4gICAgICAgIHJldHVybiA0MCAqIE1hdGgucG93KGRpc3QsIDAuMzc1KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlYXNlKGspIHtcbiAgICAgICAgcmV0dXJuIDAuNSAqICgxIC0gTWF0aC5jb3MoTWF0aC5QSSAqIGspKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxlZE92ZXIoZWxlbWVudCwgc3RhcnRPZmZzZXQgPSAwLCBlbmRPZmZzZXQgPSAwKSB7XG4gICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgW3Njcm9sbEVsZW1lbnRdID0gc2Nyb2xsUGFyZW50cyhlbGVtZW50LCB0cnVlKTtcbiAgICBjb25zdCB7IHNjcm9sbEhlaWdodCwgc2Nyb2xsVG9wIH0gPSBzY3JvbGxFbGVtZW50O1xuICAgIGNvbnN0IHsgaGVpZ2h0OiB2aWV3cG9ydEhlaWdodCB9ID0gb2Zmc2V0Vmlld3BvcnQoc2Nyb2xsRWxlbWVudCk7XG4gICAgY29uc3QgbWF4U2Nyb2xsID0gc2Nyb2xsSGVpZ2h0IC0gdmlld3BvcnRIZWlnaHQ7XG4gICAgY29uc3QgZWxlbWVudE9mZnNldFRvcCA9IG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpWzBdIC0gb2Zmc2V0UG9zaXRpb24oc2Nyb2xsRWxlbWVudClbMF07XG5cbiAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIGVsZW1lbnRPZmZzZXRUb3AgLSB2aWV3cG9ydEhlaWdodCArIHN0YXJ0T2Zmc2V0KTtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihtYXhTY3JvbGwsIGVsZW1lbnRPZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAtIGVuZE9mZnNldCk7XG5cbiAgICByZXR1cm4gY2xhbXAoKHNjcm9sbFRvcCAtIHN0YXJ0KSAvIChlbmQgLSBzdGFydCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2Nyb2xsUGFyZW50cyhlbGVtZW50LCBzY3JvbGxhYmxlID0gZmFsc2UsIHByb3BzID0gW10pIHtcbiAgICBjb25zdCBzY3JvbGxFbCA9IHNjcm9sbGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBsZXQgYW5jZXN0b3JzID0gcGFyZW50cyhlbGVtZW50KS5yZXZlcnNlKCk7XG4gICAgYW5jZXN0b3JzID0gYW5jZXN0b3JzLnNsaWNlKGFuY2VzdG9ycy5pbmRleE9mKHNjcm9sbEVsKSArIDEpO1xuXG4gICAgY29uc3QgZml4ZWRJbmRleCA9IGZpbmRJbmRleChhbmNlc3RvcnMsIChlbCkgPT4gY3NzKGVsLCAncG9zaXRpb24nKSA9PT0gJ2ZpeGVkJyk7XG4gICAgaWYgKH5maXhlZEluZGV4KSB7XG4gICAgICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycy5zbGljZShmaXhlZEluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gW3Njcm9sbEVsXVxuICAgICAgICAuY29uY2F0KFxuICAgICAgICAgICAgYW5jZXN0b3JzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAocGFyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICBjc3MocGFyZW50LCAnb3ZlcmZsb3cnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb21lKChwcm9wKSA9PiBpbmNsdWRlcyhbJ2F1dG8nLCAnc2Nyb2xsJywgLi4ucHJvcHNdLCBwcm9wKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKCFzY3JvbGxhYmxlIHx8IHBhcmVudC5zY3JvbGxIZWlnaHQgPiBvZmZzZXRWaWV3cG9ydChwYXJlbnQpLmhlaWdodClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAucmV2ZXJzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3ZlcmZsb3dQYXJlbnRzKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gc2Nyb2xsUGFyZW50cyhlbGVtZW50LCBmYWxzZSwgWydoaWRkZW4nLCAnY2xpcCddKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9mZnNldFZpZXdwb3J0KHNjcm9sbEVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW5kb3cgPSB0b1dpbmRvdyhzY3JvbGxFbGVtZW50KTtcbiAgICBjb25zdCB7XG4gICAgICAgIHZpc3VhbFZpZXdwb3J0LFxuICAgICAgICBkb2N1bWVudDogeyBkb2N1bWVudEVsZW1lbnQgfSxcbiAgICB9ID0gd2luZG93O1xuICAgIGxldCB2aWV3cG9ydEVsZW1lbnQgPVxuICAgICAgICBzY3JvbGxFbGVtZW50ID09PSBzY3JvbGxpbmdFbGVtZW50KHNjcm9sbEVsZW1lbnQpID8gd2luZG93IDogc2Nyb2xsRWxlbWVudDtcblxuICAgIGlmIChpc1dpbmRvdyh2aWV3cG9ydEVsZW1lbnQpICYmIHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgICAgIGxldCB7IGhlaWdodCwgd2lkdGgsIHNjYWxlLCBwYWdlVG9wOiB0b3AsIHBhZ2VMZWZ0OiBsZWZ0IH0gPSB2aXN1YWxWaWV3cG9ydDtcbiAgICAgICAgaGVpZ2h0ID0gTWF0aC5yb3VuZChoZWlnaHQgKiBzY2FsZSk7XG4gICAgICAgIHdpZHRoID0gTWF0aC5yb3VuZCh3aWR0aCAqIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHsgaGVpZ2h0LCB3aWR0aCwgdG9wLCBsZWZ0LCBib3R0b206IHRvcCArIGhlaWdodCwgcmlnaHQ6IGxlZnQgKyB3aWR0aCB9O1xuICAgIH1cblxuICAgIGxldCByZWN0ID0gb2Zmc2V0KHZpZXdwb3J0RWxlbWVudCk7XG4gICAgaWYgKGNzcyh2aWV3cG9ydEVsZW1lbnQsICdkaXNwbGF5JykgPT09ICdpbmxpbmUnKSB7XG4gICAgICAgIHJldHVybiByZWN0O1xuICAgIH1cblxuICAgIGZvciAobGV0IFtwcm9wLCBkaXIsIHN0YXJ0LCBlbmRdIG9mIFtcbiAgICAgICAgWyd3aWR0aCcsICd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgWydoZWlnaHQnLCAneScsICd0b3AnLCAnYm90dG9tJ10sXG4gICAgXSkge1xuICAgICAgICBpZiAoaXNXaW5kb3codmlld3BvcnRFbGVtZW50KSkge1xuICAgICAgICAgICAgLy8gaU9TIDEyIHJldHVybnMgPGJvZHk+IGFzIHNjcm9sbGluZ0VsZW1lbnRcbiAgICAgICAgICAgIHZpZXdwb3J0RWxlbWVudCA9IGRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlY3Rbc3RhcnRdICs9IHRvRmxvYXQoY3NzKHZpZXdwb3J0RWxlbWVudCwgYGJvcmRlci0ke3N0YXJ0fS13aWR0aGApKTtcbiAgICAgICAgfVxuICAgICAgICByZWN0W3Byb3BdID0gcmVjdFtkaXJdID0gdmlld3BvcnRFbGVtZW50W2BjbGllbnQke3VjZmlyc3QocHJvcCl9YF07XG4gICAgICAgIHJlY3RbZW5kXSA9IHJlY3RbcHJvcF0gKyByZWN0W3N0YXJ0XTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIHNjcm9sbGluZ0VsZW1lbnQoZWxlbWVudCkge1xuICAgIHJldHVybiB0b1dpbmRvdyhlbGVtZW50KS5kb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50O1xufVxuIiwiaW1wb3J0IHsgY3NzIH0gZnJvbSAnLi9zdHlsZSc7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tICcuL2ZpbHRlcic7XG5pbXBvcnQgeyBvZmZzZXQgfSBmcm9tICcuL2RpbWVuc2lvbnMnO1xuaW1wb3J0IHsgY2xhbXAsIGlzQXJyYXksIHVjZmlyc3QgfSBmcm9tICcuL2xhbmcnO1xuaW1wb3J0IHsgb2Zmc2V0Vmlld3BvcnQsIG92ZXJmbG93UGFyZW50cyB9IGZyb20gJy4vdmlld3BvcnQnO1xuXG5jb25zdCBkaXJzID0gW1xuICAgIFsnd2lkdGgnLCAneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgWydoZWlnaHQnLCAneScsICd0b3AnLCAnYm90dG9tJ10sXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25BdChlbGVtZW50LCB0YXJnZXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgICBhdHRhY2g6IHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IFsnbGVmdCcsICd0b3AnXSxcbiAgICAgICAgICAgIHRhcmdldDogWydsZWZ0JywgJ3RvcCddLFxuICAgICAgICAgICAgLi4ub3B0aW9ucy5hdHRhY2gsXG4gICAgICAgIH0sXG4gICAgICAgIG9mZnNldDogWzAsIDBdLFxuICAgICAgICBwbGFjZW1lbnQ6IFtdLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgICB0YXJnZXQgPSBbdGFyZ2V0LCB0YXJnZXRdO1xuICAgIH1cblxuICAgIG9mZnNldChlbGVtZW50LCBnZXRQb3NpdGlvbihlbGVtZW50LCB0YXJnZXQsIG9wdGlvbnMpKTtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zaXRpb24oZWxlbWVudCwgdGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBhdHRhY2hUbyhlbGVtZW50LCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgYm91bmRhcnksIHZpZXdwb3J0T2Zmc2V0ID0gMCwgcGxhY2VtZW50IH0gPSBvcHRpb25zO1xuXG4gICAgbGV0IG9mZnNldFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgZm9yIChjb25zdCBbaSwgW3Byb3AsICwgc3RhcnQsIGVuZF1dIG9mIE9iamVjdC5lbnRyaWVzKGRpcnMpKSB7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gZ2V0Vmlld3BvcnQoZWxlbWVudCwgdGFyZ2V0W2ldLCB2aWV3cG9ydE9mZnNldCwgYm91bmRhcnksIGkpO1xuXG4gICAgICAgIGlmIChpc1dpdGhpbihwb3NpdGlvbiwgdmlld3BvcnQsIGkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvZmZzZXRCeSA9IDA7XG5cbiAgICAgICAgLy8gRmxpcFxuICAgICAgICBpZiAocGxhY2VtZW50W2ldID09PSAnZmxpcCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaCA9IG9wdGlvbnMuYXR0YWNoLnRhcmdldFtpXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoYXR0YWNoID09PSBlbmQgJiYgcG9zaXRpb25bZW5kXSA8PSB2aWV3cG9ydFtlbmRdKSB8fFxuICAgICAgICAgICAgICAgIChhdHRhY2ggPT09IHN0YXJ0ICYmIHBvc2l0aW9uW3N0YXJ0XSA+PSB2aWV3cG9ydFtzdGFydF0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb2Zmc2V0QnkgPSBmbGlwKGVsZW1lbnQsIHRhcmdldCwgb3B0aW9ucywgaSlbc3RhcnRdIC0gcG9zaXRpb25bc3RhcnRdO1xuXG4gICAgICAgICAgICBjb25zdCBzY3JvbGxBcmVhID0gZ2V0U2Nyb2xsQXJlYShlbGVtZW50LCB0YXJnZXRbaV0sIHZpZXdwb3J0T2Zmc2V0LCBpKTtcblxuICAgICAgICAgICAgaWYgKCFpc1dpdGhpbihhcHBseU9mZnNldChwb3NpdGlvbiwgb2Zmc2V0QnksIGkpLCBzY3JvbGxBcmVhLCBpKSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1dpdGhpbihwb3NpdGlvbiwgc2Nyb2xsQXJlYSwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucmVjdXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQb3MgPSBmbGlwQXhpcyhlbGVtZW50LCB0YXJnZXQsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1BvcyAmJiBpc1dpdGhpbihuZXdQb3MsIHNjcm9sbEFyZWEsIDEgLSBpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3UG9zO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaGlmdFxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudFtpXSA9PT0gJ3NoaWZ0Jykge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RGltID0gb2Zmc2V0KHRhcmdldFtpXSk7XG4gICAgICAgICAgICBjb25zdCB7IG9mZnNldDogZWxPZmZzZXQgfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICBvZmZzZXRCeSA9XG4gICAgICAgICAgICAgICAgY2xhbXAoXG4gICAgICAgICAgICAgICAgICAgIGNsYW1wKHBvc2l0aW9uW3N0YXJ0XSwgdmlld3BvcnRbc3RhcnRdLCB2aWV3cG9ydFtlbmRdIC0gcG9zaXRpb25bcHJvcF0pLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXREaW1bc3RhcnRdIC0gcG9zaXRpb25bcHJvcF0gKyBlbE9mZnNldFtpXSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RGltW2VuZF0gLSBlbE9mZnNldFtpXVxuICAgICAgICAgICAgICAgICkgLSBwb3NpdGlvbltzdGFydF07XG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXRQb3NpdGlvbiA9IGFwcGx5T2Zmc2V0KG9mZnNldFBvc2l0aW9uLCBvZmZzZXRCeSwgaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldFBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBhdHRhY2hUbyhlbGVtZW50LCB0YXJnZXQsIG9wdGlvbnMpIHtcbiAgICBsZXQgeyBhdHRhY2gsIG9mZnNldDogb2Zmc2V0QnkgfSA9IHtcbiAgICAgICAgYXR0YWNoOiB7XG4gICAgICAgICAgICBlbGVtZW50OiBbJ2xlZnQnLCAndG9wJ10sXG4gICAgICAgICAgICB0YXJnZXQ6IFsnbGVmdCcsICd0b3AnXSxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuYXR0YWNoLFxuICAgICAgICB9LFxuICAgICAgICBvZmZzZXQ6IFswLCAwXSxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgbGV0IGVsT2Zmc2V0ID0gb2Zmc2V0KGVsZW1lbnQpO1xuXG4gICAgZm9yIChjb25zdCBbaSwgW3Byb3AsICwgc3RhcnQsIGVuZF1dIG9mIE9iamVjdC5lbnRyaWVzKGRpcnMpKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldE9mZnNldCA9XG4gICAgICAgICAgICBhdHRhY2gudGFyZ2V0W2ldID09PSBhdHRhY2guZWxlbWVudFtpXSA/IG9mZnNldFZpZXdwb3J0KHRhcmdldFtpXSkgOiBvZmZzZXQodGFyZ2V0W2ldKTtcblxuICAgICAgICBlbE9mZnNldCA9IGFwcGx5T2Zmc2V0KFxuICAgICAgICAgICAgZWxPZmZzZXQsXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXRbc3RhcnRdIC1cbiAgICAgICAgICAgICAgICBlbE9mZnNldFtzdGFydF0gK1xuICAgICAgICAgICAgICAgIG1vdmVCeShhdHRhY2gudGFyZ2V0W2ldLCBlbmQsIHRhcmdldE9mZnNldFtwcm9wXSkgLVxuICAgICAgICAgICAgICAgIG1vdmVCeShhdHRhY2guZWxlbWVudFtpXSwgZW5kLCBlbE9mZnNldFtwcm9wXSkgK1xuICAgICAgICAgICAgICAgICtvZmZzZXRCeVtpXSxcbiAgICAgICAgICAgIGlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGVsT2Zmc2V0O1xufVxuXG5mdW5jdGlvbiBhcHBseU9mZnNldChwb3NpdGlvbiwgb2Zmc2V0LCBpKSB7XG4gICAgY29uc3QgWywgZGlyLCBzdGFydCwgZW5kXSA9IGRpcnNbaV07XG4gICAgY29uc3QgbmV3UG9zID0geyAuLi5wb3NpdGlvbiB9O1xuICAgIG5ld1Bvc1tzdGFydF0gPSBwb3NpdGlvbltkaXJdID0gcG9zaXRpb25bc3RhcnRdICsgb2Zmc2V0O1xuICAgIG5ld1Bvc1tlbmRdICs9IG9mZnNldDtcbiAgICByZXR1cm4gbmV3UG9zO1xufVxuXG5mdW5jdGlvbiBtb3ZlQnkoYXR0YWNoLCBlbmQsIGRpbSkge1xuICAgIHJldHVybiBhdHRhY2ggPT09ICdjZW50ZXInID8gZGltIC8gMiA6IGF0dGFjaCA9PT0gZW5kID8gZGltIDogMDtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnQoZWxlbWVudCwgdGFyZ2V0LCB2aWV3cG9ydE9mZnNldCwgYm91bmRhcnksIGkpIHtcbiAgICBsZXQgdmlld3BvcnQgPSBnZXRJbnRlcnNlY3Rpb25BcmVhKC4uLmNvbW1vblNjcm9sbFBhcmVudHMoZWxlbWVudCwgdGFyZ2V0KS5tYXAob2Zmc2V0Vmlld3BvcnQpKTtcblxuICAgIGlmICh2aWV3cG9ydE9mZnNldCkge1xuICAgICAgICB2aWV3cG9ydFtkaXJzW2ldWzJdXSArPSB2aWV3cG9ydE9mZnNldDtcbiAgICAgICAgdmlld3BvcnRbZGlyc1tpXVszXV0gLT0gdmlld3BvcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGJvdW5kYXJ5KSB7XG4gICAgICAgIHZpZXdwb3J0ID0gZ2V0SW50ZXJzZWN0aW9uQXJlYShcbiAgICAgICAgICAgIHZpZXdwb3J0LFxuICAgICAgICAgICAgb2Zmc2V0KGlzQXJyYXkoYm91bmRhcnkpID8gYm91bmRhcnlbaV0gOiBib3VuZGFyeSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlld3BvcnQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbEFyZWEoZWxlbWVudCwgdGFyZ2V0LCB2aWV3cG9ydE9mZnNldCwgaSkge1xuICAgIGNvbnN0IFtwcm9wLCBheGlzLCBzdGFydCwgZW5kXSA9IGRpcnNbaV07XG4gICAgY29uc3QgW3Njcm9sbEVsZW1lbnRdID0gY29tbW9uU2Nyb2xsUGFyZW50cyhlbGVtZW50LCB0YXJnZXQpO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gb2Zmc2V0Vmlld3BvcnQoc2Nyb2xsRWxlbWVudCk7XG5cbiAgICBpZiAoWydhdXRvJywgJ3Njcm9sbCddLmluY2x1ZGVzKGNzcyhzY3JvbGxFbGVtZW50LCBgb3ZlcmZsb3ctJHtheGlzfWApKSkge1xuICAgICAgICB2aWV3cG9ydFtzdGFydF0gLT0gc2Nyb2xsRWxlbWVudFtgc2Nyb2xsJHt1Y2ZpcnN0KHN0YXJ0KX1gXTtcbiAgICAgICAgdmlld3BvcnRbZW5kXSA9IHZpZXdwb3J0W3N0YXJ0XSArIHNjcm9sbEVsZW1lbnRbYHNjcm9sbCR7dWNmaXJzdChwcm9wKX1gXTtcbiAgICB9XG5cbiAgICB2aWV3cG9ydFtzdGFydF0gKz0gdmlld3BvcnRPZmZzZXQ7XG4gICAgdmlld3BvcnRbZW5kXSAtPSB2aWV3cG9ydE9mZnNldDtcblxuICAgIHJldHVybiB2aWV3cG9ydDtcbn1cblxuZnVuY3Rpb24gY29tbW9uU2Nyb2xsUGFyZW50cyhlbGVtZW50LCB0YXJnZXQpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dQYXJlbnRzKHRhcmdldCkuZmlsdGVyKChwYXJlbnQpID0+IHdpdGhpbihlbGVtZW50LCBwYXJlbnQpKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW50ZXJzZWN0aW9uQXJlYSguLi5yZWN0cykge1xuICAgIGxldCBhcmVhID0ge307XG4gICAgZm9yIChjb25zdCByZWN0IG9mIHJlY3RzKSB7XG4gICAgICAgIGZvciAoY29uc3QgWywgLCBzdGFydCwgZW5kXSBvZiBkaXJzKSB7XG4gICAgICAgICAgICBhcmVhW3N0YXJ0XSA9IE1hdGgubWF4KGFyZWFbc3RhcnRdIHx8IDAsIHJlY3Rbc3RhcnRdKTtcbiAgICAgICAgICAgIGFyZWFbZW5kXSA9IE1hdGgubWluKC4uLlthcmVhW2VuZF0sIHJlY3RbZW5kXV0uZmlsdGVyKEJvb2xlYW4pKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJlYTtcbn1cblxuZnVuY3Rpb24gaXNXaXRoaW4ocG9zaXRpb25BLCBwb3NpdGlvbkIsIGkpIHtcbiAgICBjb25zdCBbLCAsIHN0YXJ0LCBlbmRdID0gZGlyc1tpXTtcbiAgICByZXR1cm4gcG9zaXRpb25BW3N0YXJ0XSA+PSBwb3NpdGlvbkJbc3RhcnRdICYmIHBvc2l0aW9uQVtlbmRdIDw9IHBvc2l0aW9uQltlbmRdO1xufVxuXG5mdW5jdGlvbiBmbGlwKGVsZW1lbnQsIHRhcmdldCwgeyBvZmZzZXQsIGF0dGFjaCB9LCBpKSB7XG4gICAgcmV0dXJuIGF0dGFjaFRvKGVsZW1lbnQsIHRhcmdldCwge1xuICAgICAgICBhdHRhY2g6IHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGZsaXBBdHRhY2goYXR0YWNoLmVsZW1lbnQsIGkpLFxuICAgICAgICAgICAgdGFyZ2V0OiBmbGlwQXR0YWNoKGF0dGFjaC50YXJnZXQsIGkpLFxuICAgICAgICB9LFxuICAgICAgICBvZmZzZXQ6IGZsaXBPZmZzZXQob2Zmc2V0LCBpKSxcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZmxpcEF4aXMoZWxlbWVudCwgdGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGdldFBvc2l0aW9uKGVsZW1lbnQsIHRhcmdldCwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBhdHRhY2g6IHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IG9wdGlvbnMuYXR0YWNoLmVsZW1lbnQubWFwKGZsaXBBdHRhY2hBeGlzKS5yZXZlcnNlKCksXG4gICAgICAgICAgICB0YXJnZXQ6IG9wdGlvbnMuYXR0YWNoLnRhcmdldC5tYXAoZmxpcEF0dGFjaEF4aXMpLnJldmVyc2UoKSxcbiAgICAgICAgfSxcbiAgICAgICAgb2Zmc2V0OiBvcHRpb25zLm9mZnNldC5yZXZlcnNlKCksXG4gICAgICAgIHBsYWNlbWVudDogb3B0aW9ucy5wbGFjZW1lbnQucmV2ZXJzZSgpLFxuICAgICAgICByZWN1cnNpb246IHRydWUsXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGZsaXBBdHRhY2goYXR0YWNoLCBpKSB7XG4gICAgY29uc3QgbmV3QXR0YWNoID0gWy4uLmF0dGFjaF07XG4gICAgY29uc3QgaW5kZXggPSBkaXJzW2ldLmluZGV4T2YoYXR0YWNoW2ldKTtcbiAgICBpZiAofmluZGV4KSB7XG4gICAgICAgIG5ld0F0dGFjaFtpXSA9IGRpcnNbaV1bMSAtIChpbmRleCAlIDIpICsgMl07XG4gICAgfVxuICAgIHJldHVybiBuZXdBdHRhY2g7XG59XG5cbmZ1bmN0aW9uIGZsaXBBdHRhY2hBeGlzKHByb3ApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBkaXJzW2ldLmluZGV4T2YocHJvcCk7XG4gICAgICAgIGlmICh+aW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXJzWzEgLSBpXVsoaW5kZXggJSAyKSArIDJdO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmbGlwT2Zmc2V0KG9mZnNldCwgaSkge1xuICAgIG9mZnNldCA9IFsuLi5vZmZzZXRdO1xuICAgIG9mZnNldFtpXSAqPSAtMTtcbiAgICByZXR1cm4gb2Zmc2V0O1xufVxuIiwiaW1wb3J0IHsgaGFzT3duLCBpc0VxdWFsLCBpc1BsYWluT2JqZWN0IH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0V2F0Y2hlcyhpbnN0YW5jZSkge1xuICAgIGluc3RhbmNlLl93YXRjaGVzID0gW107XG4gICAgZm9yIChjb25zdCB3YXRjaGVzIG9mIGluc3RhbmNlLiRvcHRpb25zLndhdGNoIHx8IFtdKSB7XG4gICAgICAgIGZvciAoY29uc3QgW25hbWUsIHdhdGNoXSBvZiBPYmplY3QuZW50cmllcyh3YXRjaGVzKSkge1xuICAgICAgICAgICAgcmVnaXN0ZXJXYXRjaChpbnN0YW5jZSwgd2F0Y2gsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc3RhbmNlLl9pbml0aWFsID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyV2F0Y2goaW5zdGFuY2UsIHdhdGNoLCBuYW1lKSB7XG4gICAgaW5zdGFuY2UuX3dhdGNoZXMucHVzaCh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIC4uLihpc1BsYWluT2JqZWN0KHdhdGNoKSA/IHdhdGNoIDogeyBoYW5kbGVyOiB3YXRjaCB9KSxcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bldhdGNoZXMoaW5zdGFuY2UsIHZhbHVlcykge1xuICAgIGZvciAoY29uc3QgeyBuYW1lLCBoYW5kbGVyLCBpbW1lZGlhdGUgPSB0cnVlIH0gb2YgaW5zdGFuY2UuX3dhdGNoZXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGluc3RhbmNlLl9pbml0aWFsICYmIGltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgIChoYXNPd24odmFsdWVzLCBuYW1lKSAmJiAhaXNFcXVhbCh2YWx1ZXNbbmFtZV0sIGluc3RhbmNlW25hbWVdKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBoYW5kbGVyLmNhbGwoaW5zdGFuY2UsIGluc3RhbmNlW25hbWVdLCB2YWx1ZXNbbmFtZV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc3RhbmNlLl9pbml0aWFsID0gZmFsc2U7XG59XG4iLCJpbXBvcnQgeyBhc3NpZ24sIGZhc3Rkb20sIGlzUGxhaW5PYmplY3QgfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRVcGRhdGVzKGluc3RhbmNlKSB7XG4gICAgaW5zdGFuY2UuX2RhdGEgPSB7fTtcbiAgICBpbnN0YW5jZS5fdXBkYXRlcyA9IFsuLi4oaW5zdGFuY2UuJG9wdGlvbnMudXBkYXRlIHx8IFtdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwZW5kVXBkYXRlKGluc3RhbmNlLCB1cGRhdGUpIHtcbiAgICBpbnN0YW5jZS5fdXBkYXRlcy51bnNoaWZ0KHVwZGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclVwZGF0ZURhdGEoaW5zdGFuY2UpIHtcbiAgICBkZWxldGUgaW5zdGFuY2UuX2RhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxsVXBkYXRlKGluc3RhbmNlLCBlID0gJ3VwZGF0ZScpIHtcbiAgICBpZiAoIWluc3RhbmNlLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaW5zdGFuY2UuX3VwZGF0ZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWluc3RhbmNlLl9xdWV1ZWQpIHtcbiAgICAgICAgaW5zdGFuY2UuX3F1ZXVlZCA9IG5ldyBTZXQoKTtcbiAgICAgICAgZmFzdGRvbS5yZWFkKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcnVuVXBkYXRlcyhpbnN0YW5jZSwgaW5zdGFuY2UuX3F1ZXVlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgaW5zdGFuY2UuX3F1ZXVlZDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5zdGFuY2UuX3F1ZXVlZC5hZGQoZS50eXBlIHx8IGUpO1xufVxuXG5mdW5jdGlvbiBydW5VcGRhdGVzKGluc3RhbmNlLCB0eXBlcykge1xuICAgIGZvciAoY29uc3QgeyByZWFkLCB3cml0ZSwgZXZlbnRzID0gW10gfSBvZiBpbnN0YW5jZS5fdXBkYXRlcykge1xuICAgICAgICBpZiAoIXR5cGVzLmhhcygndXBkYXRlJykgJiYgIWV2ZW50cy5zb21lKCh0eXBlKSA9PiB0eXBlcy5oYXModHlwZSkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGlmIChyZWFkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZWFkLmNhbGwoaW5zdGFuY2UsIGluc3RhbmNlLl9kYXRhLCB0eXBlcyk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgYXNzaWduKGluc3RhbmNlLl9kYXRhLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHdyaXRlICYmIHJlc3VsdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlLmNhbGwoaW5zdGFuY2UsIGluc3RhbmNlLl9kYXRhLCB0eXBlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgeyBydW5XYXRjaGVzIH0gZnJvbSAnLi93YXRjaCc7XG5pbXBvcnQgeyBjYWxsVXBkYXRlLCBwcmVwZW5kVXBkYXRlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IHsgaGFzT3duLCBpc1VuZGVmaW5lZCB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdENvbXB1dGVkKGluc3RhbmNlKSB7XG4gICAgY29uc3QgeyBjb21wdXRlZCB9ID0gaW5zdGFuY2UuJG9wdGlvbnM7XG5cbiAgICBpbnN0YW5jZS5fY29tcHV0ZWQgPSB7fTtcblxuICAgIGlmIChjb21wdXRlZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wdXRlZCkge1xuICAgICAgICAgICAgcmVnaXN0ZXJDb21wdXRlZChpbnN0YW5jZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29tcHV0ZWQoaW5zdGFuY2UsIGtleSwgY2IpIHtcbiAgICBpbnN0YW5jZS5faGFzQ29tcHV0ZWQgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0YW5jZSwga2V5LCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG5cbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgY29uc3QgeyBfY29tcHV0ZWQsICRwcm9wcywgJGVsIH0gPSBpbnN0YW5jZTtcblxuICAgICAgICAgICAgaWYgKCFoYXNPd24oX2NvbXB1dGVkLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgX2NvbXB1dGVkW2tleV0gPSAoY2IuZ2V0IHx8IGNiKS5jYWxsKGluc3RhbmNlLCAkcHJvcHMsICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfY29tcHV0ZWRba2V5XTtcbiAgICAgICAgfSxcblxuICAgICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgX2NvbXB1dGVkIH0gPSBpbnN0YW5jZTtcblxuICAgICAgICAgICAgX2NvbXB1dGVkW2tleV0gPSBjYi5zZXQgPyBjYi5zZXQuY2FsbChpbnN0YW5jZSwgdmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChfY29tcHV0ZWRba2V5XSkpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgX2NvbXB1dGVkW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q29tcHV0ZWRVcGRhdGVzKGluc3RhbmNlKSB7XG4gICAgaWYgKCFpbnN0YW5jZS5faGFzQ29tcHV0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByZXBlbmRVcGRhdGUoaW5zdGFuY2UsIHtcbiAgICAgICAgcmVhZDogKCkgPT4gcnVuV2F0Y2hlcyhpbnN0YW5jZSwgcmVzZXRDb21wdXRlZChpbnN0YW5jZSkpLFxuICAgICAgICBldmVudHM6IFsncmVzaXplJywgJ2NvbXB1dGVkJ10sXG4gICAgfSk7XG5cbiAgICByZWdpc3RlckNvbXB1dGVkT2JzZXJ2ZXIoKTtcbiAgICBpbnN0YW5jZXMuYWRkKGluc3RhbmNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2Nvbm5lY3RDb21wdXRlZFVwZGF0ZXMoaW5zdGFuY2UpIHtcbiAgICBpbnN0YW5jZXM/LmRlbGV0ZShpbnN0YW5jZSk7XG4gICAgcmVzZXRDb21wdXRlZChpbnN0YW5jZSk7XG59XG5cbmZ1bmN0aW9uIHJlc2V0Q29tcHV0ZWQoaW5zdGFuY2UpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB7IC4uLmluc3RhbmNlLl9jb21wdXRlZCB9O1xuICAgIGluc3RhbmNlLl9jb21wdXRlZCA9IHt9O1xuICAgIHJldHVybiB2YWx1ZXM7XG59XG5cbmxldCBvYnNlcnZlcjtcbmxldCBpbnN0YW5jZXM7XG5mdW5jdGlvbiByZWdpc3RlckNvbXB1dGVkT2JzZXJ2ZXIoKSB7XG4gICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnN0YW5jZXMgPSBuZXcgU2V0KCk7XG4gICAgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgaW5zdGFuY2VzKSB7XG4gICAgICAgICAgICBjYWxsVXBkYXRlKGluc3RhbmNlLCAnY29tcHV0ZWQnKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHtcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xufVxuIiwiaW1wb3J0IHsgaGFzT3duLCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1BsYWluT2JqZWN0LCBpc1N0cmluZywgb24gfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRFdmVudHMoaW5zdGFuY2UpIHtcbiAgICBpbnN0YW5jZS5fZXZlbnRzID0gW107XG4gICAgZm9yIChjb25zdCBldmVudCBvZiBpbnN0YW5jZS4kb3B0aW9ucy5ldmVudHMgfHwgW10pIHtcbiAgICAgICAgaWYgKGhhc093bihldmVudCwgJ2hhbmRsZXInKSkge1xuICAgICAgICAgICAgcmVnaXN0ZXJFdmVudChpbnN0YW5jZSwgZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KGluc3RhbmNlLCBldmVudFtrZXldLCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5iaW5kRXZlbnRzKGluc3RhbmNlKSB7XG4gICAgaW5zdGFuY2UuX2V2ZW50cy5mb3JFYWNoKCh1bmJpbmQpID0+IHVuYmluZCgpKTtcbiAgICBkZWxldGUgaW5zdGFuY2UuX2V2ZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRXZlbnQoaW5zdGFuY2UsIGV2ZW50LCBrZXkpIHtcbiAgICBsZXQgeyBuYW1lLCBlbCwgaGFuZGxlciwgY2FwdHVyZSwgcGFzc2l2ZSwgZGVsZWdhdGUsIGZpbHRlciwgc2VsZiB9ID0gaXNQbGFpbk9iamVjdChldmVudClcbiAgICAgICAgPyBldmVudFxuICAgICAgICA6IHsgbmFtZToga2V5LCBoYW5kbGVyOiBldmVudCB9O1xuICAgIGVsID0gaXNGdW5jdGlvbihlbCkgPyBlbC5jYWxsKGluc3RhbmNlLCBpbnN0YW5jZSkgOiBlbCB8fCBpbnN0YW5jZS4kZWw7XG5cbiAgICBpZiAoaXNBcnJheShlbCkpIHtcbiAgICAgICAgZWwuZm9yRWFjaCgoZWwpID0+IHJlZ2lzdGVyRXZlbnQoaW5zdGFuY2UsIHsgLi4uZXZlbnQsIGVsIH0sIGtleSkpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFlbCB8fCAoZmlsdGVyICYmICFmaWx0ZXIuY2FsbChpbnN0YW5jZSkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5fZXZlbnRzLnB1c2goXG4gICAgICAgIG9uKFxuICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgZGVsZWdhdGUgPyAoaXNTdHJpbmcoZGVsZWdhdGUpID8gZGVsZWdhdGUgOiBkZWxlZ2F0ZS5jYWxsKGluc3RhbmNlLCBpbnN0YW5jZSkpIDogbnVsbCxcbiAgICAgICAgICAgIGlzU3RyaW5nKGhhbmRsZXIpID8gaW5zdGFuY2VbaGFuZGxlcl0gOiBoYW5kbGVyLmJpbmQoaW5zdGFuY2UpLFxuICAgICAgICAgICAgeyBwYXNzaXZlLCBjYXB0dXJlLCBzZWxmIH1cbiAgICAgICAgKVxuICAgICk7XG59XG4iLCJpbXBvcnQgeyByZWdpc3RlcldhdGNoIH0gZnJvbSAnLi93YXRjaCc7XG5pbXBvcnQgeyByZWdpc3RlckNvbXB1dGVkIH0gZnJvbSAnLi9jb21wdXRlZCc7XG5pbXBvcnQgeyBoYXNPd24sIGluY2x1ZGVzLCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc1N0cmluZyB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdE9ic2VydmVycyhpbnN0YW5jZSkge1xuICAgIGluc3RhbmNlLl9vYnNlcnZlcnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG9ic2VydmVyIG9mIGluc3RhbmNlLiRvcHRpb25zLm9ic2VydmUgfHwgW10pIHtcbiAgICAgICAgaWYgKGhhc093bihvYnNlcnZlciwgJ2hhbmRsZXInKSkge1xuICAgICAgICAgICAgcmVnaXN0ZXJPYnNlcnZhYmxlKGluc3RhbmNlLCBvYnNlcnZlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9ic2VydmFibGUgb2Ygb2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICByZWdpc3Rlck9ic2VydmFibGUoaW5zdGFuY2UsIG9ic2VydmFibGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJPYnNlcnZlcihpbnN0YW5jZSwgLi4ub2JzZXJ2ZXIpIHtcbiAgICBpbnN0YW5jZS5fb2JzZXJ2ZXJzLnB1c2goLi4ub2JzZXJ2ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzY29ubmVjdE9ic2VydmVycyhpbnN0YW5jZSkge1xuICAgIGZvciAoY29uc3Qgb2JzZXJ2ZXIgb2YgaW5zdGFuY2UuX29ic2VydmVycykge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWdpc3Rlck9ic2VydmFibGUoaW5zdGFuY2UsIG9ic2VydmFibGUpIHtcbiAgICBsZXQgeyBvYnNlcnZlLCB0YXJnZXQgPSBpbnN0YW5jZS4kZWwsIGhhbmRsZXIsIG9wdGlvbnMsIGZpbHRlciwgYXJncyB9ID0gb2JzZXJ2YWJsZTtcblxuICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRlci5jYWxsKGluc3RhbmNlLCBpbnN0YW5jZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGBfb2JzZXJ2ZSR7aW5zdGFuY2UuX29ic2VydmVycy5sZW5ndGh9YDtcbiAgICBpZiAoaXNGdW5jdGlvbih0YXJnZXQpICYmICFoYXNPd24oaW5zdGFuY2UsIGtleSkpIHtcbiAgICAgICAgcmVnaXN0ZXJDb21wdXRlZChpbnN0YW5jZSwga2V5LCAoKSA9PiB0YXJnZXQuY2FsbChpbnN0YW5jZSwgaW5zdGFuY2UpKTtcbiAgICB9XG5cbiAgICBoYW5kbGVyID0gaXNTdHJpbmcoaGFuZGxlcikgPyBpbnN0YW5jZVtoYW5kbGVyXSA6IGhhbmRsZXIuYmluZChpbnN0YW5jZSk7XG5cbiAgICBpZiAoaXNGdW5jdGlvbihvcHRpb25zKSkge1xuICAgICAgICBvcHRpb25zID0gb3B0aW9ucy5jYWxsKGluc3RhbmNlLCBpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0cyA9IGhhc093bihpbnN0YW5jZSwga2V5KSA/IGluc3RhbmNlW2tleV0gOiB0YXJnZXQ7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBvYnNlcnZlKHRhcmdldHMsIGhhbmRsZXIsIG9wdGlvbnMsIGFyZ3MpO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24odGFyZ2V0KSAmJiBpc0FycmF5KGluc3RhbmNlW2tleV0pICYmIG9ic2VydmVyLnVub2JzZXJ2ZSkge1xuICAgICAgICByZWdpc3RlcldhdGNoKGluc3RhbmNlLCB7IGhhbmRsZXI6IHVwZGF0ZVRhcmdldHMob2JzZXJ2ZXIpLCBpbW1lZGlhdGU6IGZhbHNlIH0sIGtleSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPYnNlcnZlcihpbnN0YW5jZSwgb2JzZXJ2ZXIpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVUYXJnZXRzKG9ic2VydmVyKSB7XG4gICAgcmV0dXJuICh0YXJnZXRzLCBwcmV2KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHByZXYpIHtcbiAgICAgICAgICAgICFpbmNsdWRlcyh0YXJnZXRzLCB0YXJnZXQpICYmIG9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cykge1xuICAgICAgICAgICAgIWluY2x1ZGVzKHByZXYsIHRhcmdldCkgJiYgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiIsImltcG9ydCB7XG4gICAgaGFzT3duLFxuICAgIGluY2x1ZGVzLFxuICAgIGlzQXJyYXksXG4gICAgaXNGdW5jdGlvbixcbiAgICBpc051bWVyaWMsXG4gICAgaXNTdHJpbmcsXG4gICAgaXNVbmRlZmluZWQsXG4gICAgc29ydEJ5LFxuICAgIHN0YXJ0c1dpdGgsXG4gICAgdG9Cb29sZWFuLFxuICAgIHRvTnVtYmVyLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuY29uc3Qgc3RyYXRzID0ge307XG5cbnN0cmF0cy5ldmVudHMgPVxuICAgIHN0cmF0cy53YXRjaCA9XG4gICAgc3RyYXRzLm9ic2VydmUgPVxuICAgIHN0cmF0cy5jcmVhdGVkID1cbiAgICBzdHJhdHMuYmVmb3JlQ29ubmVjdCA9XG4gICAgc3RyYXRzLmNvbm5lY3RlZCA9XG4gICAgc3RyYXRzLmJlZm9yZURpc2Nvbm5lY3QgPVxuICAgIHN0cmF0cy5kaXNjb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5kZXN0cm95ID1cbiAgICAgICAgY29uY2F0U3RyYXQ7XG5cbi8vIGFyZ3Mgc3RyYXRlZ3lcbnN0cmF0cy5hcmdzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgICByZXR1cm4gY2hpbGRWYWwgIT09IGZhbHNlICYmIGNvbmNhdFN0cmF0KGNoaWxkVmFsIHx8IHBhcmVudFZhbCk7XG59O1xuXG4vLyB1cGRhdGUgc3RyYXRlZ3lcbnN0cmF0cy51cGRhdGUgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBzb3J0QnkoXG4gICAgICAgIGNvbmNhdFN0cmF0KHBhcmVudFZhbCwgaXNGdW5jdGlvbihjaGlsZFZhbCkgPyB7IHJlYWQ6IGNoaWxkVmFsIH0gOiBjaGlsZFZhbCksXG4gICAgICAgICdvcmRlcidcbiAgICApO1xufTtcblxuLy8gcHJvcGVydHkgc3RyYXRlZ3lcbnN0cmF0cy5wcm9wcyA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gICAgaWYgKGlzQXJyYXkoY2hpbGRWYWwpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGNoaWxkVmFsKSB7XG4gICAgICAgICAgICB2YWx1ZVtrZXldID0gU3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIGNoaWxkVmFsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmF0cy5tZXRob2RzKHBhcmVudFZhbCwgY2hpbGRWYWwpO1xufTtcblxuLy8gZXh0ZW5kIHN0cmF0ZWd5XG5zdHJhdHMuY29tcHV0ZWQgPSBzdHJhdHMubWV0aG9kcyA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gICAgcmV0dXJuIGNoaWxkVmFsID8gKHBhcmVudFZhbCA/IHsgLi4ucGFyZW50VmFsLCAuLi5jaGlsZFZhbCB9IDogY2hpbGRWYWwpIDogcGFyZW50VmFsO1xufTtcblxuLy8gZGF0YSBzdHJhdGVneVxuc3RyYXRzLmkxOG4gPSBzdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkge1xuICAgIGlmICghdm0pIHtcbiAgICAgICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRWYWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZtKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VGbkRhdGEocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSk7XG59O1xuXG5mdW5jdGlvbiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkge1xuICAgIHJldHVybiBzdHJhdHMuY29tcHV0ZWQoXG4gICAgICAgIGlzRnVuY3Rpb24ocGFyZW50VmFsKSA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSkgOiBwYXJlbnRWYWwsXG4gICAgICAgIGlzRnVuY3Rpb24oY2hpbGRWYWwpID8gY2hpbGRWYWwuY2FsbCh2bSwgdm0pIDogY2hpbGRWYWxcbiAgICApO1xufVxuXG4vLyBjb25jYXQgc3RyYXRlZ3lcbmZ1bmN0aW9uIGNvbmNhdFN0cmF0KHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgICBwYXJlbnRWYWwgPSBwYXJlbnRWYWwgJiYgIWlzQXJyYXkocGFyZW50VmFsKSA/IFtwYXJlbnRWYWxdIDogcGFyZW50VmFsO1xuXG4gICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgICAgID8gcGFyZW50VmFsXG4gICAgICAgICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICAgICAgICA6IGlzQXJyYXkoY2hpbGRWYWwpXG4gICAgICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICAgICAgOiBwYXJlbnRWYWw7XG59XG5cbi8vIGRlZmF1bHQgc3RyYXRlZ3lcbmZ1bmN0aW9uIGRlZmF1bHRTdHJhdChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XG4gICAgcmV0dXJuIGlzVW5kZWZpbmVkKGNoaWxkVmFsKSA/IHBhcmVudFZhbCA6IGNoaWxkVmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQsIHZtKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oY2hpbGQpKSB7XG4gICAgICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgICB9XG5cbiAgICBpZiAoY2hpbGQuZXh0ZW5kcykge1xuICAgICAgICBwYXJlbnQgPSBtZXJnZU9wdGlvbnMocGFyZW50LCBjaGlsZC5leHRlbmRzLCB2bSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgICBmb3IgKGNvbnN0IG1peGluIG9mIGNoaWxkLm1peGlucykge1xuICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgbWl4aW4sIHZtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmVudCkge1xuICAgICAgICBtZXJnZUtleShrZXkpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IGluIGNoaWxkKSB7XG4gICAgICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5KSkge1xuICAgICAgICAgICAgbWVyZ2VLZXkoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlS2V5KGtleSkge1xuICAgICAgICBvcHRpb25zW2tleV0gPSAoc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0KShwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0pO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPcHRpb25zKG9wdGlvbnMsIGFyZ3MgPSBbXSkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zXG4gICAgICAgICAgICA/IHN0YXJ0c1dpdGgob3B0aW9ucywgJ3snKVxuICAgICAgICAgICAgICAgID8gSlNPTi5wYXJzZShvcHRpb25zKVxuICAgICAgICAgICAgICAgIDogYXJncy5sZW5ndGggJiYgIWluY2x1ZGVzKG9wdGlvbnMsICc6JylcbiAgICAgICAgICAgICAgICA/IHsgW2FyZ3NbMF1dOiBvcHRpb25zIH1cbiAgICAgICAgICAgICAgICA6IG9wdGlvbnMuc3BsaXQoJzsnKS5yZWR1Y2UoKG9wdGlvbnMsIG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IG9wdGlvbi5zcGxpdCgvOiguKikvKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICYmICFpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1trZXkudHJpbSgpXSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICB9LCB7fSlcbiAgICAgICAgICAgIDoge307XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlKHR5cGUsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGUgPT09IEJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHRvQm9vbGVhbih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBOdW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRvTnVtYmVyKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgICByZXR1cm4gdG9MaXN0KHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE9iamVjdCAmJiBpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlT3B0aW9ucyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGUgPyB0eXBlKHZhbHVlKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiB0b0xpc3QodmFsdWUpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICA6IGlzU3RyaW5nKHZhbHVlKVxuICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAgIC5zcGxpdCgvLCg/IVteKF0qXFwpKS8pXG4gICAgICAgICAgICAgIC5tYXAoKHZhbHVlKSA9PiAoaXNOdW1lcmljKHZhbHVlKSA/IHRvTnVtYmVyKHZhbHVlKSA6IHRvQm9vbGVhbih2YWx1ZS50cmltKCkpKSlcbiAgICAgICAgOiBbdmFsdWVdO1xufVxuIiwiaW1wb3J0IHsgcmVnaXN0ZXJPYnNlcnZlciB9IGZyb20gJy4vb2JzZXJ2ZXInO1xuaW1wb3J0IHsgY29lcmNlLCBwYXJzZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgY2FtZWxpemUsIGRhdGEgYXMgZ2V0RGF0YSwgaGFzT3duLCBoeXBoZW5hdGUsIGlzVW5kZWZpbmVkLCBzdGFydHNXaXRoIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0UHJvcHMoaW5zdGFuY2UpIHtcbiAgICBjb25zdCBwcm9wcyA9IGdldFByb3BzKGluc3RhbmNlLiRvcHRpb25zKTtcblxuICAgIGZvciAobGV0IGtleSBpbiBwcm9wcykge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHByb3BzW2tleV0pKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS4kcHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBleGNsdWRlID0gW2luc3RhbmNlLiRvcHRpb25zLmNvbXB1dGVkLCBpbnN0YW5jZS4kb3B0aW9ucy5tZXRob2RzXTtcbiAgICBmb3IgKGxldCBrZXkgaW4gaW5zdGFuY2UuJHByb3BzKSB7XG4gICAgICAgIGlmIChrZXkgaW4gcHJvcHMgJiYgbm90SW4oZXhjbHVkZSwga2V5KSkge1xuICAgICAgICAgICAgaW5zdGFuY2Vba2V5XSA9IGluc3RhbmNlLiRwcm9wc1trZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcHMob3B0cykge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICBjb25zdCB7IGFyZ3MgPSBbXSwgcHJvcHMgPSB7fSwgZWwsIGlkIH0gPSBvcHRzO1xuXG4gICAgaWYgKCFwcm9wcykge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgICAgICBjb25zdCBwcm9wID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldERhdGEoZWwsIHByb3ApO1xuXG4gICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSBwcm9wc1trZXldID09PSBCb29sZWFuICYmIHZhbHVlID09PSAnJyA/IHRydWUgOiBjb2VyY2UocHJvcHNba2V5XSwgdmFsdWUpO1xuXG4gICAgICAgIGlmIChwcm9wID09PSAndGFyZ2V0JyAmJiBzdGFydHNXaXRoKHZhbHVlLCAnXycpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBwYXJzZU9wdGlvbnMoZ2V0RGF0YShlbCwgaWQpLCBhcmdzKTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcHJvcCA9IGNhbWVsaXplKGtleSk7XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQocHJvcHNbcHJvcF0pKSB7XG4gICAgICAgICAgICBkYXRhW3Byb3BdID0gY29lcmNlKHByb3BzW3Byb3BdLCBvcHRpb25zW2tleV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIG5vdEluKG9wdGlvbnMsIGtleSkge1xuICAgIHJldHVybiBvcHRpb25zLmV2ZXJ5KChhcnIpID0+ICFhcnIgfHwgIWhhc093bihhcnIsIGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdFByb3BzT2JzZXJ2ZXIoaW5zdGFuY2UpIHtcbiAgICBjb25zdCB7ICRvcHRpb25zLCAkcHJvcHMgfSA9IGluc3RhbmNlO1xuICAgIGNvbnN0IHsgaWQsIHByb3BzLCBlbCB9ID0gJG9wdGlvbnM7XG5cbiAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICAgIGNvbnN0IGZpbHRlciA9IGF0dHJpYnV0ZXMubWFwKChrZXkpID0+IGh5cGhlbmF0ZShrZXkpKS5jb25jYXQoaWQpO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gZ2V0UHJvcHMoJG9wdGlvbnMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICByZWNvcmRzLnNvbWUoKHsgYXR0cmlidXRlTmFtZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IGF0dHJpYnV0ZU5hbWUucmVwbGFjZSgnZGF0YS0nLCAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChwcm9wID09PSBpZCA/IGF0dHJpYnV0ZXMgOiBbY2FtZWxpemUocHJvcCksIGNhbWVsaXplKGF0dHJpYnV0ZU5hbWUpXSkuc29tZShcbiAgICAgICAgICAgICAgICAgICAgKHByb3ApID0+ICFpc1VuZGVmaW5lZChkYXRhW3Byb3BdKSAmJiBkYXRhW3Byb3BdICE9PSAkcHJvcHNbcHJvcF1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS4kcmVzZXQoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IGZpbHRlci5jb25jYXQoZmlsdGVyLm1hcCgoa2V5KSA9PiBgZGF0YS0ke2tleX1gKSksXG4gICAgfSk7XG5cbiAgICByZWdpc3Rlck9ic2VydmVyKGluc3RhbmNlLCBvYnNlcnZlcik7XG59XG4iLCJpbXBvcnQgeyBkaXNjb25uZWN0Q29tcHV0ZWRVcGRhdGVzLCBpbml0Q29tcHV0ZWRVcGRhdGVzIH0gZnJvbSAnLi9jb21wdXRlZCc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZyc7XG5pbXBvcnQgeyBpbml0V2F0Y2hlcyB9IGZyb20gJy4vd2F0Y2gnO1xuaW1wb3J0IHsgY2FsbFVwZGF0ZSwgY2xlYXJVcGRhdGVEYXRhLCBpbml0VXBkYXRlcyB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCB7IGluaXRFdmVudHMsIHVuYmluZEV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGluaXRQcm9wcywgaW5pdFByb3BzT2JzZXJ2ZXIgfSBmcm9tICcuL3Byb3BzJztcbmltcG9ydCB7IGRpc2Nvbm5lY3RPYnNlcnZlcnMsIGluaXRPYnNlcnZlcnMgfSBmcm9tICcuL29ic2VydmVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGxIb29rKGluc3RhbmNlLCBob29rKSB7XG4gICAgTE9HICYmIGxvZyhpbnN0YW5jZSwgaG9vayk7XG4gICAgaW5zdGFuY2UuJG9wdGlvbnNbaG9va10/LmZvckVhY2goKGhhbmRsZXIpID0+IGhhbmRsZXIuY2FsbChpbnN0YW5jZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsbENvbm5lY3RlZChpbnN0YW5jZSkge1xuICAgIGlmIChpbnN0YW5jZS5fY29ubmVjdGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpbml0UHJvcHMoaW5zdGFuY2UpO1xuXG4gICAgY2FsbEhvb2soaW5zdGFuY2UsICdiZWZvcmVDb25uZWN0Jyk7XG4gICAgaW5zdGFuY2UuX2Nvbm5lY3RlZCA9IHRydWU7XG5cbiAgICBpbml0RXZlbnRzKGluc3RhbmNlKTtcbiAgICBpbml0VXBkYXRlcyhpbnN0YW5jZSk7XG4gICAgaW5pdFdhdGNoZXMoaW5zdGFuY2UpO1xuICAgIGluaXRPYnNlcnZlcnMoaW5zdGFuY2UpO1xuXG4gICAgaW5pdFByb3BzT2JzZXJ2ZXIoaW5zdGFuY2UpO1xuICAgIGluaXRDb21wdXRlZFVwZGF0ZXMoaW5zdGFuY2UpO1xuXG4gICAgY2FsbEhvb2soaW5zdGFuY2UsICdjb25uZWN0ZWQnKTtcbiAgICBjYWxsVXBkYXRlKGluc3RhbmNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGxEaXNjb25uZWN0ZWQoaW5zdGFuY2UpIHtcbiAgICBpZiAoIWluc3RhbmNlLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhbGxIb29rKGluc3RhbmNlLCAnYmVmb3JlRGlzY29ubmVjdCcpO1xuXG4gICAgdW5iaW5kRXZlbnRzKGluc3RhbmNlKTtcbiAgICBjbGVhclVwZGF0ZURhdGEoaW5zdGFuY2UpO1xuICAgIGRpc2Nvbm5lY3RPYnNlcnZlcnMoaW5zdGFuY2UpO1xuICAgIGRpc2Nvbm5lY3RDb21wdXRlZFVwZGF0ZXMoaW5zdGFuY2UpO1xuXG4gICAgY2FsbEhvb2soaW5zdGFuY2UsICdkaXNjb25uZWN0ZWQnKTtcblxuICAgIGluc3RhbmNlLl9jb25uZWN0ZWQgPSBmYWxzZTtcbn1cbiIsImltcG9ydCB7IGNhbGxIb29rIH0gZnJvbSAnLi9ob29rcyc7XG5pbXBvcnQgeyBpbml0Q29tcHV0ZWQgfSBmcm9tICcuL2NvbXB1dGVkJztcbmltcG9ydCB7IGNvZXJjZSwgbWVyZ2VPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IGFzc2lnbiwgaXNBcnJheSwgaXNQbGFpbk9iamVjdCwgaXNVbmRlZmluZWQgfSBmcm9tICd1aWtpdC11dGlsJztcblxubGV0IHVpZCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0KGluc3RhbmNlLCBvcHRpb25zID0ge30pIHtcbiAgICBvcHRpb25zLmRhdGEgPSBub3JtYWxpemVEYXRhKG9wdGlvbnMsIGluc3RhbmNlLmNvbnN0cnVjdG9yLm9wdGlvbnMpO1xuXG4gICAgaW5zdGFuY2UuJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoaW5zdGFuY2UuY29uc3RydWN0b3Iub3B0aW9ucywgb3B0aW9ucywgaW5zdGFuY2UpO1xuXG4gICAgaW5zdGFuY2UuJHByb3BzID0ge307XG5cbiAgICBpbnN0YW5jZS5fdWlkID0gdWlkKys7XG4gICAgaW5pdERhdGEoaW5zdGFuY2UpO1xuICAgIGluaXRNZXRob2RzKGluc3RhbmNlKTtcbiAgICBpbml0Q29tcHV0ZWQoaW5zdGFuY2UpO1xuICAgIGNhbGxIb29rKGluc3RhbmNlLCAnY3JlYXRlZCcpO1xuXG4gICAgaWYgKG9wdGlvbnMuZWwpIHtcbiAgICAgICAgaW5zdGFuY2UuJG1vdW50KG9wdGlvbnMuZWwpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoaW5zdGFuY2UpIHtcbiAgICBjb25zdCB7IGRhdGEgPSB7fSB9ID0gaW5zdGFuY2UuJG9wdGlvbnM7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgIGluc3RhbmNlLiRwcm9wc1trZXldID0gaW5zdGFuY2Vba2V5XSA9IGRhdGFba2V5XTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGluaXRNZXRob2RzKGluc3RhbmNlKSB7XG4gICAgY29uc3QgeyBtZXRob2RzIH0gPSBpbnN0YW5jZS4kb3B0aW9ucztcblxuICAgIGlmIChtZXRob2RzKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1ldGhvZHMpIHtcbiAgICAgICAgICAgIGluc3RhbmNlW2tleV0gPSBtZXRob2RzW2tleV0uYmluZChpbnN0YW5jZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEoeyBkYXRhID0ge30gfSwgeyBhcmdzID0gW10sIHByb3BzID0ge30gfSkge1xuICAgIGlmIChpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKDAsIGFyZ3MubGVuZ3RoKS5yZWR1Y2UoKGRhdGEsIHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgYXNzaWduKGRhdGEsIHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YVthcmdzW2luZGV4XV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQoZGF0YVtrZXldKSkge1xuICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wc1trZXldKSB7XG4gICAgICAgICAgICBkYXRhW2tleV0gPSBjb2VyY2UocHJvcHNba2V5XSwgZGF0YVtrZXldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xufVxuIiwiaW1wb3J0IHsgaW5pdCB9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICd1aWtpdC11dGlsJztcblxuY29uc3QgQXBwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICBpbml0KHRoaXMsIG9wdGlvbnMpO1xufTtcblxuQXBwLnV0aWwgPSB1dGlsO1xuQXBwLm9wdGlvbnMgPSB7fTtcbkFwcC52ZXJzaW9uID0gVkVSU0lPTjtcblxuZXhwb3J0IGRlZmF1bHQgQXBwO1xuIiwiaW1wb3J0IEFwcCBmcm9tICcuL2FwcCc7XG5pbXBvcnQgeyAkJCwgY2FtZWxpemUsIGh5cGhlbmF0ZSwgaXNFbXB0eSwgaXNQbGFpbk9iamVjdCB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5jb25zdCBQUkVGSVggPSAndWstJztcbmNvbnN0IERBVEEgPSAnX191aWtpdF9fJztcblxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudHMgPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvbmVudChuYW1lLCBvcHRpb25zKSB7XG4gICAgY29uc3QgaWQgPSBQUkVGSVggKyBoeXBoZW5hdGUobmFtZSk7XG5cbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoY29tcG9uZW50c1tpZF0pKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzW2lkXSA9IEFwcC5leHRlbmQoY29tcG9uZW50c1tpZF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbaWRdO1xuICAgIH1cblxuICAgIG5hbWUgPSBjYW1lbGl6ZShuYW1lKTtcblxuICAgIEFwcFtuYW1lXSA9IChlbGVtZW50LCBkYXRhKSA9PiBjcmVhdGVDb21wb25lbnQobmFtZSwgZWxlbWVudCwgZGF0YSk7XG5cbiAgICBjb25zdCBvcHQgPSBpc1BsYWluT2JqZWN0KG9wdGlvbnMpID8geyAuLi5vcHRpb25zIH0gOiBvcHRpb25zLm9wdGlvbnM7XG5cbiAgICBvcHQuaWQgPSBpZDtcbiAgICBvcHQubmFtZSA9IG5hbWU7XG5cbiAgICBvcHQuaW5zdGFsbD8uKEFwcCwgb3B0LCBuYW1lKTtcblxuICAgIGlmIChBcHAuX2luaXRpYWxpemVkICYmICFvcHQuZnVuY3Rpb25hbCkge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gY3JlYXRlQ29tcG9uZW50KG5hbWUsIGBbJHtpZH1dLFtkYXRhLSR7aWR9XWApKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGNvbXBvbmVudHNbaWRdID0gb3B0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudChuYW1lLCBlbGVtZW50LCBkYXRhLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgQ29tcG9uZW50ID0gY29tcG9uZW50KG5hbWUpO1xuXG4gICAgcmV0dXJuIENvbXBvbmVudC5vcHRpb25zLmZ1bmN0aW9uYWxcbiAgICAgICAgPyBuZXcgQ29tcG9uZW50KHsgZGF0YTogaXNQbGFpbk9iamVjdChlbGVtZW50KSA/IGVsZW1lbnQgOiBbZWxlbWVudCwgZGF0YSwgLi4uYXJnc10gfSlcbiAgICAgICAgOiBlbGVtZW50XG4gICAgICAgID8gJCQoZWxlbWVudCkubWFwKGluaXQpWzBdXG4gICAgICAgIDogaW5pdCgpO1xuXG4gICAgZnVuY3Rpb24gaW5pdChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gZ2V0Q29tcG9uZW50KGVsZW1lbnQsIG5hbWUpO1xuXG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudCh7IGVsOiBlbGVtZW50LCBkYXRhIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBvbmVudHMoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50Py5bREFUQV0gfHwge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21wb25lbnQoZWxlbWVudCwgbmFtZSkge1xuICAgIHJldHVybiBnZXRDb21wb25lbnRzKGVsZW1lbnQpW25hbWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoVG9FbGVtZW50KGVsZW1lbnQsIGluc3RhbmNlKSB7XG4gICAgaWYgKCFlbGVtZW50W0RBVEFdKSB7XG4gICAgICAgIGVsZW1lbnRbREFUQV0gPSB7fTtcbiAgICB9XG5cbiAgICBlbGVtZW50W0RBVEFdW2luc3RhbmNlLiRvcHRpb25zLm5hbWVdID0gaW5zdGFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2hGcm9tRWxlbWVudChlbGVtZW50LCBpbnN0YW5jZSkge1xuICAgIGRlbGV0ZSBlbGVtZW50W0RBVEFdPy5baW5zdGFuY2UuJG9wdGlvbnMubmFtZV07XG5cbiAgICBpZiAoIWlzRW1wdHkoZWxlbWVudFtEQVRBXSkpIHtcbiAgICAgICAgZGVsZXRlIGVsZW1lbnRbREFUQV07XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgaW5pdCB9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHsgY2FsbFVwZGF0ZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCB7IG1lcmdlT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBjb21wb25lbnQsIGdldENvbXBvbmVudCwgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4vY29tcG9uZW50JztcbmltcG9ydCB7ICQsIGFwcGx5LCBpc1N0cmluZywgcGFyZW50cywgdG9Ob2RlIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChBcHApIHtcbiAgICBBcHAuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIEFwcC5nZXRDb21wb25lbnRzID0gZ2V0Q29tcG9uZW50cztcbiAgICBBcHAuZ2V0Q29tcG9uZW50ID0gZ2V0Q29tcG9uZW50O1xuICAgIEFwcC51cGRhdGUgPSB1cGRhdGU7XG5cbiAgICBBcHAudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcGx1Z2luLmNhbGwobnVsbCwgdGhpcyk7XG4gICAgICAgIHBsdWdpbi5pbnN0YWxsZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICBBcHAubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4sIGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnQgPSAoaXNTdHJpbmcoY29tcG9uZW50KSA/IHRoaXMuY29tcG9uZW50KGNvbXBvbmVudCkgOiBjb21wb25lbnQpIHx8IHRoaXM7XG4gICAgICAgIGNvbXBvbmVudC5vcHRpb25zID0gbWVyZ2VPcHRpb25zKGNvbXBvbmVudC5vcHRpb25zLCBtaXhpbik7XG4gICAgfTtcblxuICAgIEFwcC5leHRlbmQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICBjb25zdCBTdXBlciA9IHRoaXM7XG4gICAgICAgIGNvbnN0IFN1YiA9IGZ1bmN0aW9uIFVJa2l0Q29tcG9uZW50KG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGluaXQodGhpcywgb3B0aW9ucyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgU3ViLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTtcbiAgICAgICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICAgICAgU3ViLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoU3VwZXIub3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgU3ViLnN1cGVyID0gU3VwZXI7XG4gICAgICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG5cbiAgICAgICAgcmV0dXJuIFN1YjtcbiAgICB9O1xuXG4gICAgbGV0IGNvbnRhaW5lcjtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXBwLCAnY29udGFpbmVyJywge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2V0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lciA9ICQoZWxlbWVudCk7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGUoZWxlbWVudCwgZSkge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50ID8gdG9Ob2RlKGVsZW1lbnQpIDogZG9jdW1lbnQuYm9keTtcblxuICAgIGZvciAoY29uc3QgcGFyZW50RWwgb2YgcGFyZW50cyhlbGVtZW50KS5yZXZlcnNlKCkpIHtcbiAgICAgICAgdXBkYXRlRWxlbWVudChwYXJlbnRFbCwgZSk7XG4gICAgfVxuXG4gICAgYXBwbHkoZWxlbWVudCwgKGVsZW1lbnQpID0+IHVwZGF0ZUVsZW1lbnQoZWxlbWVudCwgZSkpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVFbGVtZW50KGVsZW1lbnQsIGUpIHtcbiAgICBjb25zdCBjb21wb25lbnRzID0gZ2V0Q29tcG9uZW50cyhlbGVtZW50KTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY29tcG9uZW50cykge1xuICAgICAgICBjYWxsVXBkYXRlKGNvbXBvbmVudHNbbmFtZV0sIGUpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IHVwZGF0ZSB9IGZyb20gJy4vZ2xvYmFsJztcbmltcG9ydCB7IGNhbGxVcGRhdGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgeyAkLCByZW1vdmUsIHdpdGhpbiB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuaW1wb3J0IHsgY2FsbENvbm5lY3RlZCwgY2FsbERpc2Nvbm5lY3RlZCwgY2FsbEhvb2sgfSBmcm9tICcuL2hvb2tzJztcbmltcG9ydCB7IGF0dGFjaFRvRWxlbWVudCwgY3JlYXRlQ29tcG9uZW50LCBkZXRhY2hGcm9tRWxlbWVudCwgZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoQXBwKSB7XG4gICAgQXBwLnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzO1xuICAgICAgICBhdHRhY2hUb0VsZW1lbnQoZWwsIGluc3RhbmNlKTtcblxuICAgICAgICBpbnN0YW5jZS4kb3B0aW9ucy5lbCA9IGVsO1xuXG4gICAgICAgIGlmICh3aXRoaW4oZWwsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgY2FsbENvbm5lY3RlZChpbnN0YW5jZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgQXBwLnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uIChyZW1vdmVFbCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBlbCB9ID0gaW5zdGFuY2UuJG9wdGlvbnM7XG5cbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBjYWxsRGlzY29ubmVjdGVkKGluc3RhbmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxIb29rKGluc3RhbmNlLCAnZGVzdHJveScpO1xuXG4gICAgICAgIGRldGFjaEZyb21FbGVtZW50KGVsLCBpbnN0YW5jZSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZUVsKSB7XG4gICAgICAgICAgICByZW1vdmUoaW5zdGFuY2UuJGVsKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBBcHAucHJvdG90eXBlLiRjcmVhdGUgPSBjcmVhdGVDb21wb25lbnQ7XG4gICAgQXBwLnByb3RvdHlwZS4kZW1pdCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGNhbGxVcGRhdGUodGhpcywgZSk7XG4gICAgfTtcblxuICAgIEFwcC5wcm90b3R5cGUuJHVwZGF0ZSA9IGZ1bmN0aW9uIChlbGVtZW50ID0gdGhpcy4kZWwsIGUpIHtcbiAgICAgICAgdXBkYXRlKGVsZW1lbnQsIGUpO1xuICAgIH07XG5cbiAgICBBcHAucHJvdG90eXBlLiRyZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FsbERpc2Nvbm5lY3RlZCh0aGlzKTtcbiAgICAgICAgY2FsbENvbm5lY3RlZCh0aGlzKTtcbiAgICB9O1xuXG4gICAgQXBwLnByb3RvdHlwZS4kZ2V0Q29tcG9uZW50ID0gZ2V0Q29tcG9uZW50O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQXBwLnByb3RvdHlwZSwge1xuICAgICAgICAkZWw6IHtcbiAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kb3B0aW9ucy5lbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAgJGNvbnRhaW5lcjogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBcHAsICdjb250YWluZXInKSxcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSWQoaW5zdGFuY2UsIGVsID0gaW5zdGFuY2UuJGVsLCBwb3N0Zml4ID0gJycpIHtcbiAgICBpZiAoZWwuaWQpIHtcbiAgICAgICAgcmV0dXJuIGVsLmlkO1xuICAgIH1cblxuICAgIGxldCBpZCA9IGAke2luc3RhbmNlLiRvcHRpb25zLmlkfS0ke2luc3RhbmNlLl91aWR9JHtwb3N0Zml4fWA7XG5cbiAgICBpZiAoJChgIyR7aWR9YCkpIHtcbiAgICAgICAgaWQgPSBnZW5lcmF0ZUlkKGluc3RhbmNlLCBlbCwgYCR7cG9zdGZpeH0tMmApO1xuICAgIH1cblxuICAgIHJldHVybiBpZDtcbn1cbiIsImltcG9ydCBBcHAgZnJvbSAnLi9hcHAnO1xuaW1wb3J0IGdsb2JhbEFwaSBmcm9tICcuL2dsb2JhbCc7XG5pbXBvcnQgaW5zdGFuY2VBcGkgZnJvbSAnLi9pbnN0YW5jZSc7XG5cbmdsb2JhbEFwaShBcHApO1xuaW5zdGFuY2VBcGkoQXBwKTtcblxuZXhwb3J0IGRlZmF1bHQgQXBwO1xuIiwiaW1wb3J0IHsgY2FsbENvbm5lY3RlZCwgY2FsbERpc2Nvbm5lY3RlZCB9IGZyb20gJy4vaG9va3MnO1xuaW1wb3J0IHsgY29tcG9uZW50cywgY3JlYXRlQ29tcG9uZW50LCBnZXRDb21wb25lbnQsIGdldENvbXBvbmVudHMgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhcHBseSwgaGFzQXR0ciwgaW5Ccm93c2VyLCBpc1BsYWluT2JqZWN0LCBzdGFydHNXaXRoLCB0cmlnZ2VyIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChBcHApIHtcbiAgICBpZiAoaW5Ccm93c2VyICYmIHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gaW5pdChBcHApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChyZWNvcmRzLCBvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXQoQXBwKTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gaW5pdChBcHApIHtcbiAgICB0cmlnZ2VyKGRvY3VtZW50LCAndWlraXQ6aW5pdCcsIEFwcCk7XG5cbiAgICBpZiAoZG9jdW1lbnQuYm9keSkge1xuICAgICAgICBhcHBseShkb2N1bWVudC5ib2R5LCBjb25uZWN0KTtcbiAgICB9XG5cbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4gcmVjb3Jkcy5mb3JFYWNoKGFwcGx5Q2hpbGRMaXN0TXV0YXRpb24pKS5vYnNlcnZlKGRvY3VtZW50LCB7XG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChyZWNvcmRzKSA9PiByZWNvcmRzLmZvckVhY2goYXBwbHlBdHRyaWJ1dGVNdXRhdGlvbikpLm9ic2VydmUoZG9jdW1lbnQsIHtcbiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIEFwcC5faW5pdGlhbGl6ZWQgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiBhcHBseUNoaWxkTGlzdE11dGF0aW9uKHsgYWRkZWROb2RlcywgcmVtb3ZlZE5vZGVzIH0pIHtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYWRkZWROb2Rlcykge1xuICAgICAgICBhcHBseShub2RlLCBjb25uZWN0KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcmVtb3ZlZE5vZGVzKSB7XG4gICAgICAgIGFwcGx5KG5vZGUsIGRpc2Nvbm5lY3QpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlBdHRyaWJ1dGVNdXRhdGlvbih7IHRhcmdldCwgYXR0cmlidXRlTmFtZSB9KSB7XG4gICAgY29uc3QgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoYXR0cmlidXRlTmFtZSk7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgICBpZiAoaGFzQXR0cih0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgICAgICBjcmVhdGVDb21wb25lbnQobmFtZSwgdGFyZ2V0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGdldENvbXBvbmVudCh0YXJnZXQsIG5hbWUpPy4kZGVzdHJveSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY29ubmVjdChub2RlKSB7XG4gICAgY29uc3QgY29tcG9uZW50cyA9IGdldENvbXBvbmVudHMobm9kZSk7XG4gICAgZm9yIChjb25zdCBuYW1lIGluIGdldENvbXBvbmVudHMobm9kZSkpIHtcbiAgICAgICAgY2FsbENvbm5lY3RlZChjb21wb25lbnRzW25hbWVdKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZU5hbWUgb2Ygbm9kZS5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICBuYW1lICYmIGNyZWF0ZUNvbXBvbmVudChuYW1lLCBub2RlKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc2Nvbm5lY3Qobm9kZSkge1xuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBnZXRDb21wb25lbnRzKG5vZGUpO1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBnZXRDb21wb25lbnRzKG5vZGUpKSB7XG4gICAgICAgIGNhbGxEaXNjb25uZWN0ZWQoY29tcG9uZW50c1tuYW1lXSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lKGF0dHJpYnV0ZSkge1xuICAgIGlmIChzdGFydHNXaXRoKGF0dHJpYnV0ZSwgJ2RhdGEtJykpIHtcbiAgICAgICAgYXR0cmlidXRlID0gYXR0cmlidXRlLnNsaWNlKDUpO1xuICAgIH1cblxuICAgIGNvbnN0IGNtcCA9IGNvbXBvbmVudHNbYXR0cmlidXRlXTtcbiAgICByZXR1cm4gY21wICYmIChpc1BsYWluT2JqZWN0KGNtcCkgPyBjbXAgOiBjbXAub3B0aW9ucykubmFtZTtcbn1cbiIsImltcG9ydCB7IGFkZENsYXNzIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLiRvcHRpb25zLmlkKTtcbiAgICB9LFxufTtcbiIsImltcG9ydCB7XG4gICAgJCQsXG4gICAgYWRkQ2xhc3MsXG4gICAgQW5pbWF0aW9uLFxuICAgIGNzcyxcbiAgICBkaW1lbnNpb25zLFxuICAgIGhhc0NsYXNzLFxuICAgIGluY2x1ZGVzLFxuICAgIGlzQm9vbGVhbixcbiAgICBpc0Z1bmN0aW9uLFxuICAgIGlzVmlzaWJsZSxcbiAgICBub29wLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHN0YXJ0c1dpdGgsXG4gICAgdG9GbG9hdCxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICB0b05vZGUsXG4gICAgdG9Ob2RlcyxcbiAgICBUcmFuc2l0aW9uLFxuICAgIHRyaWdnZXIsXG4gICAgdW53cmFwLFxuICAgIHdyYXBJbm5lcixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICBjbHM6IEJvb2xlYW4sXG4gICAgICAgIGFuaW1hdGlvbjogJ2xpc3QnLFxuICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICB2ZWxvY2l0eTogTnVtYmVyLFxuICAgICAgICBvcmlnaW46IFN0cmluZyxcbiAgICAgICAgdHJhbnNpdGlvbjogU3RyaW5nLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGNsczogZmFsc2UsXG4gICAgICAgIGFuaW1hdGlvbjogW2ZhbHNlXSxcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgdmVsb2NpdHk6IDAuMixcbiAgICAgICAgb3JpZ2luOiBmYWxzZSxcbiAgICAgICAgdHJhbnNpdGlvbjogJ2Vhc2UnLFxuICAgICAgICBjbHNFbnRlcjogJ3VrLXRvZ2dsYWJlLWVudGVyJyxcbiAgICAgICAgY2xzTGVhdmU6ICd1ay10b2dnbGFiZS1sZWF2ZScsXG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIGhhc0FuaW1hdGlvbih7IGFuaW1hdGlvbiB9KSB7XG4gICAgICAgICAgICByZXR1cm4gISFhbmltYXRpb25bMF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgaGFzVHJhbnNpdGlvbih7IGFuaW1hdGlvbiB9KSB7XG4gICAgICAgICAgICByZXR1cm4gWydzbGlkZScsICdyZXZlYWwnXS5zb21lKCh0cmFuc2l0aW9uKSA9PiBzdGFydHNXaXRoKGFuaW1hdGlvblswXSwgdHJhbnNpdGlvbikpO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHRvZ2dsZUVsZW1lbnQodGFyZ2V0cywgdG9nZ2xlLCBhbmltYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgIHRvTm9kZXModGFyZ2V0cykubWFwKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGlzQm9vbGVhbih0b2dnbGUpID8gdG9nZ2xlIDogIXRoaXMuaXNUb2dnbGVkKGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0cmlnZ2VyKGVsLCBgYmVmb3JlJHtzaG93ID8gJ3Nob3cnIDogJ2hpZGUnfWAsIFt0aGlzXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGFuaW1hdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYW5pbWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFuaW1hdGUgPT09IGZhbHNlIHx8ICF0aGlzLmhhc0FuaW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRvZ2dsZUluc3RhbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmhhc1RyYW5zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0b2dnbGVUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdG9nZ2xlQW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICApKGVsLCBzaG93LCB0aGlzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xzID0gc2hvdyA/IHRoaXMuY2xzRW50ZXIgOiB0aGlzLmNsc0xlYXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbCwgY2xzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgc2hvdyA/ICdzaG93JyA6ICdoaWRlJywgW3RoaXNdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9uZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhlbCwgY2xzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCBzaG93ID8gJ3Nob3duJyA6ICdoaWRkZW4nLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb21pc2UudGhlbihkb25lLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICkudGhlbihyZXNvbHZlLCBub29wKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpc1RvZ2dsZWQoZWwgPSB0aGlzLiRlbCkge1xuICAgICAgICAgICAgZWwgPSB0b05vZGUoZWwpO1xuICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKGVsLCB0aGlzLmNsc0VudGVyKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogaGFzQ2xhc3MoZWwsIHRoaXMuY2xzTGVhdmUpXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogdGhpcy5jbHNcbiAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKGVsLCB0aGlzLmNscy5zcGxpdCgnICcpWzBdKVxuICAgICAgICAgICAgICAgIDogaXNWaXNpYmxlKGVsKTtcbiAgICAgICAgfSxcblxuICAgICAgICBfdG9nZ2xlKGVsLCB0b2dnbGVkKSB7XG4gICAgICAgICAgICBpZiAoIWVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b2dnbGVkID0gQm9vbGVhbih0b2dnbGVkKTtcblxuICAgICAgICAgICAgbGV0IGNoYW5nZWQ7XG4gICAgICAgICAgICBpZiAodGhpcy5jbHMpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkID0gaW5jbHVkZXModGhpcy5jbHMsICcgJykgfHwgdG9nZ2xlZCAhPT0gaGFzQ2xhc3MoZWwsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmNscywgaW5jbHVkZXModGhpcy5jbHMsICcgJykgPyB1bmRlZmluZWQgOiB0b2dnbGVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRvZ2dsZWQgPT09IGVsLmhpZGRlbjtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIChlbC5oaWRkZW4gPSAhdG9nZ2xlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICQkKCdbYXV0b2ZvY3VzXScsIGVsKS5zb21lKChlbCkgPT4gKGlzVmlzaWJsZShlbCkgPyBlbC5mb2N1cygpIHx8IHRydWUgOiBlbC5ibHVyKCkpKTtcblxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCAndG9nZ2xlZCcsIFt0b2dnbGVkLCB0aGlzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIHRvZ2dsZUluc3RhbnQoZWwsIHNob3csIHsgX3RvZ2dsZSB9KSB7XG4gICAgQW5pbWF0aW9uLmNhbmNlbChlbCk7XG4gICAgVHJhbnNpdGlvbi5jYW5jZWwoZWwpO1xuICAgIHJldHVybiBfdG9nZ2xlKGVsLCBzaG93KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZVRyYW5zaXRpb24oXG4gICAgZWwsXG4gICAgc2hvdyxcbiAgICB7IGFuaW1hdGlvbiwgZHVyYXRpb24sIHZlbG9jaXR5LCB0cmFuc2l0aW9uLCBfdG9nZ2xlIH1cbikge1xuICAgIGNvbnN0IFttb2RlID0gJ3JldmVhbCcsIHN0YXJ0UHJvcCA9ICd0b3AnXSA9IGFuaW1hdGlvblswXT8uc3BsaXQoJy0nKSB8fCBbXTtcblxuICAgIGNvbnN0IGRpcnMgPSBbXG4gICAgICAgIFsnbGVmdCcsICdyaWdodCddLFxuICAgICAgICBbJ3RvcCcsICdib3R0b20nXSxcbiAgICBdO1xuICAgIGNvbnN0IGRpciA9IGRpcnNbaW5jbHVkZXMoZGlyc1swXSwgc3RhcnRQcm9wKSA/IDAgOiAxXTtcbiAgICBjb25zdCBlbmQgPSBkaXJbMV0gPT09IHN0YXJ0UHJvcDtcbiAgICBjb25zdCBwcm9wcyA9IFsnd2lkdGgnLCAnaGVpZ2h0J107XG4gICAgY29uc3QgZGltUHJvcCA9IHByb3BzW2RpcnMuaW5kZXhPZihkaXIpXTtcbiAgICBjb25zdCBtYXJnaW5Qcm9wID0gYG1hcmdpbi0ke2RpclswXX1gO1xuICAgIGNvbnN0IG1hcmdpblN0YXJ0UHJvcCA9IGBtYXJnaW4tJHtzdGFydFByb3B9YDtcblxuICAgIGxldCBjdXJyZW50RGltID0gZGltZW5zaW9ucyhlbClbZGltUHJvcF07XG5cbiAgICBjb25zdCBpblByb2dyZXNzID0gVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKTtcbiAgICBhd2FpdCBUcmFuc2l0aW9uLmNhbmNlbChlbCk7XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgICBfdG9nZ2xlKGVsLCB0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2UHJvcHMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIFtcbiAgICAgICAgICAgICdwYWRkaW5nJyxcbiAgICAgICAgICAgICdib3JkZXInLFxuICAgICAgICAgICAgJ3dpZHRoJyxcbiAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgJ21pbldpZHRoJyxcbiAgICAgICAgICAgICdtaW5IZWlnaHQnLFxuICAgICAgICAgICAgJ292ZXJmbG93WScsXG4gICAgICAgICAgICAnb3ZlcmZsb3dYJyxcbiAgICAgICAgICAgIG1hcmdpblByb3AsXG4gICAgICAgICAgICBtYXJnaW5TdGFydFByb3AsXG4gICAgICAgIF0ubWFwKChrZXkpID0+IFtrZXksIGVsLnN0eWxlW2tleV1dKVxuICAgICk7XG5cbiAgICBjb25zdCBkaW0gPSBkaW1lbnNpb25zKGVsKTtcbiAgICBjb25zdCBjdXJyZW50TWFyZ2luID0gdG9GbG9hdChjc3MoZWwsIG1hcmdpblByb3ApKTtcbiAgICBjb25zdCBtYXJnaW5TdGFydCA9IHRvRmxvYXQoY3NzKGVsLCBtYXJnaW5TdGFydFByb3ApKTtcbiAgICBjb25zdCBlbmREaW0gPSBkaW1bZGltUHJvcF0gKyBtYXJnaW5TdGFydDtcblxuICAgIGlmICghaW5Qcm9ncmVzcyAmJiAhc2hvdykge1xuICAgICAgICBjdXJyZW50RGltICs9IG1hcmdpblN0YXJ0O1xuICAgIH1cblxuICAgIGNvbnN0IFt3cmFwcGVyXSA9IHdyYXBJbm5lcihlbCwgJzxkaXY+Jyk7XG4gICAgY3NzKHdyYXBwZXIsIHtcbiAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgIGhlaWdodDogZGltLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGRpbS53aWR0aCxcbiAgICAgICAgLi4uY3NzKGVsLCBbXG4gICAgICAgICAgICAnb3ZlcmZsb3cnLFxuICAgICAgICAgICAgJ3BhZGRpbmcnLFxuICAgICAgICAgICAgJ2JvcmRlclRvcCcsXG4gICAgICAgICAgICAnYm9yZGVyUmlnaHQnLFxuICAgICAgICAgICAgJ2JvcmRlckJvdHRvbScsXG4gICAgICAgICAgICAnYm9yZGVyTGVmdCcsXG4gICAgICAgICAgICAnYm9yZGVySW1hZ2UnLFxuICAgICAgICAgICAgbWFyZ2luU3RhcnRQcm9wLFxuICAgICAgICBdKSxcbiAgICB9KTtcblxuICAgIGNzcyhlbCwge1xuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICBtaW5IZWlnaHQ6IDAsXG4gICAgICAgIFttYXJnaW5TdGFydFByb3BdOiAwLFxuICAgICAgICB3aWR0aDogZGltLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGRpbS5oZWlnaHQsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgW2RpbVByb3BdOiBjdXJyZW50RGltLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGVyY2VudCA9IGN1cnJlbnREaW0gLyBlbmREaW07XG4gICAgZHVyYXRpb24gPSAodmVsb2NpdHkgKiBlbmREaW0gKyBkdXJhdGlvbikgKiAoc2hvdyA/IDEgLSBwZXJjZW50IDogcGVyY2VudCk7XG4gICAgY29uc3QgZW5kUHJvcHMgPSB7IFtkaW1Qcm9wXTogc2hvdyA/IGVuZERpbSA6IDAgfTtcblxuICAgIGlmIChlbmQpIHtcbiAgICAgICAgY3NzKGVsLCBtYXJnaW5Qcm9wLCBlbmREaW0gLSBjdXJyZW50RGltICsgY3VycmVudE1hcmdpbik7XG4gICAgICAgIGVuZFByb3BzW21hcmdpblByb3BdID0gc2hvdyA/IGN1cnJlbnRNYXJnaW4gOiBlbmREaW0gKyBjdXJyZW50TWFyZ2luO1xuICAgIH1cblxuICAgIGlmICghZW5kIF4gKG1vZGUgPT09ICdyZXZlYWwnKSkge1xuICAgICAgICBjc3Mod3JhcHBlciwgbWFyZ2luUHJvcCwgLWVuZERpbSArIGN1cnJlbnREaW0pO1xuICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHdyYXBwZXIsIHsgW21hcmdpblByb3BdOiBzaG93ID8gMCA6IC1lbmREaW0gfSwgZHVyYXRpb24sIHRyYW5zaXRpb24pO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFRyYW5zaXRpb24uc3RhcnQoZWwsIGVuZFByb3BzLCBkdXJhdGlvbiwgdHJhbnNpdGlvbik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY3NzKGVsLCBwcmV2UHJvcHMpO1xuICAgICAgICB1bndyYXAod3JhcHBlci5maXJzdENoaWxkKTtcblxuICAgICAgICBpZiAoIXNob3cpIHtcbiAgICAgICAgICAgIF90b2dnbGUoZWwsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9nZ2xlQW5pbWF0aW9uKGVsLCBzaG93LCBjbXApIHtcbiAgICBBbmltYXRpb24uY2FuY2VsKGVsKTtcblxuICAgIGNvbnN0IHsgYW5pbWF0aW9uLCBkdXJhdGlvbiwgX3RvZ2dsZSB9ID0gY21wO1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgICAgX3RvZ2dsZShlbCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBBbmltYXRpb24uaW4oZWwsIGFuaW1hdGlvblswXSwgZHVyYXRpb24sIGNtcC5vcmlnaW4pO1xuICAgIH1cblxuICAgIHJldHVybiBBbmltYXRpb24ub3V0KGVsLCBhbmltYXRpb25bMV0gfHwgYW5pbWF0aW9uWzBdLCBkdXJhdGlvbiwgY21wLm9yaWdpbikudGhlbigoKSA9PlxuICAgICAgICBfdG9nZ2xlKGVsLCBmYWxzZSlcbiAgICApO1xufVxuIiwiZXhwb3J0IGNvbnN0IGtleU1hcCA9IHtcbiAgICBUQUI6IDksXG4gICAgRVNDOiAyNyxcbiAgICBTUEFDRTogMzIsXG4gICAgRU5EOiAzNSxcbiAgICBIT01FOiAzNixcbiAgICBMRUZUOiAzNyxcbiAgICBVUDogMzgsXG4gICAgUklHSFQ6IDM5LFxuICAgIERPV046IDQwLFxufTtcbiIsImltcG9ydCB7XG4gICAgJCQsXG4gICAgZ2V0RXZlbnRQb3MsXG4gICAgaXNGdW5jdGlvbixcbiAgICBpc1RvdWNoLFxuICAgIG5vb3AsXG4gICAgb2JzZXJ2ZUludGVyc2VjdGlvbixcbiAgICBvYnNlcnZlTXV0YXRpb24sXG4gICAgb2JzZXJ2ZVJlc2l6ZSxcbiAgICBvbixcbiAgICBvbmNlLFxuICAgIHBhcmVudCxcbiAgICBwb2ludGVyQ2FuY2VsLFxuICAgIHBvaW50ZXJEb3duLFxuICAgIHBvaW50ZXJVcCxcbiAgICByZW1vdmVBdHRyLFxuICAgIHRvTm9kZXMsXG4gICAgdHJpZ2dlcixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemUob3B0aW9ucykge1xuICAgIHJldHVybiBvYnNlcnZlKG9ic2VydmVSZXNpemUsIG9wdGlvbnMsICdyZXNpemUnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludGVyc2VjdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9ic2VydmUob2JzZXJ2ZUludGVyc2VjdGlvbiwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtdXRhdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9ic2VydmUob2JzZXJ2ZU11dGF0aW9uLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhenlsb2FkKG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBpbnRlcnNlY3Rpb24oe1xuICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbiAoZW50cmllcywgb2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0cyA9IHRoaXMuJGVsLCBwcmVsb2FkID0gNSB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgdG9Ob2Rlcyhpc0Z1bmN0aW9uKHRhcmdldHMpID8gdGFyZ2V0cyh0aGlzKSA6IHRhcmdldHMpKSB7XG4gICAgICAgICAgICAgICAgJCQoJ1tsb2FkaW5nPVwibGF6eVwiXScsIGVsKVxuICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgcHJlbG9hZCAtIDEpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlbCkgPT4gcmVtb3ZlQXR0cihlbCwgJ2xvYWRpbmcnKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgZW50cmllc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHsgaXNJbnRlcnNlY3RpbmcgfSkgPT4gaXNJbnRlcnNlY3RpbmcpXG4gICAgICAgICAgICAgICAgLm1hcCgoeyB0YXJnZXQgfSkgPT4gdGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGwob3B0aW9ucykge1xuICAgIHJldHVybiBvYnNlcnZlKFxuICAgICAgICBmdW5jdGlvbiAodGFyZ2V0LCBoYW5kbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRpc2Nvbm5lY3Q6IG9uKHRhcmdldCwgJ3Njcm9sbCcsIGhhbmRsZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRhcmdldDogKCkgPT4gd2luZG93LFxuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAgJ3Njcm9sbCdcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3dpcGUob3B0aW9ucykge1xuICAgIHJldHVybiB7XG4gICAgICAgIG9ic2VydmUodGFyZ2V0LCBoYW5kbGVyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9ic2VydmU6IG5vb3AsXG4gICAgICAgICAgICAgICAgdW5vYnNlcnZlOiBub29wLFxuICAgICAgICAgICAgICAgIGRpc2Nvbm5lY3Q6IG9uKHRhcmdldCwgcG9pbnRlckRvd24sIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBIYW5kbGUgU3dpcGUgR2VzdHVyZVxuICAgICAgICAgICAgY29uc3QgcG9zID0gZ2V0RXZlbnRQb3MoZSk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAndGFnTmFtZScgaW4gZS50YXJnZXQgPyBlLnRhcmdldCA6IHBhcmVudChlLnRhcmdldCk7XG4gICAgICAgICAgICBvbmNlKGRvY3VtZW50LCBgJHtwb2ludGVyVXB9ICR7cG9pbnRlckNhbmNlbH0gc2Nyb2xsYCwgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHgsIHkgfSA9IGdldEV2ZW50UG9zKGUpO1xuXG4gICAgICAgICAgICAgICAgLy8gc3dpcGVcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChlLnR5cGUgIT09ICdzY3JvbGwnICYmIHRhcmdldCAmJiB4ICYmIE1hdGguYWJzKHBvcy54IC0geCkgPiAxMDApIHx8XG4gICAgICAgICAgICAgICAgICAgICh5ICYmIE1hdGguYWJzKHBvcy55IC0geSkgPiAxMDApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0YXJnZXQsICdzd2lwZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0YXJnZXQsIGBzd2lwZSR7c3dpcGVEaXJlY3Rpb24ocG9zLngsIHBvcy55LCB4LCB5KX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gb2JzZXJ2ZShvYnNlcnZlLCBvcHRpb25zLCBlbWl0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb2JzZXJ2ZSxcbiAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoZW1pdCk7XG4gICAgICAgIH0sXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gc3dpcGVEaXJlY3Rpb24oeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoeDEgLSB4MikgPj0gTWF0aC5hYnMoeTEgLSB5MilcbiAgICAgICAgPyB4MSAtIHgyID4gMFxuICAgICAgICAgICAgPyAnTGVmdCdcbiAgICAgICAgICAgIDogJ1JpZ2h0J1xuICAgICAgICA6IHkxIC0geTIgPiAwXG4gICAgICAgID8gJ1VwJ1xuICAgICAgICA6ICdEb3duJztcbn1cbiIsImltcG9ydCBDbGFzcyBmcm9tICcuLi9taXhpbi9jbGFzcyc7XG5pbXBvcnQgVG9nZ2xhYmxlIGZyb20gJy4uL21peGluL3RvZ2dsYWJsZSc7XG5pbXBvcnQgeyBrZXlNYXAgfSBmcm9tICcuLi91dGlsL2tleXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVJZCB9IGZyb20gJy4uL2FwaS9pbnN0YW5jZSc7XG5pbXBvcnQgeyBsYXp5bG9hZCB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgJCQsXG4gICAgYXR0cixcbiAgICBjaGlsZHJlbixcbiAgICBjc3MsXG4gICAgZGltZW5zaW9ucyxcbiAgICBmaWx0ZXIsXG4gICAgZ2V0SW5kZXgsXG4gICAgaGFzQ2xhc3MsXG4gICAgaW5jbHVkZXMsXG4gICAgaW5kZXgsXG4gICAgaXNUYWcsXG4gICAgc2Nyb2xsUGFyZW50cyxcbiAgICBzdW1CeSxcbiAgICB0b0Zsb2F0LFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIFRyYW5zaXRpb24sXG4gICAgdW53cmFwLFxuICAgIHdpdGhpbixcbiAgICB3cmFwQWxsLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW0NsYXNzLCBUb2dnbGFibGVdLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYW5pbWF0aW9uOiBCb29sZWFuLFxuICAgICAgICB0YXJnZXRzOiBTdHJpbmcsXG4gICAgICAgIGFjdGl2ZTogbnVsbCxcbiAgICAgICAgY29sbGFwc2libGU6IEJvb2xlYW4sXG4gICAgICAgIG11bHRpcGxlOiBCb29sZWFuLFxuICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgY29udGVudDogU3RyaW5nLFxuICAgICAgICBvZmZzZXQ6IE51bWJlcixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICB0YXJnZXRzOiAnPiAqJyxcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgYW5pbWF0aW9uOiB0cnVlLFxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcbiAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICBjbHNPcGVuOiAndWstb3BlbicsXG4gICAgICAgIHRvZ2dsZTogJz4gLnVrLWFjY29yZGlvbi10aXRsZScsXG4gICAgICAgIGNvbnRlbnQ6ICc+IC51ay1hY2NvcmRpb24tY29udGVudCcsXG4gICAgICAgIG9mZnNldDogMCxcbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgaXRlbXMoeyB0YXJnZXRzIH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuICQkKHRhcmdldHMsICRlbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdG9nZ2xlcyh7IHRvZ2dsZSB9KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+ICQodG9nZ2xlLCBpdGVtKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29udGVudHMoeyBjb250ZW50IH0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5fd3JhcHBlcj8uZmlyc3RFbGVtZW50Q2hpbGQgfHwgJChjb250ZW50LCBpdGVtKSk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHdhdGNoOiB7XG4gICAgICAgIGl0ZW1zKGl0ZW1zLCBwcmV2KSB7XG4gICAgICAgICAgICBpZiAocHJldiB8fCBoYXNDbGFzcyhpdGVtcywgdGhpcy5jbHNPcGVuKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWN0aXZlID1cbiAgICAgICAgICAgICAgICAodGhpcy5hY3RpdmUgIT09IGZhbHNlICYmIGl0ZW1zW051bWJlcih0aGlzLmFjdGl2ZSldKSB8fFxuICAgICAgICAgICAgICAgICghdGhpcy5jb2xsYXBzaWJsZSAmJiBpdGVtc1swXSk7XG5cbiAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShhY3RpdmUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICB0b2dnbGVzKCkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbnRlbnRzKGl0ZW1zKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPcGVuID0gaGFzQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZmluZCgoaXRlbSkgPT4gd2l0aGluKGVsLCBpdGVtKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzT3BlblxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBoaWRlKGVsLCAhaXNPcGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgb2JzZXJ2ZTogbGF6eWxvYWQoKSxcblxuICAgIGV2ZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnY2xpY2sga2V5ZG93bicsXG5cbiAgICAgICAgICAgIGRlbGVnYXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnRhcmdldHN9ICR7dGhpcy4kcHJvcHMudG9nZ2xlfWA7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhc3luYyBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5ZG93bicgJiYgZS5rZXlDb2RlICE9PSBrZXlNYXAuU1BBQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX29mZj8uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2ZmID0ga2VlcFNjcm9sbFBvc2l0aW9uKGUudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnRvZ2dsZShpbmRleCh0aGlzLnRvZ2dsZXMsIGUuY3VycmVudCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX29mZigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3Nob3duIGhpZGRlbicsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGRlbGVnYXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldHM7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgXSxcblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbXMgPSBmaWx0ZXIodGhpcy5pdGVtcywgYC4ke3RoaXMuY2xzT3Blbn1gKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGluZGV4IGluIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvZ2dsZSA9IHRoaXMudG9nZ2xlc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50c1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmICghdG9nZ2xlIHx8ICFjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvZ2dsZS5pZCA9IGdlbmVyYXRlSWQodGhpcywgdG9nZ2xlLCBgLXRpdGxlLSR7aW5kZXh9YCk7XG4gICAgICAgICAgICBjb250ZW50LmlkID0gZ2VuZXJhdGVJZCh0aGlzLCBjb250ZW50LCBgLWNvbnRlbnQtJHtpbmRleH1gKTtcblxuICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gaW5jbHVkZXMoYWN0aXZlSXRlbXMsIHRoaXMuaXRlbXNbaW5kZXhdKTtcbiAgICAgICAgICAgIGF0dHIodG9nZ2xlLCB7XG4gICAgICAgICAgICAgICAgcm9sZTogaXNUYWcodG9nZ2xlLCAnYScpID8gJ2J1dHRvbicgOiBudWxsLFxuICAgICAgICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogY29udGVudC5pZCxcbiAgICAgICAgICAgICAgICAnYXJpYS1leHBhbmRlZCc6IGFjdGl2ZSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6ICF0aGlzLmNvbGxhcHNpYmxlICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA8IDIgJiYgYWN0aXZlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGF0dHIoY29udGVudCwgeyByb2xlOiAncmVnaW9uJywgJ2FyaWEtbGFiZWxsZWRieSc6IHRvZ2dsZS5pZCB9KTtcbiAgICAgICAgICAgIGlmIChpc1RhZyhjb250ZW50LCAndWwnKSkge1xuICAgICAgICAgICAgICAgIGF0dHIoY2hpbGRyZW4oY29udGVudCksICdyb2xlJywgJ3ByZXNlbnRhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYXN5bmMgdG9nZ2xlKGl0ZW0sIGFuaW1hdGUpIHtcbiAgICAgICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1zW2dldEluZGV4KGl0ZW0sIHRoaXMuaXRlbXMpXTtcbiAgICAgICAgICAgIGxldCBpdGVtcyA9IFtpdGVtXTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW1zID0gZmlsdGVyKHRoaXMuaXRlbXMsIGAuJHt0aGlzLmNsc09wZW59YCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSAmJiAhaW5jbHVkZXMoYWN0aXZlSXRlbXMsIGl0ZW1zWzBdKSkge1xuICAgICAgICAgICAgICAgIGl0ZW1zID0gaXRlbXMuY29uY2F0KGFjdGl2ZUl0ZW1zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNpYmxlICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA8IDIgJiYgaW5jbHVkZXMoYWN0aXZlSXRlbXMsIGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICBpdGVtcy5tYXAoKGVsKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQoZWwsICFpbmNsdWRlcyhhY3RpdmVJdGVtcywgZWwpLCAoZWwsIHNob3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmNsc09wZW4sIHNob3cpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0ZSA9PT0gZmFsc2UgfHwgIXRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZSgkKHRoaXMuY29udGVudCwgZWwpLCAhc2hvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNpdGlvbihlbCwgc2hvdywgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gaGlkZShlbCwgaGlkZSkge1xuICAgIGVsICYmIChlbC5oaWRkZW4gPSBoaWRlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdHJhbnNpdGlvbihlbCwgc2hvdywgeyBjb250ZW50LCBkdXJhdGlvbiwgdmVsb2NpdHksIHRyYW5zaXRpb24gfSkge1xuICAgIGNvbnRlbnQgPSBlbC5fd3JhcHBlcj8uZmlyc3RFbGVtZW50Q2hpbGQgfHwgJChjb250ZW50LCBlbCk7XG5cbiAgICBpZiAoIWVsLl93cmFwcGVyKSB7XG4gICAgICAgIGVsLl93cmFwcGVyID0gd3JhcEFsbChjb250ZW50LCAnPGRpdj4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB3cmFwcGVyID0gZWwuX3dyYXBwZXI7XG4gICAgY3NzKHdyYXBwZXIsICdvdmVyZmxvdycsICdoaWRkZW4nKTtcbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gdG9GbG9hdChjc3Mod3JhcHBlciwgJ2hlaWdodCcpKTtcblxuICAgIGF3YWl0IFRyYW5zaXRpb24uY2FuY2VsKHdyYXBwZXIpO1xuICAgIGhpZGUoY29udGVudCwgZmFsc2UpO1xuXG4gICAgY29uc3QgZW5kSGVpZ2h0ID1cbiAgICAgICAgc3VtQnkoWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJ10sIChwcm9wKSA9PiBjc3MoY29udGVudCwgcHJvcCkpICtcbiAgICAgICAgZGltZW5zaW9ucyhjb250ZW50KS5oZWlnaHQ7XG5cbiAgICBjb25zdCBwZXJjZW50ID0gY3VycmVudEhlaWdodCAvIGVuZEhlaWdodDtcbiAgICBkdXJhdGlvbiA9ICh2ZWxvY2l0eSAqIGVuZEhlaWdodCArIGR1cmF0aW9uKSAqIChzaG93ID8gMSAtIHBlcmNlbnQgOiBwZXJjZW50KTtcbiAgICBjc3Mod3JhcHBlciwgJ2hlaWdodCcsIGN1cnJlbnRIZWlnaHQpO1xuXG4gICAgYXdhaXQgVHJhbnNpdGlvbi5zdGFydCh3cmFwcGVyLCB7IGhlaWdodDogc2hvdyA/IGVuZEhlaWdodCA6IDAgfSwgZHVyYXRpb24sIHRyYW5zaXRpb24pO1xuXG4gICAgdW53cmFwKGNvbnRlbnQpO1xuICAgIGRlbGV0ZSBlbC5fd3JhcHBlcjtcblxuICAgIGlmICghc2hvdykge1xuICAgICAgICBoaWRlKGNvbnRlbnQsIHRydWUpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24ga2VlcFNjcm9sbFBvc2l0aW9uKGVsKSB7XG4gICAgY29uc3QgW3Njcm9sbFBhcmVudF0gPSBzY3JvbGxQYXJlbnRzKGVsLCB0cnVlKTtcbiAgICBsZXQgZnJhbWU7XG4gICAgKGZ1bmN0aW9uIHNjcm9sbCgpIHtcbiAgICAgICAgZnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0b3AgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgaWYgKHRvcCA8IDApIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxQYXJlbnQuc2Nyb2xsVG9wICs9IHRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjcm9sbCgpO1xuICAgICAgICB9KTtcbiAgICB9KSgpO1xuXG4gICAgcmV0dXJuICgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSkpO1xufVxuIiwiaW1wb3J0IENsYXNzIGZyb20gJy4uL21peGluL2NsYXNzJztcbmltcG9ydCBUb2dnbGFibGUgZnJvbSAnLi4vbWl4aW4vdG9nZ2xhYmxlJztcbmltcG9ydCB7IGNzcywgdG9GbG9hdCwgVHJhbnNpdGlvbiB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ2xhc3MsIFRvZ2dsYWJsZV0sXG5cbiAgICBhcmdzOiAnYW5pbWF0aW9uJyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIGFuaW1hdGlvbjogQm9vbGVhbixcbiAgICAgICAgY2xvc2U6IFN0cmluZyxcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBhbmltYXRpb246IHRydWUsXG4gICAgICAgIHNlbENsb3NlOiAnLnVrLWFsZXJ0LWNsb3NlJyxcbiAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICB9LFxuXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxDbG9zZTtcbiAgICAgICAgfSxcblxuICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBjbG9zZSgpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLiRlbCwgZmFsc2UsIGFuaW1hdGUpO1xuICAgICAgICAgICAgdGhpcy4kZGVzdHJveSh0cnVlKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gYW5pbWF0ZShlbCwgc2hvdywgeyBkdXJhdGlvbiwgdHJhbnNpdGlvbiwgdmVsb2NpdHkgfSkge1xuICAgIGNvbnN0IGhlaWdodCA9IHRvRmxvYXQoY3NzKGVsLCAnaGVpZ2h0JykpO1xuICAgIGNzcyhlbCwgJ2hlaWdodCcsIGhlaWdodCk7XG4gICAgcmV0dXJuIFRyYW5zaXRpb24uc3RhcnQoXG4gICAgICAgIGVsLFxuICAgICAgICB7XG4gICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6IDAsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206IDAsXG4gICAgICAgICAgICBwYWRkaW5nVG9wOiAwLFxuICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICAgICAgICAgIGJvcmRlclRvcDogMCxcbiAgICAgICAgICAgIGJvcmRlckJvdHRvbTogMCxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHZlbG9jaXR5ICogaGVpZ2h0ICsgZHVyYXRpb24sXG4gICAgICAgIHRyYW5zaXRpb25cbiAgICApO1xufVxuIiwiaW1wb3J0IHsgaW50ZXJzZWN0aW9uIH0gZnJvbSAnLi4vYXBpL29ic2VydmFibGVzJztcbmltcG9ydCB7IGNzcywgaGFzQXR0ciwgaXNJblZpZXcsIGlzVGFnLCBpc1ZpZGVvLCBpc1Zpc2libGUsIG11dGUsIHBhdXNlLCBwbGF5IH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBhcmdzOiAnYXV0b3BsYXknLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgYXV0b211dGU6IEJvb2xlYW4sXG4gICAgICAgIGF1dG9wbGF5OiBCb29sZWFuLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGF1dG9tdXRlOiBmYWxzZSxcbiAgICAgICAgYXV0b3BsYXk6IHRydWUsXG4gICAgfSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5pblZpZXcgPSB0aGlzLmF1dG9wbGF5ID09PSAnaW52aWV3JztcblxuICAgICAgICBpZiAodGhpcy5pblZpZXcgJiYgIWhhc0F0dHIodGhpcy4kZWwsICdwcmVsb2FkJykpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsLnByZWxvYWQgPSAnbm9uZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNUYWcodGhpcy4kZWwsICdpZnJhbWUnKSAmJiAhaGFzQXR0cih0aGlzLiRlbCwgJ2FsbG93JykpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsLmFsbG93ID0gJ2F1dG9wbGF5JztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmF1dG9tdXRlKSB7XG4gICAgICAgICAgICBtdXRlKHRoaXMuJGVsKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvYnNlcnZlOiBpbnRlcnNlY3Rpb24oe1xuICAgICAgICBhcmdzOiB7IGludGVyc2VjdGluZzogZmFsc2UgfSxcbiAgICB9KSxcblxuICAgIHVwZGF0ZToge1xuICAgICAgICByZWFkKHsgdmlzaWJsZSB9KSB7XG4gICAgICAgICAgICBpZiAoIWlzVmlkZW8odGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXY6IHZpc2libGUsXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiBjc3ModGhpcy4kZWwsICd2aXNpYmlsaXR5JykgIT09ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIGluVmlldzogdGhpcy5pblZpZXcgJiYgaXNJblZpZXcodGhpcy4kZWwpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICB3cml0ZSh7IHByZXYsIHZpc2libGUsIGluVmlldyB9KSB7XG4gICAgICAgICAgICBpZiAoIXZpc2libGUgfHwgKHRoaXMuaW5WaWV3ICYmICFpblZpZXcpKSB7XG4gICAgICAgICAgICAgICAgcGF1c2UodGhpcy4kZWwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5hdXRvcGxheSA9PT0gdHJ1ZSAmJiAhcHJldikgfHwgKHRoaXMuaW5WaWV3ICYmIGluVmlldykpIHtcbiAgICAgICAgICAgICAgICBwbGF5KHRoaXMuJGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxufTtcbiIsImltcG9ydCB7IHJlc2l6ZSB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgVmlkZW8gZnJvbSAnLi92aWRlbyc7XG5pbXBvcnQgeyBjc3MsIERpbWVuc2lvbnMsIHBhcmVudCB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbVmlkZW9dLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgd2lkdGg6IE51bWJlcixcbiAgICAgICAgaGVpZ2h0OiBOdW1iZXIsXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgYXV0b211dGU6IHRydWUsXG4gICAgfSxcblxuICAgIGV2ZW50czoge1xuICAgICAgICAnbG9hZCBsb2FkZWRtZXRhZGF0YScoKSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCdyZXNpemUnKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgb2JzZXJ2ZTogcmVzaXplKHtcbiAgICAgICAgdGFyZ2V0OiAoeyAkZWwgfSkgPT4gWyRlbCwgZ2V0UG9zaXRpb25lZFBhcmVudCgkZWwpIHx8IHBhcmVudCgkZWwpXSxcbiAgICB9KSxcblxuICAgIHVwZGF0ZToge1xuICAgICAgICByZWFkKCkge1xuICAgICAgICAgICAgY29uc3QgeyByYXRpbywgY292ZXIgfSA9IERpbWVuc2lvbnM7XG4gICAgICAgICAgICBjb25zdCB7ICRlbCwgd2lkdGgsIGhlaWdodCB9ID0gdGhpcztcblxuICAgICAgICAgICAgbGV0IGRpbSA9IHsgd2lkdGgsIGhlaWdodCB9O1xuXG4gICAgICAgICAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnRyaW5zaWMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAkZWwubmF0dXJhbFdpZHRoIHx8ICRlbC52aWRlb1dpZHRoIHx8ICRlbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAkZWwubmF0dXJhbEhlaWdodCB8fCAkZWwudmlkZW9IZWlnaHQgfHwgJGVsLmNsaWVudEhlaWdodCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpbSA9IHJhdGlvKGludHJpbnNpYywgJ3dpZHRoJywgd2lkdGgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGRpbSA9IHJhdGlvKGludHJpbnNpYywgJ2hlaWdodCcsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGltID0gaW50cmluc2ljO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyBvZmZzZXRIZWlnaHQ6IGNvdmVySGVpZ2h0LCBvZmZzZXRXaWR0aDogY292ZXJXaWR0aCB9ID1cbiAgICAgICAgICAgICAgICBnZXRQb3NpdGlvbmVkUGFyZW50KCRlbCkgfHwgcGFyZW50KCRlbCk7XG4gICAgICAgICAgICBjb25zdCBjb3ZlckRpbSA9IGNvdmVyKGRpbSwge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjb3ZlcldpZHRoICsgKGNvdmVyV2lkdGggJSAyID8gMSA6IDApLFxuICAgICAgICAgICAgICAgIGhlaWdodDogY292ZXJIZWlnaHQgKyAoY292ZXJIZWlnaHQgJSAyID8gMSA6IDApLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghY292ZXJEaW0ud2lkdGggfHwgIWNvdmVyRGltLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvdmVyRGltO1xuICAgICAgICB9LFxuXG4gICAgICAgIHdyaXRlKHsgaGVpZ2h0LCB3aWR0aCB9KSB7XG4gICAgICAgICAgICBjc3ModGhpcy4kZWwsIHsgaGVpZ2h0LCB3aWR0aCB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsncmVzaXplJ10sXG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIGdldFBvc2l0aW9uZWRQYXJlbnQoZWwpIHtcbiAgICB3aGlsZSAoKGVsID0gcGFyZW50KGVsKSkpIHtcbiAgICAgICAgaWYgKGNzcyhlbCwgJ3Bvc2l0aW9uJykgIT09ICdzdGF0aWMnKSB7XG4gICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQge1xuICAgIGNzcyxcbiAgICBkaW1lbnNpb25zLFxuICAgIGZsaXBQb3NpdGlvbixcbiAgICBpbmNsdWRlcyxcbiAgICBpc1J0bCxcbiAgICBwb3NpdGlvbkF0LFxuICAgIHNjcm9sbFBhcmVudHMsXG4gICAgdG9QeCxcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICBwb3M6IFN0cmluZyxcbiAgICAgICAgb2Zmc2V0OiBudWxsLFxuICAgICAgICBmbGlwOiBCb29sZWFuLFxuICAgICAgICBzaGlmdDogQm9vbGVhbixcbiAgICAgICAgaW5zZXQ6IEJvb2xlYW4sXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgcG9zOiBgYm90dG9tLSR7aXNSdGwgPyAncmlnaHQnIDogJ2xlZnQnfWAsXG4gICAgICAgIG9mZnNldDogZmFsc2UsXG4gICAgICAgIGZsaXA6IHRydWUsXG4gICAgICAgIHNoaWZ0OiB0cnVlLFxuICAgICAgICBpbnNldDogZmFsc2UsXG4gICAgfSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5wb3MgPSB0aGlzLiRwcm9wcy5wb3Muc3BsaXQoJy0nKS5jb25jYXQoJ2NlbnRlcicpLnNsaWNlKDAsIDIpO1xuICAgICAgICBbdGhpcy5kaXIsIHRoaXMuYWxpZ25dID0gdGhpcy5wb3M7XG4gICAgICAgIHRoaXMuYXhpcyA9IGluY2x1ZGVzKFsndG9wJywgJ2JvdHRvbSddLCB0aGlzLmRpcikgPyAneScgOiAneCc7XG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgcG9zaXRpb25BdChlbGVtZW50LCB0YXJnZXQsIGJvdW5kYXJ5KSB7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gW3RoaXMuZ2V0UG9zaXRpb25PZmZzZXQoZWxlbWVudCksIHRoaXMuZ2V0U2hpZnRPZmZzZXQoZWxlbWVudCldO1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gW3RoaXMuZmxpcCAmJiAnZmxpcCcsIHRoaXMuc2hpZnQgJiYgJ3NoaWZ0J107XG5cbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaCA9IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBbdGhpcy5pbnNldCA/IHRoaXMuZGlyIDogZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSwgdGhpcy5hbGlnbl0sXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBbdGhpcy5kaXIsIHRoaXMuYWxpZ25dLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuYXhpcyA9PT0gJ3knKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIGF0dGFjaCkge1xuICAgICAgICAgICAgICAgICAgICBhdHRhY2hbcHJvcF0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvZmZzZXQucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIHBsYWNlbWVudC5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVTY3JvbGxQb3NpdGlvbiA9IHN0b3JlU2Nyb2xsUG9zaXRpb24oZWxlbWVudCk7XG5cbiAgICAgICAgICAgIC8vIEVuc3VyZSBub25lIHBvc2l0aW9uZWQgZWxlbWVudCBkb2VzIG5vdCBnZW5lcmF0ZSBzY3JvbGxiYXJzXG4gICAgICAgICAgICBjb25zdCBlbERpbSA9IGRpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgICAgICAgICBjc3MoZWxlbWVudCwgeyB0b3A6IC1lbERpbS5oZWlnaHQsIGxlZnQ6IC1lbERpbS53aWR0aCB9KTtcblxuICAgICAgICAgICAgcG9zaXRpb25BdChlbGVtZW50LCB0YXJnZXQsIHtcbiAgICAgICAgICAgICAgICBhdHRhY2gsXG4gICAgICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydE9mZnNldDogdGhpcy5nZXRWaWV3cG9ydE9mZnNldChlbGVtZW50KSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRQb3NpdGlvbk9mZnNldChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRvUHgoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID09PSBmYWxzZSA/IGNzcyhlbGVtZW50LCAnLS11ay1wb3NpdGlvbi1vZmZzZXQnKSA6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF4aXMgPT09ICd4JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFxuICAgICAgICAgICAgICAgICkgKlxuICAgICAgICAgICAgICAgIChpbmNsdWRlcyhbJ2xlZnQnLCAndG9wJ10sIHRoaXMuZGlyKSA/IC0xIDogMSkgKlxuICAgICAgICAgICAgICAgICh0aGlzLmluc2V0ID8gLTEgOiAxKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRTaGlmdE9mZnNldChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbGlnbiA9PT0gJ2NlbnRlcidcbiAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICA6IHRvUHgoXG4gICAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsICctLXVrLXBvc2l0aW9uLXNoaWZ0LW9mZnNldCcpLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXhpcyA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICkgKiAoaW5jbHVkZXMoWydsZWZ0JywgJ3RvcCddLCB0aGlzLmFsaWduKSA/IDEgOiAtMSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0Vmlld3BvcnRPZmZzZXQoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRvUHgoY3NzKGVsZW1lbnQsICctLXVrLXBvc2l0aW9uLXZpZXdwb3J0LW9mZnNldCcpKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gc3RvcmVTY3JvbGxQb3NpdGlvbihlbGVtZW50KSB7XG4gICAgY29uc3QgW3Njcm9sbEVsZW1lbnRdID0gc2Nyb2xsUGFyZW50cyhlbGVtZW50KTtcbiAgICBjb25zdCB7IHNjcm9sbFRvcCB9ID0gc2Nyb2xsRWxlbWVudDtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChzY3JvbGxUb3AgIT09IHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKSB7XG4gICAgICAgICAgICBzY3JvbGxFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgICAgfVxuICAgIH07XG59XG4iLCJpbXBvcnQgeyAkIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICBjb250YWluZXI6IEJvb2xlYW4sXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgY29udGFpbmVyOiB0cnVlLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBjb250YWluZXIoeyBjb250YWluZXIgfSkge1xuICAgICAgICAgICAgcmV0dXJuIChjb250YWluZXIgPT09IHRydWUgJiYgdGhpcy4kY29udGFpbmVyKSB8fCAoY29udGFpbmVyICYmICQoY29udGFpbmVyKSk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQgeyBjc3MsIG1hdGNoZXMsIG9uLCBzY3JvbGxQYXJlbnRzLCB3aWR0aCB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5sZXQgcHJldmVudGVkO1xuZXhwb3J0IGZ1bmN0aW9uIHByZXZlbnRCYWNrZ3JvdW5kU2Nyb2xsKGVsKSB7XG4gICAgLy8gJ292ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW4nIG9ubHkgd29ya3MgY29uc2lzdGVudGx5IGlmIGVsIG92ZXJmbG93cyAoU2FmYXJpKVxuICAgIGNvbnN0IG9mZiA9IG9uKFxuICAgICAgICBlbCxcbiAgICAgICAgJ3RvdWNobW92ZScsXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICBpZiAoZS50YXJnZXRUb3VjaGVzLmxlbmd0aCAhPT0gMSB8fCBtYXRjaGVzKGUudGFyZ2V0LCAnaW5wdXRbdHlwZT1cInJhbmdlXCInKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IFt7IHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH1dID0gc2Nyb2xsUGFyZW50cyhlLnRhcmdldCk7XG5cbiAgICAgICAgICAgIGlmIChjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0ICYmIGUuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeyBwYXNzaXZlOiBmYWxzZSB9XG4gICAgKTtcblxuICAgIGlmIChwcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuIG9mZjtcbiAgICB9XG4gICAgcHJldmVudGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHsgc2Nyb2xsaW5nRWxlbWVudCB9ID0gZG9jdW1lbnQ7XG4gICAgY3NzKHNjcm9sbGluZ0VsZW1lbnQsIHtcbiAgICAgICAgb3ZlcmZsb3dZOiBDU1Muc3VwcG9ydHMoJ292ZXJmbG93JywgJ2NsaXAnKSA/ICdjbGlwJyA6ICdoaWRkZW4nLFxuICAgICAgICB0b3VjaEFjdGlvbjogJ25vbmUnLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IHdpZHRoKHdpbmRvdykgLSBzY3JvbGxpbmdFbGVtZW50LmNsaWVudFdpZHRoIHx8ICcnLFxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHByZXZlbnRlZCA9IGZhbHNlO1xuICAgICAgICBvZmYoKTtcbiAgICAgICAgY3NzKHNjcm9sbGluZ0VsZW1lbnQsIHsgb3ZlcmZsb3dZOiAnJywgdG91Y2hBY3Rpb246ICcnLCBwYWRkaW5nUmlnaHQ6ICcnIH0pO1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBsYXp5bG9hZCB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgUG9zaXRpb24gZnJvbSAnLi4vbWl4aW4vcG9zaXRpb24nO1xuaW1wb3J0IENvbnRhaW5lciBmcm9tICcuLi9taXhpbi9jb250YWluZXInO1xuaW1wb3J0IFRvZ2dsYWJsZSBmcm9tICcuLi9taXhpbi90b2dnbGFibGUnO1xuaW1wb3J0IHsga2V5TWFwIH0gZnJvbSAnLi4vdXRpbC9rZXlzJztcbmltcG9ydCB7IHByZXZlbnRCYWNrZ3JvdW5kU2Nyb2xsIH0gZnJvbSAnLi4vbWl4aW4vaW50ZXJuYWwvc2Nyb2xsJztcbmltcG9ydCB7XG4gICAgYWRkQ2xhc3MsXG4gICAgYXBwZW5kLFxuICAgIGFwcGx5LFxuICAgIGF0dHIsXG4gICAgY3NzLFxuICAgIGhhc0NsYXNzLFxuICAgIGluY2x1ZGVzLFxuICAgIGlzU2FtZVNpdGVBbmNob3IsXG4gICAgaXNUb3VjaCxcbiAgICBtYXRjaGVzLFxuICAgIE1vdXNlVHJhY2tlcixcbiAgICBvYnNlcnZlUmVzaXplLFxuICAgIG9mZnNldCxcbiAgICBvZmZzZXRWaWV3cG9ydCxcbiAgICBvbixcbiAgICBvbmNlLFxuICAgIG92ZXJmbG93UGFyZW50cyxcbiAgICBwYXJlbnQsXG4gICAgcGljayxcbiAgICBwb2ludGVyQ2FuY2VsLFxuICAgIHBvaW50ZXJEb3duLFxuICAgIHBvaW50ZXJFbnRlcixcbiAgICBwb2ludGVyTGVhdmUsXG4gICAgcG9pbnRlclVwLFxuICAgIHF1ZXJ5LFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHdpdGhpbixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBsZXQgYWN0aXZlO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ29udGFpbmVyLCBQb3NpdGlvbiwgVG9nZ2xhYmxlXSxcblxuICAgIGFyZ3M6ICdwb3MnLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgbW9kZTogJ2xpc3QnLFxuICAgICAgICB0b2dnbGU6IEJvb2xlYW4sXG4gICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICBib3VuZGFyeVg6IEJvb2xlYW4sXG4gICAgICAgIGJvdW5kYXJ5WTogQm9vbGVhbixcbiAgICAgICAgdGFyZ2V0OiBCb29sZWFuLFxuICAgICAgICB0YXJnZXRYOiBCb29sZWFuLFxuICAgICAgICB0YXJnZXRZOiBCb29sZWFuLFxuICAgICAgICBzdHJldGNoOiBCb29sZWFuLFxuICAgICAgICBkZWxheVNob3c6IE51bWJlcixcbiAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgIGF1dG9VcGRhdGU6IEJvb2xlYW4sXG4gICAgICAgIGNsc0Ryb3A6IFN0cmluZyxcbiAgICAgICAgYW5pbWF0ZU91dDogQm9vbGVhbixcbiAgICAgICAgYmdTY3JvbGw6IEJvb2xlYW4sXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgbW9kZTogWydjbGljaycsICdob3ZlciddLFxuICAgICAgICB0b2dnbGU6ICctIConLFxuICAgICAgICBib3VuZGFyeTogZmFsc2UsXG4gICAgICAgIGJvdW5kYXJ5WDogZmFsc2UsXG4gICAgICAgIGJvdW5kYXJ5WTogZmFsc2UsXG4gICAgICAgIHRhcmdldDogZmFsc2UsXG4gICAgICAgIHRhcmdldFg6IGZhbHNlLFxuICAgICAgICB0YXJnZXRZOiBmYWxzZSxcbiAgICAgICAgc3RyZXRjaDogZmFsc2UsXG4gICAgICAgIGRlbGF5U2hvdzogMCxcbiAgICAgICAgZGVsYXlIaWRlOiA4MDAsXG4gICAgICAgIGF1dG9VcGRhdGU6IHRydWUsXG4gICAgICAgIGNsc0Ryb3A6IGZhbHNlLFxuICAgICAgICBhbmltYXRlT3V0OiBmYWxzZSxcbiAgICAgICAgYmdTY3JvbGw6IHRydWUsXG4gICAgICAgIGFuaW1hdGlvbjogWyd1ay1hbmltYXRpb24tZmFkZSddLFxuICAgICAgICBjbHM6ICd1ay1vcGVuJyxcbiAgICAgICAgY29udGFpbmVyOiBmYWxzZSxcbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgYm91bmRhcnkoeyBib3VuZGFyeSwgYm91bmRhcnlYLCBib3VuZGFyeVkgfSwgJGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHF1ZXJ5KGJvdW5kYXJ5WCB8fCBib3VuZGFyeSwgJGVsKSB8fCB3aW5kb3csXG4gICAgICAgICAgICAgICAgcXVlcnkoYm91bmRhcnlZIHx8IGJvdW5kYXJ5LCAkZWwpIHx8IHdpbmRvdyxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgdGFyZ2V0KHsgdGFyZ2V0LCB0YXJnZXRYLCB0YXJnZXRZIH0sICRlbCkge1xuICAgICAgICAgICAgdGFyZ2V0WCA9IHRhcmdldFggfHwgdGFyZ2V0IHx8IHRoaXMudGFyZ2V0RWw7XG4gICAgICAgICAgICB0YXJnZXRZID0gdGFyZ2V0WSB8fCB0YXJnZXQgfHwgdGhpcy50YXJnZXRFbDtcblxuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0YXJnZXRYID09PSB0cnVlID8gd2luZG93IDogcXVlcnkodGFyZ2V0WCwgJGVsKSxcbiAgICAgICAgICAgICAgICB0YXJnZXRZID09PSB0cnVlID8gd2luZG93IDogcXVlcnkodGFyZ2V0WSwgJGVsKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgIHRoaXMudHJhY2tlciA9IG5ldyBNb3VzZVRyYWNrZXIoKTtcbiAgICB9LFxuXG4gICAgYmVmb3JlQ29ubmVjdCgpIHtcbiAgICAgICAgdGhpcy5jbHNEcm9wID0gdGhpcy4kcHJvcHMuY2xzRHJvcCB8fCBgdWstJHt0aGlzLiRvcHRpb25zLm5hbWV9YDtcbiAgICB9LFxuXG4gICAgY29ubmVjdGVkKCkge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWRyb3AnLCB0aGlzLmNsc0Ryb3ApO1xuXG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZSAmJiAhdGhpcy50YXJnZXRFbCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXRFbCA9IGNyZWF0ZVRvZ2dsZUNvbXBvbmVudCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N0eWxlID0gcGljayh0aGlzLiRlbC5zdHlsZSwgWyd3aWR0aCcsICdoZWlnaHQnXSk7XG4gICAgfSxcblxuICAgIGRpc2Nvbm5lY3RlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgIGFjdGl2ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLl9zdHlsZSk7XG4gICAgfSxcblxuICAgIG9ic2VydmU6IGxhenlsb2FkKHtcbiAgICAgICAgdGFyZ2V0OiAoeyB0b2dnbGUsICRlbCB9KSA9PiBxdWVyeSh0b2dnbGUsICRlbCksXG4gICAgICAgIHRhcmdldHM6ICh7ICRlbCB9KSA9PiAkZWwsXG4gICAgfSksXG5cbiAgICBldmVudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcudWstZHJvcC1jbG9zZSc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdhW2hyZWYqPVwiI1wiXSc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKHsgZGVmYXVsdFByZXZlbnRlZCwgY3VycmVudCB9KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBoYXNoIH0gPSBjdXJyZW50O1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHRQcmV2ZW50ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgaGFzaCAmJlxuICAgICAgICAgICAgICAgICAgICBpc1NhbWVTaXRlQW5jaG9yKGN1cnJlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICF3aXRoaW4oaGFzaCwgdGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2Nyb2xsJyxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndG9nZ2xlJyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcihlLCB0b2dnbGUpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0b2dnbGU/LiRlbCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3RvZ2dsZXNob3cnLFxuXG4gICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUsIHRvZ2dsZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3codG9nZ2xlPy4kZWwpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndG9nZ2xlaGlkZScsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXModGhpcy4kZWwsICc6Zm9jdXMsOmhvdmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgJHtwb2ludGVyRW50ZXJ9IGZvY3VzaW5gLFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYCR7cG9pbnRlckxlYXZlfSBmb2N1c291dGAsXG5cbiAgICAgICAgICAgIGZpbHRlcigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5jbHVkZXModGhpcy5tb2RlLCAnaG92ZXInKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSAmJiBlLnJlbGF0ZWRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndG9nZ2xlZCcsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSwgdG9nZ2xlZCkge1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy50YXJnZXRFbCwgJ2FyaWEtZXhwYW5kZWQnLCB0b2dnbGVkID8gdHJ1ZSA6IG51bGwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0b2dnbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHRoaXMudHJhY2tlci5pbml0KCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IFtcbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuRm9yUmVzaXplKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5Gb3JFc2NDbG9zZSh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuRm9yQmFja2dyb3VuZENsb3NlKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9VcGRhdGUgJiYgbGlzdGVuRm9yU2Nyb2xsKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5iZ1Njcm9sbCAmJiBwcmV2ZW50QmFja2dyb3VuZFNjcm9sbCh0aGlzLiRlbCksXG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIG9uY2UodGhpcy4kZWwsICdoaWRlJywgKCkgPT4gaGFuZGxlcnMuZm9yRWFjaCgoaGFuZGxlcikgPT4gaGFuZGxlciAmJiBoYW5kbGVyKCkpLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVoaWRlJyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZXJzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgaGFuZGxlcih7IHRhcmdldCB9KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJGVsICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9PT0gbnVsbCAmJiB3aXRoaW4odGFyZ2V0LCB0aGlzLiRlbCkgJiYgdGhpcy5pc1RvZ2dsZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpID8gbnVsbCA6IGFjdGl2ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuY2FuY2VsKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG5cbiAgICB1cGRhdGU6IHtcbiAgICAgICAgd3JpdGUoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSAmJiAhaGFzQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRW50ZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHNob3codGFyZ2V0ID0gdGhpcy50YXJnZXRFbCwgZGVsYXkgPSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSAmJiB0YXJnZXQgJiYgdGhpcy50YXJnZXRFbCAmJiB0YXJnZXQgIT09IHRoaXMudGFyZ2V0RWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50YXJnZXRFbCA9IHRhcmdldDtcblxuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5ICYmIGFjdGl2ZS5pc0RlbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiBtYXRjaGVzKHRhcmdldCwgJzpob3ZlcicpICYmIHRoaXMuc2hvdygpLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJldjtcbiAgICAgICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIHByZXYgIT09IGFjdGl2ZSAmJiAhd2l0aGluKHRoaXMuJGVsLCBhY3RpdmUuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICBwcmV2ID0gYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHBhcmVudCh0aGlzLiRlbCkgIT09IHRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMuY29udGFpbmVyLCB0aGlzLiRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy4kZWwsIHRydWUpLFxuICAgICAgICAgICAgICAgIChkZWxheSAmJiB0aGlzLmRlbGF5U2hvdykgfHwgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBoaWRlKGRlbGF5ID0gdHJ1ZSwgYW5pbWF0ZSA9IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGUgPSAoKSA9PiB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy4kZWwsIGZhbHNlLCB0aGlzLmFuaW1hdGVPdXQgJiYgYW5pbWF0ZSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcblxuICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gZ2V0UG9zaXRpb25lZEVsZW1lbnRzKHRoaXMuJGVsKS5zb21lKChlbCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIubW92ZXNUbyhlbClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChkZWxheSAmJiB0aGlzLmlzRGVsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlLCA1MCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRlbGF5ICYmIHRoaXMuZGVsYXlIaWRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlVGltZXIgPSBzZXRUaW1lb3V0KGhpZGUsIHRoaXMuZGVsYXlIaWRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGNsZWFyVGltZXJzKCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7XG4gICAgICAgICAgICB0aGlzLnNob3dUaW1lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmlzRGVsYXlpbmcgPSBmYWxzZTtcbiAgICAgICAgfSxcblxuICAgICAgICBpc0FjdGl2ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiBhY3RpdmUgPT09IHRoaXM7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcG9zaXRpb24oKSB7XG4gICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3VrLWRyb3Atc3RhY2snKTtcbiAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5fc3R5bGUpO1xuXG4gICAgICAgICAgICAvLyBFbnN1cmUgbm9uZSBwb3NpdGlvbmVkIGVsZW1lbnQgZG9lcyBub3QgZ2VuZXJhdGUgc2Nyb2xsYmFyc1xuICAgICAgICAgICAgdGhpcy4kZWwuaGlkZGVuID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRzID0gdGhpcy50YXJnZXQubWFwKCh0YXJnZXQpID0+IGdldFZpZXdwb3J0KHRoaXMuJGVsLCB0YXJnZXQpKTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0T2Zmc2V0ID0gdGhpcy5nZXRWaWV3cG9ydE9mZnNldCh0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpcnMgPSBbXG4gICAgICAgICAgICAgICAgWzAsIFsneCcsICd3aWR0aCcsICdsZWZ0JywgJ3JpZ2h0J11dLFxuICAgICAgICAgICAgICAgIFsxLCBbJ3knLCAnaGVpZ2h0JywgJ3RvcCcsICdib3R0b20nXV0sXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtpLCBbYXhpcywgcHJvcF1dIG9mIGRpcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5heGlzICE9PSBheGlzICYmIGluY2x1ZGVzKFtheGlzLCB0cnVlXSwgdGhpcy5zdHJldGNoKSkge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wXTogTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KHRoaXMuYm91bmRhcnlbaV0pW3Byb3BdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0c1tpXVtwcm9wXSAtIDIgKiB2aWV3cG9ydE9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtgb3ZlcmZsb3ctJHtheGlzfWBdOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSB2aWV3cG9ydHNbMF0ud2lkdGggLSAyICogdmlld3BvcnRPZmZzZXQ7XG5cbiAgICAgICAgICAgIHRoaXMuJGVsLmhpZGRlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjc3ModGhpcy4kZWwsICdtYXhXaWR0aCcsICcnKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuJGVsLm9mZnNldFdpZHRoID4gbWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWRyb3Atc3RhY2snKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnbWF4V2lkdGgnLCBtYXhXaWR0aCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25BdCh0aGlzLiRlbCwgdGhpcy50YXJnZXQsIHRoaXMuYm91bmRhcnkpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtpLCBbYXhpcywgcHJvcCwgc3RhcnQsIGVuZF1dIG9mIGRpcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5heGlzID09PSBheGlzICYmIGluY2x1ZGVzKFtheGlzLCB0cnVlXSwgdGhpcy5zdHJldGNoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbk9mZnNldCA9IE1hdGguYWJzKHRoaXMuZ2V0UG9zaXRpb25PZmZzZXQodGhpcy4kZWwpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0T2Zmc2V0ID0gb2Zmc2V0KHRoaXMudGFyZ2V0W2ldKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxPZmZzZXQgPSBvZmZzZXQodGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BdOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRPZmZzZXRbc3RhcnRdID4gZWxPZmZzZXRbc3RhcnRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGFyZ2V0T2Zmc2V0W3N0YXJ0XSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCh0aGlzLmJvdW5kYXJ5W2ldKVtzdGFydF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0c1tpXVtzdGFydF0gKyB2aWV3cG9ydE9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KHRoaXMuYm91bmRhcnlbaV0pW2VuZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0c1tpXVtlbmRdIC0gdmlld3BvcnRPZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC0gdGFyZ2V0T2Zmc2V0W2VuZF0pIC0gcG9zaXRpb25PZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBbYG92ZXJmbG93LSR7YXhpc31gXTogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uQXQodGhpcy4kZWwsIHRoaXMudGFyZ2V0LCB0aGlzLmJvdW5kYXJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIGdldFBvc2l0aW9uZWRFbGVtZW50cyhlbCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGFwcGx5KGVsLCAoZWwpID0+IGNzcyhlbCwgJ3Bvc2l0aW9uJykgIT09ICdzdGF0aWMnICYmIHJlc3VsdC5wdXNoKGVsKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnQoZWwsIHRhcmdldCkge1xuICAgIHJldHVybiBvZmZzZXRWaWV3cG9ydChvdmVyZmxvd1BhcmVudHModGFyZ2V0KS5maW5kKChwYXJlbnQpID0+IHdpdGhpbihlbCwgcGFyZW50KSkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUb2dnbGVDb21wb25lbnQoZHJvcCkge1xuICAgIGNvbnN0IHsgJGVsIH0gPSBkcm9wLiRjcmVhdGUoJ3RvZ2dsZScsIHF1ZXJ5KGRyb3AudG9nZ2xlLCBkcm9wLiRlbCksIHtcbiAgICAgICAgdGFyZ2V0OiBkcm9wLiRlbCxcbiAgICAgICAgbW9kZTogZHJvcC5tb2RlLFxuICAgIH0pO1xuICAgIGF0dHIoJGVsLCAnYXJpYS1oYXNwb3B1cCcsIHRydWUpO1xuXG4gICAgcmV0dXJuICRlbDtcbn1cblxuZnVuY3Rpb24gbGlzdGVuRm9yUmVzaXplKGRyb3ApIHtcbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiBkcm9wLiRlbWl0KCk7XG4gICAgY29uc3Qgb2ZmID0gb24od2luZG93LCAncmVzaXplJywgdXBkYXRlKTtcbiAgICBjb25zdCBvYnNlcnZlciA9IG9ic2VydmVSZXNpemUob3ZlcmZsb3dQYXJlbnRzKGRyb3AuJGVsKS5jb25jYXQoZHJvcC50YXJnZXQpLCB1cGRhdGUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgb2ZmKCk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gbGlzdGVuRm9yU2Nyb2xsKGRyb3ApIHtcbiAgICByZXR1cm4gb24oW2RvY3VtZW50LCAuLi5vdmVyZmxvd1BhcmVudHMoZHJvcC4kZWwpXSwgJ3Njcm9sbCcsICgpID0+IGRyb3AuJGVtaXQoKSwge1xuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBsaXN0ZW5Gb3JFc2NDbG9zZShkcm9wKSB7XG4gICAgcmV0dXJuIG9uKGRvY3VtZW50LCAna2V5ZG93bicsIChlKSA9PiB7XG4gICAgICAgIGlmIChlLmtleUNvZGUgPT09IGtleU1hcC5FU0MpIHtcbiAgICAgICAgICAgIGRyb3AuaGlkZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gbGlzdGVuRm9yQmFja2dyb3VuZENsb3NlKGRyb3ApIHtcbiAgICByZXR1cm4gb24oZG9jdW1lbnQsIHBvaW50ZXJEb3duLCAoeyB0YXJnZXQgfSkgPT4ge1xuICAgICAgICBpZiAoIXdpdGhpbih0YXJnZXQsIGRyb3AuJGVsKSkge1xuICAgICAgICAgICAgb25jZShcbiAgICAgICAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICAgICAgICBgJHtwb2ludGVyVXB9ICR7cG9pbnRlckNhbmNlbH0gc2Nyb2xsYCxcbiAgICAgICAgICAgICAgICAoeyBkZWZhdWx0UHJldmVudGVkLCB0eXBlLCB0YXJnZXQ6IG5ld1RhcmdldCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0UHJldmVudGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBwb2ludGVyVXAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9PT0gbmV3VGFyZ2V0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKGRyb3AudGFyZ2V0RWwgJiYgd2l0aGluKHRhcmdldCwgZHJvcC50YXJnZXRFbCkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcC5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0IHsgYWN0aXZlIH0gZnJvbSAnLi9kcm9wJztcbmltcG9ydCBDbGFzcyBmcm9tICcuLi9taXhpbi9jbGFzcyc7XG5pbXBvcnQgQ29udGFpbmVyIGZyb20gJy4uL21peGluL2NvbnRhaW5lcic7XG5pbXBvcnQge1xuICAgICQsXG4gICAgJCQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYWZ0ZXIsXG4gICAgY3NzLFxuICAgIGZpbmRJbmRleCxcbiAgICBnZXRJbmRleCxcbiAgICBoYXNBdHRyLFxuICAgIGhhc0NsYXNzLFxuICAgIGhlaWdodCxcbiAgICBpbmNsdWRlcyxcbiAgICBpc1J0bCxcbiAgICBtYXRjaGVzLFxuICAgIG5vb3AsXG4gICAgb2JzZXJ2ZVJlc2l6ZSxcbiAgICBvZmZzZXQsXG4gICAgb25jZSxcbiAgICBwYXJlbnRzLFxuICAgIHF1ZXJ5LFxuICAgIHJlbW92ZSxcbiAgICBzZWxGb2N1c2FibGUsXG4gICAgdG9GbG9hdCxcbiAgICBUcmFuc2l0aW9uLFxuICAgIHdpdGhpbixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5pbXBvcnQgeyBrZXlNYXAgfSBmcm9tICcuLi91dGlsL2tleXMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ2xhc3MsIENvbnRhaW5lcl0sXG5cbiAgICBwcm9wczoge1xuICAgICAgICBhbGlnbjogU3RyaW5nLFxuICAgICAgICBjbHNEcm9wOiBTdHJpbmcsXG4gICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICBkcm9wYmFyOiBCb29sZWFuLFxuICAgICAgICBkcm9wYmFyQW5jaG9yOiBCb29sZWFuLFxuICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICBtb2RlOiBCb29sZWFuLFxuICAgICAgICBvZmZzZXQ6IEJvb2xlYW4sXG4gICAgICAgIHN0cmV0Y2g6IEJvb2xlYW4sXG4gICAgICAgIGRlbGF5U2hvdzogQm9vbGVhbixcbiAgICAgICAgZGVsYXlIaWRlOiBCb29sZWFuLFxuICAgICAgICB0YXJnZXQ6IEJvb2xlYW4sXG4gICAgICAgIHRhcmdldFg6IEJvb2xlYW4sXG4gICAgICAgIHRhcmdldFk6IEJvb2xlYW4sXG4gICAgICAgIGFuaW1hdGlvbjogQm9vbGVhbixcbiAgICAgICAgYW5pbWF0ZU91dDogQm9vbGVhbixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBhbGlnbjogaXNSdGwgPyAncmlnaHQnIDogJ2xlZnQnLFxuICAgICAgICBjbHNEcm9wOiAndWstZHJvcGRvd24nLFxuICAgICAgICBjbHNEcm9wYmFyOiAndWstZHJvcG5hdi1kcm9wYmFyJyxcbiAgICAgICAgYm91bmRhcnk6IHRydWUsXG4gICAgICAgIGRyb3BiYXI6IGZhbHNlLFxuICAgICAgICBkcm9wYmFyQW5jaG9yOiBmYWxzZSxcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgY29udGFpbmVyOiBmYWxzZSxcbiAgICAgICAgc2VsTmF2SXRlbTogJz4gbGkgPiBhLCA+IHVsID4gbGkgPiBhJyxcbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgZHJvcGJhckFuY2hvcih7IGRyb3BiYXJBbmNob3IgfSwgJGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gcXVlcnkoZHJvcGJhckFuY2hvciwgJGVsKSB8fCAkZWw7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZHJvcGJhcih7IGRyb3BiYXIgfSkge1xuICAgICAgICAgICAgaWYgKCFkcm9wYmFyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRyb3BiYXIgPVxuICAgICAgICAgICAgICAgIHRoaXMuX2Ryb3BiYXIgfHwgcXVlcnkoZHJvcGJhciwgdGhpcy4kZWwpIHx8ICQoYCsgLiR7dGhpcy5jbHNEcm9wYmFyfWAsIHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRyb3BiYXIgPyBkcm9wYmFyIDogKHRoaXMuX2Ryb3BiYXIgPSAkKCc8ZGl2PjwvZGl2PicpKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkcm9wQ29udGFpbmVyKF8sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyIHx8ICRlbDtcbiAgICAgICAgfSxcblxuICAgICAgICBkcm9wZG93bnMoeyBjbHNEcm9wIH0sICRlbCkge1xuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25zID0gJCQoYC4ke2Nsc0Ryb3B9YCwgJGVsKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcENvbnRhaW5lciAhPT0gJGVsKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbCBvZiAkJChgLiR7Y2xzRHJvcH1gLCB0aGlzLmRyb3BDb250YWluZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuZ2V0RHJvcGRvd24oZWwpPy50YXJnZXRFbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhkcm9wZG93bnMsIGVsKSAmJiB0YXJnZXQgJiYgd2l0aGluKHRhcmdldCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93bnMucHVzaChlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkcm9wZG93bnM7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaXRlbXMoeyBzZWxOYXZJdGVtIH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuICQkKHNlbE5hdkl0ZW0sICRlbCk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHdhdGNoOiB7XG4gICAgICAgIGRyb3BiYXIoZHJvcGJhcikge1xuICAgICAgICAgICAgYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgZHJvcGJhcixcbiAgICAgICAgICAgICAgICAndWstZHJvcGJhcicsXG4gICAgICAgICAgICAgICAgJ3VrLWRyb3BiYXItdG9wJyxcbiAgICAgICAgICAgICAgICB0aGlzLmNsc0Ryb3BiYXIsXG4gICAgICAgICAgICAgICAgYHVrLSR7dGhpcy4kb3B0aW9ucy5uYW1lfS1kcm9wYmFyYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkcm9wZG93bnMoZHJvcGRvd25zKSB7XG4gICAgICAgICAgICB0aGlzLiRjcmVhdGUoXG4gICAgICAgICAgICAgICAgJ2Ryb3AnLFxuICAgICAgICAgICAgICAgIGRyb3Bkb3ducy5maWx0ZXIoKGVsKSA9PiAhdGhpcy5nZXREcm9wZG93bihlbCkpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy4kcHJvcHMsXG4gICAgICAgICAgICAgICAgICAgIGZsaXA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzaGlmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgcG9zOiBgYm90dG9tLSR7dGhpcy5hbGlnbn1gLFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeTogdGhpcy5ib3VuZGFyeSA9PT0gdHJ1ZSA/IHRoaXMuJGVsIDogdGhpcy5ib3VuZGFyeSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBkaXNjb25uZWN0ZWQoKSB7XG4gICAgICAgIHJlbW92ZSh0aGlzLl9kcm9wYmFyKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2Ryb3BiYXI7XG4gICAgfSxcblxuICAgIGV2ZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbW91c2VvdmVyIGZvY3VzaW4nLFxuXG4gICAgICAgICAgICBkZWxlZ2F0ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxOYXZJdGVtO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFuZGxlcih7IGN1cnJlbnQgfSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmUgJiZcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMoYWN0aXZlLm1vZGUsICdob3ZlcicpICYmXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZS50YXJnZXRFbCAmJlxuICAgICAgICAgICAgICAgICAgICAhd2l0aGluKGFjdGl2ZS50YXJnZXRFbCwgY3VycmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWFjdGl2ZS5pc0RlbGF5aW5nXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXlkb3duJyxcblxuICAgICAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsTmF2SXRlbTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudCwga2V5Q29kZSB9ID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGtleUNvZGUgPT09IGtleU1hcC5ET1dOICYmIGhhc0F0dHIoY3VycmVudCwgJ2FyaWEtZXhwYW5kZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUgfHwgYWN0aXZlLnRhcmdldEVsICE9PSBjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMuZHJvcENvbnRhaW5lciwgJ3Nob3cnLCAoeyB0YXJnZXQgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudCh0YXJnZXQpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNGaXJzdEZvY3VzYWJsZUVsZW1lbnQoYWN0aXZlLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBoYW5kbGVOYXZJdGVtTmF2aWdhdGlvbihlLCB0aGlzLml0ZW1zLCBhY3RpdmUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAna2V5ZG93bicsXG5cbiAgICAgICAgICAgIGVsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BDb250YWluZXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkZWxlZ2F0ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYC4ke3RoaXMuY2xzRHJvcH1gO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFuZGxlcihlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50LCBrZXlDb2RlIH0gPSBlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyh0aGlzLmRyb3Bkb3ducywgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSAtMTtcblxuICAgICAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBrZXlNYXAuSE9NRSkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gMDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IGtleU1hcC5FTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9ICdsYXN0JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IGtleU1hcC5VUCkge1xuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gJ3ByZXZpb3VzJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IGtleU1hcC5ET1dOKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSAnbmV4dCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBrZXlNYXAuRVNDKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZS50YXJnZXRFbD8uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAofm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9ICQkKHNlbEZvY3VzYWJsZSwgY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzW1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW5kZXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kSW5kZXgoZWxlbWVudHMsIChlbCkgPT4gbWF0Y2hlcyhlbCwgJzpmb2N1cycpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaGFuZGxlTmF2SXRlbU5hdmlnYXRpb24oZSwgdGhpcy5pdGVtcywgYWN0aXZlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ21vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICBlbCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZmlsdGVyKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSAmJlxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyhhY3RpdmUubW9kZSwgJ2hvdmVyJykgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuZHJvcGRvd25zLnNvbWUoKGVsKSA9PiBtYXRjaGVzKGVsLCAnOmhvdmVyJykpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnYmVmb3Jlc2hvdycsXG5cbiAgICAgICAgICAgIGVsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BDb250YWluZXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoeyB0YXJnZXQgfSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0Ryb3BiYXJEcm9wKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRyb3BiYXIucHJldmlvdXNFbGVtZW50U2libGluZyAhPT0gdGhpcy5kcm9wYmFyQW5jaG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGFmdGVyKHRoaXMuZHJvcGJhckFuY2hvciwgdGhpcy5kcm9wYmFyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0YXJnZXQsIGAke3RoaXMuY2xzRHJvcH0tZHJvcGJhcmApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgIGVsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BDb250YWluZXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoeyB0YXJnZXQgfSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0Ryb3BiYXJEcm9wKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRyb3AgPSB0aGlzLmdldERyb3Bkb3duKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRqdXN0SGVpZ2h0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRPZmZzZXRzID0gcGFyZW50cyh0YXJnZXQsIGAuJHt0aGlzLmNsc0Ryb3B9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQodGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZWwpID0+IG9mZnNldChlbCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW5Ub3AgPSBNYXRoLm1pbiguLi50YXJnZXRPZmZzZXRzLm1hcCgoeyB0b3AgfSkgPT4gdG9wKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heEJvdHRvbSA9IE1hdGgubWF4KC4uLnRhcmdldE9mZnNldHMubWFwKCh7IGJvdHRvbSB9KSA9PiBib3R0b20pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZHJvcGJhck9mZnNldCA9IG9mZnNldCh0aGlzLmRyb3BiYXIpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy5kcm9wYmFyLCAndG9wJywgdGhpcy5kcm9wYmFyLm9mZnNldFRvcCAtIChkcm9wYmFyT2Zmc2V0LnRvcCAtIG1pblRvcCkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdHRvbSAtIG1pblRvcCArIHRvRmxvYXQoY3NzKHRhcmdldCwgJ21hcmdpbkJvdHRvbScpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBvYnNlcnZlUmVzaXplKFtkcm9wLiRlbCwgLi4uZHJvcC50YXJnZXRdLCBhZGp1c3RIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGFkanVzdEhlaWdodCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgIGVsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BDb250YWluZXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXModGhpcy5kcm9wYmFyLCAnOmhvdmVyJykgJiZcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlLiRlbCA9PT0gZS50YXJnZXQgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuaXRlbXMuc29tZSgoZWwpID0+IGFjdGl2ZS50YXJnZXRFbCAhPT0gZWwgJiYgbWF0Y2hlcyhlbCwgJzpmb2N1cycpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgIGVsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BDb250YWluZXI7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoeyB0YXJnZXQgfSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0Ryb3BiYXJEcm9wKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUgfHwgYWN0aXZlLiRlbCA9PT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgXSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZ2V0QWN0aXZlKCkge1xuICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMuZHJvcGRvd25zLCBhY3RpdmU/LiRlbCkgJiYgYWN0aXZlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIHRyYW5zaXRpb25UbyhuZXdIZWlnaHQsIGVsKSB7XG4gICAgICAgICAgICBjb25zdCB7IGRyb3BiYXIgfSA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBvbGRIZWlnaHQgPSBoZWlnaHQoZHJvcGJhcik7XG5cbiAgICAgICAgICAgIGVsID0gb2xkSGVpZ2h0IDwgbmV3SGVpZ2h0ICYmIGVsO1xuXG4gICAgICAgICAgICBhd2FpdCBUcmFuc2l0aW9uLmNhbmNlbChbZWwsIGRyb3BiYXJdKTtcblxuICAgICAgICAgICAgY3NzKGVsLCAnY2xpcFBhdGgnLCBgcG9seWdvbigwIDAsMTAwJSAwLDEwMCUgJHtvbGRIZWlnaHR9cHgsMCAke29sZEhlaWdodH1weClgKTtcbiAgICAgICAgICAgIGhlaWdodChkcm9wYmFyLCBvbGRIZWlnaHQpO1xuXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydChkcm9wYmFyLCB7IGhlaWdodDogbmV3SGVpZ2h0IH0sIHRoaXMuZHVyYXRpb24pLFxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoXG4gICAgICAgICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlwUGF0aDogYHBvbHlnb24oMCAwLDEwMCUgMCwxMDAlICR7bmV3SGVpZ2h0fXB4LDAgJHtuZXdIZWlnaHR9cHgpYCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kdXJhdGlvblxuICAgICAgICAgICAgICAgICkuZmluYWxseSgoKSA9PiBjc3MoZWwsIHsgY2xpcFBhdGg6ICcnIH0pKSxcbiAgICAgICAgICAgIF0pLmNhdGNoKG5vb3ApO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldERyb3Bkb3duKGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4kZ2V0Q29tcG9uZW50KGVsLCAnZHJvcCcpIHx8IHRoaXMuJGdldENvbXBvbmVudChlbCwgJ2Ryb3Bkb3duJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaXNEcm9wYmFyRHJvcChlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd24oZWwpICYmIGhhc0NsYXNzKGVsLCB0aGlzLmNsc0Ryb3ApO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBoYW5kbGVOYXZJdGVtTmF2aWdhdGlvbihlLCB0b2dnbGVzLCBhY3RpdmUpIHtcbiAgICBjb25zdCB7IGN1cnJlbnQsIGtleUNvZGUgfSA9IGU7XG4gICAgbGV0IG5leHQgPSAtMTtcblxuICAgIGlmIChrZXlDb2RlID09PSBrZXlNYXAuSE9NRSkge1xuICAgICAgICBuZXh0ID0gMDtcbiAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IGtleU1hcC5FTkQpIHtcbiAgICAgICAgbmV4dCA9ICdsYXN0JztcbiAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IGtleU1hcC5MRUZUKSB7XG4gICAgICAgIG5leHQgPSAncHJldmlvdXMnO1xuICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0ga2V5TWFwLlJJR0hUKSB7XG4gICAgICAgIG5leHQgPSAnbmV4dCc7XG4gICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBrZXlNYXAuVEFCKSB7XG4gICAgICAgIGFjdGl2ZS50YXJnZXRFbD8uZm9jdXMoKTtcbiAgICAgICAgYWN0aXZlLmhpZGU/LihmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKH5uZXh0KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYWN0aXZlLmhpZGU/LihmYWxzZSk7XG4gICAgICAgIHRvZ2dsZXNbZ2V0SW5kZXgobmV4dCwgdG9nZ2xlcywgdG9nZ2xlcy5pbmRleE9mKGFjdGl2ZS50YXJnZXRFbCB8fCBjdXJyZW50KSldLmZvY3VzKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmb2N1c0ZpcnN0Rm9jdXNhYmxlRWxlbWVudChlbCkge1xuICAgIGlmICghJCgnOmZvY3VzJywgZWwpKSB7XG4gICAgICAgICQoc2VsRm9jdXNhYmxlLCBlbCk/LmZvY3VzKCk7XG4gICAgfVxufVxuIiwiaW1wb3J0IENsYXNzIGZyb20gJy4uL21peGluL2NsYXNzJztcbmltcG9ydCB7ICQsICQkLCBjbG9zZXN0LCBpc0lucHV0LCBtYXRjaGVzLCBwYXJlbnQsIHNlbElucHV0IH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHRhcmdldDogQm9vbGVhbixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBpbnB1dChfLCAkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiAkKHNlbElucHV0LCAkZWwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICB9LFxuXG4gICAgICAgIHRhcmdldCh7IHRhcmdldCB9LCAkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGFyZ2V0ICYmXG4gICAgICAgICAgICAgICAgKCh0YXJnZXQgPT09IHRydWUgJiYgcGFyZW50KHRoaXMuaW5wdXQpID09PSAkZWwgJiYgdGhpcy5pbnB1dC5uZXh0RWxlbWVudFNpYmxpbmcpIHx8XG4gICAgICAgICAgICAgICAgICAgICQodGFyZ2V0LCAkZWwpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB7IHRhcmdldCwgaW5wdXQgfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvcHRpb247XG4gICAgICAgIGNvbnN0IHByb3AgPSBpc0lucHV0KHRhcmdldCkgPyAndmFsdWUnIDogJ3RleHRDb250ZW50JztcbiAgICAgICAgY29uc3QgcHJldiA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC5maWxlcz8uWzBdXG4gICAgICAgICAgICA/IGlucHV0LmZpbGVzWzBdLm5hbWVcbiAgICAgICAgICAgIDogbWF0Y2hlcyhpbnB1dCwgJ3NlbGVjdCcpICYmXG4gICAgICAgICAgICAgIChvcHRpb24gPSAkJCgnb3B0aW9uJywgaW5wdXQpLmZpbHRlcigoZWwpID0+IGVsLnNlbGVjdGVkKVswXSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICAgICAgPyBvcHRpb24udGV4dENvbnRlbnRcbiAgICAgICAgICAgIDogaW5wdXQudmFsdWU7XG5cbiAgICAgICAgaWYgKHByZXYgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBldmVudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2NoYW5nZScsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAncmVzZXQnLFxuXG4gICAgICAgICAgICBlbCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VzdCh0aGlzLiRlbCwgJ2Zvcm0nKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbiIsImltcG9ydCB7IGNoaWxkcmVuLCBpc1J0bCwgaXNWaXNpYmxlLCBvZmZzZXRQb3NpdGlvbiwgdG9nZ2xlQ2xhc3MgfSBmcm9tICd1aWtpdC11dGlsJztcbmltcG9ydCB7IG11dGF0aW9uLCByZXNpemUgfSBmcm9tICcuLi9hcGkvb2JzZXJ2YWJsZXMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgbWFyZ2luOiBTdHJpbmcsXG4gICAgICAgIGZpcnN0Q29sdW1uOiBCb29sZWFuLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIG1hcmdpbjogJ3VrLW1hcmdpbi1zbWFsbC10b3AnLFxuICAgICAgICBmaXJzdENvbHVtbjogJ3VrLWZpcnN0LWNvbHVtbicsXG4gICAgfSxcblxuICAgIG9ic2VydmU6IFtcbiAgICAgICAgbXV0YXRpb24oe1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydzdHlsZSddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHJlc2l6ZSh7XG4gICAgICAgICAgICB0YXJnZXQ6ICh7ICRlbCB9KSA9PiBbJGVsLCAuLi5jaGlsZHJlbigkZWwpXSxcbiAgICAgICAgfSksXG4gICAgXSxcblxuICAgIHVwZGF0ZToge1xuICAgICAgICByZWFkKCkge1xuICAgICAgICAgICAgY29uc3Qgcm93cyA9IGdldFJvd3ModGhpcy4kZWwuY2hpbGRyZW4pO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJvd3MsXG4gICAgICAgICAgICAgICAgY29sdW1uczogZ2V0Q29sdW1ucyhyb3dzKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgd3JpdGUoeyBjb2x1bW5zLCByb3dzIH0pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiByb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoY29sdW1uLCB0aGlzLm1hcmdpbiwgcm93c1swXSAhPT0gcm93KTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoY29sdW1uLCB0aGlzLmZpcnN0Q29sdW1uLCBjb2x1bW5zWzBdLmluY2x1ZGVzKGNvbHVtbikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsncmVzaXplJ10sXG4gICAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3dzKGl0ZW1zKSB7XG4gICAgcmV0dXJuIHNvcnRCeShpdGVtcywgJ3RvcCcsICdib3R0b20nKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29sdW1ucyhyb3dzKSB7XG4gICAgY29uc3QgY29sdW1ucyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgICBjb25zdCBzb3J0ZWQgPSBzb3J0Qnkocm93LCAnbGVmdCcsICdyaWdodCcpO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNvcnRlZC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgY29sdW1uc1tqXSA9IGNvbHVtbnNbal0gPyBjb2x1bW5zW2pdLmNvbmNhdChzb3J0ZWRbal0pIDogc29ydGVkW2pdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzUnRsID8gY29sdW1ucy5yZXZlcnNlKCkgOiBjb2x1bW5zO1xufVxuXG5mdW5jdGlvbiBzb3J0QnkoaXRlbXMsIHN0YXJ0UHJvcCwgZW5kUHJvcCkge1xuICAgIGNvbnN0IHNvcnRlZCA9IFtbXV07XG5cbiAgICBmb3IgKGNvbnN0IGVsIG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGltID0gZ2V0T2Zmc2V0KGVsKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gc29ydGVkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gc29ydGVkW2ldO1xuXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRbMF0pIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50LnB1c2goZWwpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc3RhcnREaW07XG4gICAgICAgICAgICBpZiAoY3VycmVudFswXS5vZmZzZXRQYXJlbnQgPT09IGVsLm9mZnNldFBhcmVudCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0RGltID0gZ2V0T2Zmc2V0KGN1cnJlbnRbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaW0gPSBnZXRPZmZzZXQoZWwsIHRydWUpO1xuICAgICAgICAgICAgICAgIHN0YXJ0RGltID0gZ2V0T2Zmc2V0KGN1cnJlbnRbMF0sIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGltW3N0YXJ0UHJvcF0gPj0gc3RhcnREaW1bZW5kUHJvcF0gLSAxICYmIGRpbVtzdGFydFByb3BdICE9PSBzdGFydERpbVtzdGFydFByb3BdKSB7XG4gICAgICAgICAgICAgICAgc29ydGVkLnB1c2goW2VsXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkaW1bZW5kUHJvcF0gLSAxID4gc3RhcnREaW1bc3RhcnRQcm9wXSB8fCBkaW1bc3RhcnRQcm9wXSA9PT0gc3RhcnREaW1bc3RhcnRQcm9wXSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQucHVzaChlbCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc29ydGVkLnVuc2hpZnQoW2VsXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc29ydGVkO1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQoZWxlbWVudCwgb2Zmc2V0ID0gZmFsc2UpIHtcbiAgICBsZXQgeyBvZmZzZXRUb3AsIG9mZnNldExlZnQsIG9mZnNldEhlaWdodCwgb2Zmc2V0V2lkdGggfSA9IGVsZW1lbnQ7XG5cbiAgICBpZiAob2Zmc2V0KSB7XG4gICAgICAgIFtvZmZzZXRUb3AsIG9mZnNldExlZnRdID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdG9wOiBvZmZzZXRUb3AsXG4gICAgICAgIGxlZnQ6IG9mZnNldExlZnQsXG4gICAgICAgIGJvdHRvbTogb2Zmc2V0VG9wICsgb2Zmc2V0SGVpZ2h0LFxuICAgICAgICByaWdodDogb2Zmc2V0TGVmdCArIG9mZnNldFdpZHRoLFxuICAgIH07XG59XG4iLCJpbXBvcnQgeyBzY3JvbGwgfSBmcm9tICcuLi9hcGkvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IE1hcmdpbiBmcm9tICcuL21hcmdpbic7XG5pbXBvcnQgQ2xhc3MgZnJvbSAnLi4vbWl4aW4vY2xhc3MnO1xuaW1wb3J0IHtcbiAgICBhZGRDbGFzcyxcbiAgICBjaGlsZHJlbixcbiAgICBjc3MsXG4gICAgaGFzQ2xhc3MsXG4gICAgc2Nyb2xsZWRPdmVyLFxuICAgIHNvcnRCeSxcbiAgICBzdW1CeSxcbiAgICB0b0Zsb2F0LFxuICAgIHRvZ2dsZUNsYXNzLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGV4dGVuZHM6IE1hcmdpbixcblxuICAgIG1peGluczogW0NsYXNzXSxcblxuICAgIG5hbWU6ICdncmlkJyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIG1hc29ucnk6IEJvb2xlYW4sXG4gICAgICAgIHBhcmFsbGF4OiBOdW1iZXIsXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgbWFyZ2luOiAndWstZ3JpZC1tYXJnaW4nLFxuICAgICAgICBjbHNTdGFjazogJ3VrLWdyaWQtc3RhY2snLFxuICAgICAgICBtYXNvbnJ5OiBmYWxzZSxcbiAgICAgICAgcGFyYWxsYXg6IDAsXG4gICAgfSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5tYXNvbnJ5ICYmIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleC10b3AgdWstZmxleC13cmFwLXRvcCcpO1xuICAgIH0sXG5cbiAgICBvYnNlcnZlOiBzY3JvbGwoeyBmaWx0ZXI6ICh7IHBhcmFsbGF4IH0pID0+IHBhcmFsbGF4IH0pLFxuXG4gICAgdXBkYXRlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHdyaXRlKHsgY29sdW1ucyB9KSB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzU3RhY2ssIGNvbHVtbnMubGVuZ3RoIDwgMik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ10sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgcmVhZChkYXRhKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgY29sdW1ucywgcm93cyB9ID0gZGF0YTtcblxuICAgICAgICAgICAgICAgIC8vIEZpbHRlciBjb21wb25lbnQgbWFrZXMgZWxlbWVudHMgcG9zaXRpb25lZCBhYnNvbHV0ZVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIWNvbHVtbnMubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgICghdGhpcy5tYXNvbnJ5ICYmICF0aGlzLnBhcmFsbGF4KSB8fFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkQWJzb2x1dGUodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEudHJhbnNsYXRlcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZXMgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gY2hpbGRyZW4odGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkhlaWdodHMgPSBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiBzdW1CeShjb2x1bW4sICdvZmZzZXRIZWlnaHQnKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFyZ2luID0gZ2V0TWFyZ2luVG9wKG5vZGVzLCB0aGlzLm1hcmdpbikgKiAocm93cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbEhlaWdodCA9IE1hdGgubWF4KC4uLmNvbHVtbkhlaWdodHMpICsgbWFyZ2luO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFzb25yeSkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gc29ydEJ5KGNvbHVtbiwgJ29mZnNldFRvcCcpKTtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlcyA9IGdldFRyYW5zbGF0ZXMocm93cywgY29sdW1ucyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHBhZGRpbmcgPSBNYXRoLmFicyh0aGlzLnBhcmFsbGF4KTtcbiAgICAgICAgICAgICAgICBpZiAocGFkZGluZykge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gY29sdW1uSGVpZ2h0cy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAobmV3UGFkZGluZywgaGd0LCBpKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZ3QgKyBtYXJnaW4gKyAoaSAlIDIgPyBwYWRkaW5nIDogcGFkZGluZyAvIDgpIC0gZWxIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7IHBhZGRpbmcsIGNvbHVtbnMsIHRyYW5zbGF0ZXMsIGhlaWdodDogdHJhbnNsYXRlcyA/IGVsSGVpZ2h0IDogJycgfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlKHsgaGVpZ2h0LCBwYWRkaW5nIH0pIHtcbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdwYWRkaW5nQm90dG9tJywgcGFkZGluZyB8fCAnJyk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0ICE9PSBmYWxzZSAmJiBjc3ModGhpcy4kZWwsICdoZWlnaHQnLCBoZWlnaHQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddLFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlYWQoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYWxsYXggJiYgcG9zaXRpb25lZEFic29sdXRlKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZWQ6IHRoaXMucGFyYWxsYXhcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc2Nyb2xsZWRPdmVyKHRoaXMuJGVsKSAqIE1hdGguYWJzKHRoaXMucGFyYWxsYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3cml0ZSh7IGNvbHVtbnMsIHNjcm9sbGVkLCB0cmFuc2xhdGVzIH0pIHtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsZWQgPT09IGZhbHNlICYmICF0cmFuc2xhdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmZvckVhY2goKGVsLCBqKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzY3JvbGxlZCAmJiAhdHJhbnNsYXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYHRyYW5zbGF0ZVkoJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5zbGF0ZXMgJiYgLXRyYW5zbGF0ZXNbaV1bal0pICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjcm9sbGVkID8gKGkgJSAyID8gc2Nyb2xsZWQgOiBzY3JvbGxlZCAvIDgpIDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9cHgpYFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAncmVzaXplJ10sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5cbmZ1bmN0aW9uIHBvc2l0aW9uZWRBYnNvbHV0ZShlbCkge1xuICAgIHJldHVybiBjaGlsZHJlbihlbCkuc29tZSgoZWwpID0+IGNzcyhlbCwgJ3Bvc2l0aW9uJykgPT09ICdhYnNvbHV0ZScpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2xhdGVzKHJvd3MsIGNvbHVtbnMpIHtcbiAgICBjb25zdCByb3dIZWlnaHRzID0gcm93cy5tYXAoKHJvdykgPT4gTWF0aC5tYXgoLi4ucm93Lm1hcCgoZWwpID0+IGVsLm9mZnNldEhlaWdodCkpKTtcblxuICAgIHJldHVybiBjb2x1bW5zLm1hcCgoZWxlbWVudHMpID0+IHtcbiAgICAgICAgbGV0IHByZXYgPSAwO1xuICAgICAgICByZXR1cm4gZWxlbWVudHMubWFwKFxuICAgICAgICAgICAgKGVsZW1lbnQsIHJvdykgPT5cbiAgICAgICAgICAgICAgICAocHJldiArPSByb3cgPyByb3dIZWlnaHRzW3JvdyAtIDFdIC0gZWxlbWVudHNbcm93IC0gMV0ub2Zmc2V0SGVpZ2h0IDogMClcbiAgICAgICAgKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFyZ2luVG9wKG5vZGVzLCBjbHMpIHtcbiAgICBjb25zdCBbbm9kZV0gPSBub2Rlcy5maWx0ZXIoKGVsKSA9PiBoYXNDbGFzcyhlbCwgY2xzKSk7XG5cbiAgICByZXR1cm4gdG9GbG9hdChub2RlID8gY3NzKG5vZGUsICdtYXJnaW5Ub3AnKSA6IGNzcyhub2Rlc1swXSwgJ3BhZGRpbmdMZWZ0JykpO1xufVxuIiwiaW1wb3J0IHsgZ2V0Um93cyB9IGZyb20gJy4vbWFyZ2luJztcbmltcG9ydCB7IHJlc2l6ZSB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyAkJCwgYm94TW9kZWxBZGp1c3QsIGNzcywgZGltZW5zaW9ucywgaXNWaXNpYmxlLCBwaWNrIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICByb3c6IEJvb2xlYW4sXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgdGFyZ2V0OiAnPiAqJyxcbiAgICAgICAgcm93OiB0cnVlLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBlbGVtZW50cyh7IHRhcmdldCB9LCAkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiAkJCh0YXJnZXQsICRlbCk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG9ic2VydmU6IHJlc2l6ZSh7XG4gICAgICAgIHRhcmdldDogKHsgJGVsLCBlbGVtZW50cyB9KSA9PiBbJGVsLCAuLi5lbGVtZW50c10sXG4gICAgfSksXG5cbiAgICB1cGRhdGU6IHtcbiAgICAgICAgcmVhZCgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcm93czogKHRoaXMucm93ID8gZ2V0Um93cyh0aGlzLmVsZW1lbnRzKSA6IFt0aGlzLmVsZW1lbnRzXSkubWFwKG1hdGNoKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgd3JpdGUoeyByb3dzIH0pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBoZWlnaHRzLCBlbGVtZW50cyB9IG9mIHJvd3MpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbCwgaSkgPT4gY3NzKGVsLCAnbWluSGVpZ2h0JywgaGVpZ2h0c1tpXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogWydyZXNpemUnXSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gbWF0Y2goZWxlbWVudHMpIHtcbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4geyBoZWlnaHRzOiBbJyddLCBlbGVtZW50cyB9O1xuICAgIH1cblxuICAgIGxldCBoZWlnaHRzID0gZWxlbWVudHMubWFwKGdldEhlaWdodCk7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4uaGVpZ2h0cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHRzOiBlbGVtZW50cy5tYXAoKGVsLCBpKSA9PiAoaGVpZ2h0c1tpXS50b0ZpeGVkKDIpID09PSBtYXgudG9GaXhlZCgyKSA/ICcnIDogbWF4KSksXG4gICAgICAgIGVsZW1lbnRzLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdldEhlaWdodChlbGVtZW50KSB7XG4gICAgY29uc3Qgc3R5bGUgPSBwaWNrKGVsZW1lbnQuc3R5bGUsIFsnZGlzcGxheScsICdtaW5IZWlnaHQnXSk7XG5cbiAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSkge1xuICAgICAgICBjc3MoZWxlbWVudCwgJ2Rpc3BsYXknLCAnYmxvY2snLCAnaW1wb3J0YW50Jyk7XG4gICAgfVxuICAgIGNzcyhlbGVtZW50LCAnbWluSGVpZ2h0JywgJycpO1xuICAgIGNvbnN0IGhlaWdodCA9IGRpbWVuc2lvbnMoZWxlbWVudCkuaGVpZ2h0IC0gYm94TW9kZWxBZGp1c3QoZWxlbWVudCwgJ2hlaWdodCcsICdjb250ZW50LWJveCcpO1xuICAgIGNzcyhlbGVtZW50LCBzdHlsZSk7XG4gICAgcmV0dXJuIGhlaWdodDtcbn1cbiIsImltcG9ydCB7XG4gICAgYm94TW9kZWxBZGp1c3QsXG4gICAgY3NzLFxuICAgIGRpbWVuc2lvbnMsXG4gICAgZW5kc1dpdGgsXG4gICAgaXNOdW1lcmljLFxuICAgIGlzU3RyaW5nLFxuICAgIGlzVmlzaWJsZSxcbiAgICBvZmZzZXRQb3NpdGlvbixcbiAgICBvZmZzZXRWaWV3cG9ydCxcbiAgICBxdWVyeSxcbiAgICBzY3JvbGxQYXJlbnRzLFxuICAgIHRvRmxvYXQsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuaW1wb3J0IHsgcmVzaXplIH0gZnJvbSAnLi4vYXBpL29ic2VydmFibGVzJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3BzOiB7XG4gICAgICAgIGV4cGFuZDogQm9vbGVhbixcbiAgICAgICAgb2Zmc2V0VG9wOiBCb29sZWFuLFxuICAgICAgICBvZmZzZXRCb3R0b206IEJvb2xlYW4sXG4gICAgICAgIG1pbkhlaWdodDogTnVtYmVyLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGV4cGFuZDogZmFsc2UsXG4gICAgICAgIG9mZnNldFRvcDogZmFsc2UsXG4gICAgICAgIG9mZnNldEJvdHRvbTogZmFsc2UsXG4gICAgICAgIG1pbkhlaWdodDogMCxcbiAgICB9LFxuXG4gICAgLy8gY2hlY2sgZm9yIG9mZnNldFRvcCBjaGFuZ2VcbiAgICBvYnNlcnZlOiByZXNpemUoe1xuICAgICAgICB0YXJnZXQ6ICh7ICRlbCB9KSA9PiBbJGVsLCAuLi5zY3JvbGxQYXJlbnRzKCRlbCldLFxuICAgIH0pLFxuXG4gICAgdXBkYXRlOiB7XG4gICAgICAgIHJlYWQoeyBtaW5IZWlnaHQ6IHByZXYgfSkge1xuICAgICAgICAgICAgaWYgKCFpc1Zpc2libGUodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbWluSGVpZ2h0ID0gJyc7XG4gICAgICAgICAgICBjb25zdCBib3ggPSBib3hNb2RlbEFkanVzdCh0aGlzLiRlbCwgJ2hlaWdodCcsICdjb250ZW50LWJveCcpO1xuXG4gICAgICAgICAgICBjb25zdCB7IGJvZHksIHNjcm9sbGluZ0VsZW1lbnQgfSA9IGRvY3VtZW50O1xuICAgICAgICAgICAgY29uc3QgW3Njcm9sbEVsZW1lbnRdID0gc2Nyb2xsUGFyZW50cyh0aGlzLiRlbCk7XG4gICAgICAgICAgICBjb25zdCB7IGhlaWdodDogdmlld3BvcnRIZWlnaHQgfSA9IG9mZnNldFZpZXdwb3J0KFxuICAgICAgICAgICAgICAgIHNjcm9sbEVsZW1lbnQgPT09IGJvZHkgPyBzY3JvbGxpbmdFbGVtZW50IDogc2Nyb2xsRWxlbWVudFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kKSB7XG4gICAgICAgICAgICAgICAgbWluSGVpZ2h0ID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAgICAgICAgIChkaW1lbnNpb25zKHNjcm9sbEVsZW1lbnQpLmhlaWdodCAtIGRpbWVuc2lvbnModGhpcy4kZWwpLmhlaWdodCkgLVxuICAgICAgICAgICAgICAgICAgICAgICAgYm94LFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTY3JvbGxpbmdFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nRWxlbWVudCA9PT0gc2Nyb2xsRWxlbWVudCB8fCBib2R5ID09PSBzY3JvbGxFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgLy8gb24gbW9iaWxlIGRldmljZXMgKGlPUyBhbmQgQW5kcm9pZCkgd2luZG93LmlubmVySGVpZ2h0ICE9PSAxMDB2aFxuICAgICAgICAgICAgICAgIG1pbkhlaWdodCA9IGBjYWxjKCR7aXNTY3JvbGxpbmdFbGVtZW50ID8gJzEwMHZoJyA6IGAke3ZpZXdwb3J0SGVpZ2h0fXB4YH1gO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub2Zmc2V0VG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1Njcm9sbGluZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvcCA9IG9mZnNldFBvc2l0aW9uKHRoaXMuJGVsKVswXSAtIG9mZnNldFBvc2l0aW9uKHNjcm9sbEVsZW1lbnQpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ICs9IHRvcCA+IDAgJiYgdG9wIDwgdmlld3BvcnRIZWlnaHQgLyAyID8gYCAtICR7dG9wfXB4YCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ICs9IGAgLSAke2NzcyhzY3JvbGxFbGVtZW50LCAncGFkZGluZ1RvcCcpfWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vZmZzZXRCb3R0b20gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ICs9IGAgLSAke2RpbWVuc2lvbnModGhpcy4kZWwubmV4dEVsZW1lbnRTaWJsaW5nKS5oZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNOdW1lcmljKHRoaXMub2Zmc2V0Qm90dG9tKSkge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgKz0gYCAtICR7dGhpcy5vZmZzZXRCb3R0b219dmhgO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vZmZzZXRCb3R0b20gJiYgZW5kc1dpdGgodGhpcy5vZmZzZXRCb3R0b20sICdweCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodCArPSBgIC0gJHt0b0Zsb2F0KHRoaXMub2Zmc2V0Qm90dG9tKX1weGA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh0aGlzLm9mZnNldEJvdHRvbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ICs9IGAgLSAke2RpbWVuc2lvbnMocXVlcnkodGhpcy5vZmZzZXRCb3R0b20sIHRoaXMuJGVsKSkuaGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBtaW5IZWlnaHQgKz0gYCR7Ym94ID8gYCAtICR7Ym94fXB4YCA6ICcnfSlgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyBtaW5IZWlnaHQsIHByZXYgfTtcbiAgICAgICAgfSxcblxuICAgICAgICB3cml0ZSh7IG1pbkhlaWdodCB9KSB7XG4gICAgICAgICAgICBjc3ModGhpcy4kZWwsIHsgbWluSGVpZ2h0IH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5taW5IZWlnaHQgJiYgdG9GbG9hdChjc3ModGhpcy4kZWwsICdtaW5IZWlnaHQnKSkgPCB0aGlzLm1pbkhlaWdodCkge1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIHRoaXMubWluSGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsncmVzaXplJ10sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQgeyBhZnRlciwgYXBwZW5kLCBhdHRyLCBpc1RhZywgaXNWb2lkRWxlbWVudCwgbm9vcCwgcmVtb3ZlLCB0b0Zsb2F0IH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBhcmdzOiAnc3JjJyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHdpZHRoOiBOdW1iZXIsXG4gICAgICAgIGhlaWdodDogTnVtYmVyLFxuICAgICAgICByYXRpbzogTnVtYmVyLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIHJhdGlvOiAxLFxuICAgIH0sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIHRoaXMuc3ZnID0gdGhpcy5nZXRTdmcoKS50aGVuKChlbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IGluc2VydFNWRyhlbCwgdGhpcy4kZWwpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdmdFbCAmJiBzdmcgIT09IHRoaXMuc3ZnRWwpIHtcbiAgICAgICAgICAgICAgICByZW1vdmUodGhpcy5zdmdFbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGx5V2lkdGhBbmRIZWlnaHQuY2FsbCh0aGlzLCBzdmcsIGVsKTtcblxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnN2Z0VsID0gc3ZnKTtcbiAgICAgICAgfSwgbm9vcCk7XG4gICAgfSxcblxuICAgIGRpc2Nvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5zdmcudGhlbigoc3ZnKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNWb2lkRWxlbWVudCh0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbC5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVtb3ZlKHN2Zyk7XG4gICAgICAgICAgICB0aGlzLnN2Z0VsID0gbnVsbDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zdmcgPSBudWxsO1xuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIGdldFN2ZygpIHt9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBpbnNlcnRTVkcoZWwsIHJvb3QpIHtcbiAgICBpZiAoaXNWb2lkRWxlbWVudChyb290KSB8fCBpc1RhZyhyb290LCAnY2FudmFzJykpIHtcbiAgICAgICAgcm9vdC5oaWRkZW4gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IG5leHQgPSByb290Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgcmV0dXJuIGVxdWFscyhlbCwgbmV4dCkgPyBuZXh0IDogYWZ0ZXIocm9vdCwgZWwpO1xuICAgIH1cblxuICAgIGNvbnN0IGxhc3QgPSByb290Lmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgcmV0dXJuIGVxdWFscyhlbCwgbGFzdCkgPyBsYXN0IDogYXBwZW5kKHJvb3QsIGVsKTtcbn1cblxuZnVuY3Rpb24gZXF1YWxzKGVsLCBvdGhlcikge1xuICAgIHJldHVybiBpc1RhZyhlbCwgJ3N2ZycpICYmIGlzVGFnKG90aGVyLCAnc3ZnJykgJiYgZWwuaW5uZXJIVE1MID09PSBvdGhlci5pbm5lckhUTUw7XG59XG5cbmZ1bmN0aW9uIGFwcGx5V2lkdGhBbmRIZWlnaHQoZWwsIHJlZikge1xuICAgIGNvbnN0IHByb3BzID0gWyd3aWR0aCcsICdoZWlnaHQnXTtcbiAgICBsZXQgZGltZW5zaW9ucyA9IHByb3BzLm1hcCgocHJvcCkgPT4gdGhpc1twcm9wXSk7XG5cbiAgICBpZiAoIWRpbWVuc2lvbnMuc29tZSgodmFsKSA9PiB2YWwpKSB7XG4gICAgICAgIGRpbWVuc2lvbnMgPSBwcm9wcy5tYXAoKHByb3ApID0+IGF0dHIocmVmLCBwcm9wKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld0JveCA9IGF0dHIocmVmLCAndmlld0JveCcpO1xuICAgIGlmICh2aWV3Qm94ICYmICFkaW1lbnNpb25zLnNvbWUoKHZhbCkgPT4gdmFsKSkge1xuICAgICAgICBkaW1lbnNpb25zID0gdmlld0JveC5zcGxpdCgnICcpLnNsaWNlKDIpO1xuICAgIH1cblxuICAgIGRpbWVuc2lvbnMuZm9yRWFjaCgodmFsLCBpKSA9PiBhdHRyKGVsLCBwcm9wc1tpXSwgdG9GbG9hdCh2YWwpICogdGhpcy5yYXRpbyB8fCBudWxsKSk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgaTE4bjogT2JqZWN0LFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGkxOG46IG51bGwsXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgdChrZXksIC4uLnBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAodGhpcy5pMThuPy5ba2V5XSB8fCB0aGlzLiRvcHRpb25zLmkxOG4/LltrZXldKT8ucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgLyVzL2csXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHBhcmFtc1tpKytdIHx8ICcnXG4gICAgICAgICAgICAgICAgKSB8fCAnJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcbiIsImltcG9ydCBTdmcgZnJvbSAnLi4vbWl4aW4vc3ZnJztcbmltcG9ydCBJMThuIGZyb20gJy4uL21peGluL2kxOG4nO1xuaW1wb3J0IGNsb3NlSWNvbiBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9jbG9zZS1pY29uLnN2Zyc7XG5pbXBvcnQgY2xvc2VMYXJnZSBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9jbG9zZS1sYXJnZS5zdmcnO1xuaW1wb3J0IGRyb3BQYXJlbnRJY29uIGZyb20gJy4uLy4uL2ltYWdlcy9jb21wb25lbnRzL2Ryb3AtcGFyZW50LWljb24uc3ZnJztcbmltcG9ydCBtYXJrZXIgZnJvbSAnLi4vLi4vaW1hZ2VzL2NvbXBvbmVudHMvbWFya2VyLnN2Zyc7XG5pbXBvcnQgbmF2UGFyZW50SWNvbiBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9uYXYtcGFyZW50LWljb24uc3ZnJztcbmltcG9ydCBuYXZQYXJlbnRJY29uTGFyZ2UgZnJvbSAnLi4vLi4vaW1hZ2VzL2NvbXBvbmVudHMvbmF2LXBhcmVudC1pY29uLWxhcmdlLnN2Zyc7XG5pbXBvcnQgbmF2YmFyUGFyZW50SWNvbiBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9uYXZiYXItcGFyZW50LWljb24uc3ZnJztcbmltcG9ydCBuYXZiYXJUb2dnbGVJY29uIGZyb20gJy4uLy4uL2ltYWdlcy9jb21wb25lbnRzL25hdmJhci10b2dnbGUtaWNvbi5zdmcnO1xuaW1wb3J0IG92ZXJsYXlJY29uIGZyb20gJy4uLy4uL2ltYWdlcy9jb21wb25lbnRzL292ZXJsYXktaWNvbi5zdmcnO1xuaW1wb3J0IHBhZ2luYXRpb25OZXh0IGZyb20gJy4uLy4uL2ltYWdlcy9jb21wb25lbnRzL3BhZ2luYXRpb24tbmV4dC5zdmcnO1xuaW1wb3J0IHBhZ2luYXRpb25QcmV2aW91cyBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9wYWdpbmF0aW9uLXByZXZpb3VzLnN2Zyc7XG5pbXBvcnQgc2VhcmNoSWNvbiBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9zZWFyY2gtaWNvbi5zdmcnO1xuaW1wb3J0IHNlYXJjaExhcmdlIGZyb20gJy4uLy4uL2ltYWdlcy9jb21wb25lbnRzL3NlYXJjaC1sYXJnZS5zdmcnO1xuaW1wb3J0IHNlYXJjaE5hdmJhciBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9zZWFyY2gtbmF2YmFyLnN2Zyc7XG5pbXBvcnQgc2xpZGVuYXZOZXh0IGZyb20gJy4uLy4uL2ltYWdlcy9jb21wb25lbnRzL3NsaWRlbmF2LW5leHQuc3ZnJztcbmltcG9ydCBzbGlkZW5hdk5leHRMYXJnZSBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9zbGlkZW5hdi1uZXh0LWxhcmdlLnN2Zyc7XG5pbXBvcnQgc2xpZGVuYXZQcmV2aW91cyBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9zbGlkZW5hdi1wcmV2aW91cy5zdmcnO1xuaW1wb3J0IHNsaWRlbmF2UHJldmlvdXNMYXJnZSBmcm9tICcuLi8uLi9pbWFnZXMvY29tcG9uZW50cy9zbGlkZW5hdi1wcmV2aW91cy1sYXJnZS5zdmcnO1xuaW1wb3J0IHNwaW5uZXIgZnJvbSAnLi4vLi4vaW1hZ2VzL2NvbXBvbmVudHMvc3Bpbm5lci5zdmcnO1xuaW1wb3J0IHRvdG9wIGZyb20gJy4uLy4uL2ltYWdlcy9jb21wb25lbnRzL3RvdG9wLnN2Zyc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYXBwbHksXG4gICAgYXR0cixcbiAgICBjbG9zZXN0LFxuICAgIGNzcyxcbiAgICBlYWNoLFxuICAgIGhhc0F0dHIsXG4gICAgaGFzQ2xhc3MsXG4gICAgaHlwaGVuYXRlLFxuICAgIGlzUnRsLFxuICAgIGlzU3RyaW5nLFxuICAgIGlzVGFnLFxuICAgIHBhcmVudHMsXG4gICAgc3dhcCxcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmNvbnN0IGljb25zID0ge1xuICAgIHNwaW5uZXIsXG4gICAgdG90b3AsXG4gICAgbWFya2VyLFxuICAgICdjbG9zZS1pY29uJzogY2xvc2VJY29uLFxuICAgICdjbG9zZS1sYXJnZSc6IGNsb3NlTGFyZ2UsXG4gICAgJ2Ryb3AtcGFyZW50LWljb24nOiBkcm9wUGFyZW50SWNvbixcbiAgICAnbmF2LXBhcmVudC1pY29uJzogbmF2UGFyZW50SWNvbixcbiAgICAnbmF2LXBhcmVudC1pY29uLWxhcmdlJzogbmF2UGFyZW50SWNvbkxhcmdlLFxuICAgICduYXZiYXItcGFyZW50LWljb24nOiBuYXZiYXJQYXJlbnRJY29uLFxuICAgICduYXZiYXItdG9nZ2xlLWljb24nOiBuYXZiYXJUb2dnbGVJY29uLFxuICAgICdvdmVybGF5LWljb24nOiBvdmVybGF5SWNvbixcbiAgICAncGFnaW5hdGlvbi1uZXh0JzogcGFnaW5hdGlvbk5leHQsXG4gICAgJ3BhZ2luYXRpb24tcHJldmlvdXMnOiBwYWdpbmF0aW9uUHJldmlvdXMsXG4gICAgJ3NlYXJjaC1pY29uJzogc2VhcmNoSWNvbixcbiAgICAnc2VhcmNoLWxhcmdlJzogc2VhcmNoTGFyZ2UsXG4gICAgJ3NlYXJjaC1uYXZiYXInOiBzZWFyY2hOYXZiYXIsXG4gICAgJ3NsaWRlbmF2LW5leHQnOiBzbGlkZW5hdk5leHQsXG4gICAgJ3NsaWRlbmF2LW5leHQtbGFyZ2UnOiBzbGlkZW5hdk5leHRMYXJnZSxcbiAgICAnc2xpZGVuYXYtcHJldmlvdXMnOiBzbGlkZW5hdlByZXZpb3VzLFxuICAgICdzbGlkZW5hdi1wcmV2aW91cy1sYXJnZSc6IHNsaWRlbmF2UHJldmlvdXNMYXJnZSxcbn07XG5cbmNvbnN0IEljb24gPSB7XG4gICAgaW5zdGFsbCxcblxuICAgIG1peGluczogW1N2Z10sXG5cbiAgICBhcmdzOiAnaWNvbicsXG5cbiAgICBwcm9wczogeyBpY29uOiBTdHJpbmcgfSxcblxuICAgIGlzSWNvbjogdHJ1ZSxcblxuICAgIGJlZm9yZUNvbm5lY3QoKSB7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstaWNvbicpO1xuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIGdldFN2ZygpIHtcbiAgICAgICAgICAgIGNvbnN0IGljb24gPSBnZXRJY29uKHRoaXMuaWNvbik7XG5cbiAgICAgICAgICAgIGlmICghaWNvbikge1xuICAgICAgICAgICAgICAgIHRocm93ICdJY29uIG5vdCBmb3VuZC4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gaWNvbjtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgSWNvbjtcblxuZXhwb3J0IGNvbnN0IEljb25Db21wb25lbnQgPSB7XG4gICAgYXJnczogZmFsc2UsXG5cbiAgICBleHRlbmRzOiBJY29uLFxuXG4gICAgZGF0YTogKHZtKSA9PiAoe1xuICAgICAgICBpY29uOiBoeXBoZW5hdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucy5uYW1lKSxcbiAgICB9KSxcblxuICAgIGJlZm9yZUNvbm5lY3QoKSB7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLiRvcHRpb25zLmlkKTtcbiAgICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IE5hdlBhcmVudEljb24gPSB7XG4gICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgIGJlZm9yZUNvbm5lY3QoKSB7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLiRwcm9wcy5pY29uO1xuICAgICAgICB0aGlzLmljb24gPSBjbG9zZXN0KHRoaXMuJGVsLCAnLnVrLW5hdi1wcmltYXJ5JykgPyBgJHtpY29ufS1sYXJnZWAgOiBpY29uO1xuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3QgU2VhcmNoID0ge1xuICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICBiZWZvcmVDb25uZWN0KCkge1xuICAgICAgICB0aGlzLmljb24gPVxuICAgICAgICAgICAgaGFzQ2xhc3ModGhpcy4kZWwsICd1ay1zZWFyY2gtaWNvbicpICYmIHBhcmVudHModGhpcy4kZWwsICcudWstc2VhcmNoLWxhcmdlJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyAnc2VhcmNoLWxhcmdlJ1xuICAgICAgICAgICAgICAgIDogcGFyZW50cyh0aGlzLiRlbCwgJy51ay1zZWFyY2gtbmF2YmFyJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyAnc2VhcmNoLW5hdmJhcidcbiAgICAgICAgICAgICAgICA6IHRoaXMuJHByb3BzLmljb247XG4gICAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBTcGlubmVyID0ge1xuICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICBiZWZvcmVDb25uZWN0KCkge1xuICAgICAgICBhdHRyKHRoaXMuJGVsLCAncm9sZScsICdzdGF0dXMnKTtcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBnZXRTdmcoKSB7XG4gICAgICAgICAgICBjb25zdCBpY29uID0gYXdhaXQgSWNvbi5tZXRob2RzLmdldFN2Zy5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yYXRpbyAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGNzcygkKCdjaXJjbGUnLCBpY29uKSwgJ3N0cm9rZVdpZHRoJywgMSAvIHRoaXMucmF0aW8pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gaWNvbjtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuY29uc3QgQnV0dG9uQ29tcG9uZW50ID0ge1xuICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICBtaXhpbnM6IFtJMThuXSxcblxuICAgIGJlZm9yZUNvbm5lY3QoKSB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGNsb3Nlc3QodGhpcy4kZWwsICdhLGJ1dHRvbicpO1xuXG4gICAgICAgIGF0dHIoYnV0dG9uLCAncm9sZScsIHRoaXMucm9sZSAhPT0gbnVsbCAmJiBpc1RhZyhidXR0b24sICdhJykgPyAnYnV0dG9uJyA6IHRoaXMucm9sZSk7XG5cbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnQoJ2xhYmVsJyk7XG4gICAgICAgIGlmIChsYWJlbCAmJiAhaGFzQXR0cihidXR0b24sICdhcmlhLWxhYmVsJykpIHtcbiAgICAgICAgICAgIGF0dHIoYnV0dG9uLCAnYXJpYS1sYWJlbCcsIGxhYmVsKTtcbiAgICAgICAgfVxuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3QgU2xpZGVuYXYgPSB7XG4gICAgZXh0ZW5kczogQnV0dG9uQ29tcG9uZW50LFxuXG4gICAgYmVmb3JlQ29ubmVjdCgpIHtcbiAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1zbGlkZW5hdicpO1xuICAgICAgICBjb25zdCBpY29uID0gdGhpcy4kcHJvcHMuaWNvbjtcbiAgICAgICAgdGhpcy5pY29uID0gaGFzQ2xhc3ModGhpcy4kZWwsICd1ay1zbGlkZW5hdi1sYXJnZScpID8gYCR7aWNvbn0tbGFyZ2VgIDogaWNvbjtcbiAgICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IE5hdmJhclRvZ2dsZUljb24gPSB7XG4gICAgZXh0ZW5kczogQnV0dG9uQ29tcG9uZW50LFxuICAgIGkxOG46IHsgbGFiZWw6ICdPcGVuIG1lbnUnIH0sXG59O1xuXG5leHBvcnQgY29uc3QgQ2xvc2UgPSB7XG4gICAgZXh0ZW5kczogQnV0dG9uQ29tcG9uZW50LFxuXG4gICAgaTE4bjogeyBsYWJlbDogJ0Nsb3NlJyB9LFxuXG4gICAgYmVmb3JlQ29ubmVjdCgpIHtcbiAgICAgICAgdGhpcy5pY29uID0gYGNsb3NlLSR7aGFzQ2xhc3ModGhpcy4kZWwsICd1ay1jbG9zZS1sYXJnZScpID8gJ2xhcmdlJyA6ICdpY29uJ31gO1xuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3QgTWFya2VyID0ge1xuICAgIGV4dGVuZHM6IEJ1dHRvbkNvbXBvbmVudCxcbiAgICBpMThuOiB7IGxhYmVsOiAnT3BlbicgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBUb3RvcCA9IHtcbiAgICBleHRlbmRzOiBCdXR0b25Db21wb25lbnQsXG4gICAgaTE4bjogeyBsYWJlbDogJ0JhY2sgdG8gdG9wJyB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFBhZ2luYXRpb25OZXh0ID0ge1xuICAgIGV4dGVuZHM6IEJ1dHRvbkNvbXBvbmVudCxcbiAgICBpMThuOiB7IGxhYmVsOiAnTmV4dCBwYWdlJyB9LFxuICAgIGRhdGE6IHsgcm9sZTogbnVsbCB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFBhZ2luYXRpb25QcmV2aW91cyA9IHtcbiAgICBleHRlbmRzOiBCdXR0b25Db21wb25lbnQsXG4gICAgaTE4bjogeyBsYWJlbDogJ1ByZXZpb3VzIHBhZ2UnIH0sXG4gICAgZGF0YTogeyByb2xlOiBudWxsIH0sXG59O1xuXG5jb25zdCBwYXJzZWQgPSB7fTtcbmZ1bmN0aW9uIGluc3RhbGwoVUlraXQpIHtcbiAgICBVSWtpdC5pY29uLmFkZCA9IChuYW1lLCBzdmcpID0+IHtcbiAgICAgICAgY29uc3QgYWRkZWQgPSBpc1N0cmluZyhuYW1lKSA/IHsgW25hbWVdOiBzdmcgfSA6IG5hbWU7XG4gICAgICAgIGVhY2goYWRkZWQsIChzdmcsIG5hbWUpID0+IHtcbiAgICAgICAgICAgIGljb25zW25hbWVdID0gc3ZnO1xuICAgICAgICAgICAgZGVsZXRlIHBhcnNlZFtuYW1lXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKFVJa2l0Ll9pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgYXBwbHkoZG9jdW1lbnQuYm9keSwgKGVsKSA9PlxuICAgICAgICAgICAgICAgIGVhY2goVUlraXQuZ2V0Q29tcG9uZW50cyhlbCksIChjbXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY21wLiRvcHRpb25zLmlzSWNvbiAmJiBjbXAuaWNvbiBpbiBhZGRlZCAmJiBjbXAuJHJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRJY29uKGljb24pIHtcbiAgICBpZiAoIWljb25zW2ljb25dKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghcGFyc2VkW2ljb25dKSB7XG4gICAgICAgIHBhcnNlZFtpY29uXSA9ICQoKGljb25zW2FwcGx5UnRsKGljb24pXSB8fCBpY29uc1tpY29uXSkudHJpbSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VkW2ljb25dLmNsb25lTm9kZSh0cnVlKTtcbn1cblxuZnVuY3Rpb24gYXBwbHlSdGwoaWNvbikge1xuICAgIHJldHVybiBpc1J0bCA/IHN3YXAoc3dhcChpY29uLCAnbGVmdCcsICdyaWdodCcpLCAncHJldmlvdXMnLCAnbmV4dCcpIDogaWNvbjtcbn1cbiIsImltcG9ydCB7IHBhcnNlT3B0aW9ucyB9IGZyb20gJy4uL2FwaS9vcHRpb25zJztcbmltcG9ydCB7IGludGVyc2VjdGlvbiB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1xuICAgIGFwcGVuZCxcbiAgICBhdHRyLFxuICAgIGNoaWxkcmVuLFxuICAgIGNyZWF0ZUV2ZW50LFxuICAgIGNzcyxcbiAgICBkYXRhLFxuICAgIGVzY2FwZSxcbiAgICBmcmFnbWVudCxcbiAgICBoYXNBdHRyLFxuICAgIGluQnJvd3NlcixcbiAgICBpbmNsdWRlcyxcbiAgICBpc0FycmF5LFxuICAgIGlzRW1wdHksXG4gICAgaXNUYWcsXG4gICAgcGFyZW50LFxuICAgIHF1ZXJ5QWxsLFxuICAgIHJlbW92ZUF0dHIsXG4gICAgc3RhcnRzV2l0aCxcbiAgICB0cmlnZ2VyLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuY29uc3QgbmF0aXZlTGF6eUxvYWQgPSBpbkJyb3dzZXIgJiYgJ2xvYWRpbmcnIGluIEhUTUxJbWFnZUVsZW1lbnQucHJvdG90eXBlO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgYXJnczogJ2RhdGFTcmMnLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGF0YVNyYzogU3RyaW5nLFxuICAgICAgICBzb3VyY2VzOiBTdHJpbmcsXG4gICAgICAgIG1hcmdpbjogU3RyaW5nLFxuICAgICAgICB0YXJnZXQ6IFN0cmluZyxcbiAgICAgICAgbG9hZGluZzogU3RyaW5nLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGRhdGFTcmM6ICcnLFxuICAgICAgICBzb3VyY2VzOiBmYWxzZSxcbiAgICAgICAgbWFyZ2luOiAnNTAlJyxcbiAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgbG9hZGluZzogJ2xhenknLFxuICAgIH0sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmcgIT09ICdsYXp5Jykge1xuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmF0aXZlTGF6eUxvYWQgJiYgaXNJbWcodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICB0aGlzLiRlbC5sb2FkaW5nID0gJ2xhenknO1xuICAgICAgICAgICAgc2V0U3JjQXR0cnModGhpcy4kZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW5zdXJlU3JjQXR0cmlidXRlKHRoaXMuJGVsKTtcbiAgICB9LFxuXG4gICAgZGlzY29ubmVjdGVkKCkge1xuICAgICAgICBpZiAodGhpcy5pbWcpIHtcbiAgICAgICAgICAgIHRoaXMuaW1nLm9ubG9hZCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSB0aGlzLmltZztcbiAgICB9LFxuXG4gICAgb2JzZXJ2ZTogaW50ZXJzZWN0aW9uKHtcbiAgICAgICAgdGFyZ2V0OiAoeyAkZWwsICRwcm9wcyB9KSA9PiBbJGVsLCAuLi5xdWVyeUFsbCgkcHJvcHMudGFyZ2V0LCAkZWwpXSxcbiAgICAgICAgaGFuZGxlcihlbnRyaWVzLCBvYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6ICh7IG1hcmdpbiB9KSA9PiAoeyByb290TWFyZ2luOiBtYXJnaW4gfSksXG4gICAgICAgIGZpbHRlcjogKHsgbG9hZGluZyB9KSA9PiBsb2FkaW5nID09PSAnbGF6eScsXG4gICAgfSksXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGxvYWQoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbWcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbWc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gaXNJbWcodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgPyB0aGlzLiRlbFxuICAgICAgICAgICAgICAgIDogZ2V0SW1hZ2VGcm9tRWxlbWVudCh0aGlzLiRlbCwgdGhpcy5kYXRhU3JjLCB0aGlzLnNvdXJjZXMpO1xuXG4gICAgICAgICAgICByZW1vdmVBdHRyKGltYWdlLCAnbG9hZGluZycpO1xuICAgICAgICAgICAgc2V0U3JjQXR0cnModGhpcy4kZWwsIGltYWdlLmN1cnJlbnRTcmMpO1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLmltZyA9IGltYWdlKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gc2V0U3JjQXR0cnMoZWwsIHNyYykge1xuICAgIGlmIChpc0ltZyhlbCkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHBhcmVudChlbCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gaXNUYWcocGFyZW50Tm9kZSwgJ3BpY3R1cmUnKSA/IGNoaWxkcmVuKHBhcmVudE5vZGUpIDogW2VsXTtcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWwpID0+IHNldFNvdXJjZVByb3BzKGVsLCBlbCkpO1xuICAgIH0gZWxzZSBpZiAoc3JjKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9ICFpbmNsdWRlcyhlbC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UsIHNyYyk7XG4gICAgICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgICAgICAgIGNzcyhlbCwgJ2JhY2tncm91bmRJbWFnZScsIGB1cmwoJHtlc2NhcGUoc3JjKX0pYCk7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCgnbG9hZCcsIGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IHNyY1Byb3BzID0gWydkYXRhLXNyYycsICdkYXRhLXNyY3NldCcsICdzaXplcyddO1xuZnVuY3Rpb24gc2V0U291cmNlUHJvcHMoc291cmNlRWwsIHRhcmdldEVsKSB7XG4gICAgc3JjUHJvcHMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGEoc291cmNlRWwsIHByb3ApO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGF0dHIodGFyZ2V0RWwsIHByb3AucmVwbGFjZSgvXihkYXRhLSkrLywgJycpLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0SW1hZ2VGcm9tRWxlbWVudChlbCwgc3JjLCBzb3VyY2VzKSB7XG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG5cbiAgICB3cmFwSW5QaWN0dXJlKGltZywgc291cmNlcyk7XG4gICAgc2V0U291cmNlUHJvcHMoZWwsIGltZyk7XG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgc2V0U3JjQXR0cnMoZWwsIGltZy5jdXJyZW50U3JjKTtcbiAgICB9O1xuICAgIGF0dHIoaW1nLCAnc3JjJywgc3JjKTtcbiAgICByZXR1cm4gaW1nO1xufVxuXG5mdW5jdGlvbiB3cmFwSW5QaWN0dXJlKGltZywgc291cmNlcykge1xuICAgIHNvdXJjZXMgPSBwYXJzZVNvdXJjZXMoc291cmNlcyk7XG5cbiAgICBpZiAoc291cmNlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcGljdHVyZSA9IGZyYWdtZW50KCc8cGljdHVyZT4nKTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRycyBvZiBzb3VyY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBmcmFnbWVudCgnPHNvdXJjZT4nKTtcbiAgICAgICAgICAgIGF0dHIoc291cmNlLCBhdHRycyk7XG4gICAgICAgICAgICBhcHBlbmQocGljdHVyZSwgc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgICBhcHBlbmQocGljdHVyZSwgaW1nKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU291cmNlcyhzb3VyY2VzKSB7XG4gICAgaWYgKCFzb3VyY2VzKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRzV2l0aChzb3VyY2VzLCAnWycpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzb3VyY2VzID0gSlNPTi5wYXJzZShzb3VyY2VzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgc291cmNlcyA9IFtdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc291cmNlcyA9IHBhcnNlT3B0aW9ucyhzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQXJyYXkoc291cmNlcykpIHtcbiAgICAgICAgc291cmNlcyA9IFtzb3VyY2VzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gIWlzRW1wdHkoc291cmNlKSk7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVNyY0F0dHJpYnV0ZShlbCkge1xuICAgIGlmIChpc0ltZyhlbCkgJiYgIWhhc0F0dHIoZWwsICdzcmMnKSkge1xuICAgICAgICBhdHRyKGVsLCAnc3JjJywgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjwvc3ZnPicpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNJbWcoZWwpIHtcbiAgICByZXR1cm4gaXNUYWcoZWwsICdpbWcnKTtcbn1cbiIsImltcG9ydCB7XG4gICAgY3JlYXRlRXZlbnQsXG4gICAgY3NzLFxuICAgIGlzTnVtZXJpYyxcbiAgICBpc1N0cmluZyxcbiAgICBvbixcbiAgICBzdGFydHNXaXRoLFxuICAgIHRvRmxvYXQsXG4gICAgdHJpZ2dlcixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICBtZWRpYTogQm9vbGVhbixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBtZWRpYTogZmFsc2UsXG4gICAgfSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgY29uc3QgbWVkaWEgPSB0b01lZGlhKHRoaXMubWVkaWEsIHRoaXMuJGVsKTtcbiAgICAgICAgdGhpcy5tYXRjaE1lZGlhID0gdHJ1ZTtcbiAgICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgICAgICB0aGlzLm1lZGlhT2JqID0gd2luZG93Lm1hdGNoTWVkaWEobWVkaWEpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoTWVkaWEgPSB0aGlzLm1lZGlhT2JqLm1hdGNoZXM7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgY3JlYXRlRXZlbnQoJ21lZGlhY2hhbmdlJywgZmFsc2UsIHRydWUsIFt0aGlzLm1lZGlhT2JqXSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMub2ZmTWVkaWFPYmogPSBvbih0aGlzLm1lZGlhT2JqLCAnY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdyZXNpemUnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaGFuZGxlcigpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGRpc2Nvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5vZmZNZWRpYU9iaj8uKCk7XG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIHRvTWVkaWEodmFsdWUsIGVsZW1lbnQpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIGlmIChzdGFydHNXaXRoKHZhbHVlLCAnQCcpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRvRmxvYXQoY3NzKGVsZW1lbnQsIGAtLXVrLWJyZWFrcG9pbnQtJHt2YWx1ZS5zdWJzdHIoMSl9YCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlICYmIGlzTnVtZXJpYyh2YWx1ZSkgPyBgKG1pbi13aWR0aDogJHt2YWx1ZX1weClgIDogJyc7XG59XG4iLCJpbXBvcnQgQ2xhc3MgZnJvbSAnLi4vbWl4aW4vY2xhc3MnO1xuaW1wb3J0IE1lZGlhIGZyb20gJy4uL21peGluL21lZGlhJztcbmltcG9ydCB7IHJlc2l6ZSB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBhdHRyLCBjc3MsIHRvZ2dsZUNsYXNzLCB1bndyYXAsIHdyYXBJbm5lciB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ2xhc3MsIE1lZGlhXSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIGZpbGw6IFN0cmluZyxcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBmaWxsOiAnJyxcbiAgICAgICAgY2xzV3JhcHBlcjogJ3VrLWxlYWRlci1maWxsJyxcbiAgICAgICAgY2xzSGlkZTogJ3VrLWxlYWRlci1oaWRlJyxcbiAgICAgICAgYXR0ckZpbGw6ICdkYXRhLWZpbGwnLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBmaWxsKHsgZmlsbCB9KSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsbCB8fCBjc3ModGhpcy4kZWwsICctLXVrLWxlYWRlci1maWxsLWNvbnRlbnQnKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgY29ubmVjdGVkKCkge1xuICAgICAgICBbdGhpcy53cmFwcGVyXSA9IHdyYXBJbm5lcih0aGlzLiRlbCwgYDxzcGFuIGNsYXNzPVwiJHt0aGlzLmNsc1dyYXBwZXJ9XCI+YCk7XG4gICAgfSxcblxuICAgIGRpc2Nvbm5lY3RlZCgpIHtcbiAgICAgICAgdW53cmFwKHRoaXMud3JhcHBlci5jaGlsZE5vZGVzKTtcbiAgICB9LFxuXG4gICAgb2JzZXJ2ZTogcmVzaXplKCksXG5cbiAgICB1cGRhdGU6IHtcbiAgICAgICAgcmVhZCgpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC50cnVuYyh0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIDIpO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgIGZpbGw6IHRoaXMuZmlsbCxcbiAgICAgICAgICAgICAgICBoaWRlOiAhdGhpcy5tYXRjaE1lZGlhLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICB3cml0ZSh7IHdpZHRoLCBmaWxsLCBoaWRlIH0pIHtcbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMud3JhcHBlciwgdGhpcy5jbHNIaWRlLCBoaWRlKTtcbiAgICAgICAgICAgIGF0dHIodGhpcy53cmFwcGVyLCB0aGlzLmF0dHJGaWxsLCBuZXcgQXJyYXkod2lkdGgpLmpvaW4oZmlsbCkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogWydyZXNpemUnXSxcbiAgICB9LFxufTtcbiIsImltcG9ydCBDbGFzcyBmcm9tICcuL2NsYXNzJztcbmltcG9ydCBDb250YWluZXIgZnJvbSAnLi9jb250YWluZXInO1xuaW1wb3J0IFRvZ2dsYWJsZSBmcm9tICcuL3RvZ2dsYWJsZSc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYXBwZW5kLFxuICAgIGF0dHIsXG4gICAgY3NzLFxuICAgIGVuZHNXaXRoLFxuICAgIGluY2x1ZGVzLFxuICAgIGlzRm9jdXNhYmxlLFxuICAgIGlzU2FtZVNpdGVBbmNob3IsXG4gICAgbGFzdCxcbiAgICBtYXRjaGVzLFxuICAgIG9uLFxuICAgIG9uY2UsXG4gICAgcGFyZW50LFxuICAgIHBvaW50ZXJDYW5jZWwsXG4gICAgcG9pbnRlckRvd24sXG4gICAgcG9pbnRlclVwLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHRvRmxvYXQsXG4gICAgd2l0aGluLFxufSBmcm9tICd1aWtpdC11dGlsJztcbmltcG9ydCB7IHByZXZlbnRCYWNrZ3JvdW5kU2Nyb2xsIH0gZnJvbSAnLi9pbnRlcm5hbC9zY3JvbGwnO1xuXG5jb25zdCBhY3RpdmUgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW0NsYXNzLCBDb250YWluZXIsIFRvZ2dsYWJsZV0sXG5cbiAgICBwcm9wczoge1xuICAgICAgICBzZWxQYW5lbDogU3RyaW5nLFxuICAgICAgICBzZWxDbG9zZTogU3RyaW5nLFxuICAgICAgICBlc2NDbG9zZTogQm9vbGVhbixcbiAgICAgICAgYmdDbG9zZTogQm9vbGVhbixcbiAgICAgICAgc3RhY2s6IEJvb2xlYW4sXG4gICAgICAgIHJvbGU6IFN0cmluZyxcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBjbHM6ICd1ay1vcGVuJyxcbiAgICAgICAgZXNjQ2xvc2U6IHRydWUsXG4gICAgICAgIGJnQ2xvc2U6IHRydWUsXG4gICAgICAgIG92ZXJsYXk6IHRydWUsXG4gICAgICAgIHN0YWNrOiBmYWxzZSxcbiAgICAgICAgcm9sZTogJ2RpYWxvZycsXG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIHBhbmVsKHsgc2VsUGFuZWwgfSwgJGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gJChzZWxQYW5lbCwgJGVsKTtcbiAgICAgICAgfSxcblxuICAgICAgICB0cmFuc2l0aW9uRWxlbWVudCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsO1xuICAgICAgICB9LFxuXG4gICAgICAgIGJnQ2xvc2UoeyBiZ0Nsb3NlIH0pIHtcbiAgICAgICAgICAgIHJldHVybiBiZ0Nsb3NlICYmIHRoaXMucGFuZWw7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgYXR0cih0aGlzLnBhbmVsIHx8IHRoaXMuJGVsLCAncm9sZScsIHRoaXMucm9sZSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgYXR0cih0aGlzLnBhbmVsIHx8IHRoaXMuJGVsLCAnYXJpYS1tb2RhbCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGJlZm9yZURpc2Nvbm5lY3QoKSB7XG4gICAgICAgIGlmIChpbmNsdWRlcyhhY3RpdmUsIHRoaXMpKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy4kZWwsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZXZlbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgIGRlbGVnYXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnNlbENsb3NlfSxhW2hyZWYqPVwiI1wiXWA7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnQsIGRlZmF1bHRQcmV2ZW50ZWQgfSA9IGU7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBoYXNoIH0gPSBjdXJyZW50O1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHRQcmV2ZW50ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgaGFzaCAmJlxuICAgICAgICAgICAgICAgICAgICBpc1NhbWVTaXRlQW5jaG9yKGN1cnJlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICF3aXRoaW4oaGFzaCwgdGhpcy4kZWwpICYmXG4gICAgICAgICAgICAgICAgICAgICQoaGFzaCwgZG9jdW1lbnQuYm9keSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaGVzKGN1cnJlbnQsIHRoaXMuc2VsQ2xvc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndG9nZ2xlJyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcihlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkgPT09IGluY2x1ZGVzKGFjdGl2ZSwgdGhpcykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcihlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKGFjdGl2ZSwgdGhpcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFjayAmJiBhY3RpdmUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGFjdGl2ZS5tYXAoKG1vZGFsKSA9PiBtb2RhbC5oaWRlKCkpKS50aGVuKHRoaXMuc2hvdyk7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUucHVzaCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFjaykge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICd6SW5kZXgnLCB0b0Zsb2F0KGNzcyh0aGlzLiRlbCwgJ3pJbmRleCcpKSArIGFjdGl2ZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkgJiYgcHJldmVudEJhY2tncm91bmRGb2N1cyh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ICYmIHByZXZlbnRCYWNrZ3JvdW5kU2Nyb2xsKHRoaXMuJGVsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZ0Nsb3NlICYmIGxpc3RlbkZvckJhY2tncm91bmRDbG9zZSh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lc2NDbG9zZSAmJiBsaXN0ZW5Gb3JFc2NDbG9zZSh0aGlzKSxcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgb25jZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWwsXG4gICAgICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiBoYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyKSA9PiBoYW5kbGVyICYmIGhhbmRsZXIoKSksXG4gICAgICAgICAgICAgICAgICAgIHsgc2VsZjogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3Nob3duJyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRm9jdXNhYmxlKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCAndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXModGhpcy4kZWwsICc6Zm9jdXMtd2l0aGluJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWwuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3RpdmUsIHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5zcGxpY2UoYWN0aXZlLmluZGV4T2YodGhpcyksIDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ3pJbmRleCcsICcnKTtcblxuICAgICAgICAgICAgICAgIGlmICghYWN0aXZlLnNvbWUoKG1vZGFsKSA9PiBtb2RhbC5jbHNQYWdlID09PSB0aGlzLmNsc1BhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVG9nZ2xlZCgpID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3coKTtcbiAgICAgICAgfSxcblxuICAgICAgICBzaG93KCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHBhcmVudCh0aGlzLiRlbCkgIT09IHRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMuY29udGFpbmVyLCB0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PlxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5zaG93KCkudGhlbihyZXNvbHZlKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVFbGVtZW50KHRoaXMuJGVsLCB0cnVlLCBhbmltYXRlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBoaWRlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLiRlbCwgZmFsc2UsIGFuaW1hdGUpO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBhbmltYXRlKGVsLCBzaG93LCB7IHRyYW5zaXRpb25FbGVtZW50LCBfdG9nZ2xlIH0pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICAgICAgb25jZShlbCwgJ3Nob3cgaGlkZScsICgpID0+IHtcbiAgICAgICAgICAgIGVsLl9yZWplY3Q/LigpO1xuICAgICAgICAgICAgZWwuX3JlamVjdCA9IHJlamVjdDtcblxuICAgICAgICAgICAgX3RvZ2dsZShlbCwgc2hvdyk7XG5cbiAgICAgICAgICAgIGNvbnN0IG9mZiA9IG9uY2UoXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbkVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25zdGFydCcsXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvbmNlKHRyYW5zaXRpb25FbGVtZW50LCAndHJhbnNpdGlvbmVuZCB0cmFuc2l0aW9uY2FuY2VsJywgcmVzb2x2ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IHNlbGY6IHRydWUgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBvZmYoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCB0b01zKGNzcyh0cmFuc2l0aW9uRWxlbWVudCwgJ3RyYW5zaXRpb25EdXJhdGlvbicpKSk7XG4gICAgICAgIH0pXG4gICAgKS50aGVuKCgpID0+IGRlbGV0ZSBlbC5fcmVqZWN0KTtcbn1cblxuZnVuY3Rpb24gdG9Ncyh0aW1lKSB7XG4gICAgcmV0dXJuIHRpbWUgPyAoZW5kc1dpdGgodGltZSwgJ21zJykgPyB0b0Zsb2F0KHRpbWUpIDogdG9GbG9hdCh0aW1lKSAqIDEwMDApIDogMDtcbn1cblxuZnVuY3Rpb24gcHJldmVudEJhY2tncm91bmRGb2N1cyhtb2RhbCkge1xuICAgIHJldHVybiBvbihkb2N1bWVudCwgJ2ZvY3VzaW4nLCAoZSkgPT4ge1xuICAgICAgICBpZiAobGFzdChhY3RpdmUpID09PSBtb2RhbCAmJiAhd2l0aGluKGUudGFyZ2V0LCBtb2RhbC4kZWwpKSB7XG4gICAgICAgICAgICBtb2RhbC4kZWwuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBsaXN0ZW5Gb3JCYWNrZ3JvdW5kQ2xvc2UobW9kYWwpIHtcbiAgICByZXR1cm4gb24oZG9jdW1lbnQsIHBvaW50ZXJEb3duLCAoeyB0YXJnZXQgfSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBsYXN0KGFjdGl2ZSkgIT09IG1vZGFsIHx8XG4gICAgICAgICAgICAobW9kYWwub3ZlcmxheSAmJiAhd2l0aGluKHRhcmdldCwgbW9kYWwuJGVsKSkgfHxcbiAgICAgICAgICAgIHdpdGhpbih0YXJnZXQsIG1vZGFsLnBhbmVsKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG9uY2UoXG4gICAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICAgIGAke3BvaW50ZXJVcH0gJHtwb2ludGVyQ2FuY2VsfSBzY3JvbGxgLFxuICAgICAgICAgICAgKHsgZGVmYXVsdFByZXZlbnRlZCwgdHlwZSwgdGFyZ2V0OiBuZXdUYXJnZXQgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdFByZXZlbnRlZCAmJiB0eXBlID09PSBwb2ludGVyVXAgJiYgdGFyZ2V0ID09PSBuZXdUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kYWwuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGxpc3RlbkZvckVzY0Nsb3NlKG1vZGFsKSB7XG4gICAgcmV0dXJuIG9uKGRvY3VtZW50LCAna2V5ZG93bicsIChlKSA9PiB7XG4gICAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3ICYmIGxhc3QoYWN0aXZlKSA9PT0gbW9kYWwpIHtcbiAgICAgICAgICAgIG1vZGFsLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0IE1vZGFsIGZyb20gJy4uL21peGluL21vZGFsJztcbmltcG9ydCB7XG4gICAgJCxcbiAgICBhZGRDbGFzcyxcbiAgICBjc3MsXG4gICAgRGVmZXJyZWQsXG4gICAgaGFzQ2xhc3MsXG4gICAgaGVpZ2h0LFxuICAgIGh0bWwsXG4gICAgaXNTdHJpbmcsXG4gICAgb24sXG4gICAgcmVtb3ZlQ2xhc3MsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgaW5zdGFsbCxcblxuICAgIG1peGluczogW01vZGFsXSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgY2xzUGFnZTogJ3VrLW1vZGFsLXBhZ2UnLFxuICAgICAgICBzZWxQYW5lbDogJy51ay1tb2RhbC1kaWFsb2cnLFxuICAgICAgICBzZWxDbG9zZTpcbiAgICAgICAgICAgICcudWstbW9kYWwtY2xvc2UsIC51ay1tb2RhbC1jbG9zZS1kZWZhdWx0LCAudWstbW9kYWwtY2xvc2Utb3V0c2lkZSwgLnVrLW1vZGFsLWNsb3NlLWZ1bGwnLFxuICAgIH0sXG5cbiAgICBldmVudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyh0aGlzLnBhbmVsLCAndWstbWFyZ2luLWF1dG8tdmVydGljYWwnKSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWZsZXgnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsKTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsICd1ay1mbGV4Jyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuXG5mdW5jdGlvbiBpbnN0YWxsKHsgbW9kYWwgfSkge1xuICAgIG1vZGFsLmRpYWxvZyA9IGZ1bmN0aW9uIChjb250ZW50LCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZyA9IG1vZGFsKFxuICAgICAgICAgICAgYDxkaXYgY2xhc3M9XCJ1ay1tb2RhbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1ay1tb2RhbC1kaWFsb2dcIj4ke2NvbnRlbnR9PC9kaXY+XG4gICAgICAgICAgICAgPC9kaXY+YCxcbiAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcblxuICAgICAgICBkaWFsb2cuc2hvdygpO1xuXG4gICAgICAgIG9uKFxuICAgICAgICAgICAgZGlhbG9nLiRlbCxcbiAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIGRpYWxvZy4kZGVzdHJveSh0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHNlbGY6IHRydWUgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBkaWFsb2c7XG4gICAgfTtcblxuICAgIG1vZGFsLmFsZXJ0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG9wZW5EaWFsb2coXG4gICAgICAgICAgICAoeyBpMThuIH0pID0+IGA8ZGl2IGNsYXNzPVwidWstbW9kYWwtYm9keVwiPiR7XG4gICAgICAgICAgICAgICAgaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKVxuICAgICAgICAgICAgfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVrLW1vZGFsLWZvb3RlciB1ay10ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay1tb2RhbC1jbG9zZVwiIGF1dG9mb2N1cz4ke1xuICAgICAgICAgICAgICAgICAgICBpMThuLm9rXG4gICAgICAgICAgICAgICAgfTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+YCxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAoZGVmZXJyZWQpID0+IGRlZmVycmVkLnJlc29sdmUoKVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBtb2RhbC5jb25maXJtID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG9wZW5EaWFsb2coXG4gICAgICAgICAgICAoeyBpMThuIH0pID0+IGA8Zm9ybT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWstbW9kYWwtYm9keVwiPiR7aXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay1tb2RhbC1jbG9zZVwiIHR5cGU9XCJidXR0b25cIj4ke1xuICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi5jYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgfTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5XCIgYXV0b2ZvY3VzPiR7aTE4bi5va308L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5gLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIChkZWZlcnJlZCkgPT4gZGVmZXJyZWQucmVqZWN0KClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgbW9kYWwucHJvbXB0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcGVuRGlhbG9nKFxuICAgICAgICAgICAgKHsgaTE4biB9KSA9PiBgPGZvcm0gY2xhc3M9XCJ1ay1mb3JtLXN0YWNrZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWstbW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+JHtpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpfTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInVrLWlucHV0XCIgdmFsdWU9XCIke3ZhbHVlIHx8ICcnfVwiIGF1dG9mb2N1cz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay1tb2RhbC1jbG9zZVwiIHR5cGU9XCJidXR0b25cIj4ke1xuICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi5jYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgfTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5XCI+JHtpMThuLm9rfTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPmAsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgKGRlZmVycmVkKSA9PiBkZWZlcnJlZC5yZXNvbHZlKG51bGwpLFxuICAgICAgICAgICAgKGRpYWxvZykgPT4gJCgnaW5wdXQnLCBkaWFsb2cuJGVsKS52YWx1ZVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBtb2RhbC5pMThuID0ge1xuICAgICAgICBvazogJ09rJyxcbiAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb3BlbkRpYWxvZyh0bXBsLCBvcHRpb25zLCBoaWRlRm4sIHN1Ym1pdEZuKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBiZ0Nsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIGVzY0Nsb3NlOiB0cnVlLFxuICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBpMThuOiB7IC4uLm1vZGFsLmkxOG4sIC4uLm9wdGlvbnM/LmkxOG4gfSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkaWFsb2cgPSBtb2RhbC5kaWFsb2codG1wbChvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGRlZmVycmVkID0gbmV3IERlZmVycmVkKCk7XG5cbiAgICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2U7XG5cbiAgICAgICAgb24oZGlhbG9nLiRlbCwgJ3N1Ym1pdCcsICdmb3JtJywgKGUpID0+IHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoc3VibWl0Rm4/LihkaWFsb2cpKTtcbiAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGRpYWxvZy5oaWRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uKGRpYWxvZy4kZWwsICdoaWRlJywgKCkgPT4gIXJlc29sdmVkICYmIGhpZGVGbihkZWZlcnJlZCkpO1xuXG4gICAgICAgIGRlZmVycmVkLnByb21pc2UuZGlhbG9nID0gZGlhbG9nO1xuXG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xuICAgIH1cbn1cbiIsImltcG9ydCBBY2NvcmRpb24gZnJvbSAnLi9hY2NvcmRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZXh0ZW5kczogQWNjb3JkaW9uLFxuXG4gICAgZGF0YToge1xuICAgICAgICB0YXJnZXRzOiAnPiAudWstcGFyZW50JyxcbiAgICAgICAgdG9nZ2xlOiAnPiBhJyxcbiAgICAgICAgY29udGVudDogJz4gdWwnLFxuICAgIH0sXG59O1xuIiwiaW1wb3J0IERyb3BuYXYgZnJvbSAnLi9kcm9wbmF2JztcbmltcG9ydCB7ICQkLCBjc3MsIGhhc0NsYXNzIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBleHRlbmRzOiBEcm9wbmF2LFxuXG4gICAgZGF0YToge1xuICAgICAgICBjbHNEcm9wOiAndWstbmF2YmFyLWRyb3Bkb3duJyxcbiAgICAgICAgc2VsTmF2SXRlbTpcbiAgICAgICAgICAgICcudWstbmF2YmFyLW5hdiA+IGxpID4gYSxhLnVrLW5hdmJhci1pdGVtLGJ1dHRvbi51ay1uYXZiYXItaXRlbSwudWstbmF2YmFyLWl0ZW0gYSwudWstbmF2YmFyLWl0ZW0gYnV0dG9uLC51ay1uYXZiYXItdG9nZ2xlJywgLy8gU2ltcGxpZnkgd2l0aCA6d2hlcmUoKSBzZWxlY3RvciBvbmNlIGJyb3dzZXIgdGFyZ2V0IGlzIFNhZmFyaSAxNCtcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgaXRlbXMoKSB7XG4gICAgICAgICAgICBjb25zdCBqdXN0aWZ5ID0gaGFzQ2xhc3ModGhpcy4kZWwsICd1ay1uYXZiYXItanVzdGlmeScpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb250YWluZXIgb2YgJCQoXG4gICAgICAgICAgICAgICAgJy51ay1uYXZiYXItbmF2LCAudWstbmF2YmFyLWxlZnQsIC51ay1uYXZiYXItcmlnaHQnLFxuICAgICAgICAgICAgICAgIHRoaXMuJGVsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY3NzKFxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICdmbGV4R3JvdycsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJCQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLnVrLW5hdmJhci1uYXYgPiBsaSA+IGEsIC51ay1uYXZiYXItaXRlbSwgLnVrLW5hdmJhci10b2dnbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxufTtcbiIsImltcG9ydCBNb2RhbCBmcm9tICcuLi9taXhpbi9tb2RhbCc7XG5pbXBvcnQgeyBzd2lwZSB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYXBwZW5kLFxuICAgIGNzcyxcbiAgICBlbmRzV2l0aCxcbiAgICBoYXNDbGFzcyxcbiAgICBoZWlnaHQsXG4gICAgaXNWaXNpYmxlLFxuICAgIHBhcmVudCxcbiAgICByZW1vdmVDbGFzcyxcbiAgICB1bndyYXAsXG4gICAgd3JhcEFsbCxcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtNb2RhbF0sXG5cbiAgICBhcmdzOiAnbW9kZScsXG5cbiAgICBwcm9wczoge1xuICAgICAgICBtb2RlOiBTdHJpbmcsXG4gICAgICAgIGZsaXA6IEJvb2xlYW4sXG4gICAgICAgIG92ZXJsYXk6IEJvb2xlYW4sXG4gICAgICAgIHN3aXBpbmc6IEJvb2xlYW4sXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgbW9kZTogJ3NsaWRlJyxcbiAgICAgICAgZmxpcDogZmFsc2UsXG4gICAgICAgIG92ZXJsYXk6IGZhbHNlLFxuICAgICAgICBjbHNQYWdlOiAndWstb2ZmY2FudmFzLXBhZ2UnLFxuICAgICAgICBjbHNDb250YWluZXI6ICd1ay1vZmZjYW52YXMtY29udGFpbmVyJyxcbiAgICAgICAgc2VsUGFuZWw6ICcudWstb2ZmY2FudmFzLWJhcicsXG4gICAgICAgIGNsc0ZsaXA6ICd1ay1vZmZjYW52YXMtZmxpcCcsXG4gICAgICAgIGNsc0NvbnRhaW5lckFuaW1hdGlvbjogJ3VrLW9mZmNhbnZhcy1jb250YWluZXItYW5pbWF0aW9uJyxcbiAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogJ3VrLW9mZmNhbnZhcy1iYXItYW5pbWF0aW9uJyxcbiAgICAgICAgY2xzTW9kZTogJ3VrLW9mZmNhbnZhcycsXG4gICAgICAgIGNsc092ZXJsYXk6ICd1ay1vZmZjYW52YXMtb3ZlcmxheScsXG4gICAgICAgIHNlbENsb3NlOiAnLnVrLW9mZmNhbnZhcy1jbG9zZScsXG4gICAgICAgIGNvbnRhaW5lcjogZmFsc2UsXG4gICAgICAgIHN3aXBpbmc6IHRydWUsXG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIGNsc0ZsaXAoeyBmbGlwLCBjbHNGbGlwIH0pIHtcbiAgICAgICAgICAgIHJldHVybiBmbGlwID8gY2xzRmxpcCA6ICcnO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsc092ZXJsYXkoeyBvdmVybGF5LCBjbHNPdmVybGF5IH0pIHtcbiAgICAgICAgICAgIHJldHVybiBvdmVybGF5ID8gY2xzT3ZlcmxheSA6ICcnO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsc01vZGUoeyBtb2RlLCBjbHNNb2RlIH0pIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtjbHNNb2RlfS0ke21vZGV9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBjbHNTaWRlYmFyQW5pbWF0aW9uKHsgbW9kZSwgY2xzU2lkZWJhckFuaW1hdGlvbiB9KSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kZSA9PT0gJ25vbmUnIHx8IG1vZGUgPT09ICdyZXZlYWwnID8gJycgOiBjbHNTaWRlYmFyQW5pbWF0aW9uO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsc0NvbnRhaW5lckFuaW1hdGlvbih7IG1vZGUsIGNsc0NvbnRhaW5lckFuaW1hdGlvbiB9KSB7XG4gICAgICAgICAgICByZXR1cm4gbW9kZSAhPT0gJ3B1c2gnICYmIG1vZGUgIT09ICdyZXZlYWwnID8gJycgOiBjbHNDb250YWluZXJBbmltYXRpb247XG4gICAgICAgIH0sXG5cbiAgICAgICAgdHJhbnNpdGlvbkVsZW1lbnQoeyBtb2RlIH0pIHtcbiAgICAgICAgICAgIHJldHVybiBtb2RlID09PSAncmV2ZWFsJyA/IHBhcmVudCh0aGlzLnBhbmVsKSA6IHRoaXMucGFuZWw7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG9ic2VydmU6IHN3aXBlKHsgZmlsdGVyOiAoeyBzd2lwaW5nIH0pID0+IHN3aXBpbmcgfSksXG5cbiAgICB1cGRhdGU6IHtcbiAgICAgICAgcmVhZCgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmICFpc1Zpc2libGUodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddLFxuICAgIH0sXG5cbiAgICBldmVudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3RvdWNobW92ZScsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG4gICAgICAgICAgICBwYXNzaXZlOiBmYWxzZSxcblxuICAgICAgICAgICAgZmlsdGVyKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JldmVhbCcgJiYgIWhhc0NsYXNzKHBhcmVudCh0aGlzLnBhbmVsKSwgdGhpcy5jbHNNb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICB3cmFwQWxsKHRoaXMucGFuZWwsICc8ZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhwYXJlbnQodGhpcy5wYW5lbCksIHRoaXMuY2xzTW9kZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBib2R5LCBzY3JvbGxpbmdFbGVtZW50IH0gPSBkb2N1bWVudDtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKGJvZHksIHRoaXMuY2xzQ29udGFpbmVyLCB0aGlzLmNsc0ZsaXApO1xuICAgICAgICAgICAgICAgIGNzcyhib2R5LCAndG91Y2gtYWN0aW9uJywgJ3Bhbi15IHBpbmNoLXpvb20nKTtcbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgICAgICAgICAgY3NzKHRoaXMucGFuZWwsICdtYXhXaWR0aCcsIHNjcm9sbGluZ0VsZW1lbnQuY2xpZW50V2lkdGgpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsc1NpZGViYXJBbmltYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ3JldmVhbCcgPyAnJyA6IHRoaXMuY2xzTW9kZVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoYm9keSk7IC8vIGZvcmNlIHJlZmxvd1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKGJvZHksIHRoaXMuY2xzQ29udGFpbmVyQW5pbWF0aW9uKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2xzQ29udGFpbmVyQW5pbWF0aW9uICYmIHN1cHByZXNzVXNlclNjYWxlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmNsc0NvbnRhaW5lckFuaW1hdGlvbik7XG4gICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICd0b3VjaC1hY3Rpb24nLCAnJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xzQ29udGFpbmVyQW5pbWF0aW9uICYmIHJlc3VtZVVzZXJTY2FsZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JldmVhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdW53cmFwKHRoaXMucGFuZWwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMucGFuZWwsIHRoaXMuY2xzU2lkZWJhckFuaW1hdGlvbiwgdGhpcy5jbHNNb2RlKTtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnBhbmVsLCAnbWF4V2lkdGgnLCAnJyk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgdGhpcy5jbHNDb250YWluZXIsIHRoaXMuY2xzRmxpcCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzd2lwZUxlZnQgc3dpcGVSaWdodCcsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmIGVuZHNXaXRoKGUudHlwZSwgJ0xlZnQnKSBeIHRoaXMuZmxpcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuXG4vLyBDaHJvbWUgaW4gcmVzcG9uc2l2ZSBtb2RlIHpvb21zIHBhZ2UgdXBvbiBvcGVuaW5nIG9mZmNhbnZhc1xuZnVuY3Rpb24gc3VwcHJlc3NVc2VyU2NhbGUoKSB7XG4gICAgZ2V0Vmlld3BvcnQoKS5jb250ZW50ICs9ICcsdXNlci1zY2FsYWJsZT0wJztcbn1cblxuZnVuY3Rpb24gcmVzdW1lVXNlclNjYWxlKCkge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gZ2V0Vmlld3BvcnQoKTtcbiAgICB2aWV3cG9ydC5jb250ZW50ID0gdmlld3BvcnQuY29udGVudC5yZXBsYWNlKC8sdXNlci1zY2FsYWJsZT0wJC8sICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgJCgnbWV0YVtuYW1lPVwidmlld3BvcnRcIl0nLCBkb2N1bWVudC5oZWFkKSB8fCBhcHBlbmQoZG9jdW1lbnQuaGVhZCwgJzxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiPicpXG4gICAgKTtcbn1cbiIsImltcG9ydCBDbGFzcyBmcm9tICcuLi9taXhpbi9jbGFzcyc7XG5pbXBvcnQgeyByZXNpemUgfSBmcm9tICcuLi9hcGkvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgY2xvc2VzdCwgY3NzLCBkaW1lbnNpb25zLCBoZWlnaHQsIGlzVmlzaWJsZSB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgc2VsQ29udGFpbmVyOiBTdHJpbmcsXG4gICAgICAgIHNlbENvbnRlbnQ6IFN0cmluZyxcbiAgICAgICAgbWluSGVpZ2h0OiBOdW1iZXIsXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgc2VsQ29udGFpbmVyOiAnLnVrLW1vZGFsJyxcbiAgICAgICAgc2VsQ29udGVudDogJy51ay1tb2RhbC1kaWFsb2cnLFxuICAgICAgICBtaW5IZWlnaHQ6IDE1MCxcbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgY29udGFpbmVyKHsgc2VsQ29udGFpbmVyIH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCBzZWxDb250YWluZXIpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbnRlbnQoeyBzZWxDb250ZW50IH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCBzZWxDb250ZW50KTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgb2JzZXJ2ZTogcmVzaXplKHtcbiAgICAgICAgdGFyZ2V0OiAoeyBjb250YWluZXIsIGNvbnRlbnQgfSkgPT4gW2NvbnRhaW5lciwgY29udGVudF0sXG4gICAgfSksXG5cbiAgICB1cGRhdGU6IHtcbiAgICAgICAgcmVhZCgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb250ZW50IHx8ICF0aGlzLmNvbnRhaW5lciB8fCAhaXNWaXNpYmxlKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtYXg6IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbkhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuY29udGFpbmVyKSAtIChkaW1lbnNpb25zKHRoaXMuY29udGVudCkuaGVpZ2h0IC0gaGVpZ2h0KHRoaXMuJGVsKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICB3cml0ZSh7IG1heCB9KSB7XG4gICAgICAgICAgICBjc3ModGhpcy4kZWwsIHsgbWluSGVpZ2h0OiB0aGlzLm1pbkhlaWdodCwgbWF4SGVpZ2h0OiBtYXggfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZSddLFxuICAgIH0sXG59O1xuIiwiaW1wb3J0IHsgcmVzaXplIH0gZnJvbSAnLi4vYXBpL29ic2VydmFibGVzJztcbmltcG9ydCB7IGFkZENsYXNzLCBEaW1lbnNpb25zLCBoZWlnaHQsIGlzVmlzaWJsZSwgcGFyZW50LCB3aWR0aCB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IFsnd2lkdGgnLCAnaGVpZ2h0J10sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstcmVzcG9uc2l2ZS13aWR0aCcpO1xuICAgIH0sXG5cbiAgICBvYnNlcnZlOiByZXNpemUoe1xuICAgICAgICB0YXJnZXQ6ICh7ICRlbCB9KSA9PiBbJGVsLCBwYXJlbnQoJGVsKV0sXG4gICAgfSksXG5cbiAgICB1cGRhdGU6IHtcbiAgICAgICAgcmVhZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBpc1Zpc2libGUodGhpcy4kZWwpICYmIHRoaXMud2lkdGggJiYgdGhpcy5oZWlnaHRcbiAgICAgICAgICAgICAgICA/IHsgd2lkdGg6IHdpZHRoKHBhcmVudCh0aGlzLiRlbCkpLCBoZWlnaHQ6IHRoaXMuaGVpZ2h0IH1cbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIHdyaXRlKGRpbSkge1xuICAgICAgICAgICAgaGVpZ2h0KFxuICAgICAgICAgICAgICAgIHRoaXMuJGVsLFxuICAgICAgICAgICAgICAgIERpbWVuc2lvbnMuY29udGFpbihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkaW1cbiAgICAgICAgICAgICAgICApLmhlaWdodFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsncmVzaXplJ10sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQge1xuICAgICQsXG4gICAgZ2V0VGFyZ2V0ZWRFbGVtZW50LFxuICAgIGlzU2FtZVNpdGVBbmNob3IsXG4gICAgb2ZmLFxuICAgIG9uLFxuICAgIHNjcm9sbEludG9WaWV3LFxuICAgIHRyaWdnZXIsXG4gICAgd2l0aGluLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3BzOiB7XG4gICAgICAgIG9mZnNldDogTnVtYmVyLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIG9mZnNldDogMCxcbiAgICB9LFxuXG4gICAgY29ubmVjdGVkKCkge1xuICAgICAgICByZWdpc3RlckNsaWNrKHRoaXMpO1xuICAgIH0sXG5cbiAgICBkaXNjb25uZWN0ZWQoKSB7XG4gICAgICAgIHVucmVnaXN0ZXJDbGljayh0aGlzKTtcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBhc3luYyBzY3JvbGxUbyhlbCkge1xuICAgICAgICAgICAgZWwgPSAoZWwgJiYgJChlbCkpIHx8IGRvY3VtZW50LmJvZHk7XG5cbiAgICAgICAgICAgIGlmICh0cmlnZ2VyKHRoaXMuJGVsLCAnYmVmb3Jlc2Nyb2xsJywgW3RoaXMsIGVsXSkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBzY3JvbGxJbnRvVmlldyhlbCwgeyBvZmZzZXQ6IHRoaXMub2Zmc2V0IH0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdzY3JvbGxlZCcsIFt0aGlzLCBlbF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5jb25zdCBpbnN0YW5jZXMgPSBuZXcgU2V0KCk7XG5mdW5jdGlvbiByZWdpc3RlckNsaWNrKGNtcCkge1xuICAgIGlmICghaW5zdGFuY2VzLnNpemUpIHtcbiAgICAgICAgb24oZG9jdW1lbnQsICdjbGljaycsIGNsaWNrSGFuZGxlcik7XG4gICAgfVxuXG4gICAgaW5zdGFuY2VzLmFkZChjbXApO1xufVxuXG5mdW5jdGlvbiB1bnJlZ2lzdGVyQ2xpY2soY21wKSB7XG4gICAgaW5zdGFuY2VzLmRlbGV0ZShjbXApO1xuXG4gICAgaWYgKCFpbnN0YW5jZXMuc2l6ZSkge1xuICAgICAgICBvZmYoZG9jdW1lbnQsICdjbGljaycsIGNsaWNrSGFuZGxlcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBjbGlja0hhbmRsZXIoZSkge1xuICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaW5zdGFuY2Ugb2YgaW5zdGFuY2VzKSB7XG4gICAgICAgIGlmICh3aXRoaW4oZS50YXJnZXQsIGluc3RhbmNlLiRlbCkgJiYgaXNTYW1lU2l0ZUFuY2hvcihpbnN0YW5jZS4kZWwpKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYgIT09IGluc3RhbmNlLiRlbC5ocmVmKSB7XG4gICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCAnJywgaW5zdGFuY2UuJGVsLmhyZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2Uuc2Nyb2xsVG8oZ2V0VGFyZ2V0ZWRFbGVtZW50KGluc3RhbmNlLiRlbCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgaW50ZXJzZWN0aW9uIH0gZnJvbSAnLi4vYXBpL29ic2VydmFibGVzJztcbmltcG9ydCB7XG4gICAgJCQsXG4gICAgY3NzLFxuICAgIGZpbHRlcixcbiAgICBkYXRhIGFzIGdldERhdGEsXG4gICAgb25jZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICByZW1vdmVDbGFzc2VzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRyaWdnZXIsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgYXJnczogJ2NscycsXG5cbiAgICBwcm9wczoge1xuICAgICAgICBjbHM6IFN0cmluZyxcbiAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgIGhpZGRlbjogQm9vbGVhbixcbiAgICAgICAgbWFyZ2luOiBTdHJpbmcsXG4gICAgICAgIHJlcGVhdDogQm9vbGVhbixcbiAgICAgICAgZGVsYXk6IE51bWJlcixcbiAgICB9LFxuXG4gICAgZGF0YTogKCkgPT4gKHtcbiAgICAgICAgY2xzOiAnJyxcbiAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBtYXJnaW46ICctMXB4JyxcbiAgICAgICAgcmVwZWF0OiBmYWxzZSxcbiAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgIGluVmlld0NsYXNzOiAndWstc2Nyb2xsc3B5LWludmlldycsXG4gICAgfSksXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBlbGVtZW50cyh7IHRhcmdldCB9LCAkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQgPyAkJCh0YXJnZXQsICRlbCkgOiBbJGVsXTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgZWxlbWVudHMoZWxlbWVudHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhpZGRlbikge1xuICAgICAgICAgICAgICAgIC8vIHVzZSBgb3BhY2l0eTowYCBpbnN0ZWFkIG9mIGB2aXNpYmlsaXR5OmhpZGRlbmAgdG8gbWFrZSBjb250ZW50IGZvY3VzYWJsZSB3aXRoIGtleWJvYXJkXG4gICAgICAgICAgICAgICAgY3NzKGZpbHRlcihlbGVtZW50cywgYDpub3QoLiR7dGhpcy5pblZpZXdDbGFzc30pYCksICdvcGFjaXR5JywgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50RGF0YSA9IG5ldyBNYXAoKTtcbiAgICB9LFxuXG4gICAgZGlzY29ubmVjdGVkKCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtlbCwgc3RhdGVdIG9mIHRoaXMuZWxlbWVudERhdGEuZW50cmllcygpKSB7XG4gICAgICAgICAgICByZW1vdmVDbGFzcyhlbCwgdGhpcy5pblZpZXdDbGFzcywgc3RhdGU/LmNscyB8fCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHRoaXMuZWxlbWVudERhdGE7XG4gICAgfSxcblxuICAgIG9ic2VydmU6IGludGVyc2VjdGlvbih7XG4gICAgICAgIHRhcmdldDogKHsgZWxlbWVudHMgfSkgPT4gZWxlbWVudHMsXG4gICAgICAgIGhhbmRsZXIocmVjb3Jkcykge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmVsZW1lbnREYXRhO1xuICAgICAgICAgICAgZm9yIChjb25zdCB7IHRhcmdldDogZWwsIGlzSW50ZXJzZWN0aW5nIH0gb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGlmICghZWxlbWVudHMuaGFzKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5zZXQoZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogZ2V0RGF0YShlbCwgJ3VrLXNjcm9sbHNweS1jbGFzcycpIHx8IHRoaXMuY2xzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZSA9IGVsZW1lbnRzLmdldChlbCk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlcGVhdCAmJiBzdGF0ZS5zaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN0YXRlLnNob3cgPSBpc0ludGVyc2VjdGluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zOiAoaW5zdGFuY2UpID0+ICh7IHJvb3RNYXJnaW46IGluc3RhbmNlLm1hcmdpbiB9KSxcbiAgICAgICAgYXJnczogeyBpbnRlcnNlY3Rpbmc6IGZhbHNlIH0sXG4gICAgfSksXG5cbiAgICB1cGRhdGU6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgd3JpdGUoZGF0YSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2VsLCBzdGF0ZV0gb2YgdGhpcy5lbGVtZW50RGF0YS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnNob3cgJiYgIXN0YXRlLmludmlldyAmJiAhc3RhdGUucXVldWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5xdWV1ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnByb21pc2UgPSAoZGF0YS5wcm9taXNlIHx8IFByb21pc2UucmVzb2x2ZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRoaXMuZGVsYXkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKGVsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5xdWV1ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RhdGUuc2hvdyAmJiBzdGF0ZS5pbnZpZXcgJiYgIXN0YXRlLnF1ZXVlZCAmJiB0aGlzLnJlcGVhdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoZWwsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgXSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgdG9nZ2xlKGVsLCBpbnZpZXcpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5lbGVtZW50RGF0YS5nZXQoZWwpO1xuXG4gICAgICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGF0ZS5vZmY/LigpO1xuXG4gICAgICAgICAgICBjc3MoZWwsICdvcGFjaXR5JywgIWludmlldyAmJiB0aGlzLmhpZGRlbiA/IDAgOiAnJyk7XG5cbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmluVmlld0NsYXNzLCBpbnZpZXcpO1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHN0YXRlLmNscyk7XG5cbiAgICAgICAgICAgIGlmICgvXFxidWstYW5pbWF0aW9uLS8udGVzdChzdGF0ZS5jbHMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlQW5pbWF0aW9uQ2xhc3NlcyA9ICgpID0+IHJlbW92ZUNsYXNzZXMoZWwsICd1ay1hbmltYXRpb24tW1xcXFx3LV0rJyk7XG4gICAgICAgICAgICAgICAgaWYgKGludmlldykge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5vZmYgPSBvbmNlKGVsLCAnYW5pbWF0aW9uY2FuY2VsIGFuaW1hdGlvbmVuZCcsIHJlbW92ZUFuaW1hdGlvbkNsYXNzZXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUFuaW1hdGlvbkNsYXNzZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyaWdnZXIoZWwsIGludmlldyA/ICdpbnZpZXcnIDogJ291dHZpZXcnKTtcblxuICAgICAgICAgICAgc3RhdGUuaW52aWV3ID0gaW52aWV3O1xuXG4gICAgICAgICAgICAvLyBjaGFuZ2UgdG8gYHZpc2liaWxpdHk6IGhpZGRlbmAgZG9lcyBub3QgdHJpZ2dlciBvYnNlcnZlcnNcbiAgICAgICAgICAgIHRoaXMuJHVwZGF0ZShlbCk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQgeyBpbnRlcnNlY3Rpb24sIHNjcm9sbCB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1xuICAgICQkLFxuICAgIGNsb3Nlc3QsXG4gICAgZ2V0VGFyZ2V0ZWRFbGVtZW50LFxuICAgIGhhc0NsYXNzLFxuICAgIGlzU2FtZVNpdGVBbmNob3IsXG4gICAgaXNWaXNpYmxlLFxuICAgIG9mZnNldCxcbiAgICBvZmZzZXRWaWV3cG9ydCxcbiAgICBzY3JvbGxQYXJlbnRzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRyaWdnZXIsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgY2xzOiBTdHJpbmcsXG4gICAgICAgIGNsb3Nlc3Q6IFN0cmluZyxcbiAgICAgICAgc2Nyb2xsOiBCb29sZWFuLFxuICAgICAgICBvdmVyZmxvdzogQm9vbGVhbixcbiAgICAgICAgb2Zmc2V0OiBOdW1iZXIsXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgY2xvc2VzdDogZmFsc2UsXG4gICAgICAgIHNjcm9sbDogZmFsc2UsXG4gICAgICAgIG92ZXJmbG93OiB0cnVlLFxuICAgICAgICBvZmZzZXQ6IDAsXG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIGxpbmtzKF8sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuICQkKCdhW2hyZWYqPVwiI1wiXScsICRlbCkuZmlsdGVyKChlbCkgPT4gZWwuaGFzaCAmJiBpc1NhbWVTaXRlQW5jaG9yKGVsKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZWxlbWVudHMoeyBjbG9zZXN0OiBzZWxlY3RvciB9KSB7XG4gICAgICAgICAgICByZXR1cm4gY2xvc2VzdCh0aGlzLmxpbmtzLCBzZWxlY3RvciB8fCAnKicpO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICB3YXRjaDoge1xuICAgICAgICBsaW5rcyhsaW5rcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kY3JlYXRlKCdzY3JvbGwnLCBsaW5rcywgeyBvZmZzZXQ6IHRoaXMub2Zmc2V0IHx8IDAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG9ic2VydmU6IFtpbnRlcnNlY3Rpb24oKSwgc2Nyb2xsKCldLFxuXG4gICAgdXBkYXRlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlYWQoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMubGlua3MubWFwKGdldFRhcmdldGVkRWxlbWVudCkuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZW5ndGggfSA9IHRhcmdldHM7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWxlbmd0aCB8fCAhaXNWaXNpYmxlKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgW3Njcm9sbEVsZW1lbnRdID0gc2Nyb2xsUGFyZW50cyh0YXJnZXRzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0IH0gPSBzY3JvbGxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gb2Zmc2V0Vmlld3BvcnQoc2Nyb2xsRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gc2Nyb2xsSGVpZ2h0IC0gdmlld3BvcnQuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGxldCBhY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxUb3AgPT09IG1heCkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSBsZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCh0YXJnZXRzW2ldKS50b3AgLSB2aWV3cG9ydC50b3AgLSB0aGlzLm9mZnNldCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9ICtpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSA9PT0gZmFsc2UgJiYgdGhpcy5vdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7IGFjdGl2ZSB9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGUoeyBhY3RpdmUgfSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5nZWQgPSBhY3RpdmUgIT09IGZhbHNlICYmICFoYXNDbGFzcyh0aGlzLmVsZW1lbnRzW2FjdGl2ZV0sIHRoaXMuY2xzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubGlua3MuZm9yRWFjaCgoZWwpID0+IGVsLmJsdXIoKSk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuZWxlbWVudHNbaV0sIHRoaXMuY2xzLCAraSA9PT0gYWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWN0aXZlJywgW2FjdGl2ZSwgdGhpcy5lbGVtZW50c1thY3RpdmVdXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdyZXNpemUnXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbiIsImltcG9ydCBDbGFzcyBmcm9tICcuLi9taXhpbi9jbGFzcyc7XG5pbXBvcnQgTWVkaWEgZnJvbSAnLi4vbWl4aW4vbWVkaWEnO1xuaW1wb3J0IHsgcmVzaXplLCBzY3JvbGwgfSBmcm9tICcuLi9hcGkvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtcbiAgICAkLFxuICAgIGFkZENsYXNzLFxuICAgIGFmdGVyLFxuICAgIEFuaW1hdGlvbixcbiAgICBiZWZvcmUsXG4gICAgY2xhbXAsXG4gICAgY3NzLFxuICAgIGhlaWdodCBhcyBnZXRIZWlnaHQsXG4gICAgb2Zmc2V0IGFzIGdldE9mZnNldCxcbiAgICBpbnRlcnNlY3RSZWN0LFxuICAgIGlzTnVtZXJpYyxcbiAgICBpc1N0cmluZyxcbiAgICBpc1Zpc2libGUsXG4gICAgbm9vcCxcbiAgICBvZmZzZXRQb3NpdGlvbixcbiAgICBwYXJlbnQsXG4gICAgcXVlcnksXG4gICAgcmVtb3ZlLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHJlcGxhY2VDbGFzcyxcbiAgICB0b0Zsb2F0LFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHRvUHgsXG4gICAgdHJpZ2dlcixcbiAgICB3aXRoaW4sXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ2xhc3MsIE1lZGlhXSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHBvc2l0aW9uOiBTdHJpbmcsXG4gICAgICAgIHRvcDogbnVsbCxcbiAgICAgICAgYm90dG9tOiBudWxsLFxuICAgICAgICBzdGFydDogbnVsbCxcbiAgICAgICAgZW5kOiBudWxsLFxuICAgICAgICBvZmZzZXQ6IFN0cmluZyxcbiAgICAgICAgb3ZlcmZsb3dGbGlwOiBCb29sZWFuLFxuICAgICAgICBhbmltYXRpb246IFN0cmluZyxcbiAgICAgICAgY2xzQWN0aXZlOiBTdHJpbmcsXG4gICAgICAgIGNsc0luYWN0aXZlOiBTdHJpbmcsXG4gICAgICAgIGNsc0ZpeGVkOiBTdHJpbmcsXG4gICAgICAgIGNsc0JlbG93OiBTdHJpbmcsXG4gICAgICAgIHNlbFRhcmdldDogU3RyaW5nLFxuICAgICAgICBzaG93T25VcDogQm9vbGVhbixcbiAgICAgICAgdGFyZ2V0T2Zmc2V0OiBOdW1iZXIsXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgICB0b3A6IGZhbHNlLFxuICAgICAgICBib3R0b206IGZhbHNlLFxuICAgICAgICBzdGFydDogZmFsc2UsXG4gICAgICAgIGVuZDogZmFsc2UsXG4gICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgb3ZlcmZsb3dGbGlwOiBmYWxzZSxcbiAgICAgICAgYW5pbWF0aW9uOiAnJyxcbiAgICAgICAgY2xzQWN0aXZlOiAndWstYWN0aXZlJyxcbiAgICAgICAgY2xzSW5hY3RpdmU6ICcnLFxuICAgICAgICBjbHNGaXhlZDogJ3VrLXN0aWNreS1maXhlZCcsXG4gICAgICAgIGNsc0JlbG93OiAndWstc3RpY2t5LWJlbG93JyxcbiAgICAgICAgc2VsVGFyZ2V0OiAnJyxcbiAgICAgICAgc2hvd09uVXA6IGZhbHNlLFxuICAgICAgICB0YXJnZXRPZmZzZXQ6IGZhbHNlLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBzZWxUYXJnZXQoeyBzZWxUYXJnZXQgfSwgJGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gKHNlbFRhcmdldCAmJiAkKHNlbFRhcmdldCwgJGVsKSkgfHwgJGVsO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBjb2VyY2UodGhpcy5zdGFydCB8fCB0aGlzLnRvcCk7XG4gICAgICAgIHRoaXMuZW5kID0gY29lcmNlKHRoaXMuZW5kIHx8IHRoaXMuYm90dG9tKTtcblxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICQoJysgLnVrLXN0aWNreS1wbGFjZWhvbGRlcicsIHRoaXMuJGVsKSB8fFxuICAgICAgICAgICAgJCgnPGRpdiBjbGFzcz1cInVrLXN0aWNreS1wbGFjZWhvbGRlclwiPjwvZGl2PicpO1xuICAgICAgICB0aGlzLmlzRml4ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIH0sXG5cbiAgICBkaXNjb25uZWN0ZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRml4ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUpO1xuICAgICAgICB9XG4gICAgICAgIHJlc2V0KHRoaXMuJGVsKTtcblxuICAgICAgICByZW1vdmUodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBudWxsO1xuICAgIH0sXG5cbiAgICBvYnNlcnZlOiBbXG4gICAgICAgIHJlc2l6ZSh7XG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgICF0aGlzLmlzRml4ZWQgJiYgdGhpcy4kZW1pdCgncmVzaXplJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgcmVzaXplKHsgdGFyZ2V0OiAoKSA9PiBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSB9KSxcbiAgICAgICAgc2Nyb2xsKCksXG4gICAgXSxcblxuICAgIGV2ZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAncmVzaXplJyxcblxuICAgICAgICAgICAgZWwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt3aW5kb3csIHdpbmRvdy52aXN1YWxWaWV3cG9ydF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoJ3Jlc2l6ZVZpZXdwb3J0Jyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbG9hZCBoYXNoY2hhbmdlIHBvcHN0YXRlJyxcblxuICAgICAgICAgICAgZWwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGZpbHRlcigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXRPZmZzZXQgIT09IGZhbHNlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNjcm9sbGluZ0VsZW1lbnQgfSA9IGRvY3VtZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCFsb2NhdGlvbi5oYXNoIHx8IHNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0T2Zmc2V0ID0gZ2V0T2Zmc2V0KCQobG9jYXRpb24uaGFzaCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbE9mZnNldCA9IGdldE9mZnNldCh0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNGaXhlZCAmJiBpbnRlcnNlY3RSZWN0KHRhcmdldE9mZnNldCwgZWxPZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0T2Zmc2V0LnRvcCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxPZmZzZXQuaGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1B4KHRoaXMudGFyZ2V0T2Zmc2V0LCAnaGVpZ2h0JywgdGhpcy5wbGFjZWhvbGRlcikgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvUHgodGhpcy5vZmZzZXQsICdoZWlnaHQnLCB0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLFxuXG4gICAgdXBkYXRlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlYWQoeyBoZWlnaHQsIHdpZHRoLCBtYXJnaW4sIHN0aWNreSB9LCB0eXBlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5hY3RpdmUgPSAhdGhpcy5tYXRjaE1lZGlhIHx8ICFpc1Zpc2libGUodGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGhpZGUgPSB0aGlzLmlzRml4ZWQgJiYgdHlwZXMuaGFzKCdyZXNpemUnKSAmJiAhc3RpY2t5O1xuICAgICAgICAgICAgICAgIGlmIChoaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZlbnRUcmFuc2l0aW9uKHRoaXMuc2VsVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAoeyBoZWlnaHQsIHdpZHRoIH0gPSBnZXRPZmZzZXQodGhpcy4kZWwpKTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luID0gY3NzKHRoaXMuJGVsLCAnbWFyZ2luJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0b1B4KCcxMDB2aCcsICdoZWlnaHQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkeW5hbWljVmlld3BvcnQgPSBnZXRIZWlnaHQod2luZG93KTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhTY3JvbGxIZWlnaHQgPSBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbEhlaWdodCAtIHZpZXdwb3J0O1xuXG4gICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVyZmxvd0ZsaXAgJiYgaGVpZ2h0ID4gdmlld3BvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gJ3RvcCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLmlzRml4ZWQgPyB0aGlzLnBsYWNlaG9sZGVyIDogdGhpcy4kZWw7XG4gICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHRvUHgodGhpcy5vZmZzZXQsICdoZWlnaHQnLCBzdGlja3kgPyB0aGlzLiRlbCA6IHJlZmVyZW5jZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYgKGhlaWdodCA8IGR5bmFtaWNWaWV3cG9ydCB8fCB0aGlzLm92ZXJmbG93RmxpcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGR5bmFtaWNWaWV3cG9ydCAtIGhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IHRoaXMub3ZlcmZsb3dGbGlwID8gMCA6IE1hdGgubWF4KDAsIGhlaWdodCArIG9mZnNldCAtIHZpZXdwb3J0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3BPZmZzZXQgPSBnZXRPZmZzZXQocmVmZXJlbmNlRWxlbWVudCkudG9wO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsSGVpZ2h0ID0gZ2V0T2Zmc2V0KHRoaXMuJGVsKS5oZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnN0YXJ0ID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0b3BPZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcGFyc2VQcm9wKHRoaXMuc3RhcnQsIHRoaXMuJGVsLCB0b3BPZmZzZXQpKSAtIG9mZnNldDtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZCA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbWF4U2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICA6IE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VQcm9wKHRoaXMuZW5kLCB0aGlzLiRlbCwgdG9wT2Zmc2V0ICsgaGVpZ2h0LCB0cnVlKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxIZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHN0aWNreSA9XG4gICAgICAgICAgICAgICAgICAgIG1heFNjcm9sbEhlaWdodCAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5zaG93T25VcCAmJlxuICAgICAgICAgICAgICAgICAgICBzdGFydCArIG9mZnNldCA9PT0gdG9wT2Zmc2V0ICYmXG4gICAgICAgICAgICAgICAgICAgIGVuZCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFNjcm9sbEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVByb3AoJyEqJywgdGhpcy4kZWwsIDAsIHRydWUpIC0gZWxIZWlnaHQgLSBvZmZzZXQgKyBvdmVyZmxvd1xuICAgICAgICAgICAgICAgICAgICAgICAgKSAmJlxuICAgICAgICAgICAgICAgICAgICBjc3MocGFyZW50KHRoaXMuJGVsKSwgJ292ZXJmbG93WScpID09PSAndmlzaWJsZSc7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgICAgICAgICAgZW5kLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93LFxuICAgICAgICAgICAgICAgICAgICB0b3BPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgZWxIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4sXG4gICAgICAgICAgICAgICAgICAgIHRvcDogb2Zmc2V0UG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudClbMF0sXG4gICAgICAgICAgICAgICAgICAgIHN0aWNreSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGUoeyBoZWlnaHQsIHdpZHRoLCBtYXJnaW4sIG9mZnNldCwgc3RpY2t5IH0pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmFjdGl2ZSB8fCBzdGlja3kgfHwgIXRoaXMuaXNGaXhlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXNldCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdGlja3kpIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gd2lkdGggPSBtYXJnaW4gPSAwO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHsgcG9zaXRpb246ICdzdGlja3knLCB0b3A6IG9mZnNldCB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7IHBsYWNlaG9sZGVyIH0gPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgY3NzKHBsYWNlaG9sZGVyLCB7IGhlaWdodCwgd2lkdGgsIG1hcmdpbiB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghd2l0aGluKHBsYWNlaG9sZGVyLCBkb2N1bWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKHN0aWNreSA/IGJlZm9yZSA6IGFmdGVyKSh0aGlzLiRlbCwgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZScsICdyZXNpemVWaWV3cG9ydCddLFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlYWQoe1xuICAgICAgICAgICAgICAgIHNjcm9sbDogcHJldlNjcm9sbCA9IDAsXG4gICAgICAgICAgICAgICAgZGlyOiBwcmV2RGlyID0gJ2Rvd24nLFxuICAgICAgICAgICAgICAgIG92ZXJmbG93LFxuICAgICAgICAgICAgICAgIG92ZXJmbG93U2Nyb2xsID0gMCxcbiAgICAgICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmQsXG4gICAgICAgICAgICB9KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlyID0gcHJldlNjcm9sbCA8PSBzY3JvbGwgPyAnZG93bicgOiAndXAnO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgICAgICAgICBwcmV2RGlyLFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGwsXG4gICAgICAgICAgICAgICAgICAgIHByZXZTY3JvbGwsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFBhcmVudFRvcDogZ2V0T2Zmc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaXNGaXhlZCA/IHRoaXMucGxhY2Vob2xkZXIgOiB0aGlzLiRlbCkub2Zmc2V0UGFyZW50XG4gICAgICAgICAgICAgICAgICAgICkudG9wLFxuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1Njcm9sbDogY2xhbXAoXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1Njcm9sbCArIGNsYW1wKHNjcm9sbCwgc3RhcnQsIGVuZCkgLSBjbGFtcChwcmV2U2Nyb2xsLCBzdGFydCwgZW5kKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3cml0ZShkYXRhLCB0eXBlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU2Nyb2xsVXBkYXRlID0gdHlwZXMuaGFzKCdzY3JvbGwnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgICAgICAgICBkaXIsXG4gICAgICAgICAgICAgICAgICAgIHByZXZEaXIsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbCxcbiAgICAgICAgICAgICAgICAgICAgcHJldlNjcm9sbCA9IDAsXG4gICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgIHRvcE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIH0gPSBkYXRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPCAwIHx8XG4gICAgICAgICAgICAgICAgICAgIChzY3JvbGwgPT09IHByZXZTY3JvbGwgJiYgaXNTY3JvbGxVcGRhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnNob3dPblVwICYmICFpc1Njcm9sbFVwZGF0ZSAmJiAhdGhpcy5pc0ZpeGVkKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBpZiAobm93IC0gaW5pdFRpbWVzdGFtcCA+IDMwMCB8fCBkaXIgIT09IHByZXZEaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pbml0U2Nyb2xsID0gc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmluaXRUaW1lc3RhbXAgPSBub3c7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dPblVwICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmlzRml4ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMoZGF0YS5pbml0U2Nyb2xsIC0gc2Nyb2xsKSA8PSAzMCAmJlxuICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhwcmV2U2Nyb2xsIC0gc2Nyb2xsKSA8PSAxMFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluYWN0aXZlIHx8XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbCA8IHN0YXJ0IHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnNob3dPblVwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsIDw9IHN0YXJ0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpciA9PT0gJ2Rvd24nICYmIGlzU2Nyb2xsVXBkYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXIgPT09ICd1cCcgJiYgIXRoaXMuaXNGaXhlZCAmJiBzY3JvbGwgPD0gdG9wT2Zmc2V0ICsgaGVpZ2h0KSkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0ZpeGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQW5pbWF0aW9uLmluUHJvZ3Jlc3ModGhpcy4kZWwpICYmIHRvcCA+IHNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb24gJiYgc2Nyb2xsID4gdG9wT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5vdXQodGhpcy4kZWwsIHRoaXMuYW5pbWF0aW9uKS50aGVuKCgpID0+IHRoaXMuaGlkZSgpLCBub29wKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRml4ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYW5pbWF0aW9uICYmIHNjcm9sbCA+IHRvcE9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5pbih0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLmNhdGNoKG5vb3ApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZlbnRUcmFuc2l0aW9uKHRoaXMuc2VsVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ3Jlc2l6ZScsICdyZXNpemVWaWV3cG9ydCcsICdzY3JvbGwnXSxcbiAgICAgICAgfSxcbiAgICBdLFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzaG93KCkge1xuICAgICAgICAgICAgdGhpcy5pc0ZpeGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGhpZGUoKSB7XG4gICAgICAgICAgICBjb25zdCB7IG9mZnNldCwgc3RpY2t5IH0gPSB0aGlzLl9kYXRhO1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUoZmFsc2UpO1xuICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQsIHRoaXMuY2xzQmVsb3cpO1xuICAgICAgICAgICAgaWYgKHN0aWNreSkge1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ3RvcCcsIG9mZnNldCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJycsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNGaXhlZCA9IGZhbHNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgc2Nyb2xsID0gMCxcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyxcbiAgICAgICAgICAgICAgICBvdmVyZmxvd1Njcm9sbCA9IDAsXG4gICAgICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICAgICAgZW5kLFxuICAgICAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgICAgICB0b3BPZmZzZXQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIGVsSGVpZ2h0LFxuICAgICAgICAgICAgICAgIG9mZnNldFBhcmVudFRvcCxcbiAgICAgICAgICAgICAgICBzdGlja3ksXG4gICAgICAgICAgICB9ID0gdGhpcy5fZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHN0YXJ0ICE9PSAwIHx8IHNjcm9sbCA+IHN0YXJ0O1xuXG4gICAgICAgICAgICBpZiAoIXN0aWNreSkge1xuICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9ICdmaXhlZCc7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsID4gZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBlbmQgLSBvZmZzZXRQYXJlbnRUb3A7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHsgcG9zaXRpb24sIHdpZHRoIH0pO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21hcmdpblRvcCcsIDAsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0IC09IG92ZXJmbG93U2Nyb2xsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjc3ModGhpcy4kZWwsICd0b3AnLCBvZmZzZXQpO1xuXG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZShhY3RpdmUpO1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoXG4gICAgICAgICAgICAgICAgdGhpcy4kZWwsXG4gICAgICAgICAgICAgICAgdGhpcy5jbHNCZWxvdyxcbiAgICAgICAgICAgICAgICBzY3JvbGwgPiB0b3BPZmZzZXQgKyAoc3RpY2t5ID8gTWF0aC5taW4oaGVpZ2h0LCBlbEhlaWdodCkgOiBoZWlnaHQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNldEFjdGl2ZShhY3RpdmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSB0aGlzLmFjdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gYWN0aXZlO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJlcGxhY2VDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNJbmFjdGl2ZSwgdGhpcy5jbHNBY3RpdmUpO1xuICAgICAgICAgICAgICAgIHByZXYgIT09IGFjdGl2ZSAmJiB0cmlnZ2VyKHRoaXMuJGVsLCAnYWN0aXZlJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcGxhY2VDbGFzcyh0aGlzLnNlbFRhcmdldCwgdGhpcy5jbHNBY3RpdmUsIHRoaXMuY2xzSW5hY3RpdmUpO1xuICAgICAgICAgICAgICAgIHByZXYgIT09IGFjdGl2ZSAmJiB0cmlnZ2VyKHRoaXMuJGVsLCAnaW5hY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gcGFyc2VQcm9wKHZhbHVlLCBlbCwgcHJvcE9mZnNldCwgcGFkZGluZykge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKGlzTnVtZXJpYyh2YWx1ZSkgfHwgKGlzU3RyaW5nKHZhbHVlKSAmJiB2YWx1ZS5tYXRjaCgvXi0/XFxkLykpKSB7XG4gICAgICAgIHJldHVybiBwcm9wT2Zmc2V0ICsgdG9QeCh2YWx1ZSwgJ2hlaWdodCcsIGVsLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWZFbGVtZW50ID0gdmFsdWUgPT09IHRydWUgPyBwYXJlbnQoZWwpIDogcXVlcnkodmFsdWUsIGVsKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGdldE9mZnNldChyZWZFbGVtZW50KS5ib3R0b20gLVxuICAgICAgICAgICAgKHBhZGRpbmcgJiYgcmVmRWxlbWVudCAmJiB3aXRoaW4oZWwsIHJlZkVsZW1lbnQpXG4gICAgICAgICAgICAgICAgPyB0b0Zsb2F0KGNzcyhyZWZFbGVtZW50LCAncGFkZGluZ0JvdHRvbScpKVxuICAgICAgICAgICAgICAgIDogMClcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNvZXJjZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHJlc2V0KGVsKSB7XG4gICAgY3NzKGVsLCB7IHBvc2l0aW9uOiAnJywgdG9wOiAnJywgbWFyZ2luVG9wOiAnJywgd2lkdGg6ICcnIH0pO1xufVxuXG5mdW5jdGlvbiBwcmV2ZW50VHJhbnNpdGlvbihlbCkge1xuICAgIGNzcyhlbCwgJ3RyYW5zaXRpb24nLCAnMHMnKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gY3NzKGVsLCAndHJhbnNpdGlvbicsICcnKSk7XG59XG4iLCJpbXBvcnQgeyAkJCB9IGZyb20gJy4vZG9tJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1heFBhdGhMZW5ndGgoZWwpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKFxuICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAuLi4kJCgnW3N0cm9rZV0nLCBlbCkubWFwKChzdHJva2UpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Ryb2tlLmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgKTtcbn1cbiIsImltcG9ydCBTdmcgZnJvbSAnLi4vbWl4aW4vc3ZnJztcbmltcG9ydCB7IGdldE1heFBhdGhMZW5ndGggfSBmcm9tICcuLi91dGlsL3N2Zyc7XG5pbXBvcnQgeyBtdXRhdGlvbiB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYXR0cixcbiAgICBjc3MsXG4gICAgaW5jbHVkZXMsXG4gICAgaXNUYWcsXG4gICAgbWVtb2l6ZSxcbiAgICBvbmNlLFxuICAgIHJlbW92ZUF0dHIsXG4gICAgc3RhcnRzV2l0aCxcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtTdmddLFxuXG4gICAgYXJnczogJ3NyYycsXG5cbiAgICBwcm9wczoge1xuICAgICAgICBzcmM6IFN0cmluZyxcbiAgICAgICAgaWNvbjogU3RyaW5nLFxuICAgICAgICBhdHRyaWJ1dGVzOiAnbGlzdCcsXG4gICAgICAgIHN0cm9rZUFuaW1hdGlvbjogQm9vbGVhbixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBzdHJva2VBbmltYXRpb246IGZhbHNlLFxuICAgIH0sXG5cbiAgICBvYnNlcnZlOiBbXG4gICAgICAgIG11dGF0aW9uKHtcbiAgICAgICAgICAgIGFzeW5jIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ZnID0gYXdhaXQgdGhpcy5zdmc7XG4gICAgICAgICAgICAgICAgaWYgKHN2Zykge1xuICAgICAgICAgICAgICAgICAgICBhcHBseUF0dHJpYnV0ZXMuY2FsbCh0aGlzLCBzdmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnLCAnY2xhc3MnLCAnc3R5bGUnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgIF0sXG5cbiAgICBhc3luYyBjb25uZWN0ZWQoKSB7XG4gICAgICAgIGlmIChpbmNsdWRlcyh0aGlzLnNyYywgJyMnKSkge1xuICAgICAgICAgICAgW3RoaXMuc3JjLCB0aGlzLmljb25dID0gdGhpcy5zcmMuc3BsaXQoJyMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN2ZyA9IGF3YWl0IHRoaXMuc3ZnO1xuICAgICAgICBpZiAoc3ZnKSB7XG4gICAgICAgICAgICBhcHBseUF0dHJpYnV0ZXMuY2FsbCh0aGlzLCBzdmcpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3Ryb2tlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgYXBwbHlBbmltYXRpb24oc3ZnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIGdldFN2ZygpIHtcbiAgICAgICAgICAgIGlmIChpc1RhZyh0aGlzLiRlbCwgJ2ltZycpICYmICF0aGlzLiRlbC5jb21wbGV0ZSAmJiB0aGlzLiRlbC5sb2FkaW5nID09PSAnbGF6eScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+XG4gICAgICAgICAgICAgICAgICAgIG9uY2UodGhpcy4kZWwsICdsb2FkJywgKCkgPT4gcmVzb2x2ZSh0aGlzLmdldFN2ZygpKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VTVkcoYXdhaXQgbG9hZFNWRyh0aGlzLnNyYyksIHRoaXMuaWNvbikgfHwgUHJvbWlzZS5yZWplY3QoJ1NWRyBub3QgZm91bmQuJyk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIGFwcGx5QXR0cmlidXRlcyhlbCkge1xuICAgIGNvbnN0IHsgJGVsIH0gPSB0aGlzO1xuXG4gICAgYWRkQ2xhc3MoZWwsIGF0dHIoJGVsLCAnY2xhc3MnKSwgJ3VrLXN2ZycpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAkZWwuc3R5bGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcHJvcCA9ICRlbC5zdHlsZVtpXTtcbiAgICAgICAgY3NzKGVsLCBwcm9wLCBjc3MoJGVsLCBwcm9wKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgaW4gdGhpcy5hdHRyaWJ1dGVzKSB7XG4gICAgICAgIGNvbnN0IFtwcm9wLCB2YWx1ZV0gPSB0aGlzLmF0dHJpYnV0ZXNbYXR0cmlidXRlXS5zcGxpdCgnOicsIDIpO1xuICAgICAgICBhdHRyKGVsLCBwcm9wLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiRlbC5pZCkge1xuICAgICAgICByZW1vdmVBdHRyKGVsLCAnaWQnKTtcbiAgICB9XG59XG5cbmNvbnN0IGxvYWRTVkcgPSBtZW1vaXplKGFzeW5jIChzcmMpID0+IHtcbiAgICBpZiAoc3JjKSB7XG4gICAgICAgIGlmIChzdGFydHNXaXRoKHNyYywgJ2RhdGE6JykpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc3JjLnNwbGl0KCcsJylbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBmZXRjaChzcmMpKS50ZXh0KCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICB9XG59KTtcblxuZnVuY3Rpb24gcGFyc2VTVkcoc3ZnLCBpY29uKSB7XG4gICAgaWYgKGljb24gJiYgaW5jbHVkZXMoc3ZnLCAnPHN5bWJvbCcpKSB7XG4gICAgICAgIHN2ZyA9IHBhcnNlU3ltYm9scyhzdmcpW2ljb25dIHx8IHN2ZztcbiAgICB9XG5cbiAgICBzdmcgPSAkKHN2Zy5zdWJzdHIoc3ZnLmluZGV4T2YoJzxzdmcnKSkpO1xuICAgIHJldHVybiBzdmc/Lmhhc0NoaWxkTm9kZXMoKSAmJiBzdmc7XG59XG5cbmNvbnN0IHN5bWJvbFJlID0gLzxzeW1ib2woW15dKj9pZD0oWydcIl0pKC4rPylcXDJbXl0qPzxcXC8pc3ltYm9sPi9nO1xuXG5jb25zdCBwYXJzZVN5bWJvbHMgPSBtZW1vaXplKGZ1bmN0aW9uIChzdmcpIHtcbiAgICBjb25zdCBzeW1ib2xzID0ge307XG5cbiAgICBzeW1ib2xSZS5sYXN0SW5kZXggPSAwO1xuXG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICgobWF0Y2ggPSBzeW1ib2xSZS5leGVjKHN2ZykpKSB7XG4gICAgICAgIHN5bWJvbHNbbWF0Y2hbM11dID0gYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiJHttYXRjaFsxXX1zdmc+YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ltYm9scztcbn0pO1xuXG5mdW5jdGlvbiBhcHBseUFuaW1hdGlvbihlbCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldE1heFBhdGhMZW5ndGgoZWwpO1xuXG4gICAgaWYgKGxlbmd0aCkge1xuICAgICAgICBjc3MoZWwsICctLXVrLWFuaW1hdGlvbi1zdHJva2UnLCBsZW5ndGgpO1xuICAgIH1cbn1cbiIsImltcG9ydCBUb2dnbGFibGUgZnJvbSAnLi4vbWl4aW4vdG9nZ2xhYmxlJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uL3V0aWwva2V5cyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUlkIH0gZnJvbSAnLi4vYXBpL2luc3RhbmNlJztcbmltcG9ydCB7IGxhenlsb2FkLCBzd2lwZSB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1xuICAgICQkLFxuICAgIGF0dHIsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xvc2VzdCxcbiAgICBjc3MsXG4gICAgZGF0YSxcbiAgICBlbmRzV2l0aCxcbiAgICBmaW5kSW5kZXgsXG4gICAgZ2V0SW5kZXgsXG4gICAgaGFzQ2xhc3MsXG4gICAgaW5jbHVkZXMsXG4gICAgaXNOb2RlLFxuICAgIG1hdGNoZXMsXG4gICAgcXVlcnlBbGwsXG4gICAgdG9BcnJheSxcbiAgICB0b2dnbGVDbGFzcyxcbiAgICB3aXRoaW4sXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5jb25zdCBzZWxEaXNhYmxlZCA9ICcudWstZGlzYWJsZWQgKiwgLnVrLWRpc2FibGVkLCBbZGlzYWJsZWRdJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW1RvZ2dsYWJsZV0sXG5cbiAgICBhcmdzOiAnY29ubmVjdCcsXG5cbiAgICBwcm9wczoge1xuICAgICAgICBjb25uZWN0OiBTdHJpbmcsXG4gICAgICAgIHRvZ2dsZTogU3RyaW5nLFxuICAgICAgICBpdGVtTmF2OiBTdHJpbmcsXG4gICAgICAgIGFjdGl2ZTogTnVtYmVyLFxuICAgICAgICBmb2xsb3dGb2N1czogQm9vbGVhbixcbiAgICAgICAgc3dpcGluZzogQm9vbGVhbixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBjb25uZWN0OiAnfi51ay1zd2l0Y2hlcicsXG4gICAgICAgIHRvZ2dsZTogJz4gKiA+IDpmaXJzdC1jaGlsZCcsXG4gICAgICAgIGl0ZW1OYXY6IGZhbHNlLFxuICAgICAgICBhY3RpdmU6IDAsXG4gICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgIGF0dHJJdGVtOiAndWstc3dpdGNoZXItaXRlbScsXG4gICAgICAgIHNlbFZlcnRpY2FsOiAnLnVrLW5hdicsXG4gICAgICAgIGZvbGxvd0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgc3dpcGluZzogdHJ1ZSxcbiAgICB9LFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgY29ubmVjdHMoeyBjb25uZWN0IH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5QWxsKGNvbm5lY3QsICRlbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdENoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdHMubWFwKChlbCkgPT4gY2hpbGRyZW4oZWwpKS5mbGF0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdG9nZ2xlcyh7IHRvZ2dsZSB9LCAkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiAkJCh0b2dnbGUsICRlbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4odGhpcy4kZWwpLmZpbHRlcigoY2hpbGQpID0+XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVzLnNvbWUoKHRvZ2dsZSkgPT4gd2l0aGluKHRvZ2dsZSwgY2hpbGQpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgY29ubmVjdHMoY29ubmVjdHMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN3aXBpbmcpIHtcbiAgICAgICAgICAgICAgICBjc3MoY29ubmVjdHMsICd0b3VjaEFjdGlvbicsICdwYW4teSBwaW5jaC16b29tJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdENoaWxkcmVuKCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIHRoaXMuY29ubmVjdHMpIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbihlbCkuZm9yRWFjaCgoY2hpbGQsIGkpID0+IHRvZ2dsZUNsYXNzKGNoaWxkLCB0aGlzLmNscywgaSA9PT0gaW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICB0b2dnbGVzKHRvZ2dsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaW5kZXgoKTtcbiAgICAgICAgICAgIHRoaXMuc2hvdyh+YWN0aXZlID8gYWN0aXZlIDogdG9nZ2xlc1t0aGlzLmFjdGl2ZV0gfHwgdG9nZ2xlc1swXSk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgYXR0cih0aGlzLiRlbCwgJ3JvbGUnLCAndGFibGlzdCcpO1xuICAgIH0sXG5cbiAgICBvYnNlcnZlOiBbXG4gICAgICAgIGxhenlsb2FkKHsgdGFyZ2V0czogKHsgY29ubmVjdENoaWxkcmVuIH0pID0+IGNvbm5lY3RDaGlsZHJlbiB9KSxcbiAgICAgICAgc3dpcGUoeyB0YXJnZXQ6ICh7IGNvbm5lY3RzIH0pID0+IGNvbm5lY3RzLCBmaWx0ZXI6ICh7IHN3aXBpbmcgfSkgPT4gc3dpcGluZyB9KSxcbiAgICBdLFxuXG4gICAgZXZlbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdjbGljayBrZXlkb3duJyxcblxuICAgICAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFuZGxlcihlKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhbWF0Y2hlcyhlLmN1cnJlbnQsIHNlbERpc2FibGVkKSAmJlxuICAgICAgICAgICAgICAgICAgICAoZS50eXBlID09PSAnY2xpY2snIHx8IGUua2V5Q29kZSA9PT0ga2V5TWFwLlNQQUNFKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2tleWRvd24nLFxuXG4gICAgICAgICAgICBkZWxlZ2F0ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2dnbGU7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnQsIGtleUNvZGUgfSA9IGU7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNWZXJ0aWNhbCA9IG1hdGNoZXModGhpcy4kZWwsIHRoaXMuc2VsVmVydGljYWwpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICAgICAgICBrZXlDb2RlID09PSBrZXlNYXAuSE9NRVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGtleUNvZGUgPT09IGtleU1hcC5FTkRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2xhc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChrZXlDb2RlID09PSBrZXlNYXAuTEVGVCAmJiAhaXNWZXJ0aWNhbCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleUNvZGUgPT09IGtleU1hcC5VUCAmJiBpc1ZlcnRpY2FsKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncHJldmlvdXMnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChrZXlDb2RlID09PSBrZXlNYXAuUklHSFQgJiYgIWlzVmVydGljYWwpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlDb2RlID09PSBrZXlNYXAuRE9XTiAmJiBpc1ZlcnRpY2FsKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAofmkpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVzID0gdGhpcy50b2dnbGVzLmZpbHRlcigoZWwpID0+ICFtYXRjaGVzKGVsLCBzZWxEaXNhYmxlZCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gdG9nZ2xlc1tnZXRJbmRleChpLCB0b2dnbGVzLCB0b2dnbGVzLmluZGV4T2YoY3VycmVudCkpXTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb2xsb3dGb2N1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KG5leHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICBlbCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0cy5jb25jYXQodGhpcy5pdGVtTmF2ID8gcXVlcnlBbGwodGhpcy5pdGVtTmF2LCB0aGlzLiRlbCkgOiBbXSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkZWxlZ2F0ZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYFske3RoaXMuYXR0ckl0ZW19XSxbZGF0YS0ke3RoaXMuYXR0ckl0ZW19XWA7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdChlLnRhcmdldCwgJ2EsYnV0dG9uJykpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZGF0YShlLmN1cnJlbnQsIHRoaXMuYXR0ckl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzd2lwZVJpZ2h0IHN3aXBlTGVmdCcsXG5cbiAgICAgICAgICAgIGZpbHRlcigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zd2lwaW5nO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZWwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdHM7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKHsgdHlwZSB9KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KGVuZHNXaXRoKHR5cGUsICdMZWZ0JykgPyAnbmV4dCcgOiAncHJldmlvdXMnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgXSxcblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgYXR0cih0aGlzLmNvbm5lY3RzLCAncm9sZScsICdwcmVzZW50YXRpb24nKTtcbiAgICAgICAgYXR0cihjaGlsZHJlbih0aGlzLiRlbCksICdyb2xlJywgJ3ByZXNlbnRhdGlvbicpO1xuXG4gICAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gdGhpcy50b2dnbGVzKSB7XG4gICAgICAgICAgICBjb25zdCB0b2dnbGUgPSB0aGlzLnRvZ2dsZXNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29ubmVjdHNbMF0/LmNoaWxkcmVuW2luZGV4XTtcblxuICAgICAgICAgICAgYXR0cih0b2dnbGUsICdyb2xlJywgJ3RhYicpO1xuXG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG9nZ2xlLmlkID0gZ2VuZXJhdGVJZCh0aGlzLCB0b2dnbGUsIGAtdGFiLSR7aW5kZXh9YCk7XG4gICAgICAgICAgICBpdGVtLmlkID0gZ2VuZXJhdGVJZCh0aGlzLCBpdGVtLCBgLXRhYnBhbmVsLSR7aW5kZXh9YCk7XG5cbiAgICAgICAgICAgIGF0dHIodG9nZ2xlLCAnYXJpYS1jb250cm9scycsIGl0ZW0uaWQpO1xuICAgICAgICAgICAgYXR0cihpdGVtLCB7IHJvbGU6ICd0YWJwYW5lbCcsICdhcmlhLWxhYmVsbGVkYnknOiB0b2dnbGUuaWQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtb3JpZW50YXRpb24nLCBtYXRjaGVzKHRoaXMuJGVsLCB0aGlzLnNlbFZlcnRpY2FsKSA/ICd2ZXJ0aWNhbCcgOiBudWxsKTtcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBpbmRleCgpIHtcbiAgICAgICAgICAgIHJldHVybiBmaW5kSW5kZXgodGhpcy5jaGlsZHJlbiwgKGVsKSA9PiBoYXNDbGFzcyhlbCwgdGhpcy5jbHMpKTtcbiAgICAgICAgfSxcblxuICAgICAgICBzaG93KGl0ZW0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRvZ2dsZXMgPSB0aGlzLnRvZ2dsZXMuZmlsdGVyKChlbCkgPT4gIW1hdGNoZXMoZWwsIHNlbERpc2FibGVkKSk7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gdGhpcy5pbmRleCgpO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGdldEluZGV4KFxuICAgICAgICAgICAgICAgICFpc05vZGUoaXRlbSkgfHwgaW5jbHVkZXModG9nZ2xlcywgaXRlbSkgPyBpdGVtIDogMCxcbiAgICAgICAgICAgICAgICB0b2dnbGVzLFxuICAgICAgICAgICAgICAgIGdldEluZGV4KHRoaXMudG9nZ2xlc1twcmV2XSwgdG9nZ2xlcylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBnZXRJbmRleCh0b2dnbGVzW25leHRdLCB0aGlzLnRvZ2dsZXMpO1xuXG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoY2hpbGQsIHRoaXMuY2xzLCBhY3RpdmUgPT09IGkpO1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy50b2dnbGVzW2ldLCB7XG4gICAgICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogYWN0aXZlID09PSBpLFxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleDogYWN0aXZlID09PSBpID8gbnVsbCA6IC0xLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFuaW1hdGUgPSBwcmV2ID49IDAgJiYgcHJldiAhPT0gbmV4dDtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdHMuZm9yRWFjaChhc3luYyAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50b2dnbGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICB0b0FycmF5KGNoaWxkcmVuKS5maWx0ZXIoKGNoaWxkKSA9PiBoYXNDbGFzcyhjaGlsZCwgdGhpcy5jbHMpKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudG9nZ2xlRWxlbWVudChjaGlsZHJlblthY3RpdmVdLCB0cnVlLCBhbmltYXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuIiwiaW1wb3J0IFN3aXRjaGVyIGZyb20gJy4vc3dpdGNoZXInO1xuaW1wb3J0IENsYXNzIGZyb20gJy4uL21peGluL2NsYXNzJztcbmltcG9ydCB7IGhhc0NsYXNzIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICBleHRlbmRzOiBTd2l0Y2hlcixcblxuICAgIHByb3BzOiB7XG4gICAgICAgIG1lZGlhOiBCb29sZWFuLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIG1lZGlhOiA5NjAsXG4gICAgICAgIGF0dHJJdGVtOiAndWstdGFiLWl0ZW0nLFxuICAgICAgICBzZWxWZXJ0aWNhbDogJy51ay10YWItbGVmdCwudWstdGFiLXJpZ2h0JyxcbiAgICB9LFxuXG4gICAgY29ubmVjdGVkKCkge1xuICAgICAgICBjb25zdCBjbHMgPSBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1sZWZ0JylcbiAgICAgICAgICAgID8gJ3VrLXRhYi1sZWZ0J1xuICAgICAgICAgICAgOiBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1yaWdodCcpXG4gICAgICAgICAgICA/ICd1ay10YWItcmlnaHQnXG4gICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgICAgIHRoaXMuJGNyZWF0ZSgndG9nZ2xlJywgdGhpcy4kZWwsIHsgY2xzLCBtb2RlOiAnbWVkaWEnLCBtZWRpYTogdGhpcy5tZWRpYSB9KTtcbiAgICAgICAgfVxuICAgIH0sXG59O1xuIiwiaW1wb3J0IE1lZGlhIGZyb20gJy4uL21peGluL21lZGlhJztcbmltcG9ydCBUb2dnbGFibGUgZnJvbSAnLi4vbWl4aW4vdG9nZ2xhYmxlJztcbmltcG9ydCB7IGxhenlsb2FkIH0gZnJvbSAnLi4vYXBpL29ic2VydmFibGVzJztcbmltcG9ydCB7XG4gICAgYXR0cixcbiAgICBjbG9zZXN0LFxuICAgIGhhc0F0dHIsXG4gICAgaGFzQ2xhc3MsXG4gICAgaW5jbHVkZXMsXG4gICAgaXNGb2N1c2FibGUsXG4gICAgaXNUYWcsXG4gICAgaXNUb3VjaCxcbiAgICBtYXRjaGVzLFxuICAgIG9uY2UsXG4gICAgcG9pbnRlckRvd24sXG4gICAgcG9pbnRlckVudGVyLFxuICAgIHBvaW50ZXJMZWF2ZSxcbiAgICBxdWVyeUFsbCxcbiAgICB0cmlnZ2VyLFxuICAgIHdpdGhpbixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmNvbnN0IEtFWV9TUEFDRSA9IDMyO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbTWVkaWEsIFRvZ2dsYWJsZV0sXG5cbiAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIGhyZWY6IFN0cmluZyxcbiAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICBtb2RlOiAnbGlzdCcsXG4gICAgICAgIHF1ZXVlZDogQm9vbGVhbixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBocmVmOiBmYWxzZSxcbiAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgbW9kZTogJ2NsaWNrJyxcbiAgICAgICAgcXVldWVkOiB0cnVlLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICB0YXJnZXQoeyBocmVmLCB0YXJnZXQgfSwgJGVsKSB7XG4gICAgICAgICAgICB0YXJnZXQgPSBxdWVyeUFsbCh0YXJnZXQgfHwgaHJlZiwgJGVsKTtcbiAgICAgICAgICAgIHJldHVybiAodGFyZ2V0Lmxlbmd0aCAmJiB0YXJnZXQpIHx8IFskZWxdO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIGlmICghaW5jbHVkZXModGhpcy5tb2RlLCAnbWVkaWEnKSkge1xuICAgICAgICAgICAgaWYgKCFpc0ZvY3VzYWJsZSh0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCAndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmNscyAmJiBpc1RhZyh0aGlzLiRlbCwgJ2EnKSkge1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsICdyb2xlJywgJ2J1dHRvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG9ic2VydmU6IGxhenlsb2FkKHsgdGFyZ2V0OiAoeyB0YXJnZXQgfSkgPT4gdGFyZ2V0IH0pLFxuXG4gICAgZXZlbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJEb3duLFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcmV2ZW50Q2xpY2sgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpIHx8IHRoaXMuX3Nob3dTdGF0ZSB8fCB0aGlzLiRlbC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQ2xpY2tpbmcgYSBidXR0b24gZG9lcyBub3QgZ2l2ZSBpdCBmb2N1cyBvbiBhbGwgYnJvd3NlcnMgYW5kIHBsYXRmb3Jtc1xuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jY2xpY2tpbmdfYW5kX2ZvY3VzXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2ZvY3VzJyk7XG4gICAgICAgICAgICAgICAgb25jZShcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHBvaW50ZXJEb3duLFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB0cmlnZ2VyKHRoaXMuJGVsLCAnYmx1cicpLFxuICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAoZSkgPT4gIXdpdGhpbihlLnRhcmdldCwgdGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgaW5pdGlhbCBjbGljayB0byBwcmV2ZW50IGRvdWJsZSB0b2dnbGUgdGhyb3VnaCBmb2N1cyArIGNsaWNrXG4gICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKHRoaXMubW9kZSwgJ2NsaWNrJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJldmVudENsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGAke3BvaW50ZXJFbnRlcn0gJHtwb2ludGVyTGVhdmV9IGZvY3VzIGJsdXJgLFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUb3VjaChlKSB8fCB0aGlzLiRlbC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGluY2x1ZGVzKFtwb2ludGVyRW50ZXIsICdmb2N1cyddLCBlLnR5cGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2tpcCBoaWRlIGlmIHN0aWxsIGhvdmVyZWQgb3IgZm9jdXNlZFxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIXNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgKChlLnR5cGUgPT09IHBvaW50ZXJMZWF2ZSAmJiBtYXRjaGVzKHRoaXMuJGVsLCAnOmZvY3VzJykpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoZS50eXBlID09PSAnYmx1cicgJiYgbWF0Y2hlcyh0aGlzLiRlbCwgJzpob3ZlcicpKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgc3RhdGUgZG9lcyBub3QgY2hhbmdlIGUuZy4gaG92ZXIgKyBmb2N1cyByZWNlaXZlZFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zaG93U3RhdGUgJiYgc2hvdyAmJiBleHBhbmRlZCAhPT0gdGhpcy5fc2hvd1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEVuc3VyZSByZXNldCBpZiBzdGF0ZSBoYXMgY2hhbmdlZCB0aHJvdWdoIGNsaWNrXG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1N0YXRlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd1N0YXRlID0gc2hvdyA/IGV4cGFuZGVkIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKGB0b2dnbGUke3Nob3cgPyAnc2hvdycgOiAnaGlkZSd9YCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXlkb3duJyxcblxuICAgICAgICAgICAgZmlsdGVyKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdjbGljaycpICYmICFpc1RhZyh0aGlzLiRlbCwgJ2lucHV0Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXlDb2RlID09PSBLRVlfU1BBQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbC5jbGljaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgZmlsdGVyKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbJ2NsaWNrJywgJ2hvdmVyJ10uc29tZSgobW9kZSkgPT4gaW5jbHVkZXModGhpcy5tb2RlLCBtb2RlKSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGluaztcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZlbnRDbGljayB8fFxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPVwiI1wiXSwgYVtocmVmPVwiXCJdJykgfHxcbiAgICAgICAgICAgICAgICAgICAgKChsaW5rID0gY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZl0nKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICghdGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmsuaGFzaCAmJiBtYXRjaGVzKHRoaXMudGFyZ2V0LCBsaW5rLmhhc2gpKSkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3ByZXZlbnRDbGljayAmJiBpbmNsdWRlcyh0aGlzLm1vZGUsICdjbGljaycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbWVkaWFjaGFuZ2UnLFxuXG4gICAgICAgICAgICBmaWx0ZXIoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ21lZGlhJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQ7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUsIG1lZGlhT2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lZGlhT2JqLm1hdGNoZXMgXiB0aGlzLmlzVG9nZ2xlZCh0aGlzLnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIHRvZ2dsZSh0eXBlKSB7XG4gICAgICAgICAgICBpZiAoIXRyaWdnZXIodGhpcy50YXJnZXQsIHR5cGUgfHwgJ3RvZ2dsZScsIFt0aGlzXSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChoYXNBdHRyKHRoaXMuJGVsLCAnYXJpYS1leHBhbmRlZCcpKSB7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCAhdGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnF1ZXVlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsZWF2aW5nID0gdGhpcy50YXJnZXQuZmlsdGVyKChlbCkgPT4gaGFzQ2xhc3MoZWwsIHRoaXMuY2xzTGVhdmUpKTtcblxuICAgICAgICAgICAgaWYgKGxlYXZpbmcubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xlYXZpbmcgPSBpbmNsdWRlcyhsZWF2aW5nLCBlbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRWxlbWVudChlbCwgaXNMZWF2aW5nLCBpc0xlYXZpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRvZ2dsZWQgPSB0aGlzLnRhcmdldC5maWx0ZXIodGhpcy5pc1RvZ2dsZWQpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50b2dnbGVFbGVtZW50KHRvZ2dsZWQsIGZhbHNlKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG9nZ2xlRWxlbWVudChcbiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5maWx0ZXIoKGVsKSA9PiAhaW5jbHVkZXModG9nZ2xlZCwgZWwpKSxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuIiwiaW1wb3J0IFVJa2l0IGZyb20gJy4vYXBpL2luZGV4JztcbmltcG9ydCBib290IGZyb20gJy4vYXBpL2Jvb3QnO1xuaW1wb3J0ICogYXMgY29tcG9uZW50cyBmcm9tICcuL2NvcmUvaW5kZXgnO1xuaW1wb3J0IHsgZWFjaCB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG4vLyByZWdpc3RlciBjb21wb25lbnRzXG5lYWNoKGNvbXBvbmVudHMsIChjb21wb25lbnQsIG5hbWUpID0+IFVJa2l0LmNvbXBvbmVudChuYW1lLCBjb21wb25lbnQpKTtcblxuYm9vdChVSWtpdCk7XG5cbmV4cG9ydCBkZWZhdWx0IFVJa2l0O1xuIiwiaW1wb3J0IENsYXNzIGZyb20gJy4uL21peGluL2NsYXNzJztcbmltcG9ydCB7ICQsIGF0dHIsIGh0bWwsIHRvRmxvYXQsIHRyaWdnZXIgfSBmcm9tICd1aWtpdC11dGlsJztcblxuY29uc3QgdW5pdHMgPSBbJ2RheXMnLCAnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ107XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICBwcm9wczoge1xuICAgICAgICBkYXRlOiBTdHJpbmcsXG4gICAgICAgIGNsc1dyYXBwZXI6IFN0cmluZyxcbiAgICAgICAgcm9sZTogU3RyaW5nLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGRhdGU6ICcnLFxuICAgICAgICBjbHNXcmFwcGVyOiAnLnVrLWNvdW50ZG93bi0ldW5pdCUnLFxuICAgICAgICByb2xlOiAndGltZXInLFxuICAgIH0sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIGF0dHIodGhpcy4kZWwsICdyb2xlJywgdGhpcy5yb2xlKTtcbiAgICAgICAgdGhpcy5kYXRlID0gdG9GbG9hdChEYXRlLnBhcnNlKHRoaXMuJHByb3BzLmRhdGUpKTtcbiAgICAgICAgdGhpcy5lbmQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH0sXG5cbiAgICBkaXNjb25uZWN0ZWQoKSB7XG4gICAgICAgIHRoaXMuc3RvcCgpO1xuICAgIH0sXG5cbiAgICBldmVudHM6IHtcbiAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gICAgICAgIGVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgICAgICB9LFxuXG4gICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzdGFydCgpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdjb3VudGRvd25zdGFydCcpO1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCh0aGlzLnVwZGF0ZSwgMTAwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RvcCgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnY291bnRkb3duc3RvcCcpO1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzcGFuID0gZ2V0VGltZVNwYW4odGhpcy5kYXRlKTtcblxuICAgICAgICAgICAgaWYgKCF0aW1lc3Bhbi50b3RhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2NvdW50ZG93bmVuZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHVuaXQgb2YgdW5pdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbCA9ICQodGhpcy5jbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsIHVuaXQpLCB0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBkaWdpdHMgPSBTdHJpbmcoTWF0aC50cnVuYyh0aW1lc3Bhblt1bml0XSkpO1xuXG4gICAgICAgICAgICAgICAgZGlnaXRzID0gZGlnaXRzLmxlbmd0aCA8IDIgPyBgMCR7ZGlnaXRzfWAgOiBkaWdpdHM7XG5cbiAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IGRpZ2l0cykge1xuICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMuc3BsaXQoJycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaWdpdHMubGVuZ3RoICE9PSBlbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwoZWwsIGRpZ2l0cy5tYXAoKCkgPT4gJzxzcGFuPjwvc3Bhbj4nKS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkaWdpdHMuZm9yRWFjaCgoZGlnaXQsIGkpID0+IChlbC5jaGlsZHJlbltpXS50ZXh0Q29udGVudCA9IGRpZ2l0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBnZXRUaW1lU3BhbihkYXRlKSB7XG4gICAgY29uc3QgdG90YWwgPSBNYXRoLm1heCgwLCBkYXRlIC0gRGF0ZS5ub3coKSkgLyAxMDAwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdG90YWwsXG4gICAgICAgIHNlY29uZHM6IHRvdGFsICUgNjAsXG4gICAgICAgIG1pbnV0ZXM6ICh0b3RhbCAvIDYwKSAlIDYwLFxuICAgICAgICBob3VyczogKHRvdGFsIC8gNjAgLyA2MCkgJSAyNCxcbiAgICAgICAgZGF5czogdG90YWwgLyA2MCAvIDYwIC8gMjQsXG4gICAgfTtcbn1cbiIsImltcG9ydCB7IGdldFJvd3MgfSBmcm9tICcuLi8uLi9jb3JlL21hcmdpbic7XG5pbXBvcnQge1xuICAgIGFkZENsYXNzLFxuICAgIGNoaWxkcmVuLFxuICAgIGNzcyxcbiAgICBoYXNDbGFzcyxcbiAgICBoZWlnaHQsXG4gICAgaXNJblZpZXcsXG4gICAgb25jZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBzb3J0QnksXG4gICAgdG9OdW1iZXIsXG4gICAgVHJhbnNpdGlvbixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmNvbnN0IGNsc0xlYXZlID0gJ3VrLXRyYW5zaXRpb24tbGVhdmUnO1xuY29uc3QgY2xzRW50ZXIgPSAndWstdHJhbnNpdGlvbi1lbnRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZhZGUoYWN0aW9uLCB0YXJnZXQsIGR1cmF0aW9uLCBzdGFnZ2VyID0gMCkge1xuICAgIGNvbnN0IGluZGV4ID0gdHJhbnNpdGlvbkluZGV4KHRhcmdldCwgdHJ1ZSk7XG4gICAgY29uc3QgcHJvcHNJbiA9IHsgb3BhY2l0eTogMSB9O1xuICAgIGNvbnN0IHByb3BzT3V0ID0geyBvcGFjaXR5OiAwIH07XG5cbiAgICBjb25zdCB3cmFwSW5kZXhGbiA9IChmbikgPT4gKCkgPT4gaW5kZXggPT09IHRyYW5zaXRpb25JbmRleCh0YXJnZXQpID8gZm4oKSA6IFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBjb25zdCBsZWF2ZUZuID0gd3JhcEluZGV4Rm4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBhZGRDbGFzcyh0YXJnZXQsIGNsc0xlYXZlKTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGdldFRyYW5zaXRpb25Ob2Rlcyh0YXJnZXQpLm1hcChcbiAgICAgICAgICAgICAgICAoY2hpbGQsIGkpID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KGNoaWxkLCBwcm9wc091dCwgZHVyYXRpb24gLyAyLCAnZWFzZScpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAqIHN0YWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJlbW92ZUNsYXNzKHRhcmdldCwgY2xzTGVhdmUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZW50ZXJGbiA9IHdyYXBJbmRleEZuKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgb2xkSGVpZ2h0ID0gaGVpZ2h0KHRhcmdldCk7XG5cbiAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCBjbHNFbnRlcik7XG4gICAgICAgIGFjdGlvbigpO1xuXG4gICAgICAgIGNzcyhjaGlsZHJlbih0YXJnZXQpLCB7IG9wYWNpdHk6IDAgfSk7XG5cbiAgICAgICAgLy8gRW5zdXJlIFVJa2l0IHVwZGF0ZXMgaGF2ZSBwcm9wYWdhdGVkXG4gICAgICAgIGF3YWl0IGF3YWl0RnJhbWUoKTtcblxuICAgICAgICBjb25zdCBub2RlcyA9IGNoaWxkcmVuKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodCA9IGhlaWdodCh0YXJnZXQpO1xuXG4gICAgICAgIC8vIEVuc3VyZSBHcmlkIGNlbGxzIGRvIG5vdCBzdHJldGNoIHdoZW4gaGVpZ2h0IGlzIGFwcGxpZWRcbiAgICAgICAgY3NzKHRhcmdldCwgJ2FsaWduQ29udGVudCcsICdmbGV4LXN0YXJ0Jyk7XG4gICAgICAgIGhlaWdodCh0YXJnZXQsIG9sZEhlaWdodCk7XG5cbiAgICAgICAgY29uc3QgdHJhbnNpdGlvbk5vZGVzID0gZ2V0VHJhbnNpdGlvbk5vZGVzKHRhcmdldCk7XG4gICAgICAgIGNzcyhub2RlcywgcHJvcHNPdXQpO1xuXG4gICAgICAgIGNvbnN0IHRyYW5zaXRpb25zID0gdHJhbnNpdGlvbk5vZGVzLm1hcChhc3luYyAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGF3YWl0VGltZW91dChpICogc3RhZ2dlcik7XG4gICAgICAgICAgICBhd2FpdCBUcmFuc2l0aW9uLnN0YXJ0KGNoaWxkLCBwcm9wc0luLCBkdXJhdGlvbiAvIDIsICdlYXNlJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChvbGRIZWlnaHQgIT09IG5ld0hlaWdodCkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIHsgaGVpZ2h0OiBuZXdIZWlnaHQgfSxcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24gLyAyICsgdHJhbnNpdGlvbk5vZGVzLmxlbmd0aCAqIHN0YWdnZXIsXG4gICAgICAgICAgICAgICAgICAgICdlYXNlJ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh0cmFuc2l0aW9ucykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZW1vdmVDbGFzcyh0YXJnZXQsIGNsc0VudGVyKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdHJhbnNpdGlvbkluZGV4KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICBjc3ModGFyZ2V0LCB7IGhlaWdodDogJycsIGFsaWduQ29udGVudDogJycgfSk7XG4gICAgICAgICAgICAgICAgY3NzKG5vZGVzLCB7IG9wYWNpdHk6ICcnIH0pO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQuZGF0YXNldC50cmFuc2l0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBoYXNDbGFzcyh0YXJnZXQsIGNsc0xlYXZlKVxuICAgICAgICA/IHdhaXRUcmFuc2l0aW9uZW5kKHRhcmdldCkudGhlbihlbnRlckZuKVxuICAgICAgICA6IGhhc0NsYXNzKHRhcmdldCwgY2xzRW50ZXIpXG4gICAgICAgID8gd2FpdFRyYW5zaXRpb25lbmQodGFyZ2V0KS50aGVuKGxlYXZlRm4pLnRoZW4oZW50ZXJGbilcbiAgICAgICAgOiBsZWF2ZUZuKCkudGhlbihlbnRlckZuKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvbkluZGV4KHRhcmdldCwgbmV4dCkge1xuICAgIGlmIChuZXh0KSB7XG4gICAgICAgIHRhcmdldC5kYXRhc2V0LnRyYW5zaXRpb24gPSAxICsgdHJhbnNpdGlvbkluZGV4KHRhcmdldCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvTnVtYmVyKHRhcmdldC5kYXRhc2V0LnRyYW5zaXRpb24pIHx8IDA7XG59XG5cbmZ1bmN0aW9uIHdhaXRUcmFuc2l0aW9uZW5kKHRhcmdldCkge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgY2hpbGRyZW4odGFyZ2V0KVxuICAgICAgICAgICAgLmZpbHRlcihUcmFuc2l0aW9uLmluUHJvZ3Jlc3MpXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChlbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IG9uY2UoZWwsICd0cmFuc2l0aW9uZW5kIHRyYW5zaXRpb25jYW5jZWxlZCcsIHJlc29sdmUpKVxuICAgICAgICAgICAgKVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zaXRpb25Ob2Rlcyh0YXJnZXQpIHtcbiAgICByZXR1cm4gZ2V0Um93cyhjaGlsZHJlbih0YXJnZXQpKS5yZWR1Y2UoXG4gICAgICAgIChub2Rlcywgcm93KSA9PlxuICAgICAgICAgICAgbm9kZXMuY29uY2F0KFxuICAgICAgICAgICAgICAgIHNvcnRCeShcbiAgICAgICAgICAgICAgICAgICAgcm93LmZpbHRlcigoZWwpID0+IGlzSW5WaWV3KGVsKSksXG4gICAgICAgICAgICAgICAgICAgICdvZmZzZXRMZWZ0J1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIFtdXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gYXdhaXRGcmFtZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShyZXNvbHZlKSk7XG59XG5cbmZ1bmN0aW9uIGF3YWl0VGltZW91dCh0aW1lb3V0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWVvdXQpKTtcbn1cbiIsImltcG9ydCB7XG4gICAgYXR0cixcbiAgICBjaGlsZHJlbixcbiAgICBjc3MsXG4gICAgZmFzdGRvbSxcbiAgICBpbmNsdWRlcyxcbiAgICBpbmRleCxcbiAgICBpc1Zpc2libGUsXG4gICAgb2Zmc2V0LFxuICAgIHBhcmVudCxcbiAgICBwb3NpdGlvbixcbiAgICBUcmFuc2l0aW9uLFxuICAgIHRyaWdnZXIsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiAoYWN0aW9uLCB0YXJnZXQsIGR1cmF0aW9uKSB7XG4gICAgYXdhaXQgYXdhaXRGcmFtZSgpO1xuXG4gICAgbGV0IG5vZGVzID0gY2hpbGRyZW4odGFyZ2V0KTtcblxuICAgIC8vIEdldCBjdXJyZW50IHN0YXRlXG4gICAgY29uc3QgY3VycmVudFByb3BzID0gbm9kZXMubWFwKChlbCkgPT4gZ2V0UHJvcHMoZWwsIHRydWUpKTtcbiAgICBjb25zdCB0YXJnZXRQcm9wcyA9IHsgLi4uY3NzKHRhcmdldCwgWydoZWlnaHQnLCAncGFkZGluZyddKSwgZGlzcGxheTogJ2Jsb2NrJyB9O1xuXG4gICAgLy8gQ2FuY2VsIHByZXZpb3VzIGFuaW1hdGlvbnNcbiAgICBhd2FpdCBQcm9taXNlLmFsbChub2Rlcy5jb25jYXQodGFyZ2V0KS5tYXAoVHJhbnNpdGlvbi5jYW5jZWwpKTtcblxuICAgIC8vIEFkZGluZywgc29ydGluZywgcmVtb3Zpbmcgbm9kZXNcbiAgICBhY3Rpb24oKTtcblxuICAgIC8vIEZpbmQgbmV3IG5vZGVzXG4gICAgbm9kZXMgPSBub2Rlcy5jb25jYXQoY2hpbGRyZW4odGFyZ2V0KS5maWx0ZXIoKGVsKSA9PiAhaW5jbHVkZXMobm9kZXMsIGVsKSkpO1xuXG4gICAgLy8gV2FpdCBmb3IgdXBkYXRlIHRvIHByb3BhZ2F0ZVxuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgLy8gRm9yY2UgdXBkYXRlXG4gICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgLy8gR2V0IG5ldyBzdGF0ZVxuICAgIGNvbnN0IHRhcmdldFN0eWxlID0gYXR0cih0YXJnZXQsICdzdHlsZScpO1xuICAgIGNvbnN0IHRhcmdldFByb3BzVG8gPSBjc3ModGFyZ2V0LCBbJ2hlaWdodCcsICdwYWRkaW5nJ10pO1xuICAgIGNvbnN0IFtwcm9wc1RvLCBwcm9wc0Zyb21dID0gZ2V0VHJhbnNpdGlvblByb3BzKHRhcmdldCwgbm9kZXMsIGN1cnJlbnRQcm9wcyk7XG4gICAgY29uc3QgYXR0cnNUbyA9IG5vZGVzLm1hcCgoZWwpID0+ICh7IHN0eWxlOiBhdHRyKGVsLCAnc3R5bGUnKSB9KSk7XG5cbiAgICAvLyBSZXNldCB0byBwcmV2aW91cyBzdGF0ZVxuICAgIG5vZGVzLmZvckVhY2goKGVsLCBpKSA9PiBwcm9wc0Zyb21baV0gJiYgY3NzKGVsLCBwcm9wc0Zyb21baV0pKTtcbiAgICBjc3ModGFyZ2V0LCB0YXJnZXRQcm9wcyk7XG5cbiAgICAvLyBUcmlnZ2VyIHVwZGF0ZSBpbiBlLmcuIHBhcmFsbGF4IGNvbXBvbmVudFxuICAgIHRyaWdnZXIodGFyZ2V0LCAnc2Nyb2xsJyk7XG4gICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgLy8gU3RhcnQgdHJhbnNpdGlvbnMgb24gbmV4dCBmcmFtZVxuICAgIGF3YWl0IGF3YWl0RnJhbWUoKTtcblxuICAgIGNvbnN0IHRyYW5zaXRpb25zID0gbm9kZXNcbiAgICAgICAgLm1hcCgoZWwsIGkpID0+IHBhcmVudChlbCkgPT09IHRhcmdldCAmJiBUcmFuc2l0aW9uLnN0YXJ0KGVsLCBwcm9wc1RvW2ldLCBkdXJhdGlvbiwgJ2Vhc2UnKSlcbiAgICAgICAgLmNvbmNhdChUcmFuc2l0aW9uLnN0YXJ0KHRhcmdldCwgdGFyZ2V0UHJvcHNUbywgZHVyYXRpb24sICdlYXNlJykpO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodHJhbnNpdGlvbnMpO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChlbCwgaSkgPT4ge1xuICAgICAgICAgICAgYXR0cihlbCwgYXR0cnNUb1tpXSk7XG4gICAgICAgICAgICBpZiAocGFyZW50KGVsKSA9PT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY3NzKGVsLCAnZGlzcGxheScsIHByb3BzVG9baV0ub3BhY2l0eSA9PT0gMCA/ICdub25lJyA6ICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGF0dHIodGFyZ2V0LCAnc3R5bGUnLCB0YXJnZXRTdHlsZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhdHRyKG5vZGVzLCAnc3R5bGUnLCAnJyk7XG4gICAgICAgIHJlc2V0UHJvcHModGFyZ2V0LCB0YXJnZXRQcm9wcyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRQcm9wcyhlbCwgb3BhY2l0eSkge1xuICAgIGNvbnN0IHpJbmRleCA9IGNzcyhlbCwgJ3pJbmRleCcpO1xuXG4gICAgcmV0dXJuIGlzVmlzaWJsZShlbClcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICcnLFxuICAgICAgICAgICAgICBvcGFjaXR5OiBvcGFjaXR5ID8gY3NzKGVsLCAnb3BhY2l0eScpIDogJzAnLFxuICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICB6SW5kZXg6IHpJbmRleCA9PT0gJ2F1dG8nID8gaW5kZXgoZWwpIDogekluZGV4LFxuICAgICAgICAgICAgICAuLi5nZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvblByb3BzKHRhcmdldCwgbm9kZXMsIGN1cnJlbnRQcm9wcykge1xuICAgIGNvbnN0IHByb3BzVG8gPSBub2Rlcy5tYXAoKGVsLCBpKSA9PlxuICAgICAgICBwYXJlbnQoZWwpICYmIGkgaW4gY3VycmVudFByb3BzXG4gICAgICAgICAgICA/IGN1cnJlbnRQcm9wc1tpXVxuICAgICAgICAgICAgICAgID8gaXNWaXNpYmxlKGVsKVxuICAgICAgICAgICAgICAgICAgICA/IGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbClcbiAgICAgICAgICAgICAgICAgICAgOiB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAgICAgICAgIDogeyBvcGFjaXR5OiBpc1Zpc2libGUoZWwpID8gMSA6IDAgfVxuICAgICAgICAgICAgOiBmYWxzZVxuICAgICk7XG5cbiAgICBjb25zdCBwcm9wc0Zyb20gPSBwcm9wc1RvLm1hcCgocHJvcHMsIGkpID0+IHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHBhcmVudChub2Rlc1tpXSkgPT09IHRhcmdldCAmJiAoY3VycmVudFByb3BzW2ldIHx8IGdldFByb3BzKG5vZGVzW2ldKSk7XG5cbiAgICAgICAgaWYgKCFmcm9tKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICBkZWxldGUgZnJvbS5vcGFjaXR5O1xuICAgICAgICB9IGVsc2UgaWYgKCEoJ29wYWNpdHknIGluIHByb3BzKSkge1xuICAgICAgICAgICAgY29uc3QgeyBvcGFjaXR5IH0gPSBmcm9tO1xuXG4gICAgICAgICAgICBpZiAob3BhY2l0eSAlIDEpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5vcGFjaXR5ID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmcm9tO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtwcm9wc1RvLCBwcm9wc0Zyb21dO1xufVxuXG5mdW5jdGlvbiByZXNldFByb3BzKGVsLCBwcm9wcykge1xuICAgIGZvciAoY29uc3QgcHJvcCBpbiBwcm9wcykge1xuICAgICAgICBjc3MoZWwsIHByb3AsICcnKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbCkge1xuICAgIGNvbnN0IHsgaGVpZ2h0LCB3aWR0aCB9ID0gb2Zmc2V0KGVsKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIHRyYW5zZm9ybTogJycsXG4gICAgICAgIC4uLnBvc2l0aW9uKGVsKSxcbiAgICAgICAgLi4uY3NzKGVsLCBbJ21hcmdpblRvcCcsICdtYXJnaW5MZWZ0J10pLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGF3YWl0RnJhbWUoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSkpO1xufVxuIiwiaW1wb3J0IGZhZGUgZnJvbSAnLi9pbnRlcm5hbC9hbmltYXRlLWZhZGUnO1xuaW1wb3J0IHNsaWRlIGZyb20gJy4vaW50ZXJuYWwvYW5pbWF0ZS1zbGlkZSc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICBhbmltYXRpb246IEJvb2xlYW4sXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICAgICAgYW5pbWF0aW9uOiAnc2xpZGUnLFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFuaW1hdGUoYWN0aW9uLCB0YXJnZXQgPSB0aGlzLiRlbCkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuYW5pbWF0aW9uO1xuICAgICAgICAgICAgY29uc3QgYW5pbWF0aW9uRm4gPVxuICAgICAgICAgICAgICAgIG5hbWUgPT09ICdmYWRlJ1xuICAgICAgICAgICAgICAgICAgICA/IGZhZGVcbiAgICAgICAgICAgICAgICAgICAgOiBuYW1lID09PSAnZGVsYXllZC1mYWRlJ1xuICAgICAgICAgICAgICAgICAgICA/ICguLi5hcmdzKSA9PiBmYWRlKC4uLmFyZ3MsIDQwKVxuICAgICAgICAgICAgICAgICAgICA6IG5hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBzbGlkZVxuICAgICAgICAgICAgICAgICAgICA6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gYW5pbWF0aW9uRm4oYWN0aW9uLCB0YXJnZXQsIHRoaXMuZHVyYXRpb24pLmNhdGNoKG5vb3ApO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuIiwiaW1wb3J0IEFuaW1hdGUgZnJvbSAnLi4vbWl4aW4vYW5pbWF0ZSc7XG5pbXBvcnQgeyBwYXJzZU9wdGlvbnMgfSBmcm9tICcuLi9hcGkvb3B0aW9ucyc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgJCQsXG4gICAgYXBwZW5kLFxuICAgIGF0dHIsXG4gICAgY2xvc2VzdCxcbiAgICBjc3MsXG4gICAgZGF0YSxcbiAgICBlYWNoLFxuICAgIGZhc3Rkb20sXG4gICAgY2hpbGRyZW4gYXMgZ2V0Q2hpbGRyZW4sXG4gICAgaGFzQ2xhc3MsXG4gICAgaW5jbHVkZXMsXG4gICAgaXNFbXB0eSxcbiAgICBpc0VxdWFsLFxuICAgIGlzVGFnLFxuICAgIGlzVW5kZWZpbmVkLFxuICAgIG1hdGNoZXMsXG4gICAgdG9nZ2xlQ2xhc3MsXG4gICAgdHJpZ2dlcixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5pbXBvcnQgeyBrZXlNYXAgfSBmcm9tICcuLi91dGlsL2tleXMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQW5pbWF0ZV0sXG5cbiAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHRhcmdldDogQm9vbGVhbixcbiAgICAgICAgc2VsQWN0aXZlOiBCb29sZWFuLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgc2VsQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgYXR0ckl0ZW06ICd1ay1maWx0ZXItY29udHJvbCcsXG4gICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgIGR1cmF0aW9uOiAyNTAsXG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIHRvZ2dsZXMoeyBhdHRySXRlbSB9LCAkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiAkJChgWyR7YXR0ckl0ZW19XSxbZGF0YS0ke2F0dHJJdGVtfV1gLCAkZWwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNoaWxkcmVuKHsgdGFyZ2V0IH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuICQkKGAke3RhcmdldH0gPiAqYCwgJGVsKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgdG9nZ2xlcyh0b2dnbGVzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZXMgPSAkJCh0aGlzLnNlbEFjdGl2ZSwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0b2dnbGUgb2YgdG9nZ2xlcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbEFjdGl2ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModG9nZ2xlLCB0aGlzLmNscywgaW5jbHVkZXMoYWN0aXZlcywgdG9nZ2xlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IGZpbmRCdXR0b24odG9nZ2xlKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNUYWcoYnV0dG9uLCAnYScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHIoYnV0dG9uLCAncm9sZScsICdidXR0b24nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRyZW4obGlzdCwgcHJldikge1xuICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGV2ZW50czoge1xuICAgICAgICBuYW1lOiAnY2xpY2sga2V5ZG93bicsXG5cbiAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gYFske3RoaXMuYXR0ckl0ZW19XSxbZGF0YS0ke3RoaXMuYXR0ckl0ZW19XWA7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaGFuZGxlcihlKSB7XG4gICAgICAgICAgICBpZiAoZS50eXBlID09PSAna2V5ZG93bicgJiYgZS5rZXlDb2RlICE9PSBrZXlNYXAuU1BBQ0UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYSxidXR0b24nKSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5KGUuY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYXBwbHkoZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0gbWVyZ2VTdGF0ZShlbCwgdGhpcy5hdHRySXRlbSwgdGhpcy5nZXRTdGF0ZSgpKTtcblxuICAgICAgICAgICAgaWYgKCFpc0VxdWFsU3RhdGUocHJldlN0YXRlLCBuZXdTdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBnZXRTdGF0ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBoYXNDbGFzcyhpdGVtLCB0aGlzLmNscykpXG4gICAgICAgICAgICAgICAgLnJlZHVjZSgoc3RhdGUsIGVsKSA9PiBtZXJnZVN0YXRlKGVsLCB0aGlzLmF0dHJJdGVtLCBzdGF0ZSksIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiB7ICcnOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgICBzb3J0OiBbXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBzZXRTdGF0ZShzdGF0ZSwgYW5pbWF0ZSA9IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlID0geyBmaWx0ZXI6IHsgJyc6ICcnIH0sIHNvcnQ6IFtdLCAuLi5zdGF0ZSB9O1xuXG4gICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYmVmb3JlRmlsdGVyJywgW3RoaXMsIHN0YXRlXSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdG9nZ2xlIG9mIHRoaXMudG9nZ2xlcykge1xuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRvZ2dsZSwgdGhpcy5jbHMsIG1hdGNoRmlsdGVyKHRvZ2dsZSwgdGhpcy5hdHRySXRlbSwgc3RhdGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgJCQodGhpcy50YXJnZXQsIHRoaXMuJGVsKS5tYXAoKHRhcmdldCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJGbiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5U3RhdGUoc3RhdGUsIHRhcmdldCwgZ2V0Q2hpbGRyZW4odGFyZ2V0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5pbWF0ZSA/IHRoaXMuYW5pbWF0ZShmaWx0ZXJGbiwgdGFyZ2V0KSA6IGZpbHRlckZuKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdhZnRlckZpbHRlcicsIFt0aGlzXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlU3RhdGUoKSB7XG4gICAgICAgICAgICBmYXN0ZG9tLndyaXRlKCgpID0+IHRoaXMuc2V0U3RhdGUodGhpcy5nZXRTdGF0ZSgpLCBmYWxzZSkpO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBnZXRGaWx0ZXIoZWwsIGF0dHIpIHtcbiAgICByZXR1cm4gcGFyc2VPcHRpb25zKGRhdGEoZWwsIGF0dHIpLCBbJ2ZpbHRlciddKTtcbn1cblxuZnVuY3Rpb24gaXNFcXVhbFN0YXRlKHN0YXRlQSwgc3RhdGVCKSB7XG4gICAgcmV0dXJuIFsnZmlsdGVyJywgJ3NvcnQnXS5ldmVyeSgocHJvcCkgPT4gaXNFcXVhbChzdGF0ZUFbcHJvcF0sIHN0YXRlQltwcm9wXSkpO1xufVxuXG5mdW5jdGlvbiBhcHBseVN0YXRlKHN0YXRlLCB0YXJnZXQsIGNoaWxkcmVuKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihzdGF0ZSk7XG5cbiAgICBjaGlsZHJlbi5mb3JFYWNoKChlbCkgPT4gY3NzKGVsLCAnZGlzcGxheScsIHNlbGVjdG9yICYmICFtYXRjaGVzKGVsLCBzZWxlY3RvcikgPyAnbm9uZScgOiAnJykpO1xuXG4gICAgY29uc3QgW3NvcnQsIG9yZGVyXSA9IHN0YXRlLnNvcnQ7XG5cbiAgICBpZiAoc29ydCkge1xuICAgICAgICBjb25zdCBzb3J0ZWQgPSBzb3J0SXRlbXMoY2hpbGRyZW4sIHNvcnQsIG9yZGVyKTtcbiAgICAgICAgaWYgKCFpc0VxdWFsKHNvcnRlZCwgY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBhcHBlbmQodGFyZ2V0LCBzb3J0ZWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZVN0YXRlKGVsLCBhdHRyLCBzdGF0ZSkge1xuICAgIGNvbnN0IHsgZmlsdGVyLCBncm91cCwgc29ydCwgb3JkZXIgPSAnYXNjJyB9ID0gZ2V0RmlsdGVyKGVsLCBhdHRyKTtcblxuICAgIGlmIChmaWx0ZXIgfHwgaXNVbmRlZmluZWQoc29ydCkpIHtcbiAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN0YXRlLmZpbHRlclsnJ107XG4gICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyW2dyb3VwXSA9IGZpbHRlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHN0YXRlLmZpbHRlcltncm91cF07XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eShzdGF0ZS5maWx0ZXIpIHx8ICcnIGluIHN0YXRlLmZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWx0ZXIgPSB7ICcnOiBmaWx0ZXIgfHwgJycgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZS5maWx0ZXIgPSB7ICcnOiBmaWx0ZXIgfHwgJycgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghaXNVbmRlZmluZWQoc29ydCkpIHtcbiAgICAgICAgc3RhdGUuc29ydCA9IFtzb3J0LCBvcmRlcl07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiBtYXRjaEZpbHRlcihcbiAgICBlbCxcbiAgICBhdHRyLFxuICAgIHsgZmlsdGVyOiBzdGF0ZUZpbHRlciA9IHsgJyc6ICcnIH0sIHNvcnQ6IFtzdGF0ZVNvcnQsIHN0YXRlT3JkZXJdIH1cbikge1xuICAgIGNvbnN0IHsgZmlsdGVyID0gJycsIGdyb3VwID0gJycsIHNvcnQsIG9yZGVyID0gJ2FzYycgfSA9IGdldEZpbHRlcihlbCwgYXR0cik7XG5cbiAgICByZXR1cm4gaXNVbmRlZmluZWQoc29ydClcbiAgICAgICAgPyAoZ3JvdXAgaW4gc3RhdGVGaWx0ZXIgJiYgZmlsdGVyID09PSBzdGF0ZUZpbHRlcltncm91cF0pIHx8XG4gICAgICAgICAgICAgICghZmlsdGVyICYmIGdyb3VwICYmICEoZ3JvdXAgaW4gc3RhdGVGaWx0ZXIpICYmICFzdGF0ZUZpbHRlclsnJ10pXG4gICAgICAgIDogc3RhdGVTb3J0ID09PSBzb3J0ICYmIHN0YXRlT3JkZXIgPT09IG9yZGVyO1xufVxuXG5mdW5jdGlvbiBnZXRTZWxlY3Rvcih7IGZpbHRlciB9KSB7XG4gICAgbGV0IHNlbGVjdG9yID0gJyc7XG4gICAgZWFjaChmaWx0ZXIsICh2YWx1ZSkgPT4gKHNlbGVjdG9yICs9IHZhbHVlIHx8ICcnKSk7XG4gICAgcmV0dXJuIHNlbGVjdG9yO1xufVxuXG5mdW5jdGlvbiBzb3J0SXRlbXMobm9kZXMsIHNvcnQsIG9yZGVyKSB7XG4gICAgcmV0dXJuIFsuLi5ub2Rlc10uc29ydChcbiAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICBkYXRhKGEsIHNvcnQpLmxvY2FsZUNvbXBhcmUoZGF0YShiLCBzb3J0KSwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUgfSkgKlxuICAgICAgICAgICAgKG9yZGVyID09PSAnYXNjJyB8fCAtMSlcbiAgICApO1xufVxuXG5mdW5jdGlvbiBmaW5kQnV0dG9uKGVsKSB7XG4gICAgcmV0dXJuICQoJ2EsYnV0dG9uJywgZWwpIHx8IGVsO1xufVxuIiwiaW1wb3J0IHsgY3NzIH0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBzbGlkZToge1xuICAgICAgICBzaG93KGRpcikge1xuICAgICAgICAgICAgcmV0dXJuIFt7IHRyYW5zZm9ybTogdHJhbnNsYXRlKGRpciAqIC0xMDApIH0sIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoKSB9XTtcbiAgICAgICAgfSxcblxuICAgICAgICBwZXJjZW50KGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVkKGN1cnJlbnQpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHRyYW5zbGF0ZShwZXJjZW50LCBkaXIpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwICogcGVyY2VudCkgfSxcbiAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKGRpciAqIDEwMCAqICgxIC0gcGVyY2VudCkpIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlZChlbCkge1xuICAgIHJldHVybiBNYXRoLmFicyhjc3MoZWwsICd0cmFuc2Zvcm0nKS5zcGxpdCgnLCcpWzRdIC8gZWwub2Zmc2V0V2lkdGgpIHx8IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGUodmFsdWUgPSAwLCB1bml0ID0gJyUnKSB7XG4gICAgdmFsdWUgKz0gdmFsdWUgPyB1bml0IDogJyc7XG4gICAgcmV0dXJuIGB0cmFuc2xhdGUzZCgke3ZhbHVlfSwgMCwgMClgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUzZCh2YWx1ZSkge1xuICAgIHJldHVybiBgc2NhbGUzZCgke3ZhbHVlfSwgJHt2YWx1ZX0sIDEpYDtcbn1cbiIsImltcG9ydCBBbmltYXRpb25zLCB7IHNjYWxlM2QgfSBmcm9tICcuLi8uLi9taXhpbi9pbnRlcm5hbC9zbGlkZXNob3ctYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIC4uLkFuaW1hdGlvbnMsXG4gICAgZmFkZToge1xuICAgICAgICBzaG93KCkge1xuICAgICAgICAgICAgcmV0dXJuIFt7IG9wYWNpdHk6IDAgfSwgeyBvcGFjaXR5OiAxIH1dO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBlcmNlbnQoY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgfSxcblxuICAgICAgICB0cmFuc2xhdGUocGVyY2VudCkge1xuICAgICAgICAgICAgcmV0dXJuIFt7IG9wYWNpdHk6IDEgLSBwZXJjZW50IH0sIHsgb3BhY2l0eTogcGVyY2VudCB9XTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgc2NhbGU6IHtcbiAgICAgICAgc2hvdygpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIDAuMikgfSxcbiAgICAgICAgICAgICAgICB7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogc2NhbGUzZCgxKSB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBwZXJjZW50KGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdHJhbnNsYXRlKHBlcmNlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyBvcGFjaXR5OiAxIC0gcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgLSAwLjIgKiBwZXJjZW50KSB9LFxuICAgICAgICAgICAgICAgIHsgb3BhY2l0eTogcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgLSAwLjIgKyAwLjIgKiBwZXJjZW50KSB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcbiIsImltcG9ydCB7IGNsYW1wLCBjcmVhdGVFdmVudCwgY3NzLCBEZWZlcnJlZCwgbm9vcCwgVHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUcmFuc2l0aW9uZXIocHJldiwgbmV4dCwgZGlyLCB7IGFuaW1hdGlvbiwgZWFzaW5nIH0pIHtcbiAgICBjb25zdCB7IHBlcmNlbnQsIHRyYW5zbGF0ZSwgc2hvdyA9IG5vb3AgfSA9IGFuaW1hdGlvbjtcbiAgICBjb25zdCBwcm9wcyA9IHNob3coZGlyKTtcbiAgICBjb25zdCBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGlyLFxuXG4gICAgICAgIHNob3coZHVyYXRpb24sIHBlcmNlbnQgPSAwLCBsaW5lYXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgZHVyYXRpb24gLT0gTWF0aC5yb3VuZChkdXJhdGlvbiAqIGNsYW1wKHBlcmNlbnQsIC0xLCAxKSk7XG5cbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlKHBlcmNlbnQpO1xuXG4gICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtaW4nLCB7IHBlcmNlbnQsIGR1cmF0aW9uLCB0aW1pbmcsIGRpciB9KTtcbiAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW1vdXQnLCB7IHBlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbiwgdGltaW5nLCBkaXIgfSk7XG5cbiAgICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KG5leHQsIHByb3BzWzFdLCBkdXJhdGlvbiwgdGltaW5nKSxcbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHByZXYsIHByb3BzWzBdLCBkdXJhdGlvbiwgdGltaW5nKSxcbiAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCBub29wKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsKCkge1xuICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoW25leHQsIHByZXZdKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBwcm9wc1swXSkge1xuICAgICAgICAgICAgICAgIGNzcyhbbmV4dCwgcHJldl0sIHByb3AsICcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBmb3J3YXJkKGR1cmF0aW9uLCBwZXJjZW50ID0gdGhpcy5wZXJjZW50KCkpIHtcbiAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93KGR1cmF0aW9uLCBwZXJjZW50LCB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICB0cmFuc2xhdGUocGVyY2VudCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IHRyYW5zbGF0ZShwZXJjZW50LCBkaXIpO1xuICAgICAgICAgICAgY3NzKG5leHQsIHByb3BzWzFdKTtcbiAgICAgICAgICAgIGNzcyhwcmV2LCBwcm9wc1swXSk7XG4gICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtdHJhbnNsYXRlaW4nLCB7IHBlcmNlbnQsIGRpciB9KTtcbiAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW10cmFuc2xhdGVvdXQnLCB7IHBlcmNlbnQ6IDEgLSBwZXJjZW50LCBkaXIgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcGVyY2VudCgpIHtcbiAgICAgICAgICAgIHJldHVybiBwZXJjZW50KHByZXYgfHwgbmV4dCwgbmV4dCwgZGlyKTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXREaXN0YW5jZSgpIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2Py5vZmZzZXRXaWR0aDtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyVXBkYXRlKGVsLCB0eXBlLCBkYXRhKSB7XG4gICAgdHJpZ2dlcihlbCwgY3JlYXRlRXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlLCBkYXRhKSk7XG59XG4iLCJpbXBvcnQge1xuICAgICQsXG4gICAgJCQsXG4gICAgYXBwZW5kLFxuICAgIGF0dHIsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xvc2VzdCxcbiAgICBkYXRhLFxuICAgIGVtcHR5LFxuICAgIGlzTnVtZXJpYyxcbiAgICBtYXRjaGVzLFxuICAgIHRvRmxvYXQsXG4gICAgdG9nZ2xlQ2xhc3MsXG4gICAgdG9OdW1iZXIsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuaW1wb3J0IHsga2V5TWFwIH0gZnJvbSAnLi4vdXRpbC9rZXlzJztcbmltcG9ydCB7IGdlbmVyYXRlSWQgfSBmcm9tICcuLi9hcGkvaW5zdGFuY2UnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgaTE4bjoge1xuICAgICAgICBuZXh0OiAnTmV4dCBzbGlkZScsXG4gICAgICAgIHByZXZpb3VzOiAnUHJldmlvdXMgc2xpZGUnLFxuICAgICAgICBzbGlkZVg6ICdTbGlkZSAlcycsXG4gICAgICAgIHNsaWRlTGFiZWw6ICclcyBvZiAlcycsXG4gICAgICAgIHJvbGU6ICdTdHJpbmcnLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIHNlbE5hdjogZmFsc2UsXG4gICAgICAgIHJvbGU6ICdyZWdpb24nLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBuYXYoeyBzZWxOYXYgfSwgJGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gJChzZWxOYXYsICRlbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbmF2Q2hpbGRyZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4odGhpcy5uYXYpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNlbE5hdkl0ZW0oeyBhdHRySXRlbSB9KSB7XG4gICAgICAgICAgICByZXR1cm4gYFske2F0dHJJdGVtfV0sW2RhdGEtJHthdHRySXRlbX1dYDtcbiAgICAgICAgfSxcblxuICAgICAgICBuYXZJdGVtcyhfLCAkZWwpIHtcbiAgICAgICAgICAgIHJldHVybiAkJCh0aGlzLnNlbE5hdkl0ZW0sICRlbCk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHdhdGNoOiB7XG4gICAgICAgIG5hdihuYXYsIHByZXYpIHtcbiAgICAgICAgICAgIGF0dHIobmF2LCAncm9sZScsICd0YWJsaXN0Jyk7XG5cbiAgICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGxpc3QobGlzdCkge1xuICAgICAgICAgICAgYXR0cihsaXN0LCAncm9sZScsICdwcmVzZW50YXRpb24nKTtcbiAgICAgICAgfSxcblxuICAgICAgICBuYXZDaGlsZHJlbihjaGlsZHJlbikge1xuICAgICAgICAgICAgYXR0cihjaGlsZHJlbiwgJ3JvbGUnLCAncHJlc2VudGF0aW9uJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbmF2SXRlbXMoaXRlbXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbWQgPSBkYXRhKGVsLCB0aGlzLmF0dHJJdGVtKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSAkKCdhLGJ1dHRvbicsIGVsKSB8fCBlbDtcblxuICAgICAgICAgICAgICAgIGxldCBhcmlhTGFiZWw7XG4gICAgICAgICAgICAgICAgbGV0IGFyaWFDb250cm9scyA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGlzTnVtZXJpYyhjbWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0b051bWJlcihjbWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzbGlkZSA9IHRoaXMuc2xpZGVzW2l0ZW1dO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzbGlkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzbGlkZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlLmlkID0gZ2VuZXJhdGVJZCh0aGlzLCBzbGlkZSwgYC1pdGVtLSR7Y21kfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUNvbnRyb2xzID0gc2xpZGUuaWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWwgPSB0aGlzLnQoJ3NsaWRlWCcsIHRvRmxvYXQoY21kKSArIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIoYnV0dG9uLCAncm9sZScsICd0YWInKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGlzdC5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdC5pZCA9IGdlbmVyYXRlSWQodGhpcywgdGhpcy5saXN0LCAnLWl0ZW1zJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFDb250cm9scyA9IHRoaXMubGlzdC5pZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbCA9IHRoaXMudChjbWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF0dHIoYnV0dG9uLCB7XG4gICAgICAgICAgICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogYXJpYUNvbnRyb2xzLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGF0dHIoYnV0dG9uLCAnYXJpYS1sYWJlbCcpIHx8IGFyaWFMYWJlbCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBzbGlkZXMoc2xpZGVzKSB7XG4gICAgICAgICAgICBzbGlkZXMuZm9yRWFjaCgoc2xpZGUsIGkpID0+XG4gICAgICAgICAgICAgICAgYXR0cihzbGlkZSwge1xuICAgICAgICAgICAgICAgICAgICByb2xlOiB0aGlzLm5hdiA/ICd0YWJwYW5lbCcgOiAnZ3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IHRoaXMudCgnc2xpZGVMYWJlbCcsIGkgKyAxLCB0aGlzLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAgICdhcmlhLXJvbGVkZXNjcmlwdGlvbic6IHRoaXMubmF2ID8gbnVsbCA6ICdzbGlkZScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbGVuZ3RoKGxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmF2TGVuZ3RoID0gdGhpcy5uYXZDaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAodGhpcy5uYXYgJiYgbGVuZ3RoICE9PSBuYXZMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBlbXB0eSh0aGlzLm5hdik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmQodGhpcy5uYXYsIGA8bGkgJHt0aGlzLmF0dHJJdGVtfT1cIiR7aX1cIj48YSBocmVmPjwvYT48L2xpPmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgY29ubmVjdGVkKCkge1xuICAgICAgICBhdHRyKHRoaXMuJGVsLCB7XG4gICAgICAgICAgICByb2xlOiB0aGlzLnJvbGUsXG4gICAgICAgICAgICBhcmlhUm9sZURlc2NyaXB0aW9uOiAnY2Fyb3VzZWwnLFxuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgdXBkYXRlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHdyaXRlKCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2SXRlbXMuY29uY2F0KHRoaXMubmF2KS5mb3JFYWNoKChlbCkgPT4gZWwgJiYgKGVsLmhpZGRlbiA9ICF0aGlzLm1heEluZGV4KSk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOYXYoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXSxcbiAgICAgICAgfSxcbiAgICBdLFxuXG4gICAgZXZlbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdjbGljayBrZXlkb3duJyxcblxuICAgICAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsTmF2SXRlbTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdChlLnRhcmdldCwgJ2EsYnV0dG9uJykgJiZcbiAgICAgICAgICAgICAgICAgICAgKGUudHlwZSA9PT0gJ2NsaWNrJyB8fCBlLmtleUNvZGUgPT09IGtleU1hcC5TUEFDRSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZGF0YShlLmN1cnJlbnQsIHRoaXMuYXR0ckl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvdycsXG4gICAgICAgICAgICBoYW5kbGVyOiAndXBkYXRlTmF2JyxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAna2V5ZG93bicsXG5cbiAgICAgICAgICAgIGRlbGVnYXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbE5hdkl0ZW07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnQsIGtleUNvZGUgfSA9IGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY21kID0gZGF0YShjdXJyZW50LCB0aGlzLmF0dHJJdGVtKTtcblxuICAgICAgICAgICAgICAgIGlmICghaXNOdW1lcmljKGNtZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgICAgICAga2V5Q29kZSA9PT0ga2V5TWFwLkhPTUVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBrZXlDb2RlID09PSBrZXlNYXAuRU5EXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdsYXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBrZXlDb2RlID09PSBrZXlNYXAuTEVGVFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncHJldmlvdXMnXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGtleUNvZGUgPT09IGtleU1hcC5SSUdIVFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnbmV4dCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAofmkpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICB1cGRhdGVOYXYoKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0VmFsaWRJbmRleCgpO1xuICAgICAgICAgICAgbGV0IGZvY3VzO1xuICAgICAgICAgICAgbGV0IGZvY3VzRWw7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIHRoaXMubmF2SXRlbXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbWQgPSBkYXRhKGVsLCB0aGlzLmF0dHJJdGVtKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSAkKCdhLGJ1dHRvbicsIGVsKSB8fCBlbDtcblxuICAgICAgICAgICAgICAgIGlmIChpc051bWVyaWMoY21kKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdG9OdW1iZXIoY21kKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gaXRlbSA9PT0gaW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMuY2xzQWN0aXZlLCBhY3RpdmUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIoYnV0dG9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IGFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4OiBhY3RpdmUgPyBudWxsIDogLTEsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzRWwgPSBidXR0b247XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBmb2N1cyA9IGZvY3VzIHx8IG1hdGNoZXMoYnV0dG9uLCAnOmZvY3VzJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICd1ay1pbnZpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5pdGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNtZCA9PT0gJ3ByZXZpb3VzJyAmJiBpbmRleCA9PT0gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNtZCA9PT0gJ25leHQnICYmIGluZGV4ID49IHRoaXMubWF4SW5kZXgpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmb2N1cyAmJiBmb2N1c0VsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzRWwuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQge1xuICAgIGNsb3Nlc3QsXG4gICAgY3NzLFxuICAgIGdldEV2ZW50UG9zLFxuICAgIGluY2x1ZGVzLFxuICAgIGlzUnRsLFxuICAgIGlzVG91Y2gsXG4gICAgbm9vcCxcbiAgICBvZmYsXG4gICAgb24sXG4gICAgc2VsSW5wdXQsXG4gICAgdG9BcnJheSxcbiAgICB0cmlnZ2VyLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuY29uc3QgcG9pbnRlck9wdGlvbnMgPSB7IHBhc3NpdmU6IGZhbHNlLCBjYXB0dXJlOiB0cnVlIH07XG5jb25zdCBwb2ludGVyVXBPcHRpb25zID0geyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlOiB0cnVlIH07XG5jb25zdCBwb2ludGVyRG93biA9ICd0b3VjaHN0YXJ0IG1vdXNlZG93bic7XG5jb25zdCBwb2ludGVyTW92ZSA9ICd0b3VjaG1vdmUgbW91c2Vtb3ZlJztcbmNvbnN0IHBvaW50ZXJVcCA9ICd0b3VjaGVuZCB0b3VjaGNhbmNlbCBtb3VzZXVwIGNsaWNrIGlucHV0IHNjcm9sbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBwcm9wczoge1xuICAgICAgICBkcmFnZ2FibGU6IEJvb2xlYW4sXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICB0aHJlc2hvbGQ6IDEwLFxuICAgIH0sXG5cbiAgICBjcmVhdGVkKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBbJ3N0YXJ0JywgJ21vdmUnLCAnZW5kJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IGZuID0gdGhpc1trZXldO1xuICAgICAgICAgICAgdGhpc1trZXldID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSBnZXRFdmVudFBvcyhlKS54ICogKGlzUnRsID8gLTEgOiAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucHJldlBvcyA9IHBvcyA9PT0gdGhpcy5wb3MgPyB0aGlzLnByZXZQb3MgOiB0aGlzLnBvcztcbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA9IHBvcztcblxuICAgICAgICAgICAgICAgIGZuKGUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBldmVudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogcG9pbnRlckRvd24sXG5cbiAgICAgICAgICAgIHBhc3NpdmU6IHRydWUsXG5cbiAgICAgICAgICAgIGRlbGVnYXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnNlbExpc3R9ID4gKmA7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmRyYWdnYWJsZSB8fFxuICAgICAgICAgICAgICAgICAgICAoIWlzVG91Y2goZSkgJiYgaGFzU2VsZWN0YWJsZVRleHQoZS50YXJnZXQpKSB8fFxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0KGUudGFyZ2V0LCBzZWxJbnB1dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5idXR0b24gPiAwIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoIDwgMlxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydChlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2RyYWdzdGFydCcsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgLy8gaU9TIHdvcmthcm91bmQgZm9yIHNsaWRlciBzdG9wcGluZyBpZiBzd2lwaW5nIGZhc3RcbiAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJNb3ZlLFxuICAgICAgICAgICAgZWwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGlzdDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGVyOiBub29wLFxuICAgICAgICAgICAgLi4ucG9pbnRlck9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgXSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgc3RhcnQoKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWcgPSB0aGlzLnBvcztcblxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYW5zaXRpb25lcikge1xuICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IHRoaXMuX3RyYW5zaXRpb25lci5wZXJjZW50KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnICs9IHRoaXMuX3RyYW5zaXRpb25lci5nZXREaXN0YW5jZSgpICogdGhpcy5wZXJjZW50ICogdGhpcy5kaXI7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZSh0aGlzLnBlcmNlbnQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrID0gW107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldkluZGV4ID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCB0aGlzLm1vdmUsIHBvaW50ZXJPcHRpb25zKTtcblxuICAgICAgICAgICAgLy8gJ2lucHV0JyBldmVudCBpcyB0cmlnZ2VyZWQgYnkgdmlkZW8gY29udHJvbHNcbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCBwb2ludGVyVXBPcHRpb25zKTtcblxuICAgICAgICAgICAgY3NzKHRoaXMubGlzdCwgJ3VzZXJTZWxlY3QnLCAnbm9uZScpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1vdmUoZSkge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSB0aGlzLnBvcyAtIHRoaXMuZHJhZztcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlID09PSAwIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2UG9zID09PSB0aGlzLnBvcyB8fFxuICAgICAgICAgICAgICAgICghdGhpcy5kcmFnZ2luZyAmJiBNYXRoLmFicyhkaXN0YW5jZSkgPCB0aGlzLnRocmVzaG9sZClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcHJldmVudCBjbGljayBldmVudFxuICAgICAgICAgICAgY3NzKHRoaXMubGlzdCwgJ3BvaW50ZXJFdmVudHMnLCAnbm9uZScpO1xuXG4gICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlyID0gZGlzdGFuY2UgPCAwID8gMSA6IC0xO1xuXG4gICAgICAgICAgICBjb25zdCB7IHNsaWRlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCB7IHByZXZJbmRleCB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCBkaXMgPSBNYXRoLmFicyhkaXN0YW5jZSk7XG4gICAgICAgICAgICBsZXQgbmV4dEluZGV4ID0gdGhpcy5nZXRJbmRleChwcmV2SW5kZXggKyB0aGlzLmRpciwgcHJldkluZGV4KTtcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IHRoaXMuX2dldERpc3RhbmNlKHByZXZJbmRleCwgbmV4dEluZGV4KSB8fCBzbGlkZXNbcHJldkluZGV4XS5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgd2hpbGUgKG5leHRJbmRleCAhPT0gcHJldkluZGV4ICYmIGRpcyA+IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnIC09IHdpZHRoICogdGhpcy5kaXI7XG5cbiAgICAgICAgICAgICAgICBwcmV2SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgICAgICAgICAgZGlzIC09IHdpZHRoO1xuICAgICAgICAgICAgICAgIG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXgocHJldkluZGV4ICsgdGhpcy5kaXIsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgd2lkdGggPSB0aGlzLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IGRpcyAvIHdpZHRoO1xuXG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gc2xpZGVzW3ByZXZJbmRleF07XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gc2xpZGVzW25leHRJbmRleF07XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5pbmRleCAhPT0gbmV4dEluZGV4O1xuICAgICAgICAgICAgY29uc3QgZWRnZSA9IHByZXZJbmRleCA9PT0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICBsZXQgaXRlbVNob3duO1xuXG4gICAgICAgICAgICBbdGhpcy5pbmRleCwgdGhpcy5wcmV2SW5kZXhdXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaSkgPT4gIWluY2x1ZGVzKFtuZXh0SW5kZXgsIHByZXZJbmRleF0sIGkpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW2ldLCAnaXRlbWhpZGRlbicsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaG93biA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoKHRoaXMuaW5kZXggPT09IHByZXZJbmRleCAmJiB0aGlzLnByZXZJbmRleCAhPT0gcHJldkluZGV4KSB8fCBpdGVtU2hvd24pIHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHNsaWRlc1t0aGlzLmluZGV4XSwgJ2l0ZW1zaG93bicsIFt0aGlzXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgICFlZGdlICYmIHRyaWdnZXIocHJldiwgJ2JlZm9yZWl0ZW1oaWRlJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdiZWZvcmVpdGVtc2hvdycsIFt0aGlzXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX3RyYW5zbGF0ZShNYXRoLmFicyh0aGlzLnBlcmNlbnQpLCBwcmV2LCAhZWRnZSAmJiBuZXh0KTtcblxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnaXRlbXNob3cnLCBbdGhpc10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGVuZCgpIHtcbiAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSwgcG9pbnRlck9wdGlvbnMpO1xuICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCBwb2ludGVyVXBPcHRpb25zKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGV4ID09PSB0aGlzLnByZXZJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSAxIC0gdGhpcy5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciAqPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvdyhmYWxzZSwgdGhpcy5pbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlyQ2hhbmdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChpc1J0bCA/IHRoaXMuZGlyICogKGlzUnRsID8gMSA6IC0xKSA6IHRoaXMuZGlyKSA8IDAgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZQb3MgPiB0aGlzLnBvcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IGRpckNoYW5nZSA/IHRoaXMuaW5kZXggOiB0aGlzLnByZXZJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlyQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSAxIC0gdGhpcy5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGlyID4gMCAmJiAhZGlyQ2hhbmdlKSB8fCAodGhpcy5kaXIgPCAwICYmIGRpckNoYW5nZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICduZXh0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3ByZXZpb3VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNzcyh0aGlzLmxpc3QsIHsgdXNlclNlbGVjdDogJycsIHBvaW50ZXJFdmVudHM6ICcnIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmRyYWcgPSB0aGlzLnBlcmNlbnQgPSBudWxsO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBoYXNTZWxlY3RhYmxlVGV4dChlbCkge1xuICAgIHJldHVybiAoXG4gICAgICAgIGNzcyhlbCwgJ3VzZXJTZWxlY3QnKSAhPT0gJ25vbmUnICYmXG4gICAgICAgIHRvQXJyYXkoZWwuY2hpbGROb2Rlcykuc29tZSgoZWwpID0+IGVsLm5vZGVUeXBlID09PSAzICYmIGVsLnRleHRDb250ZW50LnRyaW0oKSlcbiAgICApO1xufVxuIiwiaW1wb3J0IHsgYXR0ciwgbWF0Y2hlcyB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcHJvcHM6IHtcbiAgICAgICAgYXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgIGF1dG9wbGF5SW50ZXJ2YWw6IE51bWJlcixcbiAgICAgICAgcGF1c2VPbkhvdmVyOiBCb29sZWFuLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogNzAwMCxcbiAgICAgICAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICAgIH0sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIGF0dHIodGhpcy5saXN0LCAnYXJpYS1saXZlJywgdGhpcy5hdXRvcGxheSA/ICdvZmYnIDogJ3BvbGl0ZScpO1xuICAgICAgICB0aGlzLmF1dG9wbGF5ICYmIHRoaXMuc3RhcnRBdXRvcGxheSgpO1xuICAgIH0sXG5cbiAgICBkaXNjb25uZWN0ZWQoKSB7XG4gICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgfSxcblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgYXR0cih0aGlzLnNsaWRlcywgJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgfSxcblxuICAgIGV2ZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndmlzaWJpbGl0eWNoYW5nZScsXG5cbiAgICAgICAgICAgIGVsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGZpbHRlcigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRvcGxheTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3BBdXRvcGxheSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRBdXRvcGxheSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgXSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgc3RhcnRBdXRvcGxheSgpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmRyYWdnYWJsZSAmJiBtYXRjaGVzKHRoaXMuJGVsLCAnOmZvY3VzLXdpdGhpbicpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMucGF1c2VPbkhvdmVyICYmIG1hdGNoZXModGhpcy4kZWwsICc6aG92ZXInKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coJ25leHQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0aGlzLmF1dG9wbGF5SW50ZXJ2YWwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0b3BBdXRvcGxheSgpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQgSTE4biBmcm9tICcuL2kxOG4nO1xuaW1wb3J0IFNsaWRlck5hdiBmcm9tICcuL3NsaWRlci1uYXYnO1xuaW1wb3J0IFNsaWRlckRyYWcgZnJvbSAnLi9zbGlkZXItZHJhZyc7XG5pbXBvcnQgU2xpZGVyQXV0b3BsYXkgZnJvbSAnLi9zbGlkZXItYXV0b3BsYXknO1xuaW1wb3J0IHsgcmVzaXplIH0gZnJvbSAnLi4vYXBpL29ic2VydmFibGVzJztcbmltcG9ydCB7XG4gICAgJCxcbiAgICBjaGlsZHJlbixcbiAgICBjbGFtcCxcbiAgICBnZXRJbmRleCxcbiAgICBoYXNDbGFzcyxcbiAgICBpc051bWJlcixcbiAgICBpc1J0bCxcbiAgICByZW1vdmVDbGFzcyxcbiAgICB0cmlnZ2VyLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW1NsaWRlckF1dG9wbGF5LCBTbGlkZXJEcmFnLCBTbGlkZXJOYXYsIEkxOG5dLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY2xzQWN0aXZhdGVkOiBCb29sZWFuLFxuICAgICAgICBlYXNpbmc6IFN0cmluZyxcbiAgICAgICAgaW5kZXg6IE51bWJlcixcbiAgICAgICAgZmluaXRlOiBCb29sZWFuLFxuICAgICAgICB2ZWxvY2l0eTogTnVtYmVyLFxuICAgIH0sXG5cbiAgICBkYXRhOiAoKSA9PiAoe1xuICAgICAgICBlYXNpbmc6ICdlYXNlJyxcbiAgICAgICAgZmluaXRlOiBmYWxzZSxcbiAgICAgICAgdmVsb2NpdHk6IDEsXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBwcmV2SW5kZXg6IC0xLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIHBlcmNlbnQ6IDAsXG4gICAgICAgIGNsc0FjdGl2ZTogJ3VrLWFjdGl2ZScsXG4gICAgICAgIGNsc0FjdGl2YXRlZDogZmFsc2UsXG4gICAgICAgIFRyYW5zaXRpb25lcjogZmFsc2UsXG4gICAgICAgIHRyYW5zaXRpb25PcHRpb25zOiB7fSxcbiAgICB9KSxcblxuICAgIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5wcmV2SW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMuZ2V0VmFsaWRJbmRleCh0aGlzLiRwcm9wcy5pbmRleCk7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBbXTtcbiAgICB9LFxuXG4gICAgZGlzY29ubmVjdGVkKCkge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnNsaWRlcywgdGhpcy5jbHNBY3RpdmUpO1xuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBkdXJhdGlvbih7IHZlbG9jaXR5IH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHNwZWVkVXAoJGVsLm9mZnNldFdpZHRoIC8gdmVsb2NpdHkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGxpc3QoeyBzZWxMaXN0IH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuICQoc2VsTGlzdCwgJGVsKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtYXhJbmRleCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCAtIDE7XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2xpZGVzKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHRoaXMubGlzdCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgbGVuZ3RoKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgc2xpZGVzKHNsaWRlcywgcHJldikge1xuICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG9ic2VydmU6IHJlc2l6ZSgpLFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzaG93KGluZGV4LCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZyB8fCAhdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHsgc3RhY2sgfSA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBxdWV1ZUluZGV4ID0gZm9yY2UgPyAwIDogc3RhY2subGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhY2suc3BsaWNlKHF1ZXVlSW5kZXgsIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coc3RhY2suc2hpZnQoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgc3RhY2tbZm9yY2UgPyAndW5zaGlmdCcgOiAncHVzaCddKGluZGV4KTtcblxuICAgICAgICAgICAgaWYgKCFmb3JjZSAmJiBzdGFjay5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXI/LmZvcndhcmQoTWF0aC5taW4odGhpcy5kdXJhdGlvbiwgMjAwKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwcmV2SW5kZXggPSB0aGlzLmdldEluZGV4KHRoaXMuaW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IGhhc0NsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSkgJiYgdGhpcy5zbGlkZXNbcHJldkluZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXgoaW5kZXgsIHRoaXMuaW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuc2xpZGVzW25leHRJbmRleF07XG5cbiAgICAgICAgICAgIGlmIChwcmV2ID09PSBuZXh0KSB7XG4gICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZGlyID0gZ2V0RGlyZWN0aW9uKGluZGV4LCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICB0aGlzLmluZGV4ID0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKHByZXYgJiYgIXRyaWdnZXIocHJldiwgJ2JlZm9yZWl0ZW1oaWRlJywgW3RoaXNdKSkgfHxcbiAgICAgICAgICAgICAgICAhdHJpZ2dlcihuZXh0LCAnYmVmb3JlaXRlbXNob3cnLCBbdGhpcywgcHJldl0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5wcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9zaG93KHByZXYsIG5leHQsIGZvcmNlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRyaWdnZXIocHJldiwgJ2l0ZW1oaWRkZW4nLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93bicsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgICAgICBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gc3RhY2subGVuZ3RoICYmIHRoaXMuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdpdGVtc2hvdycsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldEluZGV4KGluZGV4ID0gdGhpcy5pbmRleCwgcHJldiA9IHRoaXMuaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGFtcChcbiAgICAgICAgICAgICAgICBnZXRJbmRleChpbmRleCwgdGhpcy5zbGlkZXMsIHByZXYsIHRoaXMuZmluaXRlKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIE1hdGgubWF4KDAsIHRoaXMubWF4SW5kZXgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldFZhbGlkSW5kZXgoaW5kZXggPSB0aGlzLmluZGV4LCBwcmV2SW5kZXggPSB0aGlzLnByZXZJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5kZXgoaW5kZXgsIHByZXZJbmRleCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX3Nob3cocHJldiwgbmV4dCwgZm9yY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcihwcmV2LCBuZXh0LCB0aGlzLmRpciwge1xuICAgICAgICAgICAgICAgIGVhc2luZzogZm9yY2VcbiAgICAgICAgICAgICAgICAgICAgPyBuZXh0Lm9mZnNldFdpZHRoIDwgNjAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCknIC8qIGVhc2VPdXRRdWFkICovXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpJyAvKiBlYXNlT3V0UXVhcnQgKi9cbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVhc2luZyxcbiAgICAgICAgICAgICAgICAuLi50aGlzLnRyYW5zaXRpb25PcHRpb25zLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghZm9yY2UgJiYgIXByZXYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUoMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IGxlbmd0aCB9ID0gdGhpcy5zdGFjaztcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2l0aW9uZXJbbGVuZ3RoID4gMSA/ICdmb3J3YXJkJyA6ICdzaG93J10oXG4gICAgICAgICAgICAgICAgbGVuZ3RoID4gMSA/IE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDc1ICsgNzUgLyAobGVuZ3RoIC0gMSkpIDogdGhpcy5kdXJhdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2dldERpc3RhbmNlKHByZXYsIG5leHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRUcmFuc2l0aW9uZXIocHJldiwgcHJldiAhPT0gbmV4dCAmJiBuZXh0KS5nZXREaXN0YW5jZSgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIF90cmFuc2xhdGUocGVyY2VudCwgcHJldiA9IHRoaXMucHJldkluZGV4LCBuZXh0ID0gdGhpcy5pbmRleCkge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNpdGlvbmVyID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHByZXYgPT09IG5leHQgPyBmYWxzZSA6IHByZXYsIG5leHQpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZShwZXJjZW50KTtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uZXI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgX2dldFRyYW5zaXRpb25lcihcbiAgICAgICAgICAgIHByZXYgPSB0aGlzLnByZXZJbmRleCxcbiAgICAgICAgICAgIG5leHQgPSB0aGlzLmluZGV4LFxuICAgICAgICAgICAgZGlyID0gdGhpcy5kaXIgfHwgMSxcbiAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLnRyYW5zaXRpb25PcHRpb25zXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzLlRyYW5zaXRpb25lcihcbiAgICAgICAgICAgICAgICBpc051bWJlcihwcmV2KSA/IHRoaXMuc2xpZGVzW3ByZXZdIDogcHJldixcbiAgICAgICAgICAgICAgICBpc051bWJlcihuZXh0KSA/IHRoaXMuc2xpZGVzW25leHRdIDogbmV4dCxcbiAgICAgICAgICAgICAgICBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpLFxuICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIGdldERpcmVjdGlvbihpbmRleCwgcHJldkluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4ID09PSAnbmV4dCcgPyAxIDogaW5kZXggPT09ICdwcmV2aW91cycgPyAtMSA6IGluZGV4IDwgcHJldkluZGV4ID8gLTEgOiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BlZWRVcCh4KSB7XG4gICAgcmV0dXJuIDAuNSAqIHggKyAzMDA7IC8vIHBhcmFib2xhIHRocm91Z2ggKDQwMCw1MDA7IDYwMCw2MDA7IDE4MDAsMTIwMClcbn1cbiIsImltcG9ydCBBbmltYXRpb25zIGZyb20gJy4vaW50ZXJuYWwvc2xpZGVzaG93LWFuaW1hdGlvbnMnO1xuaW1wb3J0IFRyYW5zaXRpb25lciBmcm9tICcuL2ludGVybmFsL3NsaWRlc2hvdy10cmFuc2l0aW9uZXInO1xuaW1wb3J0IFNsaWRlciBmcm9tICcuL3NsaWRlci5qcyc7XG5pbXBvcnQgeyBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MgfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW1NsaWRlcl0sXG5cbiAgICBwcm9wczoge1xuICAgICAgICBhbmltYXRpb246IFN0cmluZyxcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBhbmltYXRpb246ICdzbGlkZScsXG4gICAgICAgIGNsc0FjdGl2YXRlZDogJ3VrLXRyYW5zaXRpb24tYWN0aXZlJyxcbiAgICAgICAgQW5pbWF0aW9ucyxcbiAgICAgICAgVHJhbnNpdGlvbmVyLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBhbmltYXRpb24oeyBhbmltYXRpb24sIEFuaW1hdGlvbnMgfSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uKEFuaW1hdGlvbnNbYW5pbWF0aW9uXSB8fCBBbmltYXRpb25zLnNsaWRlKSwgbmFtZTogYW5pbWF0aW9uIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnMoKSB7XG4gICAgICAgICAgICByZXR1cm4geyBhbmltYXRpb246IHRoaXMuYW5pbWF0aW9uIH07XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGV2ZW50czoge1xuICAgICAgICBiZWZvcmVpdGVtc2hvdyh7IHRhcmdldCB9KSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0YXJnZXQsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpdGVtc2hvd24oeyB0YXJnZXQgfSkge1xuICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaXRlbWhpZGRlbih7IHRhcmdldCB9KSB7XG4gICAgICAgICAgICByZW1vdmVDbGFzcyh0YXJnZXQsIHRoaXMuY2xzQWN0aXZlLCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQgQW5pbWF0aW9ucyBmcm9tICcuL2ludGVybmFsL2xpZ2h0Ym94LWFuaW1hdGlvbnMnO1xuaW1wb3J0IE1vZGFsIGZyb20gJy4uL21peGluL21vZGFsJztcbmltcG9ydCBTbGlkZXNob3cgZnJvbSAnLi4vbWl4aW4vc2xpZGVzaG93JztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uL3V0aWwva2V5cyc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYXBwZW5kLFxuICAgIGF0dHIsXG4gICAgZnJhZ21lbnQsXG4gICAgZ2V0SW5kZXgsXG4gICAgaHRtbCxcbiAgICBvbixcbiAgICBwb2ludGVyRG93bixcbiAgICBwb2ludGVyTW92ZSxcbiAgICByZW1vdmVDbGFzcyxcbiAgICBUcmFuc2l0aW9uLFxuICAgIHRyaWdnZXIsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbTW9kYWwsIFNsaWRlc2hvd10sXG5cbiAgICBmdW5jdGlvbmFsOiB0cnVlLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZGVsYXlDb250cm9sczogTnVtYmVyLFxuICAgICAgICBwcmVsb2FkOiBOdW1iZXIsXG4gICAgICAgIHZpZGVvQXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgIHRlbXBsYXRlOiBTdHJpbmcsXG4gICAgfSxcblxuICAgIGRhdGE6ICgpID0+ICh7XG4gICAgICAgIHByZWxvYWQ6IDEsXG4gICAgICAgIHZpZGVvQXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICBkZWxheUNvbnRyb2xzOiAzMDAwLFxuICAgICAgICBpdGVtczogW10sXG4gICAgICAgIGNsczogJ3VrLW9wZW4nLFxuICAgICAgICBjbHNQYWdlOiAndWstbGlnaHRib3gtcGFnZScsXG4gICAgICAgIHNlbExpc3Q6ICcudWstbGlnaHRib3gtaXRlbXMnLFxuICAgICAgICBhdHRySXRlbTogJ3VrLWxpZ2h0Ym94LWl0ZW0nLFxuICAgICAgICBzZWxDbG9zZTogJy51ay1jbG9zZS1sYXJnZScsXG4gICAgICAgIHNlbENhcHRpb246ICcudWstbGlnaHRib3gtY2FwdGlvbicsXG4gICAgICAgIHBhdXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICAgIHZlbG9jaXR5OiAyLFxuICAgICAgICBBbmltYXRpb25zLFxuICAgICAgICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJ1ay1saWdodGJveCB1ay1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInVrLWxpZ2h0Ym94LWl0ZW1zXCI+PC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1ay1saWdodGJveC10b29sYmFyIHVrLXBvc2l0aW9uLXRvcCB1ay10ZXh0LXJpZ2h0IHVrLXRyYW5zaXRpb24tc2xpZGUtdG9wIHVrLXRyYW5zaXRpb24tb3BhcXVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVrLWxpZ2h0Ym94LXRvb2xiYXItaWNvbiB1ay1jbG9zZS1sYXJnZVwiIHR5cGU9XCJidXR0b25cIiB1ay1jbG9zZT48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcIiBocmVmIHVrLXNsaWRlbmF2LXByZXZpb3VzIHVrLWxpZ2h0Ym94LWl0ZW09XCJwcmV2aW91c1wiPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1yaWdodCB1ay1wb3NpdGlvbi1tZWRpdW0gdWstdHJhbnNpdGlvbi1mYWRlXCIgaHJlZiB1ay1zbGlkZW5hdi1uZXh0IHVrLWxpZ2h0Ym94LWl0ZW09XCJuZXh0XCI+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstbGlnaHRib3gtY2FwdGlvbiB1ay1wb3NpdGlvbi1ib3R0b20gdWstdGV4dC1jZW50ZXIgdWstdHJhbnNpdGlvbi1zbGlkZS1ib3R0b20gdWstdHJhbnNpdGlvbi1vcGFxdWVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YCxcbiAgICB9KSxcblxuICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgIGNvbnN0ICRlbCA9ICQodGhpcy50ZW1wbGF0ZSk7XG4gICAgICAgIGNvbnN0IGxpc3QgPSAkKHRoaXMuc2VsTGlzdCwgJGVsKTtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKCgpID0+IGFwcGVuZChsaXN0LCAnPGxpPicpKTtcblxuICAgICAgICBjb25zdCBjbG9zZSA9ICQoJ1t1ay1jbG9zZV0nLCAkZWwpO1xuICAgICAgICBjb25zdCBjbG9zZUxhYmVsID0gdGhpcy50KCdjbG9zZScpO1xuICAgICAgICBpZiAoY2xvc2UgJiYgY2xvc2VMYWJlbCkge1xuICAgICAgICAgICAgY2xvc2UuZGF0YXNldC5pMThuID0gSlNPTi5zdHJpbmdpZnkoeyBsYWJlbDogY2xvc2VMYWJlbCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuJG1vdW50KGFwcGVuZCh0aGlzLmNvbnRhaW5lciwgJGVsKSk7XG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIGNhcHRpb24oeyBzZWxDYXB0aW9uIH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuICQoc2VsQ2FwdGlvbiwgJGVsKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZXZlbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGAke3BvaW50ZXJNb3ZlfSAke3BvaW50ZXJEb3dufSBrZXlkb3duYCxcblxuICAgICAgICAgICAgaGFuZGxlcjogJ3Nob3dDb250cm9scycsXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgZGVsZWdhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VsTGlzdH0gPiAqYDtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGlmICghZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3Nob3duJyxcblxuICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dDb250cm9scygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlQ29udHJvbHMoKTtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdG9wKHRoaXMuc2xpZGVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2hpZGRlbicsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZGVzdHJveSh0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2tleXVwJyxcblxuICAgICAgICAgICAgZWwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFuZGxlcih7IGtleUNvZGUgfSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RvZ2dsZWQodGhpcy4kZWwpIHx8ICF0aGlzLmRyYWdnYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGkgPSAtMTtcblxuICAgICAgICAgICAgICAgIGlmIChrZXlDb2RlID09PSBrZXlNYXAuTEVGVCkge1xuICAgICAgICAgICAgICAgICAgICBpID0gJ3ByZXZpb3VzJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IGtleU1hcC5SSUdIVCkge1xuICAgICAgICAgICAgICAgICAgICBpID0gJ25leHQnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0ga2V5TWFwLkhPTUUpIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSBrZXlNYXAuRU5EKSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSAnbGFzdCc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKH5pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVpdGVtc2hvdycsXG5cbiAgICAgICAgICAgIGhhbmRsZXIoZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdnYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMuJGVsLCB0cnVlLCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGlvbiA9IEFuaW1hdGlvbnNbJ3NjYWxlJ107XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZS50YXJnZXQsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnNwbGljZSgxLCAwLCB0aGlzLmluZGV4KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93JyxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICBodG1sKHRoaXMuY2FwdGlvbiwgdGhpcy5nZXRJdGVtKCkuY2FwdGlvbiB8fCAnJyk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gLXRoaXMucHJlbG9hZDsgaiA8PSB0aGlzLnByZWxvYWQ7IGorKykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRJdGVtKHRoaXMuaW5kZXggKyBqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdpdGVtc2hvd24nLFxuXG4gICAgICAgICAgICBoYW5kbGVyKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dhYmxlID0gdGhpcy4kcHJvcHMuZHJhZ2dhYmxlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnaXRlbWxvYWQnLFxuXG4gICAgICAgICAgICBhc3luYyBoYW5kbGVyKF8sIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNvdXJjZTogc3JjLCB0eXBlLCBhbHQgPSAnJywgcG9zdGVyLCBhdHRycyA9IHt9IH0gPSBpdGVtO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKGl0ZW0sICc8c3BhbiB1ay1zcGlubmVyPjwvc3Bhbj4nKTtcblxuICAgICAgICAgICAgICAgIGlmICghc3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2hlcztcbiAgICAgICAgICAgICAgICBjb25zdCBpZnJhbWVBdHRycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dmdWxsc2NyZWVuOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdtYXgtd2lkdGg6IDEwMCU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7JyxcbiAgICAgICAgICAgICAgICAgICAgJ3VrLXJlc3BvbnNpdmUnOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgJ3VrLXZpZGVvJzogYCR7dGhpcy52aWRlb0F1dG9wbGF5fWAsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vIEltYWdlXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0eXBlID09PSAnaW1hZ2UnIHx8XG4gICAgICAgICAgICAgICAgICAgIHNyYy5tYXRjaCgvXFwuKGF2aWZ8anBlP2d8amZpZnxhP3BuZ3xnaWZ8c3ZnfHdlYnApKCR8XFw/KS9pKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSBjcmVhdGVFbCgnaW1nJywgeyBzcmMsIGFsdCwgLi4uYXR0cnMgfSk7XG4gICAgICAgICAgICAgICAgICAgIG9uKGltZywgJ2xvYWQnLCAoKSA9PiB0aGlzLnNldEl0ZW0oaXRlbSwgaW1nKSk7XG4gICAgICAgICAgICAgICAgICAgIG9uKGltZywgJ2Vycm9yJywgKCkgPT4gdGhpcy5zZXRFcnJvcihpdGVtKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVmlkZW9cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd2aWRlbycgfHwgc3JjLm1hdGNoKC9cXC4obXA0fHdlYm18b2d2KSgkfFxcPykvaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmlkZW8gPSBjcmVhdGVFbCgndmlkZW8nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sczogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5c2lubGluZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndWstdmlkZW8nOiBgJHt0aGlzLnZpZGVvQXV0b3BsYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBvbih2aWRlbywgJ2xvYWRlZG1ldGFkYXRhJywgKCkgPT4gdGhpcy5zZXRJdGVtKGl0ZW0sIHZpZGVvKSk7XG4gICAgICAgICAgICAgICAgICAgIG9uKHZpZGVvLCAnZXJyb3InLCAoKSA9PiB0aGlzLnNldEVycm9yKGl0ZW0pKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWVcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdpZnJhbWUnIHx8IHNyYy5tYXRjaCgvXFwuKGh0bWx8cGhwKSgkfFxcPykvaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsKCdpZnJhbWUnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbjogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICd1ay1saWdodGJveC1pZnJhbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoZXMgPSBzcmMubWF0Y2goXG4gICAgICAgICAgICAgICAgICAgICAgICAvXFwvXFwvKD86Lio/eW91dHViZSgtbm9jb29raWUpP1xcLi4qPyg/Ols/Jl12PXxcXC9zaG9ydHNcXC8pfHlvdXR1XFwuYmVcXC8pKFtcXHctXXsxMX0pWyY/XT8oLiopPy9cbiAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsKCdpZnJhbWUnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBgaHR0cHM6Ly93d3cueW91dHViZSR7bWF0Y2hlc1sxXSB8fCAnJ30uY29tL2VtYmVkLyR7bWF0Y2hlc1syXX0ke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzWzNdID8gYD8ke21hdGNoZXNbM119YCA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE5MjAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmlmcmFtZUF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBWaW1lb1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZXMgPSBzcmMubWF0Y2goL1xcL1xcLy4qP3ZpbWVvXFwuW2Etel0rXFwvKFxcZCspWyY/XT8oLiopPy8pKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBoZWlnaHQsIHdpZHRoIH0gPSBhd2FpdCAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBodHRwczovL3ZpbWVvLmNvbS9hcGkvb2VtYmVkLmpzb24/bWF4d2lkdGg9MTkyMCZ1cmw9JHtlbmNvZGVVUkkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNyZWRlbnRpYWxzOiAnb21pdCcgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICkuanNvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEl0ZW0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbCgnaWZyYW1lJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IGBodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJHttYXRjaGVzWzFdfSR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzWzJdID8gYD8ke21hdGNoZXNbMl19YCA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pZnJhbWVBdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYXR0cnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGxvYWRJdGVtKGluZGV4ID0gdGhpcy5pbmRleCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbShpbmRleCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5nZXRTbGlkZShpdGVtKS5jaGlsZEVsZW1lbnRDb3VudCkge1xuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdpdGVtbG9hZCcsIFtpdGVtXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0SXRlbShpbmRleCA9IHRoaXMuaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1zW2dldEluZGV4KGluZGV4LCB0aGlzLnNsaWRlcyldO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNldEl0ZW0oaXRlbSwgY29udGVudCkge1xuICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2l0ZW1sb2FkZWQnLCBbdGhpcywgaHRtbCh0aGlzLmdldFNsaWRlKGl0ZW0pLCBjb250ZW50KV0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldFNsaWRlKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlc1t0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSldO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNldEVycm9yKGl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAnPHNwYW4gdWstaWNvbj1cImljb246IGJvbHQ7IHJhdGlvOiAyXCI+PC9zcGFuPicpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNob3dDb250cm9scygpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRyb2xzVGltZXIpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sc1RpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGVDb250cm9scywgdGhpcy5kZWxheUNvbnRyb2xzKTtcblxuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsICd1ay1hY3RpdmUnLCAndWstdHJhbnNpdGlvbi1hY3RpdmUnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBoaWRlQ29udHJvbHMoKSB7XG4gICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVFbCh0YWcsIGF0dHJzKSB7XG4gICAgY29uc3QgZWwgPSBmcmFnbWVudChgPCR7dGFnfT5gKTtcbiAgICBhdHRyKGVsLCBhdHRycyk7XG4gICAgcmV0dXJuIGVsO1xufVxuIiwiaW1wb3J0IExpZ2h0Ym94UGFuZWwgZnJvbSAnLi9saWdodGJveC1wYW5lbCc7XG5pbXBvcnQgeyBwYXJzZU9wdGlvbnMgfSBmcm9tICcuLi9hcGkvb3B0aW9ucyc7XG5pbXBvcnQgeyAkJCwgYXNzaWduLCBhdHRyLCBkYXRhLCBmaW5kSW5kZXgsIGlzRWxlbWVudCwgaXNUYWcsIG9uLCB1bmlxdWVCeSB9IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgaW5zdGFsbCxcblxuICAgIHByb3BzOiB7IHRvZ2dsZTogU3RyaW5nIH0sXG5cbiAgICBkYXRhOiB7IHRvZ2dsZTogJ2EnIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICB0b2dnbGVzKHsgdG9nZ2xlIH0sICRlbCkge1xuICAgICAgICAgICAgcmV0dXJuICQkKHRvZ2dsZSwgJGVsKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgICAgdG9nZ2xlcyh0b2dnbGVzKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdG9nZ2xlIG9mIHRvZ2dsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUYWcodG9nZ2xlLCAnYScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHIodG9nZ2xlLCAncm9sZScsICdidXR0b24nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGRpc2Nvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSxcblxuICAgIGV2ZW50czoge1xuICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgIGRlbGVnYXRlKCkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMudG9nZ2xlfTpub3QoLnVrLWRpc2FibGVkKWA7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaGFuZGxlcihlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNob3coZS5jdXJyZW50KTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzaG93KGluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHVuaXF1ZUJ5KHRoaXMudG9nZ2xlcy5tYXAodG9JdGVtKSwgJ3NvdXJjZScpO1xuXG4gICAgICAgICAgICBpZiAoaXNFbGVtZW50KGluZGV4KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc291cmNlIH0gPSB0b0l0ZW0oaW5kZXgpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZmluZEluZGV4KGl0ZW1zLCAoeyBzb3VyY2U6IHNyYyB9KSA9PiBzb3VyY2UgPT09IHNyYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucGFuZWwgPSB0aGlzLnBhbmVsIHx8IHRoaXMuJGNyZWF0ZSgnbGlnaHRib3hQYW5lbCcsIHsgLi4udGhpcy4kcHJvcHMsIGl0ZW1zIH0pO1xuXG4gICAgICAgICAgICBvbih0aGlzLnBhbmVsLiRlbCwgJ2hpZGRlbicsICgpID0+ICh0aGlzLnBhbmVsID0gbnVsbCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbC5zaG93KGluZGV4KTtcbiAgICAgICAgfSxcblxuICAgICAgICBoaWRlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWw/LmhpZGUoKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gaW5zdGFsbChVSWtpdCwgTGlnaHRib3gpIHtcbiAgICBpZiAoIVVJa2l0LmxpZ2h0Ym94UGFuZWwpIHtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgfVxuXG4gICAgYXNzaWduKExpZ2h0Ym94LnByb3BzLCBVSWtpdC5jb21wb25lbnQoJ2xpZ2h0Ym94UGFuZWwnKS5vcHRpb25zLnByb3BzKTtcbn1cblxuZnVuY3Rpb24gdG9JdGVtKGVsKSB7XG4gICAgY29uc3QgaXRlbSA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBhdHRyIG9mIFsnaHJlZicsICdjYXB0aW9uJywgJ3R5cGUnLCAncG9zdGVyJywgJ2FsdCcsICdhdHRycyddKSB7XG4gICAgICAgIGl0ZW1bYXR0ciA9PT0gJ2hyZWYnID8gJ3NvdXJjZScgOiBhdHRyXSA9IGRhdGEoZWwsIGF0dHIpO1xuICAgIH1cblxuICAgIGl0ZW0uYXR0cnMgPSBwYXJzZU9wdGlvbnMoaXRlbS5hdHRycyk7XG5cbiAgICByZXR1cm4gaXRlbTtcbn1cbiIsImltcG9ydCBDb250YWluZXIgZnJvbSAnLi4vbWl4aW4vY29udGFpbmVyJztcbmltcG9ydCB7XG4gICAgJCxcbiAgICBhcHBlbmQsXG4gICAgYXBwbHksXG4gICAgY2xvc2VzdCxcbiAgICBjc3MsXG4gICAgcGFyZW50LFxuICAgIHBvaW50ZXJFbnRlcixcbiAgICBwb2ludGVyTGVhdmUsXG4gICAgcmVtb3ZlLFxuICAgIHN0YXJ0c1dpdGgsXG4gICAgdG9GbG9hdCxcbiAgICBUcmFuc2l0aW9uLFxuICAgIHRyaWdnZXIsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ29udGFpbmVyXSxcblxuICAgIGZ1bmN0aW9uYWw6IHRydWUsXG5cbiAgICBhcmdzOiBbJ21lc3NhZ2UnLCAnc3RhdHVzJ10sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICB0aW1lb3V0OiA1MDAwLFxuICAgICAgICBncm91cDogbnVsbCxcbiAgICAgICAgcG9zOiAndG9wLWNlbnRlcicsXG4gICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLW5vdGlmaWNhdGlvbicsXG4gICAgICAgIGNsc0Nsb3NlOiAndWstbm90aWZpY2F0aW9uLWNsb3NlJyxcbiAgICAgICAgY2xzTXNnOiAndWstbm90aWZpY2F0aW9uLW1lc3NhZ2UnLFxuICAgIH0sXG5cbiAgICBpbnN0YWxsLFxuXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgbWFyZ2luUHJvcCh7IHBvcyB9KSB7XG4gICAgICAgICAgICByZXR1cm4gYG1hcmdpbiR7c3RhcnRzV2l0aChwb3MsICd0b3AnKSA/ICdUb3AnIDogJ0JvdHRvbSd9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGFydFByb3BzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgb3BhY2l0eTogMCwgW3RoaXMubWFyZ2luUHJvcF06IC10aGlzLiRlbC5vZmZzZXRIZWlnaHQgfTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgY3JlYXRlZCgpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID1cbiAgICAgICAgICAgICQoYC4ke3RoaXMuY2xzQ29udGFpbmVyfS0ke3RoaXMucG9zfWAsIHRoaXMuY29udGFpbmVyKSB8fFxuICAgICAgICAgICAgYXBwZW5kKFxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgICAgICAgIGA8ZGl2IGNsYXNzPVwiJHt0aGlzLmNsc0NvbnRhaW5lcn0gJHt0aGlzLmNsc0NvbnRhaW5lcn0tJHt0aGlzLnBvc31cIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrXCI+PC9kaXY+YFxuICAgICAgICAgICAgKTtcblxuICAgICAgICB0aGlzLiRtb3VudChcbiAgICAgICAgICAgIGFwcGVuZChcbiAgICAgICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICAgICAgYDxkaXYgY2xhc3M9XCIke3RoaXMuY2xzTXNnfSR7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzID8gYCAke3RoaXMuY2xzTXNnfS0ke3RoaXMuc3RhdHVzfWAgOiAnJ1xuICAgICAgICAgICAgICAgIH1cIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmIGNsYXNzPVwiJHt0aGlzLmNsc0Nsb3NlfVwiIGRhdGEtdWstY2xvc2U+PC9hPlxuICAgICAgICAgICAgICAgIDxkaXY+JHt0aGlzLm1lc3NhZ2V9PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIGFzeW5jIGNvbm5lY3RlZCgpIHtcbiAgICAgICAgY29uc3QgbWFyZ2luID0gdG9GbG9hdChjc3ModGhpcy4kZWwsIHRoaXMubWFyZ2luUHJvcCkpO1xuICAgICAgICBhd2FpdCBUcmFuc2l0aW9uLnN0YXJ0KGNzcyh0aGlzLiRlbCwgdGhpcy5zdGFydFByb3BzKSwge1xuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIFt0aGlzLm1hcmdpblByb3BdOiBtYXJnaW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuY2xvc2UsIHRoaXMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIGNsaWNrKGUpIHtcbiAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPVwiI1wiXSxhW2hyZWY9XCJcIl0nKSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBbcG9pbnRlckVudGVyXSgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIFtwb2ludGVyTGVhdmVdKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuY2xvc2UsIHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgYXN5bmMgY2xvc2UoaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVGbiA9IChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHBhcmVudChlbCk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKGVsLCAnY2xvc2UnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIHJlbW92ZShlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcj8uaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShjb250YWluZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IFRyYW5zaXRpb24uc3RhcnQodGhpcy4kZWwsIHRoaXMuc3RhcnRQcm9wcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlbW92ZUZuKHRoaXMuJGVsKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZnVuY3Rpb24gaW5zdGFsbChVSWtpdCkge1xuICAgIFVJa2l0Lm5vdGlmaWNhdGlvbi5jbG9zZUFsbCA9IGZ1bmN0aW9uIChncm91cCwgaW1tZWRpYXRlKSB7XG4gICAgICAgIGFwcGx5KGRvY3VtZW50LmJvZHksIChlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0gVUlraXQuZ2V0Q29tcG9uZW50KGVsLCAnbm90aWZpY2F0aW9uJyk7XG4gICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uICYmICghZ3JvdXAgfHwgZ3JvdXAgPT09IG5vdGlmaWNhdGlvbi5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uY2xvc2UoaW1tZWRpYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiIsImltcG9ydCBNZWRpYSBmcm9tICcuLi9taXhpbi9tZWRpYSc7XG5pbXBvcnQgeyBnZXRNYXhQYXRoTGVuZ3RoIH0gZnJvbSAnLi4vdXRpbC9zdmcnO1xuaW1wb3J0IHtcbiAgICBjcmVhdGVFdmVudCxcbiAgICBjc3MsXG4gICAgRGltZW5zaW9ucyxcbiAgICBmaW5kSW5kZXgsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNTdHJpbmcsXG4gICAgaXNVbmRlZmluZWQsXG4gICAgbm9vcCxcbiAgICBwcm9wTmFtZSxcbiAgICB0b0Zsb2F0LFxuICAgIHRvUHgsXG4gICAgdHJpZ2dlcixcbiAgICB1Y2ZpcnN0LFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuY29uc3QgcHJvcHMgPSB7XG4gICAgeDogdHJhbnNmb3JtRm4sXG4gICAgeTogdHJhbnNmb3JtRm4sXG4gICAgcm90YXRlOiB0cmFuc2Zvcm1GbixcbiAgICBzY2FsZTogdHJhbnNmb3JtRm4sXG4gICAgY29sb3I6IGNvbG9yRm4sXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvckZuLFxuICAgIGJvcmRlckNvbG9yOiBjb2xvckZuLFxuICAgIGJsdXI6IGZpbHRlckZuLFxuICAgIGh1ZTogZmlsdGVyRm4sXG4gICAgZm9wYWNpdHk6IGZpbHRlckZuLFxuICAgIGdyYXlzY2FsZTogZmlsdGVyRm4sXG4gICAgaW52ZXJ0OiBmaWx0ZXJGbixcbiAgICBzYXR1cmF0ZTogZmlsdGVyRm4sXG4gICAgc2VwaWE6IGZpbHRlckZuLFxuICAgIG9wYWNpdHk6IGNzc1Byb3BGbixcbiAgICBzdHJva2U6IHN0cm9rZUZuLFxuICAgIGJneDogYmFja2dyb3VuZEZuLFxuICAgIGJneTogYmFja2dyb3VuZEZuLFxufTtcblxuY29uc3QgeyBrZXlzIH0gPSBPYmplY3Q7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtNZWRpYV0sXG5cbiAgICBwcm9wczogZmlsbE9iamVjdChrZXlzKHByb3BzKSwgJ2xpc3QnKSxcblxuICAgIGRhdGE6IGZpbGxPYmplY3Qoa2V5cyhwcm9wcyksIHVuZGVmaW5lZCksXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICBwcm9wcyhwcm9wZXJ0aWVzLCAkZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3BzID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wIGluIHByb3BzICYmICFpc1VuZGVmaW5lZChwcm9wZXJ0aWVzW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9wc1twcm9wXSA9IHByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBzdG9wcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtwcm9wXSA9IHByb3BzW3Byb3BdKHByb3AsICRlbCwgc3RvcHNbcHJvcF0sIHN0b3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGV2ZW50czoge1xuICAgICAgICBsb2FkKCkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdCgpO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMuZ2V0Q3NzKDApKSB7XG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0Q3NzKHBlcmNlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzcyA9IHsgdHJhbnNmb3JtOiAnJywgZmlsdGVyOiAnJyB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzW3Byb3BdKGNzcywgcGVyY2VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjc3Mud2lsbENoYW5nZSA9IE9iamVjdC5rZXlzKGNzcylcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IGNzc1trZXldICE9PSAnJylcbiAgICAgICAgICAgICAgICAubWFwKHByb3BOYW1lKVxuICAgICAgICAgICAgICAgIC5qb2luKCcsJyk7XG4gICAgICAgICAgICByZXR1cm4gY3NzO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Gbihwcm9wLCBlbCwgc3RvcHMpIHtcbiAgICBsZXQgdW5pdCA9IGdldFVuaXQoc3RvcHMpIHx8IHsgeDogJ3B4JywgeTogJ3B4Jywgcm90YXRlOiAnZGVnJyB9W3Byb3BdIHx8ICcnO1xuICAgIGxldCB0cmFuc2Zvcm1GbjtcblxuICAgIGlmIChwcm9wID09PSAneCcgfHwgcHJvcCA9PT0gJ3knKSB7XG4gICAgICAgIHByb3AgPSBgdHJhbnNsYXRlJHt1Y2ZpcnN0KHByb3ApfWA7XG4gICAgICAgIHRyYW5zZm9ybUZuID0gKHN0b3ApID0+IHRvRmxvYXQodG9GbG9hdChzdG9wKS50b0ZpeGVkKHVuaXQgPT09ICdweCcgPyAwIDogNikpO1xuICAgIH0gZWxzZSBpZiAocHJvcCA9PT0gJ3NjYWxlJykge1xuICAgICAgICB1bml0ID0gJyc7XG4gICAgICAgIHRyYW5zZm9ybUZuID0gKHN0b3ApID0+XG4gICAgICAgICAgICBnZXRVbml0KFtzdG9wXSkgPyB0b1B4KHN0b3AsICd3aWR0aCcsIGVsLCB0cnVlKSAvIGVsLm9mZnNldFdpZHRoIDogc3RvcDtcbiAgICB9XG5cbiAgICBpZiAoc3RvcHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHN0b3BzLnVuc2hpZnQocHJvcCA9PT0gJ3NjYWxlJyA/IDEgOiAwKTtcbiAgICB9XG5cbiAgICBzdG9wcyA9IHBhcnNlU3RvcHMoc3RvcHMsIHRyYW5zZm9ybUZuKTtcblxuICAgIHJldHVybiAoY3NzLCBwZXJjZW50KSA9PiB7XG4gICAgICAgIGNzcy50cmFuc2Zvcm0gKz0gYCAke3Byb3B9KCR7Z2V0VmFsdWUoc3RvcHMsIHBlcmNlbnQpfSR7dW5pdH0pYDtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjb2xvckZuKHByb3AsIGVsLCBzdG9wcykge1xuICAgIGlmIChzdG9wcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgc3RvcHMudW5zaGlmdChnZXRDc3NWYWx1ZShlbCwgcHJvcCwgJycpKTtcbiAgICB9XG5cbiAgICBzdG9wcyA9IHBhcnNlU3RvcHMoc3RvcHMsIChzdG9wKSA9PiBwYXJzZUNvbG9yKGVsLCBzdG9wKSk7XG5cbiAgICByZXR1cm4gKGNzcywgcGVyY2VudCkgPT4ge1xuICAgICAgICBjb25zdCBbc3RhcnQsIGVuZCwgcF0gPSBnZXRTdG9wKHN0b3BzLCBwZXJjZW50KTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdGFydFxuICAgICAgICAgICAgLm1hcCgodmFsdWUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSBwICogKGVuZFtpXSAtIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gMyA/IHRvRmxvYXQodmFsdWUpIDogcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignLCcpO1xuICAgICAgICBjc3NbcHJvcF0gPSBgcmdiYSgke3ZhbHVlfSlgO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ29sb3IoZWwsIGNvbG9yKSB7XG4gICAgcmV0dXJuIGdldENzc1ZhbHVlKGVsLCAnY29sb3InLCBjb2xvcilcbiAgICAgICAgLnNwbGl0KC9bKCksXS9nKVxuICAgICAgICAuc2xpY2UoMSwgLTEpXG4gICAgICAgIC5jb25jYXQoMSlcbiAgICAgICAgLnNsaWNlKDAsIDQpXG4gICAgICAgIC5tYXAodG9GbG9hdCk7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckZuKHByb3AsIGVsLCBzdG9wcykge1xuICAgIGlmIChzdG9wcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgc3RvcHMudW5zaGlmdCgwKTtcbiAgICB9XG5cbiAgICBjb25zdCB1bml0ID0gZ2V0VW5pdChzdG9wcykgfHwgeyBibHVyOiAncHgnLCBodWU6ICdkZWcnIH1bcHJvcF0gfHwgJyUnO1xuICAgIHByb3AgPSB7IGZvcGFjaXR5OiAnb3BhY2l0eScsIGh1ZTogJ2h1ZS1yb3RhdGUnIH1bcHJvcF0gfHwgcHJvcDtcbiAgICBzdG9wcyA9IHBhcnNlU3RvcHMoc3RvcHMpO1xuXG4gICAgcmV0dXJuIChjc3MsIHBlcmNlbnQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRWYWx1ZShzdG9wcywgcGVyY2VudCk7XG4gICAgICAgIGNzcy5maWx0ZXIgKz0gYCAke3Byb3B9KCR7dmFsdWUgKyB1bml0fSlgO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNzc1Byb3BGbihwcm9wLCBlbCwgc3RvcHMpIHtcbiAgICBpZiAoc3RvcHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHN0b3BzLnVuc2hpZnQoZ2V0Q3NzVmFsdWUoZWwsIHByb3AsICcnKSk7XG4gICAgfVxuXG4gICAgc3RvcHMgPSBwYXJzZVN0b3BzKHN0b3BzKTtcblxuICAgIHJldHVybiAoY3NzLCBwZXJjZW50KSA9PiB7XG4gICAgICAgIGNzc1twcm9wXSA9IGdldFZhbHVlKHN0b3BzLCBwZXJjZW50KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBzdHJva2VGbihwcm9wLCBlbCwgc3RvcHMpIHtcbiAgICBpZiAoc3RvcHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHN0b3BzLnVuc2hpZnQoMCk7XG4gICAgfVxuXG4gICAgY29uc3QgdW5pdCA9IGdldFVuaXQoc3RvcHMpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldE1heFBhdGhMZW5ndGgoZWwpO1xuICAgIHN0b3BzID0gcGFyc2VTdG9wcyhzdG9wcy5yZXZlcnNlKCksIChzdG9wKSA9PiB7XG4gICAgICAgIHN0b3AgPSB0b0Zsb2F0KHN0b3ApO1xuICAgICAgICByZXR1cm4gdW5pdCA9PT0gJyUnID8gKHN0b3AgKiBsZW5ndGgpIC8gMTAwIDogc3RvcDtcbiAgICB9KTtcblxuICAgIGlmICghc3RvcHMuc29tZSgoW3ZhbHVlXSkgPT4gdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIGNzcyhlbCwgJ3N0cm9rZURhc2hhcnJheScsIGxlbmd0aCk7XG5cbiAgICByZXR1cm4gKGNzcywgcGVyY2VudCkgPT4ge1xuICAgICAgICBjc3Muc3Ryb2tlRGFzaG9mZnNldCA9IGdldFZhbHVlKHN0b3BzLCBwZXJjZW50KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBiYWNrZ3JvdW5kRm4ocHJvcCwgZWwsIHN0b3BzLCBwcm9wcykge1xuICAgIGlmIChzdG9wcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgc3RvcHMudW5zaGlmdCgwKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyID0gcHJvcCA9PT0gJ2JneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgcHJvcHNbcHJvcF0gPSBwYXJzZVN0b3BzKHN0b3BzLCAoc3RvcCkgPT4gdG9QeChzdG9wLCBhdHRyLCBlbCkpO1xuXG4gICAgY29uc3QgYmdQcm9wcyA9IFsnYmd4JywgJ2JneSddLmZpbHRlcigocHJvcCkgPT4gcHJvcCBpbiBwcm9wcyk7XG4gICAgaWYgKGJnUHJvcHMubGVuZ3RoID09PSAyICYmIHByb3AgPT09ICdiZ3gnKSB7XG4gICAgICAgIHJldHVybiBub29wO1xuICAgIH1cblxuICAgIGlmIChnZXRDc3NWYWx1ZShlbCwgJ2JhY2tncm91bmRTaXplJywgJycpID09PSAnY292ZXInKSB7XG4gICAgICAgIHJldHVybiBiYWNrZ3JvdW5kQ292ZXJGbihwcm9wLCBlbCwgc3RvcHMsIHByb3BzKTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3NpdGlvbnMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgYmdQcm9wcykge1xuICAgICAgICBwb3NpdGlvbnNbcHJvcF0gPSBnZXRCYWNrZ3JvdW5kUG9zKGVsLCBwcm9wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0QmFja2dyb3VuZFBvc0ZuKGJnUHJvcHMsIHBvc2l0aW9ucywgcHJvcHMpO1xufVxuXG5mdW5jdGlvbiBiYWNrZ3JvdW5kQ292ZXJGbihwcm9wLCBlbCwgc3RvcHMsIHByb3BzKSB7XG4gICAgY29uc3QgZGltSW1hZ2UgPSBnZXRCYWNrZ3JvdW5kSW1hZ2VEaW1lbnNpb25zKGVsKTtcblxuICAgIGlmICghZGltSW1hZ2Uud2lkdGgpIHtcbiAgICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuXG4gICAgY29uc3QgZGltRWwgPSB7XG4gICAgICAgIHdpZHRoOiBlbC5vZmZzZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBlbC5vZmZzZXRIZWlnaHQsXG4gICAgfTtcblxuICAgIGNvbnN0IGJnUHJvcHMgPSBbJ2JneCcsICdiZ3knXS5maWx0ZXIoKHByb3ApID0+IHByb3AgaW4gcHJvcHMpO1xuXG4gICAgY29uc3QgcG9zaXRpb25zID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGJnUHJvcHMpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gcHJvcHNbcHJvcF0ubWFwKChbdmFsdWVdKSA9PiB2YWx1ZSk7XG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnZhbHVlcyk7XG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnZhbHVlcyk7XG4gICAgICAgIGNvbnN0IGRvd24gPSB2YWx1ZXMuaW5kZXhPZihtaW4pIDwgdmFsdWVzLmluZGV4T2YobWF4KTtcbiAgICAgICAgY29uc3QgZGlmZiA9IG1heCAtIG1pbjtcblxuICAgICAgICBwb3NpdGlvbnNbcHJvcF0gPSBgJHsoZG93biA/IC1kaWZmIDogMCkgLSAoZG93biA/IG1pbiA6IG1heCl9cHhgO1xuICAgICAgICBkaW1FbFtwcm9wID09PSAnYmd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJ10gKz0gZGlmZjtcbiAgICB9XG5cbiAgICBjb25zdCBkaW0gPSBEaW1lbnNpb25zLmNvdmVyKGRpbUltYWdlLCBkaW1FbCk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgYmdQcm9wcykge1xuICAgICAgICBjb25zdCBhdHRyID0gcHJvcCA9PT0gJ2JneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IG92ZXJmbG93ID0gZGltW2F0dHJdIC0gZGltRWxbYXR0cl07XG4gICAgICAgIHBvc2l0aW9uc1twcm9wXSA9IGBtYXgoJHtnZXRCYWNrZ3JvdW5kUG9zKGVsLCBwcm9wKX0sLSR7b3ZlcmZsb3d9cHgpICsgJHtwb3NpdGlvbnNbcHJvcF19YDtcbiAgICB9XG5cbiAgICBjb25zdCBmbiA9IHNldEJhY2tncm91bmRQb3NGbihiZ1Byb3BzLCBwb3NpdGlvbnMsIHByb3BzKTtcbiAgICByZXR1cm4gKGNzcywgcGVyY2VudCkgPT4ge1xuICAgICAgICBmbihjc3MsIHBlcmNlbnQpO1xuICAgICAgICBjc3MuYmFja2dyb3VuZFNpemUgPSBgJHtkaW0ud2lkdGh9cHggJHtkaW0uaGVpZ2h0fXB4YDtcbiAgICAgICAgY3NzLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRCYWNrZ3JvdW5kUG9zKGVsLCBwcm9wKSB7XG4gICAgcmV0dXJuIGdldENzc1ZhbHVlKGVsLCBgYmFja2dyb3VuZC1wb3NpdGlvbi0ke3Byb3Auc3Vic3RyKC0xKX1gLCAnJyk7XG59XG5cbmZ1bmN0aW9uIHNldEJhY2tncm91bmRQb3NGbihiZ1Byb3BzLCBwb3NpdGlvbnMsIHByb3BzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjc3MsIHBlcmNlbnQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGJnUHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWUocHJvcHNbcHJvcF0sIHBlcmNlbnQpO1xuICAgICAgICAgICAgY3NzW2BiYWNrZ3JvdW5kLXBvc2l0aW9uLSR7cHJvcC5zdWJzdHIoLTEpfWBdID0gYGNhbGMoJHtwb3NpdGlvbnNbcHJvcF19ICsgJHt2YWx1ZX1weClgO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuY29uc3QgZGltZW5zaW9ucyA9IHt9O1xuZnVuY3Rpb24gZ2V0QmFja2dyb3VuZEltYWdlRGltZW5zaW9ucyhlbCkge1xuICAgIGNvbnN0IHNyYyA9IGNzcyhlbCwgJ2JhY2tncm91bmRJbWFnZScpLnJlcGxhY2UoL15ub25lfHVybFxcKFtcIiddPyguKz8pW1wiJ10/XFwpJC8sICckMScpO1xuXG4gICAgaWYgKGRpbWVuc2lvbnNbc3JjXSkge1xuICAgICAgICByZXR1cm4gZGltZW5zaW9uc1tzcmNdO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgaWYgKHNyYykge1xuICAgICAgICBpbWFnZS5zcmMgPSBzcmM7XG5cbiAgICAgICAgaWYgKCFpbWFnZS5uYXR1cmFsV2lkdGgpIHtcbiAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBkaW1lbnNpb25zW3NyY10gPSB0b0RpbWVuc2lvbnMoaW1hZ2UpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsIGNyZWF0ZUV2ZW50KCdsb2FkJywgZmFsc2UpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gdG9EaW1lbnNpb25zKGltYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoZGltZW5zaW9uc1tzcmNdID0gdG9EaW1lbnNpb25zKGltYWdlKSk7XG59XG5cbmZ1bmN0aW9uIHRvRGltZW5zaW9ucyhpbWFnZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBpbWFnZS5uYXR1cmFsV2lkdGgsXG4gICAgICAgIGhlaWdodDogaW1hZ2UubmF0dXJhbEhlaWdodCxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBwYXJzZVN0b3BzKHN0b3BzLCBmbiA9IHRvRmxvYXQpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBjb25zdCB7IGxlbmd0aCB9ID0gc3RvcHM7XG4gICAgbGV0IG51bGxJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgW3ZhbHVlLCBwZXJjZW50XSA9IGlzU3RyaW5nKHN0b3BzW2ldKVxuICAgICAgICAgICAgPyBzdG9wc1tpXS50cmltKCkuc3BsaXQoLyAoPyFbXihdKlxcKSkvKVxuICAgICAgICAgICAgOiBbc3RvcHNbaV1dO1xuICAgICAgICB2YWx1ZSA9IGZuKHZhbHVlKTtcbiAgICAgICAgcGVyY2VudCA9IHBlcmNlbnQgPyB0b0Zsb2F0KHBlcmNlbnQpIC8gMTAwIDogbnVsbDtcblxuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHBlcmNlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBwZXJjZW50ID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFt2YWx1ZSwgMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGlmIChwZXJjZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcGVyY2VudCA9IDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBlcmNlbnQgIT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbdmFsdWUsIHBlcmNlbnRdKTtcbiAgICAgICAgICAgICAgICBwZXJjZW50ID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5wdXNoKFt2YWx1ZSwgcGVyY2VudF0pO1xuXG4gICAgICAgIGlmIChwZXJjZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICBudWxsSW5kZXgrKztcbiAgICAgICAgfSBlbHNlIGlmIChudWxsSW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQZXJjZW50ID0gcmVzdWx0W2kgLSBudWxsSW5kZXggLSAxXVsxXTtcbiAgICAgICAgICAgIGNvbnN0IHAgPSAocGVyY2VudCAtIGxlZnRQZXJjZW50KSAvIChudWxsSW5kZXggKyAxKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBudWxsSW5kZXg7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaSAtIGpdWzFdID0gbGVmdFBlcmNlbnQgKyBwICogKG51bGxJbmRleCAtIGogKyAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbnVsbEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0b3Aoc3RvcHMsIHBlcmNlbnQpIHtcbiAgICBjb25zdCBpbmRleCA9IGZpbmRJbmRleChzdG9wcy5zbGljZSgxKSwgKFssIHRhcmdldFBlcmNlbnRdKSA9PiBwZXJjZW50IDw9IHRhcmdldFBlcmNlbnQpICsgMTtcbiAgICByZXR1cm4gW1xuICAgICAgICBzdG9wc1tpbmRleCAtIDFdWzBdLFxuICAgICAgICBzdG9wc1tpbmRleF1bMF0sXG4gICAgICAgIChwZXJjZW50IC0gc3RvcHNbaW5kZXggLSAxXVsxXSkgLyAoc3RvcHNbaW5kZXhdWzFdIC0gc3RvcHNbaW5kZXggLSAxXVsxXSksXG4gICAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUoc3RvcHMsIHBlcmNlbnQpIHtcbiAgICBjb25zdCBbc3RhcnQsIGVuZCwgcF0gPSBnZXRTdG9wKHN0b3BzLCBwZXJjZW50KTtcbiAgICByZXR1cm4gaXNOdW1iZXIoc3RhcnQpID8gc3RhcnQgKyBNYXRoLmFicyhzdGFydCAtIGVuZCkgKiBwICogKHN0YXJ0IDwgZW5kID8gMSA6IC0xKSA6ICtlbmQ7XG59XG5cbmNvbnN0IHVuaXRSZSA9IC9eLT9cXGQrKFxcUyspPy87XG5mdW5jdGlvbiBnZXRVbml0KHN0b3BzLCBkZWZhdWx0VW5pdCkge1xuICAgIGZvciAoY29uc3Qgc3RvcCBvZiBzdG9wcykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHN0b3AubWF0Y2g/Lih1bml0UmUpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaFsxXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFVuaXQ7XG59XG5cbmZ1bmN0aW9uIGdldENzc1ZhbHVlKGVsLCBwcm9wLCB2YWx1ZSkge1xuICAgIGNvbnN0IHByZXYgPSBlbC5zdHlsZVtwcm9wXTtcbiAgICBjb25zdCB2YWwgPSBjc3MoY3NzKGVsLCBwcm9wLCB2YWx1ZSksIHByb3ApO1xuICAgIGVsLnN0eWxlW3Byb3BdID0gcHJldjtcbiAgICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBmaWxsT2JqZWN0KGtleXMsIHZhbHVlKSB7XG4gICAgcmV0dXJuIGtleXMucmVkdWNlKChkYXRhLCBwcm9wKSA9PiB7XG4gICAgICAgIGRhdGFbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSwge30pO1xufVxuIiwiaW1wb3J0IFBhcmFsbGF4IGZyb20gJy4uL21peGluL3BhcmFsbGF4JztcbmltcG9ydCB7IHJlc2l6ZSwgc2Nyb2xsIH0gZnJvbSAnLi4vYXBpL29ic2VydmFibGVzJztcbmltcG9ydCB7IGNzcywgaXNWaXNpYmxlLCBwYXJlbnQsIHF1ZXJ5LCBzY3JvbGxlZE92ZXIsIHRvUHggfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW1BhcmFsbGF4XSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICB2aWV3cG9ydDogTnVtYmVyLCAvLyBEZXByZWNhdGVkXG4gICAgICAgIGVhc2luZzogTnVtYmVyLFxuICAgICAgICBzdGFydDogU3RyaW5nLFxuICAgICAgICBlbmQ6IFN0cmluZyxcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgICB2aWV3cG9ydDogMSxcbiAgICAgICAgZWFzaW5nOiAxLFxuICAgICAgICBzdGFydDogMCxcbiAgICAgICAgZW5kOiAwLFxuICAgIH0sXG5cbiAgICBjb21wdXRlZDoge1xuICAgICAgICB0YXJnZXQoeyB0YXJnZXQgfSwgJGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0T2Zmc2V0RWxlbWVudCgodGFyZ2V0ICYmIHF1ZXJ5KHRhcmdldCwgJGVsKSkgfHwgJGVsKTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGFydCh7IHN0YXJ0IH0pIHtcbiAgICAgICAgICAgIHJldHVybiB0b1B4KHN0YXJ0LCAnaGVpZ2h0JywgdGhpcy50YXJnZXQsIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVuZCh7IGVuZCwgdmlld3BvcnQgfSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvUHgoXG4gICAgICAgICAgICAgICAgZW5kIHx8ICgodmlld3BvcnQgPSAoMSAtIHZpZXdwb3J0KSAqIDEwMCkgJiYgYCR7dmlld3BvcnR9dmgrJHt2aWV3cG9ydH0lYCksXG4gICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXQsXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgb2JzZXJ2ZTogW1xuICAgICAgICByZXNpemUoe1xuICAgICAgICAgICAgdGFyZ2V0OiAoeyAkZWwsIHRhcmdldCB9KSA9PiBbJGVsLCB0YXJnZXRdLFxuICAgICAgICB9KSxcbiAgICAgICAgc2Nyb2xsKCksXG4gICAgXSxcblxuICAgIHVwZGF0ZToge1xuICAgICAgICByZWFkKHsgcGVyY2VudCB9LCB0eXBlcykge1xuICAgICAgICAgICAgaWYgKCF0eXBlcy5oYXMoJ3Njcm9sbCcpKSB7XG4gICAgICAgICAgICAgICAgcGVyY2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzVmlzaWJsZSh0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5tYXRjaE1lZGlhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gcGVyY2VudDtcbiAgICAgICAgICAgIHBlcmNlbnQgPSBlYXNlKHNjcm9sbGVkT3Zlcih0aGlzLnRhcmdldCwgdGhpcy5zdGFydCwgdGhpcy5lbmQpLCB0aGlzLmVhc2luZyk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcGVyY2VudCxcbiAgICAgICAgICAgICAgICBzdHlsZTogcHJldiA9PT0gcGVyY2VudCA/IGZhbHNlIDogdGhpcy5nZXRDc3MocGVyY2VudCksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHdyaXRlKHsgc3R5bGUgfSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoTWVkaWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdHlsZSAmJiBjc3ModGhpcy4kZWwsIHN0eWxlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ3Jlc2l6ZSddLFxuICAgIH0sXG59O1xuXG4vKlxuICogSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZ3JlLzE2NTAyOTQ/cGVybWFsaW5rX2NvbW1lbnRfaWQ9MzQ3NzQyNSNnaXN0Y29tbWVudC0zNDc3NDI1XG4gKlxuICogbGluZWFyOiAwXG4gKiBlYXNlSW5TaW5lOiAwLjVcbiAqIGVhc2VPdXRTaW5lOiAtMC41XG4gKiBlYXNlSW5RdWFkOiAxXG4gKiBlYXNlT3V0UXVhZDogLTFcbiAqIGVhc2VJbkN1YmljOiAyXG4gKiBlYXNlT3V0Q3ViaWM6IC0yXG4gKiBlYXNlSW5RdWFydDogM1xuICogZWFzZU91dFF1YXJ0OiAtM1xuICogZWFzZUluUXVpbnQ6IDRcbiAqIGVhc2VPdXRRdWludDogLTRcbiAqL1xuZnVuY3Rpb24gZWFzZShwZXJjZW50LCBlYXNpbmcpIHtcbiAgICByZXR1cm4gZWFzaW5nID49IDAgPyBNYXRoLnBvdyhwZXJjZW50LCBlYXNpbmcgKyAxKSA6IDEgLSBNYXRoLnBvdygxIC0gcGVyY2VudCwgMSAtIGVhc2luZyk7XG59XG5cbi8vIFNWRyBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBmcm9tIEhUTUxFbGVtZW50XG5mdW5jdGlvbiBnZXRPZmZzZXRFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsID8gKCdvZmZzZXRUb3AnIGluIGVsID8gZWwgOiBnZXRPZmZzZXRFbGVtZW50KHBhcmVudChlbCkpKSA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgICB1cGRhdGU6IHtcbiAgICAgICAgd3JpdGUoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggfHwgdGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldFZhbGlkSW5kZXgodGhpcy5pbmRleCk7XG5cbiAgICAgICAgICAgIGlmICghfnRoaXMucHJldkluZGV4IHx8IHRoaXMuaW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KGluZGV4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlKDEsIHRoaXMucHJldkluZGV4LCB0aGlzLmluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsncmVzaXplJ10sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQgeyBsYXp5bG9hZCB9IGZyb20gJy4uLy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBvYnNlcnZlOiBsYXp5bG9hZCh7XG4gICAgICAgIHRhcmdldDogKHsgc2xpZGVzIH0pID0+IHNsaWRlcyxcbiAgICAgICAgdGFyZ2V0czogKGluc3RhbmNlKSA9PiBpbnN0YW5jZS5nZXRBZGphY2VudFNsaWRlcygpLFxuICAgIH0pLFxufTtcbiIsImltcG9ydCB7IHRyYW5zbGF0ZSB9IGZyb20gJy4uLy4uL21peGluL2ludGVybmFsL3NsaWRlc2hvdy1hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgY2hpbGRyZW4sXG4gICAgY2xhbXAsXG4gICAgY3JlYXRlRXZlbnQsXG4gICAgY3NzLFxuICAgIERlZmVycmVkLFxuICAgIGRpbWVuc2lvbnMsXG4gICAgZmluZEluZGV4LFxuICAgIGluY2x1ZGVzLFxuICAgIGlzUnRsLFxuICAgIG5vb3AsXG4gICAgcG9zaXRpb24sXG4gICAgc3VtQnksXG4gICAgVHJhbnNpdGlvbixcbiAgICB0cmlnZ2VyLFxufSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHByZXYsIG5leHQsIGRpciwgeyBjZW50ZXIsIGVhc2luZywgbGlzdCB9KSB7XG4gICAgY29uc3QgZGVmZXJyZWQgPSBuZXcgRGVmZXJyZWQoKTtcblxuICAgIGNvbnN0IGZyb20gPSBwcmV2XG4gICAgICAgID8gZ2V0TGVmdChwcmV2LCBsaXN0LCBjZW50ZXIpXG4gICAgICAgIDogZ2V0TGVmdChuZXh0LCBsaXN0LCBjZW50ZXIpICsgZGltZW5zaW9ucyhuZXh0KS53aWR0aCAqIGRpcjtcbiAgICBjb25zdCB0byA9IG5leHRcbiAgICAgICAgPyBnZXRMZWZ0KG5leHQsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgOiBmcm9tICsgZGltZW5zaW9ucyhwcmV2KS53aWR0aCAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBkaXIsXG5cbiAgICAgICAgc2hvdyhkdXJhdGlvbiwgcGVyY2VudCA9IDAsIGxpbmVhcikge1xuICAgICAgICAgICAgY29uc3QgdGltaW5nID0gbGluZWFyID8gJ2xpbmVhcicgOiBlYXNpbmc7XG4gICAgICAgICAgICBkdXJhdGlvbiAtPSBNYXRoLnJvdW5kKGR1cmF0aW9uICogY2xhbXAocGVyY2VudCwgLTEsIDEpKTtcblxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgIHBlcmNlbnQgPSBwcmV2ID8gcGVyY2VudCA6IGNsYW1wKHBlcmNlbnQsIDAsIDEpO1xuICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSh0aGlzLmdldEl0ZW1JbigpLCAnaXRlbWluJywgeyBwZXJjZW50LCBkdXJhdGlvbiwgdGltaW5nLCBkaXIgfSk7XG4gICAgICAgICAgICBwcmV2ICYmXG4gICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSh0aGlzLmdldEl0ZW1Jbih0cnVlKSwgJ2l0ZW1vdXQnLCB7XG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IDEgLSBwZXJjZW50LFxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGltaW5nLFxuICAgICAgICAgICAgICAgICAgICBkaXIsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoXG4gICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC10byAqIChpc1J0bCA/IC0xIDogMSksICdweCcpIH0sXG4gICAgICAgICAgICAgICAgZHVyYXRpb24sXG4gICAgICAgICAgICAgICAgdGltaW5nXG4gICAgICAgICAgICApLnRoZW4oZGVmZXJyZWQucmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbCgpIHtcbiAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKGxpc3QpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgY3NzKGxpc3QsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZm9yd2FyZChkdXJhdGlvbiwgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpKSB7XG4gICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbChsaXN0KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3coZHVyYXRpb24sIHBlcmNlbnQsIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHRyYW5zbGF0ZShwZXJjZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UoKSAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICAgICAgICAgIGNzcyhcbiAgICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgICAgICAgY2xhbXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtdG8gKyAoZGlzdGFuY2UgLSBkaXN0YW5jZSAqIHBlcmNlbnQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLWdldFdpZHRoKGxpc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9ucyhsaXN0KS53aWR0aFxuICAgICAgICAgICAgICAgICAgICApICogKGlzUnRsID8gLTEgOiAxKSxcbiAgICAgICAgICAgICAgICAgICAgJ3B4J1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZXMgPSB0aGlzLmdldEFjdGl2ZXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbiA9IHRoaXMuZ2V0SXRlbUluKCk7XG4gICAgICAgICAgICBjb25zdCBpdGVtT3V0ID0gdGhpcy5nZXRJdGVtSW4odHJ1ZSk7XG5cbiAgICAgICAgICAgIHBlcmNlbnQgPSBwcmV2ID8gY2xhbXAocGVyY2VudCwgLTEsIDEpIDogMDtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBzbGlkZSBvZiBjaGlsZHJlbihsaXN0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzSW4gPSBzbGlkZSA9PT0gaXRlbUluO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0ID0gc2xpZGUgPT09IGl0ZW1PdXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRlSW4gPVxuICAgICAgICAgICAgICAgICAgICBpc0luIHx8XG4gICAgICAgICAgICAgICAgICAgICghaXNPdXQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChpc0FjdGl2ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXIgKiAoaXNSdGwgPyAtMSA6IDEpID09PSAtMSkgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0RWxMZWZ0KHNsaWRlLCBsaXN0KSA+IGdldEVsTGVmdChwcmV2IHx8IG5leHQpKSkpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZShzbGlkZSwgYGl0ZW10cmFuc2xhdGUke3RyYW5zbGF0ZUluID8gJ2luJyA6ICdvdXQnfWAsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgICAgICAgICBwZXJjZW50OiBpc091dCA/IDEgLSBwZXJjZW50IDogaXNJbiA/IHBlcmNlbnQgOiBpc0FjdGl2ZSA/IDEgOiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHBlcmNlbnQoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoXG4gICAgICAgICAgICAgICAgKGNzcyhsaXN0LCAndHJhbnNmb3JtJykuc3BsaXQoJywnKVs0XSAqIChpc1J0bCA/IC0xIDogMSkgKyBmcm9tKSAvICh0byAtIGZyb20pXG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldERpc3RhbmNlKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRvIC0gZnJvbSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0SXRlbUluKG91dCA9IGZhbHNlKSB7XG4gICAgICAgICAgICBsZXQgYWN0aXZlcyA9IHRoaXMuZ2V0QWN0aXZlcygpO1xuICAgICAgICAgICAgbGV0IG5leHRBY3RpdmVzID0gaW5WaWV3KGxpc3QsIGdldExlZnQobmV4dCB8fCBwcmV2LCBsaXN0LCBjZW50ZXIpKTtcblxuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXAgPSBhY3RpdmVzO1xuICAgICAgICAgICAgICAgIGFjdGl2ZXMgPSBuZXh0QWN0aXZlcztcbiAgICAgICAgICAgICAgICBuZXh0QWN0aXZlcyA9IHRlbXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXh0QWN0aXZlc1tmaW5kSW5kZXgobmV4dEFjdGl2ZXMsIChlbCkgPT4gIWluY2x1ZGVzKGFjdGl2ZXMsIGVsKSldO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldEFjdGl2ZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5WaWV3KGxpc3QsIGdldExlZnQocHJldiB8fCBuZXh0LCBsaXN0LCBjZW50ZXIpKTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZXRMZWZ0KGVsLCBsaXN0LCBjZW50ZXIpIHtcbiAgICBjb25zdCBsZWZ0ID0gZ2V0RWxMZWZ0KGVsLCBsaXN0KTtcblxuICAgIHJldHVybiBjZW50ZXIgPyBsZWZ0IC0gY2VudGVyRWwoZWwsIGxpc3QpIDogTWF0aC5taW4obGVmdCwgZ2V0TWF4KGxpc3QpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1heChsaXN0KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIGdldFdpZHRoKGxpc3QpIC0gZGltZW5zaW9ucyhsaXN0KS53aWR0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXaWR0aChsaXN0KSB7XG4gICAgcmV0dXJuIHN1bUJ5KGNoaWxkcmVuKGxpc3QpLCAoZWwpID0+IGRpbWVuc2lvbnMoZWwpLndpZHRoKTtcbn1cblxuZnVuY3Rpb24gY2VudGVyRWwoZWwsIGxpc3QpIHtcbiAgICByZXR1cm4gZGltZW5zaW9ucyhsaXN0KS53aWR0aCAvIDIgLSBkaW1lbnNpb25zKGVsKS53aWR0aCAvIDI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbExlZnQoZWwsIGxpc3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoZWwgJiZcbiAgICAgICAgICAgIChwb3NpdGlvbihlbCkubGVmdCArIChpc1J0bCA/IGRpbWVuc2lvbnMoZWwpLndpZHRoIC0gZGltZW5zaW9ucyhsaXN0KS53aWR0aCA6IDApKSAqXG4gICAgICAgICAgICAgICAgKGlzUnRsID8gLTEgOiAxKSkgfHxcbiAgICAgICAgMFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGluVmlldyhsaXN0LCBsaXN0TGVmdCkge1xuICAgIGxpc3RMZWZ0IC09IDE7XG4gICAgY29uc3QgbGlzdFdpZHRoID0gZGltZW5zaW9ucyhsaXN0KS53aWR0aDtcbiAgICBjb25zdCBsaXN0UmlnaHQgPSBsaXN0TGVmdCArIGxpc3RXaWR0aCArIDI7XG5cbiAgICByZXR1cm4gY2hpbGRyZW4obGlzdCkuZmlsdGVyKChzbGlkZSkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZUxlZnQgPSBnZXRFbExlZnQoc2xpZGUsIGxpc3QpO1xuICAgICAgICBjb25zdCBzbGlkZVJpZ2h0ID0gc2xpZGVMZWZ0ICsgTWF0aC5taW4oZGltZW5zaW9ucyhzbGlkZSkud2lkdGgsIGxpc3RXaWR0aCk7XG5cbiAgICAgICAgcmV0dXJuIHNsaWRlTGVmdCA+PSBsaXN0TGVmdCAmJiBzbGlkZVJpZ2h0IDw9IGxpc3RSaWdodDtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gdHJpZ2dlclVwZGF0ZShlbCwgdHlwZSwgZGF0YSkge1xuICAgIHRyaWdnZXIoZWwsIGNyZWF0ZUV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSwgZGF0YSkpO1xufVxuIiwiaW1wb3J0IENsYXNzIGZyb20gJy4uL21peGluL2NsYXNzJztcbmltcG9ydCB7IHJlc2l6ZSB9IGZyb20gJy4uL2FwaS9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgU2xpZGVyLCB7IHNwZWVkVXAgfSBmcm9tICcuLi9taXhpbi9zbGlkZXInO1xuaW1wb3J0IFNsaWRlclJlYWN0aXZlIGZyb20gJy4uL21peGluL3NsaWRlci1yZWFjdGl2ZSc7XG5pbXBvcnQgU2xpZGVyUHJlbG9hZCBmcm9tICcuL2ludGVybmFsL3NsaWRlci1wcmVsb2FkJztcbmltcG9ydCBUcmFuc2l0aW9uZXIsIHsgZ2V0TWF4LCBnZXRXaWR0aCB9IGZyb20gJy4vaW50ZXJuYWwvc2xpZGVyLXRyYW5zaXRpb25lcic7XG5pbXBvcnQge1xuICAgICQsXG4gICAgJCQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYXR0cixcbiAgICBjaGlsZHJlbixcbiAgICBjc3MsXG4gICAgZGF0YSxcbiAgICBkaW1lbnNpb25zLFxuICAgIGZpbmRJbmRleCxcbiAgICBnZXRJbmRleCxcbiAgICBoYXNPd24sXG4gICAgaW5jbHVkZXMsXG4gICAgaXNWaXNpYmxlLFxuICAgIGxhc3QsXG4gICAgc2VsRm9jdXNhYmxlLFxuICAgIHN1bUJ5LFxuICAgIHRvRmxvYXQsXG4gICAgdG9nZ2xlQ2xhc3MsXG4gICAgdG9OdW1iZXIsXG59IGZyb20gJ3Vpa2l0LXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgbWl4aW5zOiBbQ2xhc3MsIFNsaWRlciwgU2xpZGVyUmVhY3RpdmUsIFNsaWRlclByZWxvYWRdLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY2VudGVyOiBCb29sZWFuLFxuICAgICAgICBzZXRzOiBCb29sZWFuLFxuICAgIH0sXG5cbiAgICBkYXRhOiB7XG4gICAgICAgIGNlbnRlcjogZmFsc2UsXG4gICAgICAgIHNldHM6IGZhbHNlLFxuICAgICAgICBhdHRySXRlbTogJ3VrLXNsaWRlci1pdGVtJyxcbiAgICAgICAgc2VsTGlzdDogJy51ay1zbGlkZXItaXRlbXMnLFxuICAgICAgICBzZWxOYXY6ICcudWstc2xpZGVyLW5hdicsXG4gICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLXNsaWRlci1jb250YWluZXInLFxuICAgICAgICBUcmFuc2l0aW9uZXIsXG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIGF2Z1dpZHRoKCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldFdpZHRoKHRoaXMubGlzdCkgLyB0aGlzLmxlbmd0aDtcbiAgICAgICAgfSxcblxuICAgICAgICBmaW5pdGUoeyBmaW5pdGUgfSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbml0ZSB8fCBpc0Zpbml0ZSh0aGlzLmxpc3QsIHRoaXMuY2VudGVyKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtYXhJbmRleCgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5maW5pdGUgfHwgKHRoaXMuY2VudGVyICYmICF0aGlzLnNldHMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuY2VudGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3QodGhpcy5zZXRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGxmdCA9IDA7XG4gICAgICAgICAgICBjb25zdCBtYXggPSBnZXRNYXgodGhpcy5saXN0KTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZmluZEluZGV4KHRoaXMuc2xpZGVzLCAoZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobGZ0ID49IG1heCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZnQgKz0gZGltZW5zaW9ucyhlbCkud2lkdGg7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIH5pbmRleCA/IGluZGV4IDogdGhpcy5sZW5ndGggLSAxO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNldHMoeyBzZXRzOiBlbmFibGVkIH0pIHtcbiAgICAgICAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGxlZnQgPSAwO1xuICAgICAgICAgICAgY29uc3Qgc2V0cyA9IFtdO1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBkaW1lbnNpb25zKHRoaXMubGlzdCkud2lkdGg7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbGlkZVdpZHRoID0gZGltZW5zaW9ucyh0aGlzLnNsaWRlc1tpXSkud2lkdGg7XG5cbiAgICAgICAgICAgICAgICBpZiAobGVmdCArIHNsaWRlV2lkdGggPiB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA8IHdpZHRoIC8gMiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCArIHNsaWRlV2lkdGggKyBkaW1lbnNpb25zKHRoaXMuc2xpZGVzWytpICsgMV0pLndpZHRoIC8gMiA+IHdpZHRoIC8gMlxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHMucHVzaCgraSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gd2lkdGggLyAyIC0gc2xpZGVXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0cy5wdXNoKE1hdGgubWluKCtpLCB0aGlzLm1heEluZGV4KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGVmdCArPSBzbGlkZVdpZHRoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICB0cmFuc2l0aW9uT3B0aW9ucygpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY2VudGVyOiB0aGlzLmNlbnRlcixcbiAgICAgICAgICAgICAgICBsaXN0OiB0aGlzLmxpc3QsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHNsaWRlcygpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbih0aGlzLmxpc3QpLmZpbHRlcihpc1Zpc2libGUpO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBjb25uZWN0ZWQoKSB7XG4gICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0NvbnRhaW5lciwgISQoYC4ke3RoaXMuY2xzQ29udGFpbmVyfWAsIHRoaXMuJGVsKSk7XG4gICAgfSxcblxuICAgIG9ic2VydmU6IHJlc2l6ZSh7XG4gICAgICAgIHRhcmdldDogKHsgc2xpZGVzIH0pID0+IHNsaWRlcyxcbiAgICB9KSxcblxuICAgIHVwZGF0ZToge1xuICAgICAgICB3cml0ZSgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5uYXZJdGVtcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdG9OdW1iZXIoZGF0YShlbCwgdGhpcy5hdHRySXRlbSkpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuaGlkZGVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLm1heEluZGV4IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA+IHRoaXMubWF4SW5kZXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLnNldHMgJiYgIWluY2x1ZGVzKHRoaXMuc2V0cywgaW5kZXgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmxlbmd0aCAmJiAhdGhpcy5kcmFnZ2luZyAmJiAhdGhpcy5zdGFjay5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUoMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlQ2xhc3NlcygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogWydyZXNpemUnXSxcbiAgICB9LFxuXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIGJlZm9yZWl0ZW1zaG93KGUpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5kcmFnZ2luZyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0cyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2subGVuZ3RoIDwgMiAmJlxuICAgICAgICAgICAgICAgICFpbmNsdWRlcyh0aGlzLnNldHMsIHRoaXMuaW5kZXgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4IC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggK1xuICAgICAgICAgICAgICAgICAgICAoKHRoaXMuZGlyID4gMCAmJiB0aGlzLmluZGV4IDwgdGhpcy5wcmV2SW5kZXgpIHx8XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRpciA8IDAgJiYgdGhpcy5pbmRleCA+IHRoaXMucHJldkluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5tYXhJbmRleCArIDEpICogdGhpcy5kaXJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiBkaWZmID4gMSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2suc3BsaWNlKDEsIDAsIHRoaXMuZGlyID4gMCA/ICduZXh0JyA6ICdwcmV2aW91cycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID1cbiAgICAgICAgICAgICAgICB0aGlzLmRpciA8IDAgfHwgIXRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XSA/IHRoaXMuaW5kZXggOiB0aGlzLnByZXZJbmRleDtcbiAgICAgICAgICAgIHRoaXMuZHVyYXRpb24gPVxuICAgICAgICAgICAgICAgIHNwZWVkVXAodGhpcy5hdmdXaWR0aCAvIHRoaXMudmVsb2NpdHkpICpcbiAgICAgICAgICAgICAgICAoZGltZW5zaW9ucyh0aGlzLnNsaWRlc1tpbmRleF0pLndpZHRoIC8gdGhpcy5hdmdXaWR0aCk7XG5cbiAgICAgICAgICAgIHRoaXMucmVvcmRlcigpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGl0ZW1zaG93KCkge1xuICAgICAgICAgICAgaWYgKH50aGlzLnByZXZJbmRleCkge1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuX2dldFRyYW5zaXRpb25lcigpLmdldEl0ZW1JbigpLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgaXRlbXNob3duKCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVDbGFzc2VzKCk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgcmVvcmRlcigpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbml0ZSkge1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnNsaWRlcywgJ29yZGVyJywgJycpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRpciA+IDAgJiYgdGhpcy5zbGlkZXNbdGhpcy5wcmV2SW5kZXhdID8gdGhpcy5wcmV2SW5kZXggOiB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKChzbGlkZSwgaSkgPT5cbiAgICAgICAgICAgICAgICBjc3MoXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlLFxuICAgICAgICAgICAgICAgICAgICAnb3JkZXInLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciA+IDAgJiYgaSA8IGluZGV4ID8gMSA6IHRoaXMuZGlyIDwgMCAmJiBpID49IHRoaXMuaW5kZXggPyAtMSA6ICcnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmNlbnRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuc2xpZGVzW2luZGV4XTtcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IGRpbWVuc2lvbnModGhpcy5saXN0KS53aWR0aCAvIDIgLSBkaW1lbnNpb25zKG5leHQpLndpZHRoIC8gMjtcbiAgICAgICAgICAgIGxldCBqID0gMDtcblxuICAgICAgICAgICAgd2hpbGUgKHdpZHRoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSB0aGlzLmdldEluZGV4KC0taiArIGluZGV4LCBpbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2xpZGUgPSB0aGlzLnNsaWRlc1tzbGlkZUluZGV4XTtcblxuICAgICAgICAgICAgICAgIGNzcyhzbGlkZSwgJ29yZGVyJywgc2xpZGVJbmRleCA+IGluZGV4ID8gLTIgOiAtMSk7XG4gICAgICAgICAgICAgICAgd2lkdGggLT0gZGltZW5zaW9ucyhzbGlkZSkud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlQWN0aXZlQ2xhc3NlcygpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZXMgPSB0aGlzLl9nZXRUcmFuc2l0aW9uZXIodGhpcy5pbmRleCkuZ2V0QWN0aXZlcygpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ2xhc3NlcyA9IFtcbiAgICAgICAgICAgICAgICB0aGlzLmNsc0FjdGl2ZSxcbiAgICAgICAgICAgICAgICAoKCF0aGlzLnNldHMgfHwgaW5jbHVkZXModGhpcy5zZXRzLCB0b0Zsb2F0KHRoaXMuaW5kZXgpKSkgJiYgdGhpcy5jbHNBY3RpdmF0ZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2xpZGUgb2YgdGhpcy5zbGlkZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpbmNsdWRlcyhhY3RpdmVzLCBzbGlkZSk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIGFjdGl2ZUNsYXNzZXMsIGFjdGl2ZSk7XG4gICAgICAgICAgICAgICAgYXR0cihzbGlkZSwgJ2FyaWEtaGlkZGVuJywgIWFjdGl2ZSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmb2N1c2FibGUgb2YgJCQoc2VsRm9jdXNhYmxlLCBzbGlkZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oZm9jdXNhYmxlLCAnX3RhYmluZGV4JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZS5fdGFiaW5kZXggPSBhdHRyKGZvY3VzYWJsZSwgJ3RhYmluZGV4Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXR0cihmb2N1c2FibGUsICd0YWJpbmRleCcsIGFjdGl2ZSA/IGZvY3VzYWJsZS5fdGFiaW5kZXggOiAtMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGdldFZhbGlkSW5kZXgoaW5kZXggPSB0aGlzLmluZGV4LCBwcmV2SW5kZXggPSB0aGlzLnByZXZJbmRleCkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLmdldEluZGV4KGluZGV4LCBwcmV2SW5kZXgpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2V0cykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHByZXY7XG5cbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXModGhpcy5zZXRzLCBpbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHByZXYgPSBpbmRleDtcbiAgICAgICAgICAgICAgICBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoaW5kZXggKyB0aGlzLmRpciwgcHJldkluZGV4KTtcbiAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4ICE9PSBwcmV2KTtcblxuICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9LFxuXG4gICAgICAgIGdldEFkamFjZW50U2xpZGVzKCkge1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gZGltZW5zaW9ucyh0aGlzLmxpc3QpO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IC13aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gd2lkdGggKiAyO1xuICAgICAgICAgICAgY29uc3Qgc2xpZGVXaWR0aCA9IGRpbWVuc2lvbnModGhpcy5zbGlkZXNbdGhpcy5pbmRleF0pLndpZHRoO1xuICAgICAgICAgICAgY29uc3Qgc2xpZGVMZWZ0ID0gdGhpcy5jZW50ZXIgPyB3aWR0aCAvIDIgLSBzbGlkZVdpZHRoIC8gMiA6IDA7XG4gICAgICAgICAgICBjb25zdCBzbGlkZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgWy0xLCAxXSkge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50TGVmdCA9IHNsaWRlTGVmdCArIChpID4gMCA/IHNsaWRlV2lkdGggOiAwKTtcbiAgICAgICAgICAgICAgICBsZXQgaiA9IDA7XG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzbGlkZSA9IHRoaXMuc2xpZGVzW3RoaXMuZ2V0SW5kZXgodGhpcy5pbmRleCArIGkgKyBqKysgKiBpKV07XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRMZWZ0ICs9IGRpbWVuc2lvbnMoc2xpZGUpLndpZHRoICogaTtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzLmFkZChzbGlkZSk7XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAodGhpcy5sZW5ndGggPiBqICYmIGN1cnJlbnRMZWZ0ID4gbGVmdCAmJiBjdXJyZW50TGVmdCA8IHJpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHNsaWRlcyk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIGlzRmluaXRlKGxpc3QsIGNlbnRlcikge1xuICAgIGlmICghbGlzdCB8fCBsaXN0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aDogbGlzdFdpZHRoIH0gPSBkaW1lbnNpb25zKGxpc3QpO1xuICAgIGlmICghY2VudGVyKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoZ2V0V2lkdGgobGlzdCkpIDwgTWF0aC50cnVuYyhsaXN0V2lkdGggKyBnZXRNYXhFbFdpZHRoKGxpc3QpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzbGlkZXMgPSBjaGlsZHJlbihsaXN0KTtcbiAgICBjb25zdCBsaXN0SGFsZiA9IE1hdGgudHJ1bmMobGlzdFdpZHRoIC8gMik7XG4gICAgZm9yIChjb25zdCBpbmRleCBpbiBzbGlkZXMpIHtcbiAgICAgICAgY29uc3Qgc2xpZGUgPSBzbGlkZXNbaW5kZXhdO1xuICAgICAgICBjb25zdCBzbGlkZVdpZHRoID0gZGltZW5zaW9ucyhzbGlkZSkud2lkdGg7XG4gICAgICAgIGNvbnN0IHNsaWRlc0luVmlldyA9IG5ldyBTZXQoW3NsaWRlXSk7XG5cbiAgICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgWy0xLCAxXSkge1xuICAgICAgICAgICAgbGV0IGxlZnQgPSBzbGlkZVdpZHRoIC8gMjtcblxuICAgICAgICAgICAgbGV0IGogPSAwO1xuXG4gICAgICAgICAgICB3aGlsZSAobGVmdCA8IGxpc3RIYWxmKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFNsaWRlID0gc2xpZGVzW2dldEluZGV4KCtpbmRleCArIGkgKyBqKysgKiBpLCBzbGlkZXMpXTtcblxuICAgICAgICAgICAgICAgIGlmIChzbGlkZXNJblZpZXcuaGFzKG5leHRTbGlkZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGVmdCArPSBkaW1lbnNpb25zKG5leHRTbGlkZSkud2lkdGg7XG4gICAgICAgICAgICAgICAgc2xpZGVzSW5WaWV3LmFkZChuZXh0U2xpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlmZiA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgIGRpZmYsXG4gICAgICAgICAgICAgICAgc2xpZGVXaWR0aCAvIDIgK1xuICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zKHNsaWRlc1tnZXRJbmRleCgraW5kZXggKyBpLCBzbGlkZXMpXSkud2lkdGggLyAyIC1cbiAgICAgICAgICAgICAgICAgICAgKGxlZnQgLSBsaXN0SGFsZilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBkaWZmID5cbiAgICAgICAgICAgIHN1bUJ5KFxuICAgICAgICAgICAgICAgIHNsaWRlcy5maWx0ZXIoKHNsaWRlKSA9PiAhc2xpZGVzSW5WaWV3LmhhcyhzbGlkZSkpLFxuICAgICAgICAgICAgICAgIChzbGlkZSkgPT4gZGltZW5zaW9ucyhzbGlkZSkud2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0TWF4RWxXaWR0aChsaXN0KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIC4uLmNoaWxkcmVuKGxpc3QpLm1hcCgoZWwpID0+IGRpbWVuc2lvbnMoZWwpLndpZHRoKSk7XG59XG4iLCJpbXBvcnQgUGFyYWxsYXggZnJvbSAnLi4vbWl4aW4vcGFyYWxsYXgnO1xuaW1wb3J0IHsgY3NzLCBlbmRzV2l0aCwgZmFzdGRvbSwgbm9vcCwgcXVlcnksIFRyYW5zaXRpb24gfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW1BhcmFsbGF4XSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgc2VsSXRlbTogJyFsaScsXG4gICAgfSxcblxuICAgIGJlZm9yZUNvbm5lY3QoKSB7XG4gICAgICAgIHRoaXMuaXRlbSA9IHF1ZXJ5KHRoaXMuc2VsSXRlbSwgdGhpcy4kZWwpO1xuICAgIH0sXG5cbiAgICBkaXNjb25uZWN0ZWQoKSB7XG4gICAgICAgIHRoaXMuaXRlbSA9IG51bGw7XG4gICAgfSxcblxuICAgIGV2ZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnaXRlbWluIGl0ZW1vdXQnLFxuXG4gICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICBlbCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFuZGxlcih7IHR5cGUsIGRldGFpbDogeyBwZXJjZW50LCBkdXJhdGlvbiwgdGltaW5nLCBkaXIgfSB9KSB7XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5yZWFkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1hdGNoTWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzRnJvbSA9IHRoaXMuZ2V0Q3NzKGdldEN1cnJlbnRQZXJjZW50KHR5cGUsIGRpciwgcGVyY2VudCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wc1RvID0gdGhpcy5nZXRDc3MoaXNJbih0eXBlKSA/IDAuNSA6IGRpciA+IDAgPyAxIDogMCk7XG4gICAgICAgICAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCBwcm9wc0Zyb20pO1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCh0aGlzLiRlbCwgcHJvcHNUbywgZHVyYXRpb24sIHRpbWluZykuY2F0Y2gobm9vcCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndHJhbnNpdGlvbmNhbmNlbGVkIHRyYW5zaXRpb25lbmQnLFxuXG4gICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICBlbCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFuZGxlcigpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdpdGVtdHJhbnNsYXRlaW4gaXRlbXRyYW5zbGF0ZW91dCcsXG5cbiAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgIGVsKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoYW5kbGVyKHsgdHlwZSwgZGV0YWlsOiB7IHBlcmNlbnQsIGRpciB9IH0pIHtcbiAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWF0Y2hNZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLmdldENzcyhnZXRDdXJyZW50UGVyY2VudCh0eXBlLCBkaXIsIHBlcmNlbnQpKTtcbiAgICAgICAgICAgICAgICAgICAgZmFzdGRvbS53cml0ZSgoKSA9PiBjc3ModGhpcy4kZWwsIHByb3BzKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuXG5mdW5jdGlvbiBpc0luKHR5cGUpIHtcbiAgICByZXR1cm4gZW5kc1dpdGgodHlwZSwgJ2luJyk7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRQZXJjZW50KHR5cGUsIGRpciwgcGVyY2VudCkge1xuICAgIHBlcmNlbnQgLz0gMjtcblxuICAgIHJldHVybiBpc0luKHR5cGUpIF4gKGRpciA8IDApID8gcGVyY2VudCA6IDEgLSBwZXJjZW50O1xufVxuIiwiaW1wb3J0IEFuaW1hdGlvbnMsIHtcbiAgICBzY2FsZTNkLFxuICAgIHRyYW5zbGF0ZSxcbiAgICB0cmFuc2xhdGVkLFxufSBmcm9tICcuLi8uLi9taXhpbi9pbnRlcm5hbC9zbGlkZXNob3ctYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIC4uLkFuaW1hdGlvbnMsXG4gICAgZmFkZToge1xuICAgICAgICBzaG93KCkge1xuICAgICAgICAgICAgcmV0dXJuIFt7IG9wYWNpdHk6IDAsIHpJbmRleDogMCB9LCB7IHpJbmRleDogLTEgfV07XG4gICAgICAgIH0sXG5cbiAgICAgICAgcGVyY2VudChjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gMSAtIGNzcyhjdXJyZW50LCAnb3BhY2l0eScpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHRyYW5zbGF0ZShwZXJjZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgb3BhY2l0eTogMSAtIHBlcmNlbnQsIHpJbmRleDogMCB9LCB7IHpJbmRleDogLTEgfV07XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHNjYWxlOiB7XG4gICAgICAgIHNob3coKSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAwLjUpLCB6SW5kZXg6IDAgfSwgeyB6SW5kZXg6IC0xIH1dO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBlcmNlbnQoY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgfSxcblxuICAgICAgICB0cmFuc2xhdGUocGVyY2VudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB7IG9wYWNpdHk6IDEgLSBwZXJjZW50LCB0cmFuc2Zvcm06IHNjYWxlM2QoMSArIDAuNSAqIHBlcmNlbnQpLCB6SW5kZXg6IDAgfSxcbiAgICAgICAgICAgICAgICB7IHpJbmRleDogLTEgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHB1bGw6IHtcbiAgICAgICAgc2hvdyhkaXIpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCksIHpJbmRleDogLTEgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCksIHpJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAtMSB9LFxuICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcblxuICAgICAgICBwZXJjZW50KGN1cnJlbnQsIG5leHQsIGRpcikge1xuICAgICAgICAgICAgcmV0dXJuIGRpciA8IDAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KSA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdHJhbnNsYXRlKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDMwICogcGVyY2VudCksIHpJbmRleDogLTEgfSxcbiAgICAgICAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwIH0sXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtcGVyY2VudCAqIDEwMCksIHpJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMzAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAtMSB9LFxuICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgcHVzaDoge1xuICAgICAgICBzaG93KGRpcikge1xuICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMCksIHpJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAtMSB9LFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwKSwgekluZGV4OiAtMSB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAwIH0sXG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBlcmNlbnQoY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlyID4gMCA/IDEgLSB0cmFuc2xhdGVkKG5leHQpIDogdHJhbnNsYXRlZChjdXJyZW50KTtcbiAgICAgICAgfSxcblxuICAgICAgICB0cmFuc2xhdGUocGVyY2VudCwgZGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUocGVyY2VudCAqIDEwMCksIHpJbmRleDogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwICogKDEgLSBwZXJjZW50KSksIHpJbmRleDogLTEgfSxcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqIHBlcmNlbnQpLCB6SW5kZXg6IC0xIH0sXG4gICAgICAgICAgICAgICAgICAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwIH0sXG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuIiwiaW1wb3J0IENsYXNzIGZyb20gJy4uL21peGluL2NsYXNzJztcbmltcG9ydCBTbGlkZXNob3cgZnJvbSAnLi4vbWl4aW4vc2xpZGVzaG93JztcbmltcG9ydCBBbmltYXRpb25zIGZyb20gJy4vaW50ZXJuYWwvc2xpZGVzaG93LWFuaW1hdGlvbnMnO1xuaW1wb3J0IFNsaWRlclJlYWN0aXZlIGZyb20gJy4uL21peGluL3NsaWRlci1yZWFjdGl2ZSc7XG5pbXBvcnQgU2xpZGVyUHJlbG9hZCBmcm9tICcuL2ludGVybmFsL3NsaWRlci1wcmVsb2FkJztcbmltcG9ydCB7IGJveE1vZGVsQWRqdXN0LCBjc3MgfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW0NsYXNzLCBTbGlkZXNob3csIFNsaWRlclJlYWN0aXZlLCBTbGlkZXJQcmVsb2FkXSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIHJhdGlvOiBTdHJpbmcsXG4gICAgICAgIG1pbkhlaWdodDogTnVtYmVyLFxuICAgICAgICBtYXhIZWlnaHQ6IE51bWJlcixcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICByYXRpbzogJzE2OjknLFxuICAgICAgICBtaW5IZWlnaHQ6IGZhbHNlLFxuICAgICAgICBtYXhIZWlnaHQ6IGZhbHNlLFxuICAgICAgICBzZWxMaXN0OiAnLnVrLXNsaWRlc2hvdy1pdGVtcycsXG4gICAgICAgIGF0dHJJdGVtOiAndWstc2xpZGVzaG93LWl0ZW0nLFxuICAgICAgICBzZWxOYXY6ICcudWstc2xpZGVzaG93LW5hdicsXG4gICAgICAgIEFuaW1hdGlvbnMsXG4gICAgfSxcblxuICAgIHVwZGF0ZToge1xuICAgICAgICByZWFkKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBbd2lkdGgsIGhlaWdodF0gPSB0aGlzLnJhdGlvLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG5cbiAgICAgICAgICAgIGhlaWdodCA9IChoZWlnaHQgKiB0aGlzLmxpc3Qub2Zmc2V0V2lkdGgpIC8gd2lkdGggfHwgMDtcblxuICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5taW5IZWlnaHQsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgIGhlaWdodCA9IE1hdGgubWluKHRoaXMubWF4SGVpZ2h0LCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyBoZWlnaHQ6IGhlaWdodCAtIGJveE1vZGVsQWRqdXN0KHRoaXMubGlzdCwgJ2hlaWdodCcsICdjb250ZW50LWJveCcpIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgd3JpdGUoeyBoZWlnaHQgfSkge1xuICAgICAgICAgICAgaGVpZ2h0ID4gMCAmJiBjc3ModGhpcy5saXN0LCAnbWluSGVpZ2h0JywgaGVpZ2h0KTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsncmVzaXplJ10sXG4gICAgfSxcblxuICAgIG1ldGhvZHM6IHtcbiAgICAgICAgZ2V0QWRqYWNlbnRTbGlkZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gWzEsIC0xXS5tYXAoKGkpID0+IHRoaXMuc2xpZGVzW3RoaXMuZ2V0SW5kZXgodGhpcy5pbmRleCArIGkpXSk7XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iLCJpbXBvcnQgQW5pbWF0ZSBmcm9tICcuLi9taXhpbi9hbmltYXRlJztcbmltcG9ydCBDbGFzcyBmcm9tICcuLi9taXhpbi9jbGFzcyc7XG5pbXBvcnQge1xuICAgICQsXG4gICAgJCQsXG4gICAgYWRkQ2xhc3MsXG4gICAgYXBwZW5kLFxuICAgIGFzc2lnbixcbiAgICBhdHRyLFxuICAgIGJlZm9yZSxcbiAgICBjaGlsZHJlbixcbiAgICBjc3MsXG4gICAgZmluZEluZGV4LFxuICAgIGdldEV2ZW50UG9zLFxuICAgIGhhc1RvdWNoLFxuICAgIGhlaWdodCxcbiAgICBpbmRleCxcbiAgICBpc0VtcHR5LFxuICAgIGlzSW5wdXQsXG4gICAgaXNUYWcsXG4gICAgb2ZmLFxuICAgIG9mZnNldFZpZXdwb3J0LFxuICAgIG9uLFxuICAgIHBhcmVudCxcbiAgICBwb2ludGVyRG93bixcbiAgICBwb2ludGVyTW92ZSxcbiAgICBwb2ludGVyVXAsXG4gICAgcG9pbnRJblJlY3QsXG4gICAgcmVtb3ZlLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHNjcm9sbFBhcmVudHMsXG4gICAgdG9nZ2xlQ2xhc3MsXG4gICAgVHJhbnNpdGlvbixcbiAgICB0cmlnZ2VyLFxuICAgIHdpdGhpbixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtDbGFzcywgQW5pbWF0ZV0sXG5cbiAgICBwcm9wczoge1xuICAgICAgICBncm91cDogU3RyaW5nLFxuICAgICAgICB0aHJlc2hvbGQ6IE51bWJlcixcbiAgICAgICAgY2xzSXRlbTogU3RyaW5nLFxuICAgICAgICBjbHNQbGFjZWhvbGRlcjogU3RyaW5nLFxuICAgICAgICBjbHNEcmFnOiBTdHJpbmcsXG4gICAgICAgIGNsc0RyYWdTdGF0ZTogU3RyaW5nLFxuICAgICAgICBjbHNCYXNlOiBTdHJpbmcsXG4gICAgICAgIGNsc05vRHJhZzogU3RyaW5nLFxuICAgICAgICBjbHNFbXB0eTogU3RyaW5nLFxuICAgICAgICBjbHNDdXN0b206IFN0cmluZyxcbiAgICAgICAgaGFuZGxlOiBTdHJpbmcsXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgZ3JvdXA6IGZhbHNlLFxuICAgICAgICB0aHJlc2hvbGQ6IDUsXG4gICAgICAgIGNsc0l0ZW06ICd1ay1zb3J0YWJsZS1pdGVtJyxcbiAgICAgICAgY2xzUGxhY2Vob2xkZXI6ICd1ay1zb3J0YWJsZS1wbGFjZWhvbGRlcicsXG4gICAgICAgIGNsc0RyYWc6ICd1ay1zb3J0YWJsZS1kcmFnJyxcbiAgICAgICAgY2xzRHJhZ1N0YXRlOiAndWstZHJhZycsXG4gICAgICAgIGNsc0Jhc2U6ICd1ay1zb3J0YWJsZScsXG4gICAgICAgIGNsc05vRHJhZzogJ3VrLXNvcnRhYmxlLW5vZHJhZycsXG4gICAgICAgIGNsc0VtcHR5OiAndWstc29ydGFibGUtZW1wdHknLFxuICAgICAgICBjbHNDdXN0b206ICcnLFxuICAgICAgICBoYW5kbGU6IGZhbHNlLFxuICAgICAgICBwb3M6IHt9LFxuICAgIH0sXG5cbiAgICBjcmVhdGVkKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBbJ2luaXQnLCAnc3RhcnQnLCAnbW92ZScsICdlbmQnXSkge1xuICAgICAgICAgICAgY29uc3QgZm4gPSB0aGlzW2tleV07XG4gICAgICAgICAgICB0aGlzW2tleV0gPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzLnBvcywgZ2V0RXZlbnRQb3MoZSkpO1xuICAgICAgICAgICAgICAgIGZuKGUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBldmVudHM6IHtcbiAgICAgICAgbmFtZTogcG9pbnRlckRvd24sXG4gICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgICBoYW5kbGVyOiAnaW5pdCcsXG4gICAgfSxcblxuICAgIGNvbXB1dGVkOiB7XG4gICAgICAgIHRhcmdldCgpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy4kZWwudEJvZGllcyB8fCBbdGhpcy4kZWxdKVswXTtcbiAgICAgICAgfSxcblxuICAgICAgICBpdGVtcygpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbih0aGlzLnRhcmdldCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaXNFbXB0eSgpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0VtcHR5KHRoaXMuaXRlbXMpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGhhbmRsZXMoeyBoYW5kbGUgfSwgZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGUgPyAkJChoYW5kbGUsIGVsKSA6IHRoaXMuaXRlbXM7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHdhdGNoOiB7XG4gICAgICAgIGlzRW1wdHkoZW1wdHkpIHtcbiAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLmNsc0VtcHR5LCBlbXB0eSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaGFuZGxlcyhoYW5kbGVzLCBwcmV2KSB7XG4gICAgICAgICAgICBjc3MocHJldiwgeyB0b3VjaEFjdGlvbjogJycsIHVzZXJTZWxlY3Q6ICcnIH0pO1xuICAgICAgICAgICAgY3NzKGhhbmRsZXMsIHsgdG91Y2hBY3Rpb246IGhhc1RvdWNoID8gJ25vbmUnIDogJycsIHVzZXJTZWxlY3Q6ICdub25lJyB9KTsgLy8gdG91Y2hBY3Rpb24gc2V0IHRvICdub25lJyBjYXVzZXMgYSBwZXJmb3JtYW5jZSBkcm9wIGluIENocm9tZSA4MFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICB1cGRhdGU6IHtcbiAgICAgICAgd3JpdGUoZGF0YSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcgfHwgIXBhcmVudCh0aGlzLnBsYWNlaG9sZGVyKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIHBvczogeyB4LCB5IH0sXG4gICAgICAgICAgICAgICAgb3JpZ2luOiB7IG9mZnNldFRvcCwgb2Zmc2V0TGVmdCB9LFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgIGNzcyh0aGlzLmRyYWcsIHtcbiAgICAgICAgICAgICAgICB0b3A6IHkgLSBvZmZzZXRUb3AsXG4gICAgICAgICAgICAgICAgbGVmdDogeCAtIG9mZnNldExlZnQsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3Qgc29ydGFibGUgPSB0aGlzLmdldFNvcnRhYmxlKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSkpO1xuXG4gICAgICAgICAgICBpZiAoIXNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7IGl0ZW1zIH0gPSBzb3J0YWJsZTtcblxuICAgICAgICAgICAgaWYgKGl0ZW1zLnNvbWUoVHJhbnNpdGlvbi5pblByb2dyZXNzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZmluZFRhcmdldChpdGVtcywgeyB4LCB5IH0pO1xuXG4gICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoICYmICghdGFyZ2V0IHx8IHRhcmdldCA9PT0gcGxhY2Vob2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZ2V0U29ydGFibGUocGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0VGFyZ2V0ID0gZmluZEluc2VydFRhcmdldChcbiAgICAgICAgICAgICAgICBzb3J0YWJsZS50YXJnZXQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgeSxcbiAgICAgICAgICAgICAgICBzb3J0YWJsZSA9PT0gcHJldmlvdXMgJiYgZGF0YS5tb3ZlZCAhPT0gdGFyZ2V0XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaW5zZXJ0VGFyZ2V0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGluc2VydFRhcmdldCAmJiBwbGFjZWhvbGRlciA9PT0gaW5zZXJ0VGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc29ydGFibGUgIT09IHByZXZpb3VzKSB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXMucmVtb3ZlKHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICBkYXRhLm1vdmVkID0gdGFyZ2V0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YS5tb3ZlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc29ydGFibGUuaW5zZXJ0KHBsYWNlaG9sZGVyLCBpbnNlcnRUYXJnZXQpO1xuXG4gICAgICAgICAgICB0aGlzLnRvdWNoZWQuYWRkKHNvcnRhYmxlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFsnbW92ZSddLFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGluaXQoZSkge1xuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXQsIGJ1dHRvbiwgZGVmYXVsdFByZXZlbnRlZCB9ID0gZTtcbiAgICAgICAgICAgIGNvbnN0IFtwbGFjZWhvbGRlcl0gPSB0aGlzLml0ZW1zLmZpbHRlcigoZWwpID0+IHdpdGhpbih0YXJnZXQsIGVsKSk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhcGxhY2Vob2xkZXIgfHxcbiAgICAgICAgICAgICAgICBkZWZhdWx0UHJldmVudGVkIHx8XG4gICAgICAgICAgICAgICAgYnV0dG9uID4gMCB8fFxuICAgICAgICAgICAgICAgIGlzSW5wdXQodGFyZ2V0KSB8fFxuICAgICAgICAgICAgICAgIHdpdGhpbih0YXJnZXQsIGAuJHt0aGlzLmNsc05vRHJhZ31gKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmhhbmRsZSAmJiAhd2l0aGluKHRhcmdldCwgdGhpcy5oYW5kbGUpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHRoaXMudG91Y2hlZCA9IG5ldyBTZXQoW3RoaXNdKTtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luID0geyB0YXJnZXQsIGluZGV4OiBpbmRleChwbGFjZWhvbGRlciksIC4uLnRoaXMucG9zIH07XG5cbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlKTtcbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnRocmVzaG9sZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhcnQoZSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnID0gYXBwZW5kRHJhZyh0aGlzLiRjb250YWluZXIsIHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IHRoaXMucGxhY2Vob2xkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBhc3NpZ24odGhpcy5vcmlnaW4sIHsgb2Zmc2V0TGVmdDogdGhpcy5wb3MueCAtIGxlZnQsIG9mZnNldFRvcDogdGhpcy5wb3MueSAtIHRvcCB9KTtcblxuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5kcmFnLCB0aGlzLmNsc0RyYWcsIHRoaXMuY2xzQ3VzdG9tKTtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGxhY2Vob2xkZXIsIHRoaXMuY2xzUGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5pdGVtcywgdGhpcy5jbHNJdGVtKTtcbiAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnc3RhcnQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuXG4gICAgICAgICAgICB0cmFja1Njcm9sbCh0aGlzLnBvcyk7XG5cbiAgICAgICAgICAgIHRoaXMubW92ZShlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtb3ZlKGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCdtb3ZlJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIE1hdGguYWJzKHRoaXMucG9zLnggLSB0aGlzLm9yaWdpbi54KSA+IHRoaXMudGhyZXNob2xkIHx8XG4gICAgICAgICAgICAgICAgTWF0aC5hYnModGhpcy5wb3MueSAtIHRoaXMub3JpZ2luLnkpID4gdGhpcy50aHJlc2hvbGRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZW5kKCkge1xuICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlKTtcbiAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlclVwLCB0aGlzLmVuZCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1bnRyYWNrU2Nyb2xsKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNvcnRhYmxlID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMgPT09IHNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3JpZ2luLmluZGV4ICE9PSBpbmRleCh0aGlzLnBsYWNlaG9sZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnbW92ZWQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcihzb3J0YWJsZS4kZWwsICdhZGRlZCcsIFtzb3J0YWJsZSwgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdyZW1vdmVkJywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0b3AnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuXG4gICAgICAgICAgICByZW1vdmUodGhpcy5kcmFnKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZyA9IG51bGw7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBjbHNQbGFjZWhvbGRlciwgY2xzSXRlbSB9IG9mIHRoaXMudG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc29ydGFibGUgb2YgdGhpcy50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHNvcnRhYmxlLml0ZW1zLCBjbHNQbGFjZWhvbGRlciwgY2xzSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50b3VjaGVkID0gbnVsbDtcbiAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGluc2VydChlbGVtZW50LCB0YXJnZXQpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuaXRlbXMsIHRoaXMuY2xzSXRlbSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluc2VydCA9ICgpID0+ICh0YXJnZXQgPyBiZWZvcmUodGFyZ2V0LCBlbGVtZW50KSA6IGFwcGVuZCh0aGlzLnRhcmdldCwgZWxlbWVudCkpO1xuXG4gICAgICAgICAgICB0aGlzLmFuaW1hdGUoaW5zZXJ0KTtcbiAgICAgICAgfSxcblxuICAgICAgICByZW1vdmUoZWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKCF3aXRoaW4oZWxlbWVudCwgdGhpcy50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFuaW1hdGUoKCkgPT4gcmVtb3ZlKGVsZW1lbnQpKTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRTb3J0YWJsZShlbGVtZW50KSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydGFibGUgPSB0aGlzLiRnZXRDb21wb25lbnQoZWxlbWVudCwgJ3NvcnRhYmxlJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgIChzb3J0YWJsZSA9PT0gdGhpcyB8fCAodGhpcy5ncm91cCAhPT0gZmFsc2UgJiYgc29ydGFibGUuZ3JvdXAgPT09IHRoaXMuZ3JvdXApKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29ydGFibGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAoKGVsZW1lbnQgPSBwYXJlbnQoZWxlbWVudCkpKTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxubGV0IHRyYWNrVGltZXI7XG5mdW5jdGlvbiB0cmFja1Njcm9sbChwb3MpIHtcbiAgICBsZXQgbGFzdCA9IERhdGUubm93KCk7XG4gICAgdHJhY2tUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgbGV0IHsgeCwgeSB9ID0gcG9zO1xuICAgICAgICB5ICs9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wO1xuXG4gICAgICAgIGNvbnN0IGRpc3QgPSAoRGF0ZS5ub3coKSAtIGxhc3QpICogMC4zO1xuICAgICAgICBsYXN0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICBzY3JvbGxQYXJlbnRzKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgcG9zLnkpKVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLnNvbWUoKHNjcm9sbEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHsgc2Nyb2xsVG9wOiBzY3JvbGwsIHNjcm9sbEhlaWdodCB9ID0gc2Nyb2xsRWw7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7IHRvcCwgYm90dG9tLCBoZWlnaHQgfSA9IG9mZnNldFZpZXdwb3J0KHNjcm9sbEVsKTtcblxuICAgICAgICAgICAgICAgIGlmICh0b3AgPCB5ICYmIHRvcCArIDM1ID4geSkge1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgLT0gZGlzdDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvdHRvbSA+IHkgJiYgYm90dG9tIC0gMzUgPCB5KSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbCArPSBkaXN0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsID4gMCAmJiBzY3JvbGwgPCBzY3JvbGxIZWlnaHQgLSBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsRWwuc2Nyb2xsVG9wID0gc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9LCAxNSk7XG59XG5cbmZ1bmN0aW9uIHVudHJhY2tTY3JvbGwoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0cmFja1RpbWVyKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kRHJhZyhjb250YWluZXIsIGVsZW1lbnQpIHtcbiAgICBsZXQgY2xvbmU7XG4gICAgaWYgKGlzVGFnKGVsZW1lbnQsICdsaScsICd0cicpKSB7XG4gICAgICAgIGNsb25lID0gJCgnPGRpdj4nKTtcbiAgICAgICAgYXBwZW5kKGNsb25lLCBlbGVtZW50LmNsb25lTm9kZSh0cnVlKS5jaGlsZHJlbik7XG4gICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGVsZW1lbnQuZ2V0QXR0cmlidXRlTmFtZXMoKSkge1xuICAgICAgICAgICAgYXR0cihjbG9uZSwgYXR0cmlidXRlLCBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb25lID0gZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgfVxuXG4gICAgYXBwZW5kKGNvbnRhaW5lciwgY2xvbmUpO1xuXG4gICAgY3NzKGNsb25lLCAnbWFyZ2luJywgJzAnLCAnaW1wb3J0YW50Jyk7XG4gICAgY3NzKGNsb25lLCB7XG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICB3aWR0aDogZWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBlbGVtZW50Lm9mZnNldEhlaWdodCxcbiAgICAgICAgcGFkZGluZzogY3NzKGVsZW1lbnQsICdwYWRkaW5nJyksXG4gICAgfSk7XG5cbiAgICBoZWlnaHQoY2xvbmUuZmlyc3RFbGVtZW50Q2hpbGQsIGhlaWdodChlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkKSk7XG5cbiAgICByZXR1cm4gY2xvbmU7XG59XG5cbmZ1bmN0aW9uIGZpbmRUYXJnZXQoaXRlbXMsIHBvaW50KSB7XG4gICAgcmV0dXJuIGl0ZW1zW2ZpbmRJbmRleChpdGVtcywgKGl0ZW0pID0+IHBvaW50SW5SZWN0KHBvaW50LCBpdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSldO1xufVxuXG5mdW5jdGlvbiBmaW5kSW5zZXJ0VGFyZ2V0KGxpc3QsIHRhcmdldCwgcGxhY2Vob2xkZXIsIHgsIHksIHNhbWVMaXN0KSB7XG4gICAgaWYgKCFjaGlsZHJlbihsaXN0KS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlY3QgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKCFzYW1lTGlzdCkge1xuICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbChsaXN0LCBwbGFjZWhvbGRlcikpIHtcbiAgICAgICAgICAgIHJldHVybiB5IDwgcmVjdC50b3AgKyByZWN0LmhlaWdodCAvIDIgPyB0YXJnZXQgOiB0YXJnZXQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBjb25zdCBwbGFjZWhvbGRlclJlY3QgPSBwbGFjZWhvbGRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzYW1lUm93ID0gbGluZXNJbnRlcnNlY3QoXG4gICAgICAgIFtyZWN0LnRvcCwgcmVjdC5ib3R0b21dLFxuICAgICAgICBbcGxhY2Vob2xkZXJSZWN0LnRvcCwgcGxhY2Vob2xkZXJSZWN0LmJvdHRvbV1cbiAgICApO1xuXG4gICAgY29uc3QgW3BvaW50ZXJQb3MsIGxlbmd0aFByb3AsIHN0YXJ0UHJvcCwgZW5kUHJvcF0gPSBzYW1lUm93XG4gICAgICAgID8gW3gsICd3aWR0aCcsICdsZWZ0JywgJ3JpZ2h0J11cbiAgICAgICAgOiBbeSwgJ2hlaWdodCcsICd0b3AnLCAnYm90dG9tJ107XG5cbiAgICBjb25zdCBkaWZmID1cbiAgICAgICAgcGxhY2Vob2xkZXJSZWN0W2xlbmd0aFByb3BdIDwgcmVjdFtsZW5ndGhQcm9wXVxuICAgICAgICAgICAgPyByZWN0W2xlbmd0aFByb3BdIC0gcGxhY2Vob2xkZXJSZWN0W2xlbmd0aFByb3BdXG4gICAgICAgICAgICA6IDA7XG5cbiAgICBpZiAocGxhY2Vob2xkZXJSZWN0W3N0YXJ0UHJvcF0gPCByZWN0W3N0YXJ0UHJvcF0pIHtcbiAgICAgICAgaWYgKGRpZmYgJiYgcG9pbnRlclBvcyA8IHJlY3Rbc3RhcnRQcm9wXSArIGRpZmYpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgIH1cblxuICAgIGlmIChkaWZmICYmIHBvaW50ZXJQb3MgPiByZWN0W2VuZFByb3BdIC0gZGlmZikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gaXNIb3Jpem9udGFsKGxpc3QsIHBsYWNlaG9sZGVyKSB7XG4gICAgY29uc3Qgc2luZ2xlID0gY2hpbGRyZW4obGlzdCkubGVuZ3RoID09PSAxO1xuXG4gICAgaWYgKHNpbmdsZSkge1xuICAgICAgICBhcHBlbmQobGlzdCwgcGxhY2Vob2xkZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gY2hpbGRyZW4obGlzdCk7XG4gICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXRlbXMuc29tZSgoZWwsIGkpID0+IHtcbiAgICAgICAgY29uc3QgcmVjdEEgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLnNsaWNlKGkgKyAxKS5zb21lKChlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjdEIgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIHJldHVybiAhbGluZXNJbnRlcnNlY3QoW3JlY3RBLmxlZnQsIHJlY3RBLnJpZ2h0XSwgW3JlY3RCLmxlZnQsIHJlY3RCLnJpZ2h0XSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKHNpbmdsZSkge1xuICAgICAgICByZW1vdmUocGxhY2Vob2xkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0hvcml6b250YWw7XG59XG5cbmZ1bmN0aW9uIGxpbmVzSW50ZXJzZWN0KGxpbmVBLCBsaW5lQikge1xuICAgIHJldHVybiBsaW5lQVsxXSA+IGxpbmVCWzBdICYmIGxpbmVCWzFdID4gbGluZUFbMF07XG59XG4iLCJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4uL21peGluL2NvbnRhaW5lcic7XG5pbXBvcnQgVG9nZ2xhYmxlIGZyb20gJy4uL21peGluL3RvZ2dsYWJsZSc7XG5pbXBvcnQgUG9zaXRpb24gZnJvbSAnLi4vbWl4aW4vcG9zaXRpb24nO1xuaW1wb3J0IHtcbiAgICBhcHBlbmQsXG4gICAgYXR0cixcbiAgICBmbGlwUG9zaXRpb24sXG4gICAgaGFzQXR0cixcbiAgICBpbmNsdWRlcyxcbiAgICBpc0ZvY3VzYWJsZSxcbiAgICBpc1RvdWNoLFxuICAgIG1hdGNoZXMsXG4gICAgb2Zmc2V0LFxuICAgIG9uLFxuICAgIG9uY2UsXG4gICAgb3ZlcmZsb3dQYXJlbnRzLFxuICAgIHBvaW50ZXJEb3duLFxuICAgIHBvaW50ZXJFbnRlcixcbiAgICBwb2ludGVyTGVhdmUsXG4gICAgcmVtb3ZlLFxuICAgIHdpdGhpbixcbn0gZnJvbSAndWlraXQtdXRpbCc7XG5pbXBvcnQgeyBrZXlNYXAgfSBmcm9tICcuLi91dGlsL2tleXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVJZCB9IGZyb20gJy4uL2FwaS9pbnN0YW5jZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBtaXhpbnM6IFtDb250YWluZXIsIFRvZ2dsYWJsZSwgUG9zaXRpb25dLFxuXG4gICAgYXJnczogJ3RpdGxlJyxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIGRlbGF5OiBOdW1iZXIsXG4gICAgICAgIHRpdGxlOiBTdHJpbmcsXG4gICAgfSxcblxuICAgIGRhdGE6IHtcbiAgICAgICAgcG9zOiAndG9wJyxcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZWxheTogMCxcbiAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1zY2FsZS11cCddLFxuICAgICAgICBkdXJhdGlvbjogMTAwLFxuICAgICAgICBjbHM6ICd1ay1hY3RpdmUnLFxuICAgIH0sXG5cbiAgICBiZWZvcmVDb25uZWN0KCkge1xuICAgICAgICB0aGlzLmlkID0gZ2VuZXJhdGVJZCh0aGlzKTtcbiAgICAgICAgdGhpcy5faGFzVGl0bGUgPSBoYXNBdHRyKHRoaXMuJGVsLCAndGl0bGUnKTtcbiAgICAgICAgYXR0cih0aGlzLiRlbCwge1xuICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmlkLFxuICAgICAgICB9KTtcbiAgICAgICAgbWFrZUZvY3VzYWJsZSh0aGlzLiRlbCk7XG4gICAgfSxcblxuICAgIGRpc2Nvbm5lY3RlZCgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG5cbiAgICAgICAgaWYgKCFhdHRyKHRoaXMuJGVsLCAndGl0bGUnKSkge1xuICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ3RpdGxlJywgdGhpcy5faGFzVGl0bGUgPyB0aGlzLnRpdGxlIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgbWV0aG9kczoge1xuICAgICAgICBzaG93KCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKHRoaXMudG9vbHRpcCB8fCBudWxsKSB8fCAhdGhpcy50aXRsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gc2V0VGltZW91dCh0aGlzLl9zaG93LCB0aGlzLmRlbGF5KTtcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBoaWRlKCkge1xuICAgICAgICAgICAgaWYgKG1hdGNoZXModGhpcy4kZWwsICdpbnB1dDpmb2N1cycpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNUb2dnbGVkKHRoaXMudG9vbHRpcCB8fCBudWxsKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMudG9vbHRpcCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgIHJlbW92ZSh0aGlzLnRvb2x0aXApO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBfc2hvdygpIHtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IGFwcGVuZChcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICBgPGRpdiBpZD1cIiR7dGhpcy5pZH1cIiBjbGFzcz1cInVrLSR7dGhpcy4kb3B0aW9ucy5uYW1lfVwiIHJvbGU9XCJ0b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1ay0ke3RoaXMuJG9wdGlvbnMubmFtZX0taW5uZXJcIj4ke3RoaXMudGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG9uKHRoaXMudG9vbHRpcCwgJ3RvZ2dsZWQnLCAoZSwgdG9nZ2xlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gKCkgPT4gdGhpcy5wb3NpdGlvbkF0KHRoaXMudG9vbHRpcCwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgW2RpciwgYWxpZ25dID0gZ2V0QWxpZ25tZW50KHRoaXMudG9vbHRpcCwgdGhpcy4kZWwsIHRoaXMucG9zKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5heGlzID09PSAneSdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7ZmxpcFBvc2l0aW9uKGRpcil9LSR7YWxpZ259YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgJHthbGlnbn0tJHtmbGlwUG9zaXRpb24oZGlyKX1gO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlcnMgPSBbXG4gICAgICAgICAgICAgICAgICAgIG9uY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGBrZXlkb3duICR7cG9pbnRlckRvd259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUudHlwZSA9PT0gcG9pbnRlckRvd24gJiYgIXdpdGhpbihlLnRhcmdldCwgdGhpcy4kZWwpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLnR5cGUgPT09ICdrZXlkb3duJyAmJiBlLmtleUNvZGUgPT09IGtleU1hcC5FU0MpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG9uKFtkb2N1bWVudCwgLi4ub3ZlcmZsb3dQYXJlbnRzKHRoaXMuJGVsKV0sICdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgb25jZSh0aGlzLnRvb2x0aXAsICdoaWRlJywgKCkgPT4gaGFuZGxlcnMuZm9yRWFjaCgoaGFuZGxlcikgPT4gaGFuZGxlcigpKSwge1xuICAgICAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRWxlbWVudCh0aGlzLnRvb2x0aXAsIHRydWUpO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBldmVudHM6IHtcbiAgICAgICAgZm9jdXM6ICdzaG93JyxcbiAgICAgICAgYmx1cjogJ2hpZGUnLFxuXG4gICAgICAgIFtgJHtwb2ludGVyRW50ZXJ9ICR7cG9pbnRlckxlYXZlfWBdKGUpIHtcbiAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgIHRoaXNbZS50eXBlID09PSBwb2ludGVyRW50ZXIgPyAnc2hvdycgOiAnaGlkZSddKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gQ2xpY2tpbmcgYSBidXR0b24gZG9lcyBub3QgZ2l2ZSBpdCBmb2N1cyBvbiBhbGwgYnJvd3NlcnMgYW5kIHBsYXRmb3Jtc1xuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2NsaWNraW5nX2FuZF9mb2N1c1xuICAgICAgICBbcG9pbnRlckRvd25dKGUpIHtcbiAgICAgICAgICAgIGlmIChpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmZ1bmN0aW9uIG1ha2VGb2N1c2FibGUoZWwpIHtcbiAgICBpZiAoIWlzRm9jdXNhYmxlKGVsKSkge1xuICAgICAgICBhdHRyKGVsLCAndGFiaW5kZXgnLCAnMCcpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KGVsLCB0YXJnZXQsIFtkaXIsIGFsaWduXSkge1xuICAgIGNvbnN0IGVsT2Zmc2V0ID0gb2Zmc2V0KGVsKTtcbiAgICBjb25zdCB0YXJnZXRPZmZzZXQgPSBvZmZzZXQodGFyZ2V0KTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gW1xuICAgICAgICBbJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgcHJvcHMgb2YgcHJvcGVydGllcykge1xuICAgICAgICBpZiAoZWxPZmZzZXRbcHJvcHNbMF1dID49IHRhcmdldE9mZnNldFtwcm9wc1sxXV0pIHtcbiAgICAgICAgICAgIGRpciA9IHByb3BzWzFdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsT2Zmc2V0W3Byb3BzWzFdXSA8PSB0YXJnZXRPZmZzZXRbcHJvcHNbMF1dKSB7XG4gICAgICAgICAgICBkaXIgPSBwcm9wc1swXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcHMgPSBpbmNsdWRlcyhwcm9wZXJ0aWVzWzBdLCBkaXIpID8gcHJvcGVydGllc1sxXSA6IHByb3BlcnRpZXNbMF07XG4gICAgaWYgKGVsT2Zmc2V0W3Byb3BzWzBdXSA9PT0gdGFyZ2V0T2Zmc2V0W3Byb3BzWzBdXSkge1xuICAgICAgICBhbGlnbiA9IHByb3BzWzBdO1xuICAgIH0gZWxzZSBpZiAoZWxPZmZzZXRbcHJvcHNbMV1dID09PSB0YXJnZXRPZmZzZXRbcHJvcHNbMV1dKSB7XG4gICAgICAgIGFsaWduID0gcHJvcHNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWxpZ24gPSAnY2VudGVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gW2RpciwgYWxpZ25dO1xufVxuIiwiaW1wb3J0IEkxOG4gZnJvbSAnLi4vbWl4aW4vaTE4bic7XG5pbXBvcnQgeyBhZGRDbGFzcywgYXNzaWduLCBtYXRjaGVzLCBub29wLCBvbiwgcmVtb3ZlQ2xhc3MsIHRvQXJyYXksIHRyaWdnZXIgfSBmcm9tICd1aWtpdC11dGlsJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG1peGluczogW0kxOG5dLFxuXG4gICAgaTE4bjoge1xuICAgICAgICBpbnZhbGlkTWltZTogJ0ludmFsaWQgRmlsZSBUeXBlOiAlcycsXG4gICAgICAgIGludmFsaWROYW1lOiAnSW52YWxpZCBGaWxlIE5hbWU6ICVzJyxcbiAgICAgICAgaW52YWxpZFNpemU6ICdJbnZhbGlkIEZpbGUgU2l6ZTogJXMgS2lsb2J5dGVzIE1heCcsXG4gICAgfSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIGFsbG93OiBTdHJpbmcsXG4gICAgICAgIGNsc0RyYWdvdmVyOiBTdHJpbmcsXG4gICAgICAgIGNvbmN1cnJlbnQ6IE51bWJlcixcbiAgICAgICAgbWF4U2l6ZTogTnVtYmVyLFxuICAgICAgICBtZXRob2Q6IFN0cmluZyxcbiAgICAgICAgbWltZTogU3RyaW5nLFxuICAgICAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICAgICAgbmFtZTogU3RyaW5nLFxuICAgICAgICBwYXJhbXM6IE9iamVjdCxcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICB1cmw6IFN0cmluZyxcbiAgICB9LFxuXG4gICAgZGF0YToge1xuICAgICAgICBhbGxvdzogZmFsc2UsXG4gICAgICAgIGNsc0RyYWdvdmVyOiAndWstZHJhZ292ZXInLFxuICAgICAgICBjb25jdXJyZW50OiAxLFxuICAgICAgICBtYXhTaXplOiAwLFxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgbWltZTogZmFsc2UsXG4gICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgbmFtZTogJ2ZpbGVzW10nLFxuICAgICAgICBwYXJhbXM6IHt9LFxuICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgdXJsOiAnJyxcbiAgICAgICAgYWJvcnQ6IG5vb3AsXG4gICAgICAgIGJlZm9yZUFsbDogbm9vcCxcbiAgICAgICAgYmVmb3JlU2VuZDogbm9vcCxcbiAgICAgICAgY29tcGxldGU6IG5vb3AsXG4gICAgICAgIGNvbXBsZXRlQWxsOiBub29wLFxuICAgICAgICBlcnJvcjogbm9vcCxcbiAgICAgICAgZmFpbDogbm9vcCxcbiAgICAgICAgbG9hZDogbm9vcCxcbiAgICAgICAgbG9hZEVuZDogbm9vcCxcbiAgICAgICAgbG9hZFN0YXJ0OiBub29wLFxuICAgICAgICBwcm9ncmVzczogbm9vcCxcbiAgICB9LFxuXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIGNoYW5nZShlKSB7XG4gICAgICAgICAgICBpZiAoIW1hdGNoZXMoZS50YXJnZXQsICdpbnB1dFt0eXBlPVwiZmlsZVwiXScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkKGUudGFyZ2V0LmZpbGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgICAgfSxcblxuICAgICAgICBkcm9wKGUpIHtcbiAgICAgICAgICAgIHN0b3AoZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7XG5cbiAgICAgICAgICAgIGlmICghdHJhbnNmZXI/LmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcmFnb3Zlcik7XG5cbiAgICAgICAgICAgIHRoaXMudXBsb2FkKHRyYW5zZmVyLmZpbGVzKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkcmFnZW50ZXIoZSkge1xuICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkcmFnb3ZlcihlKSB7XG4gICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRyYWdsZWF2ZShlKSB7XG4gICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIHVwbG9hZChmaWxlcykge1xuICAgICAgICAgICAgZmlsZXMgPSB0b0FycmF5KGZpbGVzKTtcblxuICAgICAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICd1cGxvYWQnLCBbZmlsZXNdKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4U2l6ZSAmJiB0aGlzLm1heFNpemUgKiAxMDAwIDwgZmlsZS5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFpbCh0aGlzLnQoJ2ludmFsaWRTaXplJywgdGhpcy5tYXhTaXplKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hbGxvdyAmJiAhbWF0Y2godGhpcy5hbGxvdywgZmlsZS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhaWwodGhpcy50KCdpbnZhbGlkTmFtZScsIHRoaXMuYWxsb3cpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pbWUgJiYgIW1hdGNoKHRoaXMubWltZSwgZmlsZS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhaWwodGhpcy50KCdpbnZhbGlkTWltZScsIHRoaXMubWltZSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBmaWxlcyA9IGZpbGVzLnNsaWNlKDAsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmJlZm9yZUFsbCh0aGlzLCBmaWxlcyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNodW5rcyA9IGNodW5rKGZpbGVzLCB0aGlzLmNvbmN1cnJlbnQpO1xuICAgICAgICAgICAgY29uc3QgdXBsb2FkID0gYXN5bmMgKGZpbGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4gZGF0YS5hcHBlbmQodGhpcy5uYW1lLCBmaWxlKSk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChrZXksIHRoaXMucGFyYW1zW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHhociA9IGF3YWl0IGFqYXgodGhpcy51cmwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVTZW5kOiAoZW52KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB4aHIgfSA9IGVudjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbih4aHIudXBsb2FkLCAncHJvZ3Jlc3MnLCB0aGlzLnByb2dyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgWydsb2FkU3RhcnQnLCAnbG9hZCcsICdsb2FkRW5kJywgJ2Fib3J0J10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24oeGhyLCB0eXBlLnRvTG93ZXJDYXNlKCksIHRoaXNbdHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZm9yZVNlbmQoZW52KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGUoeGhyKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2h1bmtzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdXBsb2FkKGNodW5rcy5zaGlmdCgpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVBbGwoeGhyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBhd2FpdCB1cGxvYWQoY2h1bmtzLnNoaWZ0KCkpO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBtYXRjaChwYXR0ZXJuLCBwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGgubWF0Y2goXG4gICAgICAgIG5ldyBSZWdFeHAoXG4gICAgICAgICAgICBgXiR7cGF0dGVyblxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJ1xcXFwvJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwqXFwqL2csICcoXFxcXC9bXlxcXFwvXSspKicpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9nLCAnW15cXFxcL10rJylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvKCg/IVxcXFwpKVxcPy9nLCAnJDEuJyl9JGAsXG4gICAgICAgICAgICAnaSdcbiAgICAgICAgKVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGNodW5rKGZpbGVzLCBzaXplKSB7XG4gICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkgKz0gc2l6ZSkge1xuICAgICAgICBjaHVua3MucHVzaChmaWxlcy5zbGljZShpLCBpICsgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gY2h1bmtzO1xufVxuXG5mdW5jdGlvbiBzdG9wKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFqYXgodXJsLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZW52ID0ge1xuICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgeGhyOiBuZXcgWE1MSHR0cFJlcXVlc3QoKSxcbiAgICAgICAgYmVmb3JlU2VuZDogbm9vcCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnJyxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbigoKSA9PiBlbnYuYmVmb3JlU2VuZChlbnYpKVxuICAgICAgICAudGhlbigoKSA9PiBzZW5kKHVybCwgZW52KSk7XG59XG5cbmZ1bmN0aW9uIHNlbmQodXJsLCBlbnYpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCB7IHhociB9ID0gZW52O1xuXG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBlbnYpIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluIHhocikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHhocltwcm9wXSA9IGVudltwcm9wXTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB4aHIub3BlbihlbnYubWV0aG9kLnRvVXBwZXJDYXNlKCksIHVybCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgaW4gZW52LmhlYWRlcnMpIHtcbiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlciwgZW52LmhlYWRlcnNbaGVhZGVyXSk7XG4gICAgICAgIH1cblxuICAgICAgICBvbih4aHIsICdsb2FkJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDAgfHwgKHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCAzMDApIHx8IHhoci5zdGF0dXMgPT09IDMwNCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeGhyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICBhc3NpZ24oRXJyb3IoeGhyLnN0YXR1c1RleHQpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgb24oeGhyLCAnZXJyb3InLCAoKSA9PiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIEVycm9yJyksIHsgeGhyIH0pKSk7XG4gICAgICAgIG9uKHhociwgJ3RpbWVvdXQnLCAoKSA9PiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIFRpbWVvdXQnKSwgeyB4aHIgfSkpKTtcblxuICAgICAgICB4aHIuc2VuZChlbnYuZGF0YSk7XG4gICAgfSk7XG59XG4iLCJpbXBvcnQgVUlraXQgZnJvbSAnLi91aWtpdC1jb3JlJztcbmltcG9ydCAqIGFzIGNvbXBvbmVudHMgZnJvbSAnLi9jb21wb25lbnRzL2luZGV4JztcbmltcG9ydCB7IGVhY2ggfSBmcm9tICd1aWtpdC11dGlsJztcblxuZWFjaChjb21wb25lbnRzLCAoY29tcG9uZW50LCBuYW1lKSA9PiBVSWtpdC5jb21wb25lbnQobmFtZSwgY29tcG9uZW50KSk7XG5cbmV4cG9ydCBkZWZhdWx0IFVJa2l0O1xuIl0sIm5hbWVzIjpbInNvcnRCeSIsImNvdmVyIiwiZWxlbWVudCIsImZpbHRlciIsImNoaWxkcmVuIiwic2VsZWN0b3IiLCJvZmYiLCJkZXRhaWwiLCJ2YWx1ZSIsInByb3BlcnR5IiwiYXBwbHkiLCJjbHMiLCJhcmdzIiwidHJhbnNpdGlvbiIsImFuaW1hdGUiLCJwYXJlbnQiLCJodG1sIiwicmVtb3ZlIiwiZGlycyIsImRpbWVuc2lvbnMiLCJvZmZzZXQiLCJwcm9wIiwidW5pdFJlIiwicG9pbnRlckRvd24iLCJwb2ludGVyTW92ZSIsInBvaW50ZXJVcCIsIm9ic2VydmVyIiwib2JzZXJ2ZSIsInBhcmVudHMiLCJnZXRWaWV3cG9ydCIsImluc3RhbmNlcyIsImVsIiwidm0iLCJvcHRpb25zIiwiY29lcmNlIiwiZ2V0UHJvcHMiLCJkYXRhIiwiZ2V0RGF0YSIsImluaXQiLCJjb21wb25lbnRzIiwiY29tcG9uZW50Iiwic2Nyb2xsIiwiZSIsImluZGV4IiwiaGlkZSIsImFjdGl2ZSIsImxpc3RlbkZvckVzY0Nsb3NlIiwibGlzdGVuRm9yQmFja2dyb3VuZENsb3NlIiwibWF0Y2giLCJpbnN0YWxsIiwic3ZnIiwibmFtZSIsImdldE9mZnNldCIsImhlaWdodCIsImdldEhlaWdodCIsIlVJa2l0IiwiYXdhaXRGcmFtZSIsImdldENoaWxkcmVuIiwiYXR0ciIsIkFuaW1hdGlvbnMiLCJUcmFuc2l0aW9uZXIiLCJwZXJjZW50IiwidHJpZ2dlclVwZGF0ZSIsInByb3BzIiwiY3NzIiwidHJhbnNmb3JtRm4iLCJrZXlzIiwic2xpZGUiLCJzb3J0YWJsZSIsImlzSG9yaXpvbnRhbCIsImZpbGVzIiwieGhyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztJQUFBLE1BQU0sRUFBRSxjQUFBLEVBQWdCLFFBQVMsRUFBQSxHQUFJLE1BQU8sQ0FBQSxTQUFBLENBQUE7SUFFNUIsU0FBQSxNQUFBLENBQU8sS0FBSyxHQUFLLEVBQUE7SUFDN0IsRUFBTyxPQUFBLGNBQUEsQ0FBZSxJQUFLLENBQUEsR0FBQSxFQUFLLEdBQUcsQ0FBQSxDQUFBO0lBQ3ZDLENBQUE7SUFFQSxNQUFNLFdBQWMsR0FBQSxZQUFBLENBQUE7SUFFUCxNQUFBLFNBQUEsR0FBWSxPQUFRLENBQUEsQ0FBQyxHQUFRLEtBQUEsR0FBQSxDQUFJLFFBQVEsV0FBYSxFQUFBLEtBQUssQ0FBRSxDQUFBLFdBQUEsRUFBYSxDQUFBLENBQUE7SUFFdkYsTUFBTSxVQUFhLEdBQUEsUUFBQSxDQUFBO0lBRVosTUFBTSxRQUFXLEdBQUEsT0FBQTtJQUFBLEVBQVEsQ0FBQyxHQUM1QixLQUFBLENBQUEsR0FBQSxDQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUUsYUFBZ0IsR0FBQSxHQUFBLENBQUksTUFBTSxDQUFDLENBQUEsRUFBRyxRQUFRLFVBQVksRUFBQSxDQUFDLEdBQUcsQ0FBTSxLQUFBLENBQUEsQ0FBRSxhQUFhLENBQUE7SUFDOUYsQ0FBQSxDQUFBO0lBRU8sTUFBTSxPQUFVLEdBQUEsT0FBQSxDQUFRLENBQUMsR0FBQSxLQUFRLEdBQUks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
|