@getopenpay/openpay-js-react 0.3.9 → 0.3.13-alpha.bdbda7a
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/dist/.tsbuildinfo +1 -1
- package/dist/{Resource-CJ4KZ4z3-CsufUK73.js → Resource-mNYeZF9D-DyAeU6nH.js} +3 -3
- package/dist/{SimpleSpanProcessor-C7I0uVei-CCCIv2WQ.js → SimpleSpanProcessor-CLadx1Ry-DFbqCyTE.js} +21 -21
- package/dist/detect-resources-BVj-Nv9j-D-K1Nx4L.js +854 -0
- package/dist/diag-api-DlzYu3FX-C5uOnDAk.js +6 -0
- package/dist/{index-Y2-ZTBPX-UTok6bUG.js → index-73Zci8QM-BH36xwJQ.js} +2 -2
- package/dist/{index-BWgCjKML-BYuqOFDy.js → index-BufYIG0q-CphSOJz1.js} +103 -103
- package/dist/index-Bzsy-QHz-BSCoOj2p.js +150 -0
- package/dist/{index-D8mCUVHz-BH2qiKcr.js → index-C1QTH_fF-7edQgvhb.js} +8 -8
- package/dist/{index-DBuu_2wY-BIRog2Mp.js → index-C6VsGa_X-DnI1zZA6.js} +2 -2
- package/dist/index-Cgr3OZtX.js +7646 -0
- package/dist/{index-DWpAquoJ-BwiIVs-E.js → index-SDtMvSt9-B3WXwcGr.js} +19 -19
- package/dist/{index-E79_uuNF-C466qmvx.js → index-Y8rIshZP-BFN_roTi.js} +71 -71
- package/dist/{index-BLsvoFAn-dEwYMk-U.js → index-hlw2CLDg-CvpGBRWb.js} +13 -13
- package/dist/{index-D3GiAieN-C9dfFJE0.js → index-rsJVRXFy-BlJGDRfL.js} +5 -5
- package/dist/index.d.ts +132 -2
- package/dist/index.js +7 -6
- package/dist/{metrics-api-zu0dnBTL-BQnfo0ed.js → metrics-api-Boddpk8P-5Yd9BTNs.js} +11 -11
- package/dist/{sdk-info-DU-2di3y-JTC8mnZo.js → sdk-info-Bhg46kME-KwjisWfA.js} +2 -2
- package/dist/url-DKZ7gj4s-DwKrihmA.js +797 -0
- package/dist/{utils-IKSKKiHC-FjxdDnHH.js → utils-BJLZP7xv-CsKnCWfD.js} +10 -10
- package/dist/{utils-DrBU4IDX-IFl3B8CY.js → utils-Cp6QoutJ-BvvfzCHa.js} +2 -2
- package/package.json +1 -1
- package/dist/detect-resources-BlvKzegu-D_EiUoH5.js +0 -854
- package/dist/diag-api-Bs9VFr7r-BlpGaXD1.js +0 -6
- package/dist/index-TXNqRMu1.js +0 -7453
- package/dist/index-qUosrjsr-DhS4wLns.js +0 -150
- package/dist/url-DIOkZJ-h-BWV5Vp1s.js +0 -797
package/dist/{SimpleSpanProcessor-C7I0uVei-CCCIv2WQ.js → SimpleSpanProcessor-CLadx1Ry-DFbqCyTE.js}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as l } from "./diag-api-
|
|
3
|
-
import { dC as j, dD as ut, dE as M, p as pt, O as A, dF as ct, dG as lt, cy as N, cw as D, y as ht, dH as V, dI as dt, cx as ft } from "./url-
|
|
4
|
-
import { Z as _t, a as R, n as f, w as mt, p as H, b as vt, c as yt, J as St, W as gt, s as Et, k as Tt, d as J, t as bt } from "./index-
|
|
5
|
-
import { bm as v, O as P, bn as Lt, bo as Pt, bp as wt } from "./sdk-info-
|
|
6
|
-
import { R as Q } from "./Resource-
|
|
1
|
+
import { P as _, I as nt, b, s as ot, C as E, t as it, q as st, l as at } from "./index-Cgr3OZtX.js";
|
|
2
|
+
import { r as l } from "./diag-api-DlzYu3FX-C5uOnDAk.js";
|
|
3
|
+
import { dC as j, dD as ut, dE as M, p as pt, O as A, dF as ct, dG as lt, cy as N, cw as D, y as ht, dH as V, dI as dt, cx as ft } from "./url-DKZ7gj4s-DwKrihmA.js";
|
|
4
|
+
import { Z as _t, a as R, n as f, w as mt, p as H, b as vt, c as yt, J as St, W as gt, s as Et, k as Tt, d as J, t as bt } from "./index-Y8rIshZP-BFN_roTi.js";
|
|
5
|
+
import { bm as v, O as P, bn as Lt, bo as Pt, bp as wt } from "./sdk-info-Bhg46kME-KwjisWfA.js";
|
|
6
|
+
import { R as Q } from "./Resource-mNYeZF9D-DyAeU6nH.js";
|
|
7
7
|
import { a as w } from "./ExportResult-Bo1QOwfo-BBnR58Dk.js";
|
|
8
8
|
var xt = "exception", U = function() {
|
|
9
9
|
return U = Object.assign || function(e) {
|
|
@@ -22,7 +22,7 @@ var xt = "exception", U = function() {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
25
|
-
},
|
|
25
|
+
}, q = function(e, t) {
|
|
26
26
|
var r = typeof Symbol == "function" && e[Symbol.iterator];
|
|
27
27
|
if (!r) return e;
|
|
28
28
|
var n = r.call(e), i, o = [], s;
|
|
@@ -60,7 +60,7 @@ var xt = "exception", U = function() {
|
|
|
60
60
|
var r, n;
|
|
61
61
|
try {
|
|
62
62
|
for (var i = At(Object.entries(t)), o = i.next(); !o.done; o = i.next()) {
|
|
63
|
-
var s =
|
|
63
|
+
var s = q(o.value, 2), a = s[0], p = s[1];
|
|
64
64
|
this.setAttribute(a, p);
|
|
65
65
|
}
|
|
66
66
|
} catch (u) {
|
|
@@ -90,7 +90,7 @@ var xt = "exception", U = function() {
|
|
|
90
90
|
return this.links.push(t), this;
|
|
91
91
|
}, e.prototype.addLinks = function(t) {
|
|
92
92
|
var r;
|
|
93
|
-
return (r = this.links).push.apply(r, Ot([],
|
|
93
|
+
return (r = this.links).push.apply(r, Ot([], q(t), !1)), this;
|
|
94
94
|
}, e.prototype.setStatus = function(t) {
|
|
95
95
|
return this._isSpanEnded() ? this : (this.status = U({}, t), this.status.message != null && typeof t.message != "string" && (l.warn("Dropping invalid status.message of type '" + typeof t.message + "', expected 'string'"), delete this.status.message), this);
|
|
96
96
|
}, e.prototype.updateName = function(t) {
|
|
@@ -204,7 +204,7 @@ var I = (
|
|
|
204
204
|
return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
|
|
205
205
|
}, e;
|
|
206
206
|
}()
|
|
207
|
-
),
|
|
207
|
+
), X = (
|
|
208
208
|
/** @class */
|
|
209
209
|
function() {
|
|
210
210
|
function e(t) {
|
|
@@ -262,16 +262,16 @@ function $(e) {
|
|
|
262
262
|
root: new I()
|
|
263
263
|
});
|
|
264
264
|
case v.TraceIdRatio:
|
|
265
|
-
return new W(
|
|
265
|
+
return new X(W(e));
|
|
266
266
|
case v.ParentBasedTraceIdRatio:
|
|
267
267
|
return new B({
|
|
268
|
-
root: new W(
|
|
268
|
+
root: new X(W(e))
|
|
269
269
|
});
|
|
270
270
|
default:
|
|
271
271
|
return l.error('OTEL_TRACES_SAMPLER value "' + e.OTEL_TRACES_SAMPLER + " invalid, defaulting to " + Rt + '".'), new T();
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
|
-
function
|
|
274
|
+
function W(e) {
|
|
275
275
|
if (e.OTEL_TRACES_SAMPLER_ARG === void 0 || e.OTEL_TRACES_SAMPLER_ARG === "")
|
|
276
276
|
return l.error("OTEL_TRACES_SAMPLER_ARG is blank, defaulting to " + g + "."), g;
|
|
277
277
|
var t = Number(e.OTEL_TRACES_SAMPLER_ARG);
|
|
@@ -769,7 +769,7 @@ var re = (
|
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
771
|
return o;
|
|
772
|
-
},
|
|
772
|
+
}, qt = function(e, t, r) {
|
|
773
773
|
if (arguments.length === 2) for (var n = 0, i = t.length, o; n < i; n++)
|
|
774
774
|
(o || !(n in t)) && (o || (o = Array.prototype.slice.call(t, 0, n)), o[n] = t[n]);
|
|
775
775
|
return e.concat(o || Array.prototype.slice.call(t));
|
|
@@ -786,7 +786,7 @@ var re = (
|
|
|
786
786
|
code: w.FAILED,
|
|
787
787
|
error: new Error("Exporter has been stopped")
|
|
788
788
|
});
|
|
789
|
-
(n = this._finishedSpans).push.apply(n,
|
|
789
|
+
(n = this._finishedSpans).push.apply(n, qt([], Qt(t), !1)), setTimeout(function() {
|
|
790
790
|
return r({ code: w.SUCCESS });
|
|
791
791
|
}, 0);
|
|
792
792
|
}, e.prototype.shutdown = function() {
|
|
@@ -799,7 +799,7 @@ var re = (
|
|
|
799
799
|
return this._finishedSpans;
|
|
800
800
|
}, e;
|
|
801
801
|
}()
|
|
802
|
-
),
|
|
802
|
+
), Xt = function(e, t, r, n) {
|
|
803
803
|
function i(o) {
|
|
804
804
|
return o instanceof r ? o : new r(function(s) {
|
|
805
805
|
s(o);
|
|
@@ -825,7 +825,7 @@ var re = (
|
|
|
825
825
|
}
|
|
826
826
|
u((n = n.apply(e, [])).next());
|
|
827
827
|
});
|
|
828
|
-
},
|
|
828
|
+
}, Wt = function(e, t) {
|
|
829
829
|
var r = { label: 0, sent: function() {
|
|
830
830
|
if (o[0] & 1) throw o[1];
|
|
831
831
|
return o[1];
|
|
@@ -891,8 +891,8 @@ var re = (
|
|
|
891
891
|
this._exporter = t, this._shutdownOnce = new J(this._shutdown, this), this._unresolvedExports = /* @__PURE__ */ new Set();
|
|
892
892
|
}
|
|
893
893
|
return e.prototype.forceFlush = function() {
|
|
894
|
-
return
|
|
895
|
-
return
|
|
894
|
+
return Xt(this, void 0, void 0, function() {
|
|
895
|
+
return Wt(this, function(t) {
|
|
896
896
|
switch (t.label) {
|
|
897
897
|
case 0:
|
|
898
898
|
return [4, Promise.all(Array.from(this._unresolvedExports))];
|
|
@@ -944,7 +944,7 @@ export {
|
|
|
944
944
|
Ct as O,
|
|
945
945
|
L as P,
|
|
946
946
|
y as S,
|
|
947
|
-
W,
|
|
947
|
+
X as W,
|
|
948
948
|
B as a,
|
|
949
949
|
T as g,
|
|
950
950
|
oe as i,
|
|
@@ -954,4 +954,4 @@ export {
|
|
|
954
954
|
re as r,
|
|
955
955
|
zt as z
|
|
956
956
|
};
|
|
957
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiU2ltcGxlU3BhblByb2Nlc3Nvci1DN0kwdVZlaS0hfnswMDJ9fi5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQyBhcyBDZSwgayBhcyBrciwgYyBhcyBTdCwgSCBhcyBIbywgRSBhcyBFZSwgViBhcyBWbywgRyBhcyBHZSwgbCBhcyBsZSB9IGZyb20gJy4vaW5kZXgtIX57MDA0fX4uanMnO1xuaW1wb3J0IHsgciB9IGZyb20gJy4vZGlhZy1hcGktQnM5VkZyN3ItIX57MDA3fX4uanMnO1xuaW1wb3J0IHsgZEMgYXMgcWUsIGREIGFzIHdlLCBkRSBhcyBSLCBwIGFzIHBfLCBPIGFzIE8kMSwgZEYgYXMgTl8sIGRHIGFzIEhfLCBjeSBhcyByQSwgY3cgYXMgTkEsIHkgYXMgeV8sIGRIIGFzIGtlLCBkSSBhcyByXywgY3ggYXMgTUEgfSBmcm9tICcuL3VybC1ESU9rWkotaC0hfnswMDh9fi5qcyc7XG5pbXBvcnQgeyBaLCBhIGFzIFplLCBuIGFzIG5lJDEsIHcsIHAsIGIgYXMgcHIsIGMgYXMgYnIsIEogYXMgSmUsIFcgYXMgVyQxLCBzIGFzIHNyLCBrIGFzIGtyJDEsIGQgYXMgWnIsIHQgYXMgdHQgfSBmcm9tICcuL2luZGV4LUU3OV91dU5GLSF+ezAwan1+LmpzJztcbmltcG9ydCB7IGJtIGFzIHIkMSwgTyBhcyBPVCwgYm4gYXMgTFQsIGJvIGFzIFAkMSwgYnAgYXMgTSB9IGZyb20gJy4vc2RrLWluZm8tRFUtMmRpM3ktIX57MDBnfX4uanMnO1xuaW1wb3J0IHsgUiBhcyBSJDEgfSBmcm9tICcuL1Jlc291cmNlLUNKNEtaNHozLSF+ezAwZn1+LmpzJztcbmltcG9ydCB7IGEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CbzFRT3dmby0hfnswMGx9fi5qcyc7XG5cbnZhciBidCA9IFwiZXhjZXB0aW9uXCIsIFUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIFUgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKGUpIHtcbiAgICBmb3IgKHZhciB0LCByID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IHIgPCBuOyByKyspIHtcbiAgICAgIHQgPSBhcmd1bWVudHNbcl07XG4gICAgICBmb3IgKHZhciBvIGluIHQpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCBvKSAmJiAoZVtvXSA9IHRbb10pO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSwgVS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSwgQ3QgPSBmdW5jdGlvbihlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCByID0gdCAmJiBlW3RdLCBuID0gMDtcbiAgaWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcih0ID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgWCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBvLCBpID0gW10sIGE7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShvID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKG8udmFsdWUpO1xuICB9IGNhdGNoIChzKSB7XG4gICAgYSA9IHsgZXJyb3I6IHMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgbyAmJiAhby5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgeHQgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgbyA9IHQubGVuZ3RoLCBpOyBuIDwgbzsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgT3QgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0LCByLCBuLCBvLCBpLCBhLCBzLCBsLCB1LCBwKSB7XG4gICAgICBzID09PSB2b2lkIDAgJiYgKHMgPSBbXSksIHRoaXMuYXR0cmlidXRlcyA9IHt9LCB0aGlzLmxpbmtzID0gW10sIHRoaXMuZXZlbnRzID0gW10sIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkTGlua3NDb3VudCA9IDAsIHRoaXMuc3RhdHVzID0ge1xuICAgICAgICBjb2RlOiBsZS5VTlNFVFxuICAgICAgfSwgdGhpcy5lbmRUaW1lID0gWzAsIDBdLCB0aGlzLl9lbmRlZCA9ICExLCB0aGlzLl9kdXJhdGlvbiA9IFstMSwgLTFdLCB0aGlzLm5hbWUgPSBuLCB0aGlzLl9zcGFuQ29udGV4dCA9IG8sIHRoaXMucGFyZW50U3BhbklkID0gYSwgdGhpcy5raW5kID0gaSwgdGhpcy5saW5rcyA9IHM7XG4gICAgICB2YXIgZiA9IERhdGUubm93KCk7XG4gICAgICB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSA9IFIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0ID0gZiAtICh0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSArIHJfKCkpLCB0aGlzLl9zdGFydFRpbWVQcm92aWRlZCA9IGwgIT0gbnVsbCwgdGhpcy5zdGFydFRpbWUgPSB0aGlzLl9nZXRUaW1lKGwgPz8gZiksIHRoaXMucmVzb3VyY2UgPSB0LnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0Lmluc3RydW1lbnRhdGlvbkxpYnJhcnksIHRoaXMuX3NwYW5MaW1pdHMgPSB0LmdldFNwYW5MaW1pdHMoKSwgdGhpcy5fYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCA9IHRoaXMuX3NwYW5MaW1pdHMuYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCB8fCAwLCBwICE9IG51bGwgJiYgdGhpcy5zZXRBdHRyaWJ1dGVzKHApLCB0aGlzLl9zcGFuUHJvY2Vzc29yID0gdC5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yKCksIHRoaXMuX3NwYW5Qcm9jZXNzb3Iub25TdGFydCh0aGlzLCByKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNwYW5Db250ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkNvbnRleHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24odCwgciQxKSB7XG4gICAgICByZXR1cm4gciQxID09IG51bGwgfHwgdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiB0Lmxlbmd0aCA9PT0gMCA/IChyLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdCksIHRoaXMpIDogWihyJDEpID8gT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5sZW5ndGggPj0gdGhpcy5fc3BhbkxpbWl0cy5hdHRyaWJ1dGVDb3VudExpbWl0ICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCB0KSA/ICh0aGlzLl9kcm9wcGVkQXR0cmlidXRlc0NvdW50KyssIHRoaXMpIDogKHRoaXMuYXR0cmlidXRlc1t0XSA9IHRoaXMuX3RydW5jYXRlVG9TaXplKHIkMSksIHRoaXMpIDogKHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHQpLCB0aGlzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVzID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIsIG47XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gQ3QoT2JqZWN0LmVudHJpZXModCkpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gWChpLnZhbHVlLCAyKSwgcyA9IGFbMF0sIGwgPSBhWzFdO1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKHMsIGwpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHIgPSB7IGVycm9yOiB1IH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAobiA9IG8ucmV0dXJuKSAmJiBuLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZEV2ZW50ID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICBpZiAodGhpcy5faXNTcGFuRW5kZWQoKSlcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICBpZiAodGhpcy5fc3BhbkxpbWl0cy5ldmVudENvdW50TGltaXQgPT09IDApXG4gICAgICAgIHJldHVybiByLndhcm4oXCJObyBldmVudHMgYWxsb3dlZC5cIiksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrLCB0aGlzO1xuICAgICAgdGhpcy5ldmVudHMubGVuZ3RoID49IHRoaXMuX3NwYW5MaW1pdHMuZXZlbnRDb3VudExpbWl0ICYmICh0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIkRyb3BwaW5nIGV4dHJhIGV2ZW50cy5cIiksIHRoaXMuZXZlbnRzLnNoaWZ0KCksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrKSwgcWUociQxKSAmJiAocWUobikgfHwgKG4gPSByJDEpLCByJDEgPSB2b2lkIDApO1xuICAgICAgdmFyIG8gPSBaZShyJDEpO1xuICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnB1c2goe1xuICAgICAgICBuYW1lOiB0LFxuICAgICAgICBhdHRyaWJ1dGVzOiBvLFxuICAgICAgICB0aW1lOiB0aGlzLl9nZXRUaW1lKG4pLFxuICAgICAgICBkcm9wcGVkQXR0cmlidXRlc0NvdW50OiAwXG4gICAgICB9KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXMubGlua3MucHVzaCh0KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rcyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIChyID0gdGhpcy5saW5rcykucHVzaC5hcHBseShyLCB4dChbXSwgWCh0KSwgITEpKSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRTdGF0dXMgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5zdGF0dXMgPSBVKHt9LCB0KSwgdGhpcy5zdGF0dXMubWVzc2FnZSAhPSBudWxsICYmIHR5cGVvZiB0Lm1lc3NhZ2UgIT0gXCJzdHJpbmdcIiAmJiAoci53YXJuKFwiRHJvcHBpbmcgaW52YWxpZCBzdGF0dXMubWVzc2FnZSBvZiB0eXBlICdcIiArIHR5cGVvZiB0Lm1lc3NhZ2UgKyBcIicsIGV4cGVjdGVkICdzdHJpbmcnXCIpLCBkZWxldGUgdGhpcy5zdGF0dXMubWVzc2FnZSksIHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLnVwZGF0ZU5hbWUgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5uYW1lID0gdCwgdGhpcyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHRoaXMuX2lzU3BhbkVuZGVkKCkpIHtcbiAgICAgICAgci5lcnJvcih0aGlzLm5hbWUgKyBcIiBcIiArIHRoaXMuX3NwYW5Db250ZXh0LnRyYWNlSWQgKyBcIi1cIiArIHRoaXMuX3NwYW5Db250ZXh0LnNwYW5JZCArIFwiIC0gWW91IGNhbiBvbmx5IGNhbGwgZW5kKCkgb24gYSBzcGFuIG9uY2UuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9lbmRlZCA9ICEwLCB0aGlzLmVuZFRpbWUgPSB0aGlzLl9nZXRUaW1lKHQpLCB0aGlzLl9kdXJhdGlvbiA9IHdlKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLl9kdXJhdGlvblswXSA8IDAgJiYgKHIud2FybihcIkluY29uc2lzdGVudCBzdGFydCBhbmQgZW5kIHRpbWUsIHN0YXJ0VGltZSA+IGVuZFRpbWUuIFNldHRpbmcgc3BhbiBkdXJhdGlvbiB0byAwbXMuXCIsIHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLmVuZFRpbWUgPSB0aGlzLnN0YXJ0VGltZS5zbGljZSgpLCB0aGlzLl9kdXJhdGlvbiA9IFswLCAwXSksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCA+IDAgJiYgci53YXJuKFwiRHJvcHBlZCBcIiArIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCArIFwiIGV2ZW50cyBiZWNhdXNlIGV2ZW50Q291bnRMaW1pdCByZWFjaGVkXCIpLCB0aGlzLl9zcGFuUHJvY2Vzc29yLm9uRW5kKHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRUaW1lID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHR5cGVvZiB0ID09IFwibnVtYmVyXCIgJiYgdCA8PSBSLm5vdygpKVxuICAgICAgICByZXR1cm4gcF8odCArIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0KTtcbiAgICAgIGlmICh0eXBlb2YgdCA9PSBcIm51bWJlclwiKVxuICAgICAgICByZXR1cm4gTyQxKHQpO1xuICAgICAgaWYgKHQgaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICByZXR1cm4gTyQxKHQuZ2V0VGltZSgpKTtcbiAgICAgIGlmIChOXyh0KSlcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICBpZiAodGhpcy5fc3RhcnRUaW1lUHJvdmlkZWQpXG4gICAgICAgIHJldHVybiBPJDEoRGF0ZS5ub3coKSk7XG4gICAgICB2YXIgciA9IFIubm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZTtcbiAgICAgIHJldHVybiBIXyh0aGlzLnN0YXJ0VGltZSwgTyQxKHIpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5pc1JlY29yZGluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VuZGVkID09PSAhMTtcbiAgICB9LCBlLnByb3RvdHlwZS5yZWNvcmRFeGNlcHRpb24gPSBmdW5jdGlvbih0LCByJDEpIHtcbiAgICAgIHZhciBuID0ge307XG4gICAgICB0eXBlb2YgdCA9PSBcInN0cmluZ1wiID8gbltOQV0gPSB0IDogdCAmJiAodC5jb2RlID8gbltyQV0gPSB0LmNvZGUudG9TdHJpbmcoKSA6IHQubmFtZSAmJiAobltyQV0gPSB0Lm5hbWUpLCB0Lm1lc3NhZ2UgJiYgKG5bTkFdID0gdC5tZXNzYWdlKSwgdC5zdGFjayAmJiAobltNQV0gPSB0LnN0YWNrKSksIG5bckFdIHx8IG5bTkFdID8gdGhpcy5hZGRFdmVudChidCwgbiwgciQxKSA6IHIud2FybihcIkZhaWxlZCB0byByZWNvcmQgYW4gZXhjZXB0aW9uIFwiICsgdCk7XG4gICAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImR1cmF0aW9uXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kdXJhdGlvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImVuZGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRBdHRyaWJ1dGVzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJkcm9wcGVkRXZlbnRzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRMaW5rc0NvdW50XCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wcGVkTGlua3NDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUuX2lzU3BhbkVuZGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5kZWQgJiYgci53YXJuKFwiQ2FuIG5vdCBleGVjdXRlIHRoZSBvcGVyYXRpb24gb24gZW5kZWQgU3BhbiB7dHJhY2VJZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC50cmFjZUlkICsgXCIsIHNwYW5JZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC5zcGFuSWQgKyBcIn1cIiksIHRoaXMuX2VuZGVkO1xuICAgIH0sIGUucHJvdG90eXBlLl90cnVuY2F0ZVRvTGltaXRVdGlsID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHQubGVuZ3RoIDw9IHIgPyB0IDogdC5zdWJzdHJpbmcoMCwgcik7XG4gICAgfSwgZS5wcm90b3R5cGUuX3RydW5jYXRlVG9TaXplID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIkMSA9IHRoaXMsIG4gPSB0aGlzLl9hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0O1xuICAgICAgcmV0dXJuIG4gPD0gMCA/IChyLndhcm4oXCJBdHRyaWJ1dGUgdmFsdWUgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgZ290IFwiICsgbiksIHQpIDogdHlwZW9mIHQgPT0gXCJzdHJpbmdcIiA/IHRoaXMuX3RydW5jYXRlVG9MaW1pdFV0aWwodCwgbikgOiBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IHIkMS5fdHJ1bmNhdGVUb0xpbWl0VXRpbChvLCBuKSA6IG87XG4gICAgICB9KSA6IHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBQO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkoUCB8fCAoUCA9IHt9KSk7XG52YXIgSSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogUC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBnID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBQLlJFQ09SRF9BTkRfU0FNUExFRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT25TYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBEID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIHIsIG4sIG8sIGk7XG4gICAgICB0aGlzLl9yb290ID0gdC5yb290LCB0aGlzLl9yb290IHx8IChuZSQxKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgZygpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9IChyID0gdC5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiByICE9PSB2b2lkIDAgPyByIDogbmV3IGcoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gdC5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEkoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKG8gPSB0LmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgbyAhPT0gdm9pZCAwID8gbyA6IG5ldyBnKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gdC5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgSSgpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24odCwgciwgbiwgbywgaSwgYSkge1xuICAgICAgdmFyIHMgPSBDZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIHJldHVybiAhcyB8fCAha3IocykgPyB0aGlzLl9yb290LnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHMuaXNSZW1vdGUgPyBzLnRyYWNlRmxhZ3MgJiBTdC5TQU1QTEVEID8gdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC5zaG91bGRTYW1wbGUodCwgciwgbiwgbywgaSwgYSkgOiB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHMudHJhY2VGbGFncyAmIFN0LlNBTVBMRUQgPyB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHQsIHIsIG4sIG8sIGksIGEpIDogdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiUGFyZW50QmFzZWR7cm9vdD1cIiArIHRoaXMuX3Jvb3QudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIHJlbW90ZVBhcmVudE5vdFNhbXBsZWQ9XCIgKyB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIn1cIjtcbiAgICB9LCBlO1xuICB9KClcbiksIFcgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICB0ID09PSB2b2lkIDAgJiYgKHQgPSAwKSwgdGhpcy5fcmF0aW8gPSB0LCB0aGlzLl9yYXRpbyA9IHRoaXMuX25vcm1hbGl6ZSh0KSwgdGhpcy5fdXBwZXJCb3VuZCA9IE1hdGguZmxvb3IodGhpcy5fcmF0aW8gKiA0Mjk0OTY3Mjk1KTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBIbyhyKSAmJiB0aGlzLl9hY2N1bXVsYXRlKHIpIDwgdGhpcy5fdXBwZXJCb3VuZCA/IFAuUkVDT1JEX0FORF9TQU1QTEVEIDogUC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJUcmFjZUlkUmF0aW9CYXNlZHtcIiArIHRoaXMuX3JhdGlvICsgXCJ9XCI7XG4gICAgfSwgZS5wcm90b3R5cGUuX25vcm1hbGl6ZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdCAhPSBcIm51bWJlclwiIHx8IGlzTmFOKHQpID8gMCA6IHQgPj0gMSA/IDEgOiB0IDw9IDAgPyAwIDogdDtcbiAgICB9LCBlLnByb3RvdHlwZS5fYWNjdW11bGF0ZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGZvciAodmFyIHIgPSAwLCBuID0gMDsgbiA8IHQubGVuZ3RoIC8gODsgbisrKSB7XG4gICAgICAgIHZhciBvID0gbiAqIDgsIGkgPSBwYXJzZUludCh0LnNsaWNlKG8sIG8gKyA4KSwgMTYpO1xuICAgICAgICByID0gKHIgXiBpKSA+Pj4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgUnQgPSByJDEuQWx3YXlzT24sIEUgPSAxO1xuZnVuY3Rpb24gSigpIHtcbiAgdmFyIGUgPSBPVCgpO1xuICByZXR1cm4ge1xuICAgIHNhbXBsZXI6ICQoZSksXG4gICAgZm9yY2VGbHVzaFRpbWVvdXRNaWxsaXM6IDNlNCxcbiAgICBnZW5lcmFsTGltaXRzOiB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0OiBlLk9URUxfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVCxcbiAgICAgIGF0dHJpYnV0ZUNvdW50TGltaXQ6IGUuT1RFTF9BVFRSSUJVVEVfQ09VTlRfTElNSVRcbiAgICB9LFxuICAgIHNwYW5MaW1pdHM6IHtcbiAgICAgIGF0dHJpYnV0ZVZhbHVlTGVuZ3RoTGltaXQ6IGUuT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVDb3VudExpbWl0OiBlLk9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVQsXG4gICAgICBsaW5rQ291bnRMaW1pdDogZS5PVEVMX1NQQU5fTElOS19DT1VOVF9MSU1JVCxcbiAgICAgIGV2ZW50Q291bnRMaW1pdDogZS5PVEVMX1NQQU5fRVZFTlRfQ09VTlRfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVQZXJFdmVudENvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfRVZFTlRfQ09VTlRfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVQZXJMaW5rQ291bnRMaW1pdDogZS5PVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9MSU5LX0NPVU5UX0xJTUlUXG4gICAgfSxcbiAgICBtZXJnZVJlc291cmNlV2l0aERlZmF1bHRzOiAhMFxuICB9O1xufVxuZnVuY3Rpb24gJChlKSB7XG4gIHN3aXRjaCAoZSA9PT0gdm9pZCAwICYmIChlID0gT1QoKSksIGUuT1RFTF9UUkFDRVNfU0FNUExFUikge1xuICAgIGNhc2UgciQxLkFsd2F5c09uOlxuICAgICAgcmV0dXJuIG5ldyBnKCk7XG4gICAgY2FzZSByJDEuQWx3YXlzT2ZmOlxuICAgICAgcmV0dXJuIG5ldyBJKCk7XG4gICAgY2FzZSByJDEuUGFyZW50QmFzZWRBbHdheXNPbjpcbiAgICAgIHJldHVybiBuZXcgRCh7XG4gICAgICAgIHJvb3Q6IG5ldyBnKClcbiAgICAgIH0pO1xuICAgIGNhc2UgciQxLlBhcmVudEJhc2VkQWx3YXlzT2ZmOlxuICAgICAgcmV0dXJuIG5ldyBEKHtcbiAgICAgICAgcm9vdDogbmV3IEkoKVxuICAgICAgfSk7XG4gICAgY2FzZSByJDEuVHJhY2VJZFJhdGlvOlxuICAgICAgcmV0dXJuIG5ldyBXKFkoZSkpO1xuICAgIGNhc2UgciQxLlBhcmVudEJhc2VkVHJhY2VJZFJhdGlvOlxuICAgICAgcmV0dXJuIG5ldyBEKHtcbiAgICAgICAgcm9vdDogbmV3IFcoWShlKSlcbiAgICAgIH0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gci5lcnJvcignT1RFTF9UUkFDRVNfU0FNUExFUiB2YWx1ZSBcIicgKyBlLk9URUxfVFJBQ0VTX1NBTVBMRVIgKyBcIiBpbnZhbGlkLCBkZWZhdWx0aW5nIHRvIFwiICsgUnQgKyAnXCIuJyksIG5ldyBnKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIFkoZSkge1xuICBpZiAoZS5PVEVMX1RSQUNFU19TQU1QTEVSX0FSRyA9PT0gdm9pZCAwIHx8IGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgPT09IFwiXCIpXG4gICAgcmV0dXJuIHIuZXJyb3IoXCJPVEVMX1RSQUNFU19TQU1QTEVSX0FSRyBpcyBibGFuaywgZGVmYXVsdGluZyB0byBcIiArIEUgKyBcIi5cIiksIEU7XG4gIHZhciB0ID0gTnVtYmVyKGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcpO1xuICByZXR1cm4gaXNOYU4odCkgPyAoci5lcnJvcihcIk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHPVwiICsgZS5PVEVMX1RSQUNFU19TQU1QTEVSX0FSRyArIFwiIHdhcyBnaXZlbiwgYnV0IGl0IGlzIGludmFsaWQsIGRlZmF1bHRpbmcgdG8gXCIgKyBFICsgXCIuXCIpLCBFKSA6IHQgPCAwIHx8IHQgPiAxID8gKHIuZXJyb3IoXCJPVEVMX1RSQUNFU19TQU1QTEVSX0FSRz1cIiArIGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgKyBcIiB3YXMgZ2l2ZW4sIGJ1dCBpdCBpcyBvdXQgb2YgcmFuZ2UgKFswLi4xXSksIGRlZmF1bHRpbmcgdG8gXCIgKyBFICsgXCIuXCIpLCBFKSA6IHQ7XG59XG5mdW5jdGlvbiBJdChlKSB7XG4gIHZhciB0ID0ge1xuICAgIHNhbXBsZXI6ICQoKVxuICB9LCByID0gSigpLCBuID0gT2JqZWN0LmFzc2lnbih7fSwgciwgdCwgZSk7XG4gIHJldHVybiBuLmdlbmVyYWxMaW1pdHMgPSBPYmplY3QuYXNzaWduKHt9LCByLmdlbmVyYWxMaW1pdHMsIGUuZ2VuZXJhbExpbWl0cyB8fCB7fSksIG4uc3BhbkxpbWl0cyA9IE9iamVjdC5hc3NpZ24oe30sIHIuc3BhbkxpbWl0cywgZS5zcGFuTGltaXRzIHx8IHt9KSwgbjtcbn1cbmZ1bmN0aW9uIE10KGUpIHtcbiAgdmFyIHQsIHIsIG4sIG8sIGksIGEsIHMsIGwsIHUsIHAsIGYsIGMsIHkgPSBPYmplY3QuYXNzaWduKHt9LCBlLnNwYW5MaW1pdHMpLCBtID0gTFQoKTtcbiAgcmV0dXJuIHkuYXR0cmlidXRlQ291bnRMaW1pdCA9IChhID0gKGkgPSAobyA9IChyID0gKHQgPSBlLnNwYW5MaW1pdHMpID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQuYXR0cmlidXRlQ291bnRMaW1pdCkgIT09IG51bGwgJiYgciAhPT0gdm9pZCAwID8gciA6IChuID0gZS5nZW5lcmFsTGltaXRzKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuLmF0dHJpYnV0ZUNvdW50TGltaXQpICE9PSBudWxsICYmIG8gIT09IHZvaWQgMCA/IG8gOiBtLk9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBtLk9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogUCQxLCB5LmF0dHJpYnV0ZVZhbHVlTGVuZ3RoTGltaXQgPSAoYyA9IChmID0gKHAgPSAobCA9IChzID0gZS5zcGFuTGltaXRzKSA9PT0gbnVsbCB8fCBzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzLmF0dHJpYnV0ZVZhbHVlTGVuZ3RoTGltaXQpICE9PSBudWxsICYmIGwgIT09IHZvaWQgMCA/IGwgOiAodSA9IGUuZ2VuZXJhbExpbWl0cykgPT09IG51bGwgfHwgdSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdS5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0KSAhPT0gbnVsbCAmJiBwICE9PSB2b2lkIDAgPyBwIDogbS5PVEVMX1NQQU5fQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVCkgIT09IG51bGwgJiYgZiAhPT0gdm9pZCAwID8gZiA6IG0uT1RFTF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUKSAhPT0gbnVsbCAmJiBjICE9PSB2b2lkIDAgPyBjIDogTSwgT2JqZWN0LmFzc2lnbih7fSwgZSwgeyBzcGFuTGltaXRzOiB5IH0pO1xufVxudmFyIE50ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCwgciQxKSB7XG4gICAgICB0aGlzLl9leHBvcnRlciA9IHQsIHRoaXMuX2lzRXhwb3J0aW5nID0gITEsIHRoaXMuX2ZpbmlzaGVkU3BhbnMgPSBbXSwgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPSAwO1xuICAgICAgdmFyIG4gPSBPVCgpO1xuICAgICAgdGhpcy5fbWF4RXhwb3J0QmF0Y2hTaXplID0gdHlwZW9mIChyJDEgPT0gbnVsbCA/IHZvaWQgMCA6IHIkMS5tYXhFeHBvcnRCYXRjaFNpemUpID09IFwibnVtYmVyXCIgPyByJDEubWF4RXhwb3J0QmF0Y2hTaXplIDogbi5PVEVMX0JTUF9NQVhfRVhQT1JUX0JBVENIX1NJWkUsIHRoaXMuX21heFF1ZXVlU2l6ZSA9IHR5cGVvZiAociQxID09IG51bGwgPyB2b2lkIDAgOiByJDEubWF4UXVldWVTaXplKSA9PSBcIm51bWJlclwiID8gciQxLm1heFF1ZXVlU2l6ZSA6IG4uT1RFTF9CU1BfTUFYX1FVRVVFX1NJWkUsIHRoaXMuX3NjaGVkdWxlZERlbGF5TWlsbGlzID0gdHlwZW9mIChyJDEgPT0gbnVsbCA/IHZvaWQgMCA6IHIkMS5zY2hlZHVsZWREZWxheU1pbGxpcykgPT0gXCJudW1iZXJcIiA/IHIkMS5zY2hlZHVsZWREZWxheU1pbGxpcyA6IG4uT1RFTF9CU1BfU0NIRURVTEVfREVMQVksIHRoaXMuX2V4cG9ydFRpbWVvdXRNaWxsaXMgPSB0eXBlb2YgKHIkMSA9PSBudWxsID8gdm9pZCAwIDogciQxLmV4cG9ydFRpbWVvdXRNaWxsaXMpID09IFwibnVtYmVyXCIgPyByJDEuZXhwb3J0VGltZW91dE1pbGxpcyA6IG4uT1RFTF9CU1BfRVhQT1JUX1RJTUVPVVQsIHRoaXMuX3NodXRkb3duT25jZSA9IG5ldyBacih0aGlzLl9zaHV0ZG93biwgdGhpcyksIHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSA+IHRoaXMuX21heFF1ZXVlU2l6ZSAmJiAoci53YXJuKFwiQmF0Y2hTcGFuUHJvY2Vzc29yOiBtYXhFeHBvcnRCYXRjaFNpemUgbXVzdCBiZSBzbWFsbGVyIG9yIGVxdWFsIHRvIG1heFF1ZXVlU2l6ZSwgc2V0dGluZyBtYXhFeHBvcnRCYXRjaFNpemUgdG8gbWF0Y2ggbWF4UXVldWVTaXplXCIpLCB0aGlzLl9tYXhFeHBvcnRCYXRjaFNpemUgPSB0aGlzLl9tYXhRdWV1ZVNpemUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5pc0NhbGxlZCA/IHRoaXMuX3NodXRkb3duT25jZS5wcm9taXNlIDogdGhpcy5fZmx1c2hBbGwoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5vblN0YXJ0ID0gZnVuY3Rpb24odCwgcikge1xuICAgIH0sIGUucHJvdG90eXBlLm9uRW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgdGhpcy5fc2h1dGRvd25PbmNlLmlzQ2FsbGVkIHx8IHQuc3BhbkNvbnRleHQoKS50cmFjZUZsYWdzICYgU3QuU0FNUExFRCAmJiB0aGlzLl9hZGRUb0J1ZmZlcih0KTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5jYWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3NodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQub25TaHV0ZG93bigpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQuX2ZsdXNoQWxsKCk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdC5fZXhwb3J0ZXIuc2h1dGRvd24oKTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9hZGRUb0J1ZmZlciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGlmICh0aGlzLl9maW5pc2hlZFNwYW5zLmxlbmd0aCA+PSB0aGlzLl9tYXhRdWV1ZVNpemUpIHtcbiAgICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIm1heFF1ZXVlU2l6ZSByZWFjaGVkLCBkcm9wcGluZyBzcGFuc1wiKSwgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQrKztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPiAwICYmIChyLndhcm4oXCJEcm9wcGVkIFwiICsgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgKyBcIiBzcGFucyBiZWNhdXNlIG1heFF1ZXVlU2l6ZSByZWFjaGVkXCIpLCB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCA9IDApLCB0aGlzLl9maW5pc2hlZFNwYW5zLnB1c2godCksIHRoaXMuX21heWJlU3RhcnRUaW1lcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9mbHVzaEFsbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgZm9yICh2YXIgbyA9IFtdLCBpID0gTWF0aC5jZWlsKHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIC8gdC5fbWF4RXhwb3J0QmF0Y2hTaXplKSwgYSA9IDAsIHMgPSBpOyBhIDwgczsgYSsrKVxuICAgICAgICAgIG8ucHVzaCh0Ll9mbHVzaE9uZUJhdGNoKCkpO1xuICAgICAgICBQcm9taXNlLmFsbChvKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHIoKTtcbiAgICAgICAgfSkuY2F0Y2gobik7XG4gICAgICB9KTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZmx1c2hPbmVCYXRjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2NsZWFyVGltZXIoKSwgdGhpcy5fZmluaXNoZWRTcGFucy5sZW5ndGggPT09IDAgPyBQcm9taXNlLnJlc29sdmUoKSA6IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgdmFyIG8gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIG4obmV3IEVycm9yKFwiVGltZW91dFwiKSk7XG4gICAgICAgIH0sIHQuX2V4cG9ydFRpbWVvdXRNaWxsaXMpO1xuICAgICAgICBFZS53aXRoKFckMShFZS5hY3RpdmUoKSksIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBpO1xuICAgICAgICAgIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIDw9IHQuX21heEV4cG9ydEJhdGNoU2l6ZSA/IChpID0gdC5fZmluaXNoZWRTcGFucywgdC5fZmluaXNoZWRTcGFucyA9IFtdKSA6IGkgPSB0Ll9maW5pc2hlZFNwYW5zLnNwbGljZSgwLCB0Ll9tYXhFeHBvcnRCYXRjaFNpemUpO1xuICAgICAgICAgIGZvciAodmFyIGEkMSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2V4cG9ydGVyLmV4cG9ydChpLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICAgIHZhciBjO1xuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobyksIGYuY29kZSA9PT0gYS5TVUNDRVNTID8gcigpIDogbigoYyA9IGYuZXJyb3IpICE9PSBudWxsICYmIGMgIT09IHZvaWQgMCA/IGMgOiBuZXcgRXJyb3IoXCJCYXRjaFNwYW5Qcm9jZXNzb3I6IHNwYW4gZXhwb3J0IGZhaWxlZFwiKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBzID0gbnVsbCwgbCA9IDAsIHUgPSBpLmxlbmd0aDsgbCA8IHU7IGwrKykge1xuICAgICAgICAgICAgdmFyIHAgPSBpW2xdO1xuICAgICAgICAgICAgcC5yZXNvdXJjZS5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nICYmIHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcyAmJiAocyA/PyAocyA9IFtdKSwgcy5wdXNoKHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcygpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPT09IG51bGwgPyBhJDEoKSA6IFByb21pc2UuYWxsKHMpLnRoZW4oYSQxLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICBuZSQxKGYpLCBuKGYpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9tYXliZVN0YXJ0VGltZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgIGlmICghdGhpcy5faXNFeHBvcnRpbmcpIHtcbiAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0Ll9pc0V4cG9ydGluZyA9ICEwLCB0Ll9mbHVzaE9uZUJhdGNoKCkuZmluYWxseShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHQuX2lzRXhwb3J0aW5nID0gITEsIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID4gMCAmJiAodC5fY2xlYXJUaW1lcigpLCB0Ll9tYXliZVN0YXJ0VGltZXIoKSk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obikge1xuICAgICAgICAgICAgdC5faXNFeHBvcnRpbmcgPSAhMSwgbmUkMShuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID49IHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSlcbiAgICAgICAgICByZXR1cm4gcigpO1xuICAgICAgICB0aGlzLl90aW1lciA9PT0gdm9pZCAwICYmICh0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHIoKTtcbiAgICAgICAgfSwgdGhpcy5fc2NoZWR1bGVkRGVsYXlNaWxsaXMpLCBzcih0aGlzLl90aW1lcikpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLl9jbGVhclRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl90aW1lciAhPT0gdm9pZCAwICYmIChjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLCB0aGlzLl90aW1lciA9IHZvaWQgMCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBCdCA9IC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgdmFyIGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgcmV0dXJuIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBuLl9fcHJvdG9fXyA9IG87XG4gICAgfSB8fCBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBmb3IgKHZhciBpIGluIG8pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBpKSAmJiAobltpXSA9IG9baV0pO1xuICAgIH0sIGUodCwgcik7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHR5cGVvZiByICE9IFwiZnVuY3Rpb25cIiAmJiByICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcocikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGUodCwgcik7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSB0O1xuICAgIH1cbiAgICB0LnByb3RvdHlwZSA9IHIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHIpIDogKG4ucHJvdG90eXBlID0gci5wcm90b3R5cGUsIG5ldyBuKCkpO1xuICB9O1xufSgpLCBEdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbihlKSB7XG4gICAgQnQodCwgZSk7XG4gICAgZnVuY3Rpb24gdChyLCBuKSB7XG4gICAgICB2YXIgbyA9IGUuY2FsbCh0aGlzLCByLCBuKSB8fCB0aGlzO1xuICAgICAgcmV0dXJuIG8ub25Jbml0KG4pLCBvO1xuICAgIH1cbiAgICByZXR1cm4gdC5wcm90b3R5cGUub25Jbml0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIG4gPSB0aGlzO1xuICAgICAgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZGlzYWJsZUF1dG9GbHVzaE9uRG9jdW1lbnRIaWRlKSAhPT0gITAgJiYgdHlwZW9mIGRvY3VtZW50IDwgXCJ1XCIgJiYgKHRoaXMuX3Zpc2liaWxpdHlDaGFuZ2VMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwiaGlkZGVuXCIgJiYgbi5mb3JjZUZsdXNoKCkuY2F0Y2goZnVuY3Rpb24obykge1xuICAgICAgICAgIG5lJDEobyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBuLmZvcmNlRmx1c2goKS5jYXRjaChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgbmUkMShvKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLCB0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQucHJvdG90eXBlLm9uU2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHR5cGVvZiBkb2N1bWVudCA8IFwidVwiICYmICh0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgdGhpcy5fdmlzaWJpbGl0eUNoYW5nZUxpc3RlbmVyKSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQ7XG4gIH0oTnQpXG4pLCBVdCA9IDgsIEZ0ID0gMTYsIEd0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgdGhpcy5nZW5lcmF0ZVRyYWNlSWQgPSBxKEZ0KSwgdGhpcy5nZW5lcmF0ZVNwYW5JZCA9IHEoVXQpO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSgpXG4pLCB4ID0gQXJyYXkoMzIpO1xuZnVuY3Rpb24gcShlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciByID0gMDsgciA8IGUgKiAyOyByKyspXG4gICAgICB4W3JdID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpICsgNDgsIHhbcl0gPj0gNTggJiYgKHhbcl0gKz0gMzkpO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIHguc2xpY2UoMCwgZSAqIDIpKTtcbiAgfTtcbn1cbnZhciB6dCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQsIHIsIG4pIHtcbiAgICAgIHRoaXMuX3RyYWNlclByb3ZpZGVyID0gbjtcbiAgICAgIHZhciBvID0gSXQocik7XG4gICAgICB0aGlzLl9zYW1wbGVyID0gby5zYW1wbGVyLCB0aGlzLl9nZW5lcmFsTGltaXRzID0gby5nZW5lcmFsTGltaXRzLCB0aGlzLl9zcGFuTGltaXRzID0gby5zcGFuTGltaXRzLCB0aGlzLl9pZEdlbmVyYXRvciA9IHIuaWRHZW5lcmF0b3IgfHwgbmV3IEd0KCksIHRoaXMucmVzb3VyY2UgPSBuLnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc3RhcnRTcGFuID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICB2YXIgbywgaSwgYTtcbiAgICAgIHIkMSA9PT0gdm9pZCAwICYmIChyJDEgPSB7fSksIG4gPT09IHZvaWQgMCAmJiAobiA9IEVlLmFjdGl2ZSgpKSwgciQxLnJvb3QgJiYgKG4gPSBDZS5kZWxldGVTcGFuKG4pKTtcbiAgICAgIHZhciBzID0gQ2UuZ2V0U3BhbihuKTtcbiAgICAgIGlmICh3KG4pKSB7XG4gICAgICAgIHIuZGVidWcoXCJJbnN0cnVtZW50YXRpb24gc3VwcHJlc3NlZCwgcmV0dXJuaW5nIE5vb3AgU3BhblwiKTtcbiAgICAgICAgdmFyIGwgPSBDZS53cmFwU3BhbkNvbnRleHQoVm8pO1xuICAgICAgICByZXR1cm4gbDtcbiAgICAgIH1cbiAgICAgIHZhciB1ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5zcGFuQ29udGV4dCgpLCBwJDEgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVNwYW5JZCgpLCBmLCBjLCB5O1xuICAgICAgIXUgfHwgIUNlLmlzU3BhbkNvbnRleHRWYWxpZCh1KSA/IGYgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVRyYWNlSWQoKSA6IChmID0gdS50cmFjZUlkLCBjID0gdS50cmFjZVN0YXRlLCB5ID0gdS5zcGFuSWQpO1xuICAgICAgdmFyIG0gPSAobyA9IHIkMS5raW5kKSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogR2UuSU5URVJOQUwsIEYgPSAoKGkgPSByJDEubGlua3MpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBbXSkubWFwKGZ1bmN0aW9uKGopIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZXh0OiBqLmNvbnRleHQsXG4gICAgICAgICAgYXR0cmlidXRlczogWmUoai5hdHRyaWJ1dGVzKVxuICAgICAgICB9O1xuICAgICAgfSksIEcgPSBaZShyJDEuYXR0cmlidXRlcyksIGIgPSB0aGlzLl9zYW1wbGVyLnNob3VsZFNhbXBsZShuLCBmLCB0LCBtLCBHLCBGKTtcbiAgICAgIGMgPSAoYSA9IGIudHJhY2VTdGF0ZSkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IGM7XG4gICAgICB2YXIgdHQgPSBiLmRlY2lzaW9uID09PSBwLlJFQ09SRF9BTkRfU0FNUExFRCA/IFN0LlNBTVBMRUQgOiBTdC5OT05FLCB6ID0geyB0cmFjZUlkOiBmLCBzcGFuSWQ6IHAkMSwgdHJhY2VGbGFnczogdHQsIHRyYWNlU3RhdGU6IGMgfTtcbiAgICAgIGlmIChiLmRlY2lzaW9uID09PSBwLk5PVF9SRUNPUkQpIHtcbiAgICAgICAgci5kZWJ1ZyhcIlJlY29yZGluZyBpcyBvZmYsIHByb3BhZ2F0aW5nIGNvbnRleHQgaW4gYSBub24tcmVjb3JkaW5nIHNwYW5cIik7XG4gICAgICAgIHZhciBsID0gQ2Uud3JhcFNwYW5Db250ZXh0KHopO1xuICAgICAgICByZXR1cm4gbDtcbiAgICAgIH1cbiAgICAgIHZhciBldCA9IFplKE9iamVjdC5hc3NpZ24oRywgYi5hdHRyaWJ1dGVzKSksIHJ0ID0gbmV3IE90KHRoaXMsIG4sIHQsIHosIG0sIHksIEYsIHIkMS5zdGFydFRpbWUsIHZvaWQgMCwgZXQpO1xuICAgICAgcmV0dXJuIHJ0O1xuICAgIH0sIGUucHJvdG90eXBlLnN0YXJ0QWN0aXZlU3BhbiA9IGZ1bmN0aW9uKHQsIHIsIG4sIG8pIHtcbiAgICAgIHZhciBpLCBhLCBzO1xuICAgICAgaWYgKCEoYXJndW1lbnRzLmxlbmd0aCA8IDIpKSB7XG4gICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyBzID0gciA6IGFyZ3VtZW50cy5sZW5ndGggPT09IDMgPyAoaSA9IHIsIHMgPSBuKSA6IChpID0gciwgYSA9IG4sIHMgPSBvKTtcbiAgICAgICAgdmFyIGwgPSBhID8/IEVlLmFjdGl2ZSgpLCB1ID0gdGhpcy5zdGFydFNwYW4odCwgaSwgbCksIHAgPSBDZS5zZXRTcGFuKGwsIHUpO1xuICAgICAgICByZXR1cm4gRWUud2l0aChwLCBzLCB2b2lkIDAsIHUpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmdldEdlbmVyYWxMaW1pdHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZW5lcmFsTGltaXRzO1xuICAgIH0sIGUucHJvdG90eXBlLmdldFNwYW5MaW1pdHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zcGFuTGltaXRzO1xuICAgIH0sIGUucHJvdG90eXBlLmdldEFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFjZXJQcm92aWRlci5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBPID0gZnVuY3Rpb24oZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgciA9IHQgJiYgZVt0XSwgbiA9IDA7XG4gIGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IodCA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIEsgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICB0aGlzLl9zcGFuUHJvY2Vzc29ycyA9IHQ7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCwgciwgbiA9IFtdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IE8odGhpcy5fc3BhblByb2Nlc3NvcnMpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gaS52YWx1ZTtcbiAgICAgICAgICBuLnB1c2goYS5mb3JjZUZsdXNoKCkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgIHQgPSB7IGVycm9yOiBzIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAociA9IG8ucmV0dXJuKSAmJiByLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHQpIHRocm93IHQuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihzKSB7XG4gICAgICAgIFByb21pc2UuYWxsKG4pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcygpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihsKSB7XG4gICAgICAgICAgbmUkMShsIHx8IG5ldyBFcnJvcihcIk11bHRpU3BhblByb2Nlc3NvcjogZm9yY2VGbHVzaCBmYWlsZWRcIikpLCBzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgZS5wcm90b3R5cGUub25TdGFydCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICAgIHZhciBuLCBvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaSA9IE8odGhpcy5fc3BhblByb2Nlc3NvcnMpLCBhID0gaS5uZXh0KCk7ICFhLmRvbmU7IGEgPSBpLm5leHQoKSkge1xuICAgICAgICAgIHZhciBzID0gYS52YWx1ZTtcbiAgICAgICAgICBzLm9uU3RhcnQodCwgcik7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgbiA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYSAmJiAhYS5kb25lICYmIChvID0gaS5yZXR1cm4pICYmIG8uY2FsbChpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAobikgdGhyb3cgbi5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLm9uRW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIsIG47XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gTyh0aGlzLl9zcGFuUHJvY2Vzc29ycyksIGkgPSBvLm5leHQoKTsgIWkuZG9uZTsgaSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGEgPSBpLnZhbHVlO1xuICAgICAgICAgIGEub25FbmQodCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgciA9IHsgZXJyb3I6IHMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaSAmJiAhaS5kb25lICYmIChuID0gby5yZXR1cm4pICYmIG4uY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAocikgdGhyb3cgci5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCwgciwgbiA9IFtdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IE8odGhpcy5fc3BhblByb2Nlc3NvcnMpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gaS52YWx1ZTtcbiAgICAgICAgICBuLnB1c2goYS5zaHV0ZG93bigpKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICB0ID0geyBlcnJvcjogcyB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpICYmICFpLmRvbmUgJiYgKHIgPSBvLnJldHVybikgJiYgci5jYWxsKG8pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmICh0KSB0aHJvdyB0LmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocywgbCkge1xuICAgICAgICBQcm9taXNlLmFsbChuKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHMoKTtcbiAgICAgICAgfSwgbCk7XG4gICAgICB9KTtcbiAgICB9LCBlO1xuICB9KClcbiksIGp0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5vblN0YXJ0ID0gZnVuY3Rpb24odCwgcikge1xuICAgIH0sIGUucHJvdG90eXBlLm9uRW5kID0gZnVuY3Rpb24odCkge1xuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgVnQgPSBmdW5jdGlvbihlLCB0KSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXIpIHJldHVybiBlO1xuICB2YXIgbiA9IHIuY2FsbChlKSwgbywgaSA9IFtdLCBhO1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEobyA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChvLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGEgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG8gJiYgIW8uZG9uZSAmJiAociA9IG4ucmV0dXJuKSAmJiByLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIGt0ID0gZnVuY3Rpb24oZSwgdCwgcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIG8gPSB0Lmxlbmd0aCwgaTsgbiA8IG87IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn0sIFM7XG4oZnVuY3Rpb24oZSkge1xuICBlW2UucmVzb2x2ZWQgPSAwXSA9IFwicmVzb2x2ZWRcIiwgZVtlLnRpbWVvdXQgPSAxXSA9IFwidGltZW91dFwiLCBlW2UuZXJyb3IgPSAyXSA9IFwiZXJyb3JcIiwgZVtlLnVucmVzb2x2ZWQgPSAzXSA9IFwidW5yZXNvbHZlZFwiO1xufSkoUyB8fCAoUyA9IHt9KSk7XG52YXIgcmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICB0ID09PSB2b2lkIDAgJiYgKHQgPSB7fSk7XG4gICAgICB2YXIgciwgbjtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycyA9IFtdLCB0aGlzLl90cmFjZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgIHZhciBvID0ga3IkMSh7fSwgSigpLCBNdCh0KSk7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZSA9IChyID0gby5yZXNvdXJjZSkgIT09IG51bGwgJiYgciAhPT0gdm9pZCAwID8gciA6IFIkMS5lbXB0eSgpLCBvLm1lcmdlUmVzb3VyY2VXaXRoRGVmYXVsdHMgJiYgKHRoaXMucmVzb3VyY2UgPSBSJDEuZGVmYXVsdCgpLm1lcmdlKHRoaXMucmVzb3VyY2UpKSwgdGhpcy5fY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgbywge1xuICAgICAgICByZXNvdXJjZTogdGhpcy5yZXNvdXJjZVxuICAgICAgfSksICEoKG4gPSB0LnNwYW5Qcm9jZXNzb3JzKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDApICYmIG4ubGVuZ3RoKVxuICAgICAgICB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMgPSBrdChbXSwgVnQodC5zcGFuUHJvY2Vzc29ycyksICExKSwgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yID0gbmV3IEsodGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgaSA9IHRoaXMuX2J1aWxkRXhwb3J0ZXJGcm9tRW52KCk7XG4gICAgICAgIGlmIChpICE9PSB2b2lkIDApIHtcbiAgICAgICAgICB2YXIgYSA9IG5ldyBEdChpKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBhO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBuZXcganQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmdldFRyYWNlciA9IGZ1bmN0aW9uKHQsIHIsIG4pIHtcbiAgICAgIHZhciBvID0gdCArIFwiQFwiICsgKHIgfHwgXCJcIikgKyBcIjpcIiArICgobiA9PSBudWxsID8gdm9pZCAwIDogbi5zY2hlbWFVcmwpIHx8IFwiXCIpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYWNlcnMuaGFzKG8pIHx8IHRoaXMuX3RyYWNlcnMuc2V0KG8sIG5ldyB6dCh7IG5hbWU6IHQsIHZlcnNpb246IHIsIHNjaGVtYVVybDogbiA9PSBudWxsID8gdm9pZCAwIDogbi5zY2hlbWFVcmwgfSwgdGhpcy5fY29uZmlnLCB0aGlzKSksIHRoaXMuX3RyYWNlcnMuZ2V0KG8pO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZFNwYW5Qcm9jZXNzb3IgPSBmdW5jdGlvbih0KSB7XG4gICAgICB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMubGVuZ3RoID09PSAwICYmIHRoaXMuYWN0aXZlU3BhblByb2Nlc3Nvci5zaHV0ZG93bigpLmNhdGNoKGZ1bmN0aW9uKHIkMSkge1xuICAgICAgICByZXR1cm4gci5lcnJvcihcIkVycm9yIHdoaWxlIHRyeWluZyB0byBzaHV0ZG93biBjdXJyZW50IHNwYW4gcHJvY2Vzc29yXCIsIHIkMSk7XG4gICAgICB9KSwgdGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzLnB1c2godCksIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvciA9IG5ldyBLKHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0QWN0aXZlU3BhblByb2Nlc3NvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvcjtcbiAgICB9LCBlLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHQgPT09IHZvaWQgMCAmJiAodCA9IHt9KSwgQ2Uuc2V0R2xvYmFsVHJhY2VyUHJvdmlkZXIodGhpcyksIHQucHJvcGFnYXRvciA9PT0gdm9pZCAwICYmICh0LnByb3BhZ2F0b3IgPSB0aGlzLl9idWlsZFByb3BhZ2F0b3JGcm9tRW52KCkpLCB0LmNvbnRleHRNYW5hZ2VyICYmIEVlLnNldEdsb2JhbENvbnRleHRNYW5hZ2VyKHQuY29udGV4dE1hbmFnZXIpLCB0LnByb3BhZ2F0b3IgJiYgeV8uc2V0R2xvYmFsUHJvcGFnYXRvcih0LnByb3BhZ2F0b3IpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcy5fY29uZmlnLmZvcmNlRmx1c2hUaW1lb3V0TWlsbGlzLCByID0gdGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzLm1hcChmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihvKSB7XG4gICAgICAgICAgdmFyIGksIGEgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbyhuZXcgRXJyb3IoXCJTcGFuIHByb2Nlc3NvciBkaWQgbm90IGNvbXBsZXRlZCB3aXRoaW4gdGltZW91dCBwZXJpb2Qgb2YgXCIgKyB0ICsgXCIgbXNcIikpLCBpID0gUy50aW1lb3V0O1xuICAgICAgICAgIH0sIHQpO1xuICAgICAgICAgIG4uZm9yY2VGbHVzaCgpLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoYSksIGkgIT09IFMudGltZW91dCAmJiAoaSA9IFMucmVzb2x2ZWQsIG8oaSkpO1xuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChhKSwgaSA9IFMuZXJyb3IsIG8ocyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obiwgbykge1xuICAgICAgICBQcm9taXNlLmFsbChyKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICB2YXIgYSA9IGkuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBzICE9PSBTLnJlc29sdmVkO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGEubGVuZ3RoID4gMCA/IG8oYSkgOiBuKCk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICByZXR1cm4gbyhbaV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yLnNodXRkb3duKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2dldFByb3BhZ2F0b3IgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgcjtcbiAgICAgIHJldHVybiAociA9IHRoaXMuY29uc3RydWN0b3IuX3JlZ2lzdGVyZWRQcm9wYWdhdG9ycy5nZXQodCkpID09PSBudWxsIHx8IHIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHIoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0U3BhbkV4cG9ydGVyID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHI7XG4gICAgICByZXR1cm4gKHIgPSB0aGlzLmNvbnN0cnVjdG9yLl9yZWdpc3RlcmVkRXhwb3J0ZXJzLmdldCh0KSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9idWlsZFByb3BhZ2F0b3JGcm9tRW52ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIHIkMSA9IEFycmF5LmZyb20obmV3IFNldChPVCgpLk9URUxfUFJPUEFHQVRPUlMpKSwgbiA9IHIkMS5tYXAoZnVuY3Rpb24oaSkge1xuICAgICAgICB2YXIgYSA9IHQuX2dldFByb3BhZ2F0b3IoaSk7XG4gICAgICAgIHJldHVybiBhIHx8IHIud2FybignUHJvcGFnYXRvciBcIicgKyBpICsgJ1wiIHJlcXVlc3RlZCB0aHJvdWdoIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHVuYXZhaWxhYmxlLicpLCBhO1xuICAgICAgfSksIG8gPSBuLnJlZHVjZShmdW5jdGlvbihpLCBhKSB7XG4gICAgICAgIHJldHVybiBhICYmIGkucHVzaChhKSwgaTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIGlmIChvLmxlbmd0aCAhPT0gMClcbiAgICAgICAgcmV0dXJuIHIkMS5sZW5ndGggPT09IDEgPyBvWzBdIDogbmV3IHByKHtcbiAgICAgICAgICBwcm9wYWdhdG9yczogb1xuICAgICAgICB9KTtcbiAgICB9LCBlLnByb3RvdHlwZS5fYnVpbGRFeHBvcnRlckZyb21FbnYgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gT1QoKS5PVEVMX1RSQUNFU19FWFBPUlRFUjtcbiAgICAgIGlmICghKHQgPT09IFwibm9uZVwiIHx8IHQgPT09IFwiXCIpKSB7XG4gICAgICAgIHZhciByJDEgPSB0aGlzLl9nZXRTcGFuRXhwb3J0ZXIodCk7XG4gICAgICAgIHJldHVybiByJDEgfHwgci5lcnJvcignRXhwb3J0ZXIgXCInICsgdCArICdcIiByZXF1ZXN0ZWQgdGhyb3VnaCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyB1bmF2YWlsYWJsZS4nKSwgciQxO1xuICAgICAgfVxuICAgIH0sIGUuX3JlZ2lzdGVyZWRQcm9wYWdhdG9ycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKFtcbiAgICAgIFtcInRyYWNlY29udGV4dFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBicigpO1xuICAgICAgfV0sXG4gICAgICBbXCJiYWdnYWdlXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IEplKCk7XG4gICAgICB9XVxuICAgIF0pLCBlLl9yZWdpc3RlcmVkRXhwb3J0ZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgZTtcbiAgfSgpXG4pLCBIdCA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHIgPSB0ICYmIGVbdF0sIG4gPSAwO1xuICBpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHQgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBuZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZXhwb3J0ID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbmRTcGFucyh0LCByKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbmRTcGFucyhbXSksIHRoaXMuZm9yY2VGbHVzaCgpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZXhwb3J0SW5mbyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB0LnJlc291cmNlLmF0dHJpYnV0ZXNcbiAgICAgICAgfSxcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uU2NvcGU6IHQuaW5zdHJ1bWVudGF0aW9uTGlicmFyeSxcbiAgICAgICAgdHJhY2VJZDogdC5zcGFuQ29udGV4dCgpLnRyYWNlSWQsXG4gICAgICAgIHBhcmVudElkOiB0LnBhcmVudFNwYW5JZCxcbiAgICAgICAgdHJhY2VTdGF0ZTogKHIgPSB0LnNwYW5Db250ZXh0KCkudHJhY2VTdGF0ZSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5zZXJpYWxpemUoKSxcbiAgICAgICAgbmFtZTogdC5uYW1lLFxuICAgICAgICBpZDogdC5zcGFuQ29udGV4dCgpLnNwYW5JZCxcbiAgICAgICAga2luZDogdC5raW5kLFxuICAgICAgICB0aW1lc3RhbXA6IGtlKHQuc3RhcnRUaW1lKSxcbiAgICAgICAgZHVyYXRpb246IGtlKHQuZHVyYXRpb24pLFxuICAgICAgICBhdHRyaWJ1dGVzOiB0LmF0dHJpYnV0ZXMsXG4gICAgICAgIHN0YXR1czogdC5zdGF0dXMsXG4gICAgICAgIGV2ZW50czogdC5ldmVudHMsXG4gICAgICAgIGxpbmtzOiB0LmxpbmtzXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLl9zZW5kU3BhbnMgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICB2YXIgbiwgbztcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBIdCh0KSwgYSQxID0gaS5uZXh0KCk7ICFhJDEuZG9uZTsgYSQxID0gaS5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgcyA9IGEkMS52YWx1ZTtcbiAgICAgICAgICBjb25zb2xlLmRpcih0aGlzLl9leHBvcnRJbmZvKHMpLCB7IGRlcHRoOiAzIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIG4gPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGEkMSAmJiAhYSQxLmRvbmUgJiYgKG8gPSBpLnJldHVybikgJiYgby5jYWxsKGkpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChuKSB0aHJvdyBuLmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocilcbiAgICAgICAgcmV0dXJuIHIoeyBjb2RlOiBhLlNVQ0NFU1MgfSk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBRdCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBvLCBpID0gW10sIGE7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShvID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKG8udmFsdWUpO1xuICB9IGNhdGNoIChzKSB7XG4gICAgYSA9IHsgZXJyb3I6IHMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgbyAmJiAhby5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgWHQgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgbyA9IHQubGVuZ3RoLCBpOyBuIDwgbzsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgaWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHRoaXMuX2ZpbmlzaGVkU3BhbnMgPSBbXSwgdGhpcy5fc3RvcHBlZCA9ICExO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZXhwb3J0ID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgdmFyIG47XG4gICAgICBpZiAodGhpcy5fc3RvcHBlZClcbiAgICAgICAgcmV0dXJuIHIoe1xuICAgICAgICAgIGNvZGU6IGEuRkFJTEVELFxuICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoXCJFeHBvcnRlciBoYXMgYmVlbiBzdG9wcGVkXCIpXG4gICAgICAgIH0pO1xuICAgICAgKG4gPSB0aGlzLl9maW5pc2hlZFNwYW5zKS5wdXNoLmFwcGx5KG4sIFh0KFtdLCBRdCh0KSwgITEpKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHIoeyBjb2RlOiBhLlNVQ0NFU1MgfSk7XG4gICAgICB9LCAwKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0b3BwZWQgPSAhMCwgdGhpcy5fZmluaXNoZWRTcGFucyA9IFtdLCB0aGlzLmZvcmNlRmx1c2goKTtcbiAgICB9LCBlLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSwgZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX2ZpbmlzaGVkU3BhbnMgPSBbXTtcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRGaW5pc2hlZFNwYW5zID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmluaXNoZWRTcGFucztcbiAgICB9LCBlO1xuICB9KClcbiksIFd0ID0gZnVuY3Rpb24oZSwgdCwgciwgbikge1xuICBmdW5jdGlvbiBvKGkpIHtcbiAgICByZXR1cm4gaSBpbnN0YW5jZW9mIHIgPyBpIDogbmV3IHIoZnVuY3Rpb24oYSkge1xuICAgICAgYShpKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3IChyIHx8IChyID0gUHJvbWlzZSkpKGZ1bmN0aW9uKGksIGEpIHtcbiAgICBmdW5jdGlvbiBzKHApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUobi5uZXh0KHApKTtcbiAgICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgYShmKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbChwKSB7XG4gICAgICB0cnkge1xuICAgICAgICB1KG4udGhyb3cocCkpO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBhKGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB1KHApIHtcbiAgICAgIHAuZG9uZSA/IGkocC52YWx1ZSkgOiBvKHAudmFsdWUpLnRoZW4ocywgbCk7XG4gICAgfVxuICAgIHUoKG4gPSBuLmFwcGx5KGUsIFtdKSkubmV4dCgpKTtcbiAgfSk7XG59LCBZdCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAoaVswXSAmIDEpIHRocm93IGlbMV07XG4gICAgcmV0dXJuIGlbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIG4sIG8sIGksIGE7XG4gIHJldHVybiBhID0geyBuZXh0OiBzKDApLCB0aHJvdzogcygxKSwgcmV0dXJuOiBzKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIChhW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGE7XG4gIGZ1bmN0aW9uIHModSkge1xuICAgIHJldHVybiBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gbChbdSwgcF0pO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gbCh1KSB7XG4gICAgaWYgKG4pIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgIGZvciAoOyByOyApIHRyeSB7XG4gICAgICBpZiAobiA9IDEsIG8gJiYgKGkgPSB1WzBdICYgMiA/IG8ucmV0dXJuIDogdVswXSA/IG8udGhyb3cgfHwgKChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKSwgMCkgOiBvLm5leHQpICYmICEoaSA9IGkuY2FsbChvLCB1WzFdKSkuZG9uZSkgcmV0dXJuIGk7XG4gICAgICBzd2l0Y2ggKG8gPSAwLCBpICYmICh1ID0gW3VbMF0gJiAyLCBpLnZhbHVlXSksIHVbMF0pIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaSA9IHU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gci5sYWJlbCsrLCB7IHZhbHVlOiB1WzFdLCBkb25lOiAhMSB9O1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgci5sYWJlbCsrLCBvID0gdVsxXSwgdSA9IFswXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHUgPSByLm9wcy5wb3AoKSwgci50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChpID0gci50cnlzLCAhKGkgPSBpLmxlbmd0aCA+IDAgJiYgaVtpLmxlbmd0aCAtIDFdKSAmJiAodVswXSA9PT0gNiB8fCB1WzBdID09PSAyKSkge1xuICAgICAgICAgICAgciA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVbMF0gPT09IDMgJiYgKCFpIHx8IHVbMV0gPiBpWzBdICYmIHVbMV0gPCBpWzNdKSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IHVbMV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVbMF0gPT09IDYgJiYgci5sYWJlbCA8IGlbMV0pIHtcbiAgICAgICAgICAgIHIubGFiZWwgPSBpWzFdLCBpID0gdTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaSAmJiByLmxhYmVsIDwgaVsyXSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IGlbMl0sIHIub3BzLnB1c2godSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaVsyXSAmJiByLm9wcy5wb3AoKSwgci50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdSA9IHQuY2FsbChlLCByKTtcbiAgICB9IGNhdGNoIChwKSB7XG4gICAgICB1ID0gWzYsIHBdLCBvID0gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbiA9IGkgPSAwO1xuICAgIH1cbiAgICBpZiAodVswXSAmIDUpIHRocm93IHVbMV07XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVbMF0gPyB1WzFdIDogdm9pZCAwLCBkb25lOiAhMCB9O1xuICB9XG59LCBvZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHRoaXMuX2V4cG9ydGVyID0gdCwgdGhpcy5fc2h1dGRvd25PbmNlID0gbmV3IFpyKHRoaXMuX3NodXRkb3duLCB0aGlzKSwgdGhpcy5fdW5yZXNvbHZlZEV4cG9ydHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFd0KHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFl0KHRoaXMsIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICBzd2l0Y2ggKHQubGFiZWwpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgcmV0dXJuIFs0LCBQcm9taXNlLmFsbChBcnJheS5mcm9tKHRoaXMuX3VucmVzb2x2ZWRFeHBvcnRzKSldO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICByZXR1cm4gdC5zZW50KCksIHRoaXMuX2V4cG9ydGVyLmZvcmNlRmx1c2ggPyBbNCwgdGhpcy5fZXhwb3J0ZXIuZm9yY2VGbHVzaCgpXSA6IFszLCAzXTtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgdC5zZW50KCksIHQubGFiZWwgPSAzO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAvKnJldHVybiovXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLm9uU3RhcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgfSwgZS5wcm90b3R5cGUub25FbmQgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgciA9IHRoaXMsIG4sIG87XG4gICAgICBpZiAoIXRoaXMuX3NodXRkb3duT25jZS5pc0NhbGxlZCAmJiB0LnNwYW5Db250ZXh0KCkudHJhY2VGbGFncyAmIFN0LlNBTVBMRUQpIHtcbiAgICAgICAgdmFyIGkgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdHQuX2V4cG9ydChyLl9leHBvcnRlciwgW3RdKS50aGVuKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIHZhciBsO1xuICAgICAgICAgICAgcy5jb2RlICE9PSBhLlNVQ0NFU1MgJiYgbmUkMSgobCA9IHMuZXJyb3IpICE9PSBudWxsICYmIGwgIT09IHZvaWQgMCA/IGwgOiBuZXcgRXJyb3IoXCJTaW1wbGVTcGFuUHJvY2Vzc29yOiBzcGFuIGV4cG9ydCBmYWlsZWQgKHN0YXR1cyBcIiArIHMgKyBcIilcIikpO1xuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIG5lJDEocyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0LnJlc291cmNlLmFzeW5jQXR0cmlidXRlc1BlbmRpbmcpIHtcbiAgICAgICAgICB2YXIgYSQxID0gKG8gPSAobiA9IHQucmVzb3VyY2UpLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMpID09PSBudWxsIHx8IG8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG8uY2FsbChuKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGEkMSAhPSBudWxsICYmIHIuX3VucmVzb2x2ZWRFeHBvcnRzLmRlbGV0ZShhJDEpLCBpKCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24ocykge1xuICAgICAgICAgICAgcmV0dXJuIG5lJDEocyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYSQxICE9IG51bGwgJiYgdGhpcy5fdW5yZXNvbHZlZEV4cG9ydHMuYWRkKGEkMSk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIGkoKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5jYWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3NodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZXhwb3J0ZXIuc2h1dGRvd24oKTtcbiAgICB9LCBlO1xuICB9KClcbik7XG5cbmV4cG9ydCB7IER0IGFzIEQsIEd0IGFzIEcsIEksIE90IGFzIE8sIFAsIFMsIFcsIEQgYXMgYSwgZywgaWUgYXMgaSwganQgYXMgaiwgbmUgYXMgbiwgb2UgYXMgbywgcmUgYXMgciwgenQgYXMgeiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBSSxLQUFLQyxJQUFJLEtBQUtDLEdBQUksS0FBS0MsSUFBSSxHQUFTLEtBQUtDLElBQUksS0FBS0MsSUFBSSxLQUFLQyxVQUFVO0FBQ3ZGLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLE1BQU1DLEdBQUksTUFBTUMsSUFBSSxNQUFNQyxHQUFHLEtBQUtDLElBQUksS0FBS0MsR0FBSyxNQUFNQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsR0FBSSxNQUFNQyxHQUFJLEtBQUtDLElBQUksTUFBTUMsR0FBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFDOUksU0FBUyxLQUFBQyxJQUFHLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFBQyxJQUFHLEtBQUFDLEdBQUcsS0FBS0MsSUFBSSxLQUFLQyxJQUFJLEtBQUtDLElBQUksS0FB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QyxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVNZLEdBQUc7QUFDbkQsZ0JBQUlHO0FBQ0osWUFBQUgsRUFBRSxTQUFTTCxFQUFFLFdBQVdqQixHQUFNeUIsSUFBSUgsRUFBRSxXQUFXLFFBQVFHLE1BQU0sU0FBU0EsSUFBSSxJQUFJLE1BQU0scURBQXFESCxJQUFJLEdBQUcsQ0FBQztBQUFBLFVBQ25KLENBQUMsRUFBRSxNQUFNLFNBQVNBLEdBQUc7QUFDbkIsWUFBQXRCLEVBQUtzQixDQUFDO0FBQUEsVUFDUixDQUFDO0FBQUEsUUFDSDtBQUNBLFlBQUksRUFBRSxTQUFTLHdCQUF3QjtBQUNyQyxjQUFJYyxLQUFPakIsS0FBSyxJQUFJLEVBQUUsVUFBVSw0QkFBNEIsUUFBUUEsTUFBTSxTQUFTLFNBQVNBLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxXQUFXO0FBQ3BILG1CQUFPaUIsS0FBTyxRQUFRLEVBQUUsbUJBQW1CLE9BQU9BLENBQUcsR0FBR2YsRUFBRTtBQUFBLFVBQzVELEdBQUcsU0FBU0MsR0FBRztBQUNiLG1CQUFPdEIsRUFBS3NCLENBQUM7QUFBQSxVQUNmLENBQUM7QUFDRCxVQUFBYyxLQUFPLFFBQVEsS0FBSyxtQkFBbUIsSUFBSUEsQ0FBRztBQUFBLFFBQ2hEO0FBQ0UsVUFBQWYsRUFBRTtBQUFBLE1BQ047QUFBQSxJQUNGLEdBQUcsRUFBRSxVQUFVLFdBQVcsV0FBVztBQUNuQyxhQUFPLEtBQUssY0FBYyxLQUFLO0FBQUEsSUFDakMsR0FBRyxFQUFFLFVBQVUsWUFBWSxXQUFXO0FBQ3BDLGFBQU8sS0FBSyxVQUFVLFNBQVM7QUFBQSxJQUNqQyxHQUFHO0FBQUEsRUFDTCxFQUFFO0FBQUE7IiwKICAibmFtZXMiOiBbIkNlIiwgImtyIiwgIlN0IiwgIkhvIiwgIlZvIiwgIkdlIiwgImxlIiwgInIiLCAicWUiLCAid2UiLCAiUiIsICJwXyIsICJPJDEiLCAiTl8iLCAiSF8iLCAickEiLCAiTkEiLCAieV8iLCAia2UiLCAicl8iLCAiTUEiLCAiWiIsICJaZSIsICJuZSQxIiwgInciLCAicCIsICJwciIsICJiciIsICJKZSIsICJXJDEiLCAic3IiLCAia3IkMSIsICJaciIsICJ0dCIsICJyJDEiLCAiT1QiLCAiTFQiLCAiUCQxIiwgIk0iLCAiUiQxIiwgImEiLCAiYnQiLCAibyIsICJDdCIsICJpIiwgInMiLCAieHQiLCAiT3QiLCAibCIsICJmIiwgIlAiLCAiZyIsICJEIiwgIkUiLCAiSiIsICJZIiwgImMiLCAieSIsICJFZSIsICJhJDEiLCAiQnQiLCAiRHQiLCAiR3QiLCAicSIsICJ4IiwgInAkMSIsICJqIiwgIkciLCAiYiIsICJPIiwgIksiLCAianQiLCAiVnQiLCAia3QiLCAiUyIsICJpZSIsICJZdCIsICJvZSJdCn0K
|
|
957
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiU2ltcGxlU3BhblByb2Nlc3Nvci1DTGFkeDFSeS0hfnswMDJ9fi5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgUCBhcyBQZSwgSSBhcyBJciwgYiBhcyBQdCwgcyBhcyBzYSwgQyBhcyBDZSwgdCBhcyB0YSwgcSBhcyBxZSQxLCBsIGFzIGxlIH0gZnJvbSAnLi9pbmRleC0hfnswMDR9fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1EbHpZdTNGWC0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBkQyBhcyBxZSwgZEQgYXMgd2UsIGRFIGFzIFIsIHAgYXMgcF8sIE8gYXMgTyQxLCBkRiBhcyBOXywgZEcgYXMgSF8sIGN5IGFzIHJBLCBjdyBhcyBOQSwgeSBhcyB5XywgZEggYXMga2UsIGRJIGFzIHJfLCBjeCBhcyBNQSB9IGZyb20gJy4vdXJsLURLWjdnajRzLSF+ezAwOH1+LmpzJztcbmltcG9ydCB7IFosIGEgYXMgWmUsIG4gYXMgbmUkMSwgdywgcCwgYiBhcyBwciwgYyBhcyBiciwgSiBhcyBKZSwgVyBhcyBXJDEsIHMgYXMgc3IsIGsgYXMga3IsIGQgYXMgWnIsIHQgYXMgdHQgfSBmcm9tICcuL2luZGV4LVk4cklzaFpQLSF+ezAwan1+LmpzJztcbmltcG9ydCB7IGJtIGFzIHIkMSwgTyBhcyBPVCwgYm4gYXMgTFQsIGJvIGFzIFAkMSwgYnAgYXMgTSB9IGZyb20gJy4vc2RrLWluZm8tQmhnNDZrTUUtIX57MDBnfX4uanMnO1xuaW1wb3J0IHsgUiBhcyBSJDEgfSBmcm9tICcuL1Jlc291cmNlLW1OWWVaRjlELSF+ezAwZn1+LmpzJztcbmltcG9ydCB7IGEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CbzFRT3dmby0hfnswMGx9fi5qcyc7XG5cbnZhciBidCA9IFwiZXhjZXB0aW9uXCIsIFUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIFUgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKGUpIHtcbiAgICBmb3IgKHZhciB0LCByID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IHIgPCBuOyByKyspIHtcbiAgICAgIHQgPSBhcmd1bWVudHNbcl07XG4gICAgICBmb3IgKHZhciBvIGluIHQpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCBvKSAmJiAoZVtvXSA9IHRbb10pO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSwgVS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSwgQ3QgPSBmdW5jdGlvbihlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCByID0gdCAmJiBlW3RdLCBuID0gMDtcbiAgaWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcih0ID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgWCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBvLCBpID0gW10sIGE7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShvID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKG8udmFsdWUpO1xuICB9IGNhdGNoIChzKSB7XG4gICAgYSA9IHsgZXJyb3I6IHMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgbyAmJiAhby5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgeHQgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgbyA9IHQubGVuZ3RoLCBpOyBuIDwgbzsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgT3QgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0LCByLCBuLCBvLCBpLCBhLCBzLCBsLCB1LCBwKSB7XG4gICAgICBzID09PSB2b2lkIDAgJiYgKHMgPSBbXSksIHRoaXMuYXR0cmlidXRlcyA9IHt9LCB0aGlzLmxpbmtzID0gW10sIHRoaXMuZXZlbnRzID0gW10sIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPSAwLCB0aGlzLl9kcm9wcGVkTGlua3NDb3VudCA9IDAsIHRoaXMuc3RhdHVzID0ge1xuICAgICAgICBjb2RlOiBsZS5VTlNFVFxuICAgICAgfSwgdGhpcy5lbmRUaW1lID0gWzAsIDBdLCB0aGlzLl9lbmRlZCA9ICExLCB0aGlzLl9kdXJhdGlvbiA9IFstMSwgLTFdLCB0aGlzLm5hbWUgPSBuLCB0aGlzLl9zcGFuQ29udGV4dCA9IG8sIHRoaXMucGFyZW50U3BhbklkID0gYSwgdGhpcy5raW5kID0gaSwgdGhpcy5saW5rcyA9IHM7XG4gICAgICB2YXIgZiA9IERhdGUubm93KCk7XG4gICAgICB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSA9IFIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0ID0gZiAtICh0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZSArIHJfKCkpLCB0aGlzLl9zdGFydFRpbWVQcm92aWRlZCA9IGwgIT0gbnVsbCwgdGhpcy5zdGFydFRpbWUgPSB0aGlzLl9nZXRUaW1lKGwgPz8gZiksIHRoaXMucmVzb3VyY2UgPSB0LnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0Lmluc3RydW1lbnRhdGlvbkxpYnJhcnksIHRoaXMuX3NwYW5MaW1pdHMgPSB0LmdldFNwYW5MaW1pdHMoKSwgdGhpcy5fYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCA9IHRoaXMuX3NwYW5MaW1pdHMuYXR0cmlidXRlVmFsdWVMZW5ndGhMaW1pdCB8fCAwLCBwICE9IG51bGwgJiYgdGhpcy5zZXRBdHRyaWJ1dGVzKHApLCB0aGlzLl9zcGFuUHJvY2Vzc29yID0gdC5nZXRBY3RpdmVTcGFuUHJvY2Vzc29yKCksIHRoaXMuX3NwYW5Qcm9jZXNzb3Iub25TdGFydCh0aGlzLCByKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNwYW5Db250ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkNvbnRleHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24odCwgciQxKSB7XG4gICAgICByZXR1cm4gciQxID09IG51bGwgfHwgdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiB0Lmxlbmd0aCA9PT0gMCA/IChyLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdCksIHRoaXMpIDogWihyJDEpID8gT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVzKS5sZW5ndGggPj0gdGhpcy5fc3BhbkxpbWl0cy5hdHRyaWJ1dGVDb3VudExpbWl0ICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hdHRyaWJ1dGVzLCB0KSA/ICh0aGlzLl9kcm9wcGVkQXR0cmlidXRlc0NvdW50KyssIHRoaXMpIDogKHRoaXMuYXR0cmlidXRlc1t0XSA9IHRoaXMuX3RydW5jYXRlVG9TaXplKHIkMSksIHRoaXMpIDogKHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHQpLCB0aGlzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVzID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIsIG47XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gQ3QoT2JqZWN0LmVudHJpZXModCkpLCBpID0gby5uZXh0KCk7ICFpLmRvbmU7IGkgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBhID0gWChpLnZhbHVlLCAyKSwgcyA9IGFbMF0sIGwgPSBhWzFdO1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKHMsIGwpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHIgPSB7IGVycm9yOiB1IH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAobiA9IG8ucmV0dXJuKSAmJiBuLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZEV2ZW50ID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICBpZiAodGhpcy5faXNTcGFuRW5kZWQoKSlcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICBpZiAodGhpcy5fc3BhbkxpbWl0cy5ldmVudENvdW50TGltaXQgPT09IDApXG4gICAgICAgIHJldHVybiByLndhcm4oXCJObyBldmVudHMgYWxsb3dlZC5cIiksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrLCB0aGlzO1xuICAgICAgdGhpcy5ldmVudHMubGVuZ3RoID49IHRoaXMuX3NwYW5MaW1pdHMuZXZlbnRDb3VudExpbWl0ICYmICh0aGlzLl9kcm9wcGVkRXZlbnRzQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIkRyb3BwaW5nIGV4dHJhIGV2ZW50cy5cIiksIHRoaXMuZXZlbnRzLnNoaWZ0KCksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCsrKSwgcWUociQxKSAmJiAocWUobikgfHwgKG4gPSByJDEpLCByJDEgPSB2b2lkIDApO1xuICAgICAgdmFyIG8gPSBaZShyJDEpO1xuICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnB1c2goe1xuICAgICAgICBuYW1lOiB0LFxuICAgICAgICBhdHRyaWJ1dGVzOiBvLFxuICAgICAgICB0aW1lOiB0aGlzLl9nZXRUaW1lKG4pLFxuICAgICAgICBkcm9wcGVkQXR0cmlidXRlc0NvdW50OiAwXG4gICAgICB9KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXMubGlua3MucHVzaCh0KSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5hZGRMaW5rcyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIChyID0gdGhpcy5saW5rcykucHVzaC5hcHBseShyLCB4dChbXSwgWCh0KSwgITEpKSwgdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5zZXRTdGF0dXMgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5zdGF0dXMgPSBVKHt9LCB0KSwgdGhpcy5zdGF0dXMubWVzc2FnZSAhPSBudWxsICYmIHR5cGVvZiB0Lm1lc3NhZ2UgIT0gXCJzdHJpbmdcIiAmJiAoci53YXJuKFwiRHJvcHBpbmcgaW52YWxpZCBzdGF0dXMubWVzc2FnZSBvZiB0eXBlICdcIiArIHR5cGVvZiB0Lm1lc3NhZ2UgKyBcIicsIGV4cGVjdGVkICdzdHJpbmcnXCIpLCBkZWxldGUgdGhpcy5zdGF0dXMubWVzc2FnZSksIHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLnVwZGF0ZU5hbWUgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTcGFuRW5kZWQoKSA/IHRoaXMgOiAodGhpcy5uYW1lID0gdCwgdGhpcyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHRoaXMuX2lzU3BhbkVuZGVkKCkpIHtcbiAgICAgICAgci5lcnJvcih0aGlzLm5hbWUgKyBcIiBcIiArIHRoaXMuX3NwYW5Db250ZXh0LnRyYWNlSWQgKyBcIi1cIiArIHRoaXMuX3NwYW5Db250ZXh0LnNwYW5JZCArIFwiIC0gWW91IGNhbiBvbmx5IGNhbGwgZW5kKCkgb24gYSBzcGFuIG9uY2UuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9lbmRlZCA9ICEwLCB0aGlzLmVuZFRpbWUgPSB0aGlzLl9nZXRUaW1lKHQpLCB0aGlzLl9kdXJhdGlvbiA9IHdlKHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLl9kdXJhdGlvblswXSA8IDAgJiYgKHIud2FybihcIkluY29uc2lzdGVudCBzdGFydCBhbmQgZW5kIHRpbWUsIHN0YXJ0VGltZSA+IGVuZFRpbWUuIFNldHRpbmcgc3BhbiBkdXJhdGlvbiB0byAwbXMuXCIsIHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpLCB0aGlzLmVuZFRpbWUgPSB0aGlzLnN0YXJ0VGltZS5zbGljZSgpLCB0aGlzLl9kdXJhdGlvbiA9IFswLCAwXSksIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCA+IDAgJiYgci53YXJuKFwiRHJvcHBlZCBcIiArIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudCArIFwiIGV2ZW50cyBiZWNhdXNlIGV2ZW50Q291bnRMaW1pdCByZWFjaGVkXCIpLCB0aGlzLl9zcGFuUHJvY2Vzc29yLm9uRW5kKHRoaXMpO1xuICAgIH0sIGUucHJvdG90eXBlLl9nZXRUaW1lID0gZnVuY3Rpb24odCkge1xuICAgICAgaWYgKHR5cGVvZiB0ID09IFwibnVtYmVyXCIgJiYgdCA8PSBSLm5vdygpKVxuICAgICAgICByZXR1cm4gcF8odCArIHRoaXMuX3BlcmZvcm1hbmNlT2Zmc2V0KTtcbiAgICAgIGlmICh0eXBlb2YgdCA9PSBcIm51bWJlclwiKVxuICAgICAgICByZXR1cm4gTyQxKHQpO1xuICAgICAgaWYgKHQgaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICByZXR1cm4gTyQxKHQuZ2V0VGltZSgpKTtcbiAgICAgIGlmIChOXyh0KSlcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICBpZiAodGhpcy5fc3RhcnRUaW1lUHJvdmlkZWQpXG4gICAgICAgIHJldHVybiBPJDEoRGF0ZS5ub3coKSk7XG4gICAgICB2YXIgciA9IFIubm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZVN0YXJ0VGltZTtcbiAgICAgIHJldHVybiBIXyh0aGlzLnN0YXJ0VGltZSwgTyQxKHIpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5pc1JlY29yZGluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VuZGVkID09PSAhMTtcbiAgICB9LCBlLnByb3RvdHlwZS5yZWNvcmRFeGNlcHRpb24gPSBmdW5jdGlvbih0LCByJDEpIHtcbiAgICAgIHZhciBuID0ge307XG4gICAgICB0eXBlb2YgdCA9PSBcInN0cmluZ1wiID8gbltOQV0gPSB0IDogdCAmJiAodC5jb2RlID8gbltyQV0gPSB0LmNvZGUudG9TdHJpbmcoKSA6IHQubmFtZSAmJiAobltyQV0gPSB0Lm5hbWUpLCB0Lm1lc3NhZ2UgJiYgKG5bTkFdID0gdC5tZXNzYWdlKSwgdC5zdGFjayAmJiAobltNQV0gPSB0LnN0YWNrKSksIG5bckFdIHx8IG5bTkFdID8gdGhpcy5hZGRFdmVudChidCwgbiwgciQxKSA6IHIud2FybihcIkZhaWxlZCB0byByZWNvcmQgYW4gZXhjZXB0aW9uIFwiICsgdCk7XG4gICAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImR1cmF0aW9uXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kdXJhdGlvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImVuZGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRBdHRyaWJ1dGVzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRBdHRyaWJ1dGVzQ291bnQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJkcm9wcGVkRXZlbnRzQ291bnRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Ryb3BwZWRFdmVudHNDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImRyb3BwZWRMaW5rc0NvdW50XCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wcGVkTGlua3NDb3VudDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUuX2lzU3BhbkVuZGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5kZWQgJiYgci53YXJuKFwiQ2FuIG5vdCBleGVjdXRlIHRoZSBvcGVyYXRpb24gb24gZW5kZWQgU3BhbiB7dHJhY2VJZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC50cmFjZUlkICsgXCIsIHNwYW5JZDogXCIgKyB0aGlzLl9zcGFuQ29udGV4dC5zcGFuSWQgKyBcIn1cIiksIHRoaXMuX2VuZGVkO1xuICAgIH0sIGUucHJvdG90eXBlLl90cnVuY2F0ZVRvTGltaXRVdGlsID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHQubGVuZ3RoIDw9IHIgPyB0IDogdC5zdWJzdHJpbmcoMCwgcik7XG4gICAgfSwgZS5wcm90b3R5cGUuX3RydW5jYXRlVG9TaXplID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHIkMSA9IHRoaXMsIG4gPSB0aGlzLl9hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0O1xuICAgICAgcmV0dXJuIG4gPD0gMCA/IChyLndhcm4oXCJBdHRyaWJ1dGUgdmFsdWUgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgZ290IFwiICsgbiksIHQpIDogdHlwZW9mIHQgPT0gXCJzdHJpbmdcIiA/IHRoaXMuX3RydW5jYXRlVG9MaW1pdFV0aWwodCwgbikgOiBBcnJheS5pc0FycmF5KHQpID8gdC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG8gPT0gXCJzdHJpbmdcIiA/IHIkMS5fdHJ1bmNhdGVUb0xpbWl0VXRpbChvLCBuKSA6IG87XG4gICAgICB9KSA6IHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBQO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkoUCB8fCAoUCA9IHt9KSk7XG52YXIgSSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogUC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBnID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBQLlJFQ09SRF9BTkRfU0FNUExFRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT25TYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBEID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIHIsIG4sIG8sIGk7XG4gICAgICB0aGlzLl9yb290ID0gdC5yb290LCB0aGlzLl9yb290IHx8IChuZSQxKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgZygpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9IChyID0gdC5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiByICE9PSB2b2lkIDAgPyByIDogbmV3IGcoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gdC5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEkoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKG8gPSB0LmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgbyAhPT0gdm9pZCAwID8gbyA6IG5ldyBnKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gdC5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgSSgpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24odCwgciwgbiwgbywgaSwgYSkge1xuICAgICAgdmFyIHMgPSBQZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIHJldHVybiAhcyB8fCAhSXIocykgPyB0aGlzLl9yb290LnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHMuaXNSZW1vdGUgPyBzLnRyYWNlRmxhZ3MgJiBQdC5TQU1QTEVEID8gdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC5zaG91bGRTYW1wbGUodCwgciwgbiwgbywgaSwgYSkgOiB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKSA6IHMudHJhY2VGbGFncyAmIFB0LlNBTVBMRUQgPyB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHQsIHIsIG4sIG8sIGksIGEpIDogdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZSh0LCByLCBuLCBvLCBpLCBhKTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiUGFyZW50QmFzZWR7cm9vdD1cIiArIHRoaXMuX3Jvb3QudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIHJlbW90ZVBhcmVudE5vdFNhbXBsZWQ9XCIgKyB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIn1cIjtcbiAgICB9LCBlO1xuICB9KClcbiksIFcgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICB0ID09PSB2b2lkIDAgJiYgKHQgPSAwKSwgdGhpcy5fcmF0aW8gPSB0LCB0aGlzLl9yYXRpbyA9IHRoaXMuX25vcm1hbGl6ZSh0KSwgdGhpcy5fdXBwZXJCb3VuZCA9IE1hdGguZmxvb3IodGhpcy5fcmF0aW8gKiA0Mjk0OTY3Mjk1KTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBzYShyKSAmJiB0aGlzLl9hY2N1bXVsYXRlKHIpIDwgdGhpcy5fdXBwZXJCb3VuZCA/IFAuUkVDT1JEX0FORF9TQU1QTEVEIDogUC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJUcmFjZUlkUmF0aW9CYXNlZHtcIiArIHRoaXMuX3JhdGlvICsgXCJ9XCI7XG4gICAgfSwgZS5wcm90b3R5cGUuX25vcm1hbGl6ZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdCAhPSBcIm51bWJlclwiIHx8IGlzTmFOKHQpID8gMCA6IHQgPj0gMSA/IDEgOiB0IDw9IDAgPyAwIDogdDtcbiAgICB9LCBlLnByb3RvdHlwZS5fYWNjdW11bGF0ZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGZvciAodmFyIHIgPSAwLCBuID0gMDsgbiA8IHQubGVuZ3RoIC8gODsgbisrKSB7XG4gICAgICAgIHZhciBvID0gbiAqIDgsIGkgPSBwYXJzZUludCh0LnNsaWNlKG8sIG8gKyA4KSwgMTYpO1xuICAgICAgICByID0gKHIgXiBpKSA+Pj4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgUnQgPSByJDEuQWx3YXlzT24sIEUgPSAxO1xuZnVuY3Rpb24gSigpIHtcbiAgdmFyIGUgPSBPVCgpO1xuICByZXR1cm4ge1xuICAgIHNhbXBsZXI6ICQoZSksXG4gICAgZm9yY2VGbHVzaFRpbWVvdXRNaWxsaXM6IDNlNCxcbiAgICBnZW5lcmFsTGltaXRzOiB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0OiBlLk9URUxfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVCxcbiAgICAgIGF0dHJpYnV0ZUNvdW50TGltaXQ6IGUuT1RFTF9BVFRSSUJVVEVfQ09VTlRfTElNSVRcbiAgICB9LFxuICAgIHNwYW5MaW1pdHM6IHtcbiAgICAgIGF0dHJpYnV0ZVZhbHVlTGVuZ3RoTGltaXQ6IGUuT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVDb3VudExpbWl0OiBlLk9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVQsXG4gICAgICBsaW5rQ291bnRMaW1pdDogZS5PVEVMX1NQQU5fTElOS19DT1VOVF9MSU1JVCxcbiAgICAgIGV2ZW50Q291bnRMaW1pdDogZS5PVEVMX1NQQU5fRVZFTlRfQ09VTlRfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVQZXJFdmVudENvdW50TGltaXQ6IGUuT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfRVZFTlRfQ09VTlRfTElNSVQsXG4gICAgICBhdHRyaWJ1dGVQZXJMaW5rQ291bnRMaW1pdDogZS5PVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9MSU5LX0NPVU5UX0xJTUlUXG4gICAgfSxcbiAgICBtZXJnZVJlc291cmNlV2l0aERlZmF1bHRzOiAhMFxuICB9O1xufVxuZnVuY3Rpb24gJChlKSB7XG4gIHN3aXRjaCAoZSA9PT0gdm9pZCAwICYmIChlID0gT1QoKSksIGUuT1RFTF9UUkFDRVNfU0FNUExFUikge1xuICAgIGNhc2UgciQxLkFsd2F5c09uOlxuICAgICAgcmV0dXJuIG5ldyBnKCk7XG4gICAgY2FzZSByJDEuQWx3YXlzT2ZmOlxuICAgICAgcmV0dXJuIG5ldyBJKCk7XG4gICAgY2FzZSByJDEuUGFyZW50QmFzZWRBbHdheXNPbjpcbiAgICAgIHJldHVybiBuZXcgRCh7XG4gICAgICAgIHJvb3Q6IG5ldyBnKClcbiAgICAgIH0pO1xuICAgIGNhc2UgciQxLlBhcmVudEJhc2VkQWx3YXlzT2ZmOlxuICAgICAgcmV0dXJuIG5ldyBEKHtcbiAgICAgICAgcm9vdDogbmV3IEkoKVxuICAgICAgfSk7XG4gICAgY2FzZSByJDEuVHJhY2VJZFJhdGlvOlxuICAgICAgcmV0dXJuIG5ldyBXKFkoZSkpO1xuICAgIGNhc2UgciQxLlBhcmVudEJhc2VkVHJhY2VJZFJhdGlvOlxuICAgICAgcmV0dXJuIG5ldyBEKHtcbiAgICAgICAgcm9vdDogbmV3IFcoWShlKSlcbiAgICAgIH0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gci5lcnJvcignT1RFTF9UUkFDRVNfU0FNUExFUiB2YWx1ZSBcIicgKyBlLk9URUxfVFJBQ0VTX1NBTVBMRVIgKyBcIiBpbnZhbGlkLCBkZWZhdWx0aW5nIHRvIFwiICsgUnQgKyAnXCIuJyksIG5ldyBnKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIFkoZSkge1xuICBpZiAoZS5PVEVMX1RSQUNFU19TQU1QTEVSX0FSRyA9PT0gdm9pZCAwIHx8IGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgPT09IFwiXCIpXG4gICAgcmV0dXJuIHIuZXJyb3IoXCJPVEVMX1RSQUNFU19TQU1QTEVSX0FSRyBpcyBibGFuaywgZGVmYXVsdGluZyB0byBcIiArIEUgKyBcIi5cIiksIEU7XG4gIHZhciB0ID0gTnVtYmVyKGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcpO1xuICByZXR1cm4gaXNOYU4odCkgPyAoci5lcnJvcihcIk9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHPVwiICsgZS5PVEVMX1RSQUNFU19TQU1QTEVSX0FSRyArIFwiIHdhcyBnaXZlbiwgYnV0IGl0IGlzIGludmFsaWQsIGRlZmF1bHRpbmcgdG8gXCIgKyBFICsgXCIuXCIpLCBFKSA6IHQgPCAwIHx8IHQgPiAxID8gKHIuZXJyb3IoXCJPVEVMX1RSQUNFU19TQU1QTEVSX0FSRz1cIiArIGUuT1RFTF9UUkFDRVNfU0FNUExFUl9BUkcgKyBcIiB3YXMgZ2l2ZW4sIGJ1dCBpdCBpcyBvdXQgb2YgcmFuZ2UgKFswLi4xXSksIGRlZmF1bHRpbmcgdG8gXCIgKyBFICsgXCIuXCIpLCBFKSA6IHQ7XG59XG5mdW5jdGlvbiBJdChlKSB7XG4gIHZhciB0ID0ge1xuICAgIHNhbXBsZXI6ICQoKVxuICB9LCByID0gSigpLCBuID0gT2JqZWN0LmFzc2lnbih7fSwgciwgdCwgZSk7XG4gIHJldHVybiBuLmdlbmVyYWxMaW1pdHMgPSBPYmplY3QuYXNzaWduKHt9LCByLmdlbmVyYWxMaW1pdHMsIGUuZ2VuZXJhbExpbWl0cyB8fCB7fSksIG4uc3BhbkxpbWl0cyA9IE9iamVjdC5hc3NpZ24oe30sIHIuc3BhbkxpbWl0cywgZS5zcGFuTGltaXRzIHx8IHt9KSwgbjtcbn1cbmZ1bmN0aW9uIE10KGUpIHtcbiAgdmFyIHQsIHIsIG4sIG8sIGksIGEsIHMsIGwsIHUsIHAsIGYsIGMsIHkgPSBPYmplY3QuYXNzaWduKHt9LCBlLnNwYW5MaW1pdHMpLCBtID0gTFQoKTtcbiAgcmV0dXJuIHkuYXR0cmlidXRlQ291bnRMaW1pdCA9IChhID0gKGkgPSAobyA9IChyID0gKHQgPSBlLnNwYW5MaW1pdHMpID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQuYXR0cmlidXRlQ291bnRMaW1pdCkgIT09IG51bGwgJiYgciAhPT0gdm9pZCAwID8gciA6IChuID0gZS5nZW5lcmFsTGltaXRzKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuLmF0dHJpYnV0ZUNvdW50TGltaXQpICE9PSBudWxsICYmIG8gIT09IHZvaWQgMCA/IG8gOiBtLk9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBtLk9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogUCQxLCB5LmF0dHJpYnV0ZVZhbHVlTGVuZ3RoTGltaXQgPSAoYyA9IChmID0gKHAgPSAobCA9IChzID0gZS5zcGFuTGltaXRzKSA9PT0gbnVsbCB8fCBzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzLmF0dHJpYnV0ZVZhbHVlTGVuZ3RoTGltaXQpICE9PSBudWxsICYmIGwgIT09IHZvaWQgMCA/IGwgOiAodSA9IGUuZ2VuZXJhbExpbWl0cykgPT09IG51bGwgfHwgdSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdS5hdHRyaWJ1dGVWYWx1ZUxlbmd0aExpbWl0KSAhPT0gbnVsbCAmJiBwICE9PSB2b2lkIDAgPyBwIDogbS5PVEVMX1NQQU5fQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVCkgIT09IG51bGwgJiYgZiAhPT0gdm9pZCAwID8gZiA6IG0uT1RFTF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUKSAhPT0gbnVsbCAmJiBjICE9PSB2b2lkIDAgPyBjIDogTSwgT2JqZWN0LmFzc2lnbih7fSwgZSwgeyBzcGFuTGltaXRzOiB5IH0pO1xufVxudmFyIE50ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCwgciQxKSB7XG4gICAgICB0aGlzLl9leHBvcnRlciA9IHQsIHRoaXMuX2lzRXhwb3J0aW5nID0gITEsIHRoaXMuX2ZpbmlzaGVkU3BhbnMgPSBbXSwgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPSAwO1xuICAgICAgdmFyIG4gPSBPVCgpO1xuICAgICAgdGhpcy5fbWF4RXhwb3J0QmF0Y2hTaXplID0gdHlwZW9mIChyJDEgPT0gbnVsbCA/IHZvaWQgMCA6IHIkMS5tYXhFeHBvcnRCYXRjaFNpemUpID09IFwibnVtYmVyXCIgPyByJDEubWF4RXhwb3J0QmF0Y2hTaXplIDogbi5PVEVMX0JTUF9NQVhfRVhQT1JUX0JBVENIX1NJWkUsIHRoaXMuX21heFF1ZXVlU2l6ZSA9IHR5cGVvZiAociQxID09IG51bGwgPyB2b2lkIDAgOiByJDEubWF4UXVldWVTaXplKSA9PSBcIm51bWJlclwiID8gciQxLm1heFF1ZXVlU2l6ZSA6IG4uT1RFTF9CU1BfTUFYX1FVRVVFX1NJWkUsIHRoaXMuX3NjaGVkdWxlZERlbGF5TWlsbGlzID0gdHlwZW9mIChyJDEgPT0gbnVsbCA/IHZvaWQgMCA6IHIkMS5zY2hlZHVsZWREZWxheU1pbGxpcykgPT0gXCJudW1iZXJcIiA/IHIkMS5zY2hlZHVsZWREZWxheU1pbGxpcyA6IG4uT1RFTF9CU1BfU0NIRURVTEVfREVMQVksIHRoaXMuX2V4cG9ydFRpbWVvdXRNaWxsaXMgPSB0eXBlb2YgKHIkMSA9PSBudWxsID8gdm9pZCAwIDogciQxLmV4cG9ydFRpbWVvdXRNaWxsaXMpID09IFwibnVtYmVyXCIgPyByJDEuZXhwb3J0VGltZW91dE1pbGxpcyA6IG4uT1RFTF9CU1BfRVhQT1JUX1RJTUVPVVQsIHRoaXMuX3NodXRkb3duT25jZSA9IG5ldyBacih0aGlzLl9zaHV0ZG93biwgdGhpcyksIHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSA+IHRoaXMuX21heFF1ZXVlU2l6ZSAmJiAoci53YXJuKFwiQmF0Y2hTcGFuUHJvY2Vzc29yOiBtYXhFeHBvcnRCYXRjaFNpemUgbXVzdCBiZSBzbWFsbGVyIG9yIGVxdWFsIHRvIG1heFF1ZXVlU2l6ZSwgc2V0dGluZyBtYXhFeHBvcnRCYXRjaFNpemUgdG8gbWF0Y2ggbWF4UXVldWVTaXplXCIpLCB0aGlzLl9tYXhFeHBvcnRCYXRjaFNpemUgPSB0aGlzLl9tYXhRdWV1ZVNpemUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5pc0NhbGxlZCA/IHRoaXMuX3NodXRkb3duT25jZS5wcm9taXNlIDogdGhpcy5fZmx1c2hBbGwoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5vblN0YXJ0ID0gZnVuY3Rpb24odCwgcikge1xuICAgIH0sIGUucHJvdG90eXBlLm9uRW5kID0gZnVuY3Rpb24odCkge1xuICAgICAgdGhpcy5fc2h1dGRvd25PbmNlLmlzQ2FsbGVkIHx8IHQuc3BhbkNvbnRleHQoKS50cmFjZUZsYWdzICYgUHQuU0FNUExFRCAmJiB0aGlzLl9hZGRUb0J1ZmZlcih0KTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5jYWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3NodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXM7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQub25TaHV0ZG93bigpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHQuX2ZsdXNoQWxsKCk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdC5fZXhwb3J0ZXIuc2h1dGRvd24oKTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9hZGRUb0J1ZmZlciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIGlmICh0aGlzLl9maW5pc2hlZFNwYW5zLmxlbmd0aCA+PSB0aGlzLl9tYXhRdWV1ZVNpemUpIHtcbiAgICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPT09IDAgJiYgci5kZWJ1ZyhcIm1heFF1ZXVlU2l6ZSByZWFjaGVkLCBkcm9wcGluZyBzcGFuc1wiKSwgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQrKztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgPiAwICYmIChyLndhcm4oXCJEcm9wcGVkIFwiICsgdGhpcy5fZHJvcHBlZFNwYW5zQ291bnQgKyBcIiBzcGFucyBiZWNhdXNlIG1heFF1ZXVlU2l6ZSByZWFjaGVkXCIpLCB0aGlzLl9kcm9wcGVkU3BhbnNDb3VudCA9IDApLCB0aGlzLl9maW5pc2hlZFNwYW5zLnB1c2godCksIHRoaXMuX21heWJlU3RhcnRUaW1lcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9mbHVzaEFsbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgZm9yICh2YXIgbyA9IFtdLCBpID0gTWF0aC5jZWlsKHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIC8gdC5fbWF4RXhwb3J0QmF0Y2hTaXplKSwgYSA9IDAsIHMgPSBpOyBhIDwgczsgYSsrKVxuICAgICAgICAgIG8ucHVzaCh0Ll9mbHVzaE9uZUJhdGNoKCkpO1xuICAgICAgICBQcm9taXNlLmFsbChvKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHIoKTtcbiAgICAgICAgfSkuY2F0Y2gobik7XG4gICAgICB9KTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZmx1c2hPbmVCYXRjaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2NsZWFyVGltZXIoKSwgdGhpcy5fZmluaXNoZWRTcGFucy5sZW5ndGggPT09IDAgPyBQcm9taXNlLnJlc29sdmUoKSA6IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgICAgdmFyIG8gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIG4obmV3IEVycm9yKFwiVGltZW91dFwiKSk7XG4gICAgICAgIH0sIHQuX2V4cG9ydFRpbWVvdXRNaWxsaXMpO1xuICAgICAgICBDZS53aXRoKFckMShDZS5hY3RpdmUoKSksIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciBpO1xuICAgICAgICAgIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoIDw9IHQuX21heEV4cG9ydEJhdGNoU2l6ZSA/IChpID0gdC5fZmluaXNoZWRTcGFucywgdC5fZmluaXNoZWRTcGFucyA9IFtdKSA6IGkgPSB0Ll9maW5pc2hlZFNwYW5zLnNwbGljZSgwLCB0Ll9tYXhFeHBvcnRCYXRjaFNpemUpO1xuICAgICAgICAgIGZvciAodmFyIGEkMSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2V4cG9ydGVyLmV4cG9ydChpLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICAgIHZhciBjO1xuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQobyksIGYuY29kZSA9PT0gYS5TVUNDRVNTID8gcigpIDogbigoYyA9IGYuZXJyb3IpICE9PSBudWxsICYmIGMgIT09IHZvaWQgMCA/IGMgOiBuZXcgRXJyb3IoXCJCYXRjaFNwYW5Qcm9jZXNzb3I6IHNwYW4gZXhwb3J0IGZhaWxlZFwiKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBzID0gbnVsbCwgbCA9IDAsIHUgPSBpLmxlbmd0aDsgbCA8IHU7IGwrKykge1xuICAgICAgICAgICAgdmFyIHAgPSBpW2xdO1xuICAgICAgICAgICAgcC5yZXNvdXJjZS5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nICYmIHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcyAmJiAocyA/PyAocyA9IFtdKSwgcy5wdXNoKHAucmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcygpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPT09IG51bGwgPyBhJDEoKSA6IFByb21pc2UuYWxsKHMpLnRoZW4oYSQxLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgICBuZSQxKGYpLCBuKGYpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLl9tYXliZVN0YXJ0VGltZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcztcbiAgICAgIGlmICghdGhpcy5faXNFeHBvcnRpbmcpIHtcbiAgICAgICAgdmFyIHIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB0Ll9pc0V4cG9ydGluZyA9ICEwLCB0Ll9mbHVzaE9uZUJhdGNoKCkuZmluYWxseShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHQuX2lzRXhwb3J0aW5nID0gITEsIHQuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID4gMCAmJiAodC5fY2xlYXJUaW1lcigpLCB0Ll9tYXliZVN0YXJ0VGltZXIoKSk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obikge1xuICAgICAgICAgICAgdC5faXNFeHBvcnRpbmcgPSAhMSwgbmUkMShuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkU3BhbnMubGVuZ3RoID49IHRoaXMuX21heEV4cG9ydEJhdGNoU2l6ZSlcbiAgICAgICAgICByZXR1cm4gcigpO1xuICAgICAgICB0aGlzLl90aW1lciA9PT0gdm9pZCAwICYmICh0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHIoKTtcbiAgICAgICAgfSwgdGhpcy5fc2NoZWR1bGVkRGVsYXlNaWxsaXMpLCBzcih0aGlzLl90aW1lcikpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLl9jbGVhclRpbWVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl90aW1lciAhPT0gdm9pZCAwICYmIChjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLCB0aGlzLl90aW1lciA9IHZvaWQgMCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBCdCA9IC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgdmFyIGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgcmV0dXJuIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBuLl9fcHJvdG9fXyA9IG87XG4gICAgfSB8fCBmdW5jdGlvbihuLCBvKSB7XG4gICAgICBmb3IgKHZhciBpIGluIG8pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBpKSAmJiAobltpXSA9IG9baV0pO1xuICAgIH0sIGUodCwgcik7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHR5cGVvZiByICE9IFwiZnVuY3Rpb25cIiAmJiByICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcocikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGUodCwgcik7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSB0O1xuICAgIH1cbiAgICB0LnByb3RvdHlwZSA9IHIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHIpIDogKG4ucHJvdG90eXBlID0gci5wcm90b3R5cGUsIG5ldyBuKCkpO1xuICB9O1xufSgpLCBEdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbihlKSB7XG4gICAgQnQodCwgZSk7XG4gICAgZnVuY3Rpb24gdChyLCBuKSB7XG4gICAgICB2YXIgbyA9IGUuY2FsbCh0aGlzLCByLCBuKSB8fCB0aGlzO1xuICAgICAgcmV0dXJuIG8ub25Jbml0KG4pLCBvO1xuICAgIH1cbiAgICByZXR1cm4gdC5wcm90b3R5cGUub25Jbml0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIG4gPSB0aGlzO1xuICAgICAgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZGlzYWJsZUF1dG9GbHVzaE9uRG9jdW1lbnRIaWRlKSAhPT0gITAgJiYgdHlwZW9mIGRvY3VtZW50IDwgXCJ1XCIgJiYgKHRoaXMuX3Zpc2liaWxpdHlDaGFuZ2VMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwiaGlkZGVuXCIgJiYgbi5mb3JjZUZsdXNoKCkuY2F0Y2goZnVuY3Rpb24obykge1xuICAgICAgICAgIG5lJDEobyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBuLmZvcmNlRmx1c2goKS5jYXRjaChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgbmUkMShvKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLCB0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIpLCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQucHJvdG90eXBlLm9uU2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHR5cGVvZiBkb2N1bWVudCA8IFwidVwiICYmICh0aGlzLl92aXNpYmlsaXR5Q2hhbmdlTGlzdGVuZXIgJiYgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgdGhpcy5fdmlzaWJpbGl0eUNoYW5nZUxpc3RlbmVyKSwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lciAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgdGhpcy5fcGFnZUhpZGVMaXN0ZW5lcikpO1xuICAgIH0sIHQ7XG4gIH0oTnQpXG4pLCBVdCA9IDgsIEZ0ID0gMTYsIEd0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgdGhpcy5nZW5lcmF0ZVRyYWNlSWQgPSBxKEZ0KSwgdGhpcy5nZW5lcmF0ZVNwYW5JZCA9IHEoVXQpO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSgpXG4pLCB4ID0gQXJyYXkoMzIpO1xuZnVuY3Rpb24gcShlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciByID0gMDsgciA8IGUgKiAyOyByKyspXG4gICAgICB4W3JdID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpICsgNDgsIHhbcl0gPj0gNTggJiYgKHhbcl0gKz0gMzkpO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIHguc2xpY2UoMCwgZSAqIDIpKTtcbiAgfTtcbn1cbnZhciB6dCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQsIHIsIG4pIHtcbiAgICAgIHRoaXMuX3RyYWNlclByb3ZpZGVyID0gbjtcbiAgICAgIHZhciBvID0gSXQocik7XG4gICAgICB0aGlzLl9zYW1wbGVyID0gby5zYW1wbGVyLCB0aGlzLl9nZW5lcmFsTGltaXRzID0gby5nZW5lcmFsTGltaXRzLCB0aGlzLl9zcGFuTGltaXRzID0gby5zcGFuTGltaXRzLCB0aGlzLl9pZEdlbmVyYXRvciA9IHIuaWRHZW5lcmF0b3IgfHwgbmV3IEd0KCksIHRoaXMucmVzb3VyY2UgPSBuLnJlc291cmNlLCB0aGlzLmluc3RydW1lbnRhdGlvbkxpYnJhcnkgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc3RhcnRTcGFuID0gZnVuY3Rpb24odCwgciQxLCBuKSB7XG4gICAgICB2YXIgbywgaSwgYTtcbiAgICAgIHIkMSA9PT0gdm9pZCAwICYmIChyJDEgPSB7fSksIG4gPT09IHZvaWQgMCAmJiAobiA9IENlLmFjdGl2ZSgpKSwgciQxLnJvb3QgJiYgKG4gPSBQZS5kZWxldGVTcGFuKG4pKTtcbiAgICAgIHZhciBzID0gUGUuZ2V0U3BhbihuKTtcbiAgICAgIGlmICh3KG4pKSB7XG4gICAgICAgIHIuZGVidWcoXCJJbnN0cnVtZW50YXRpb24gc3VwcHJlc3NlZCwgcmV0dXJuaW5nIE5vb3AgU3BhblwiKTtcbiAgICAgICAgdmFyIGwgPSBQZS53cmFwU3BhbkNvbnRleHQodGEpO1xuICAgICAgICByZXR1cm4gbDtcbiAgICAgIH1cbiAgICAgIHZhciB1ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5zcGFuQ29udGV4dCgpLCBwJDEgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVNwYW5JZCgpLCBmLCBjLCB5O1xuICAgICAgIXUgfHwgIVBlLmlzU3BhbkNvbnRleHRWYWxpZCh1KSA/IGYgPSB0aGlzLl9pZEdlbmVyYXRvci5nZW5lcmF0ZVRyYWNlSWQoKSA6IChmID0gdS50cmFjZUlkLCBjID0gdS50cmFjZVN0YXRlLCB5ID0gdS5zcGFuSWQpO1xuICAgICAgdmFyIG0gPSAobyA9IHIkMS5raW5kKSAhPT0gbnVsbCAmJiBvICE9PSB2b2lkIDAgPyBvIDogcWUkMS5JTlRFUk5BTCwgRiA9ICgoaSA9IHIkMS5saW5rcykgIT09IG51bGwgJiYgaSAhPT0gdm9pZCAwID8gaSA6IFtdKS5tYXAoZnVuY3Rpb24oaikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRleHQ6IGouY29udGV4dCxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiBaZShqLmF0dHJpYnV0ZXMpXG4gICAgICAgIH07XG4gICAgICB9KSwgRyA9IFplKHIkMS5hdHRyaWJ1dGVzKSwgYiA9IHRoaXMuX3NhbXBsZXIuc2hvdWxkU2FtcGxlKG4sIGYsIHQsIG0sIEcsIEYpO1xuICAgICAgYyA9IChhID0gYi50cmFjZVN0YXRlKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogYztcbiAgICAgIHZhciB0dCA9IGIuZGVjaXNpb24gPT09IHAuUkVDT1JEX0FORF9TQU1QTEVEID8gUHQuU0FNUExFRCA6IFB0Lk5PTkUsIHogPSB7IHRyYWNlSWQ6IGYsIHNwYW5JZDogcCQxLCB0cmFjZUZsYWdzOiB0dCwgdHJhY2VTdGF0ZTogYyB9O1xuICAgICAgaWYgKGIuZGVjaXNpb24gPT09IHAuTk9UX1JFQ09SRCkge1xuICAgICAgICByLmRlYnVnKFwiUmVjb3JkaW5nIGlzIG9mZiwgcHJvcGFnYXRpbmcgY29udGV4dCBpbiBhIG5vbi1yZWNvcmRpbmcgc3BhblwiKTtcbiAgICAgICAgdmFyIGwgPSBQZS53cmFwU3BhbkNvbnRleHQoeik7XG4gICAgICAgIHJldHVybiBsO1xuICAgICAgfVxuICAgICAgdmFyIGV0ID0gWmUoT2JqZWN0LmFzc2lnbihHLCBiLmF0dHJpYnV0ZXMpKSwgcnQgPSBuZXcgT3QodGhpcywgbiwgdCwgeiwgbSwgeSwgRiwgciQxLnN0YXJ0VGltZSwgdm9pZCAwLCBldCk7XG4gICAgICByZXR1cm4gcnQ7XG4gICAgfSwgZS5wcm90b3R5cGUuc3RhcnRBY3RpdmVTcGFuID0gZnVuY3Rpb24odCwgciwgbiwgbykge1xuICAgICAgdmFyIGksIGEsIHM7XG4gICAgICBpZiAoIShhcmd1bWVudHMubGVuZ3RoIDwgMikpIHtcbiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMiA/IHMgPSByIDogYXJndW1lbnRzLmxlbmd0aCA9PT0gMyA/IChpID0gciwgcyA9IG4pIDogKGkgPSByLCBhID0gbiwgcyA9IG8pO1xuICAgICAgICB2YXIgbCA9IGEgPz8gQ2UuYWN0aXZlKCksIHUgPSB0aGlzLnN0YXJ0U3Bhbih0LCBpLCBsKSwgcCA9IFBlLnNldFNwYW4obCwgdSk7XG4gICAgICAgIHJldHVybiBDZS53aXRoKHAsIHMsIHZvaWQgMCwgdSk7XG4gICAgICB9XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0R2VuZXJhbExpbWl0cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2dlbmVyYWxMaW1pdHM7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0U3BhbkxpbWl0cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NwYW5MaW1pdHM7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0QWN0aXZlU3BhblByb2Nlc3NvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYWNlclByb3ZpZGVyLmdldEFjdGl2ZVNwYW5Qcm9jZXNzb3IoKTtcbiAgICB9LCBlO1xuICB9KClcbiksIE8gPSBmdW5jdGlvbihlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCByID0gdCAmJiBlW3RdLCBuID0gMDtcbiAgaWYgKHIpIHJldHVybiByLmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcih0ID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgSyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHRoaXMuX3NwYW5Qcm9jZXNzb3JzID0gdDtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0LCByLCBuID0gW107XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gTyh0aGlzLl9zcGFuUHJvY2Vzc29ycyksIGkgPSBvLm5leHQoKTsgIWkuZG9uZTsgaSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGEgPSBpLnZhbHVlO1xuICAgICAgICAgIG4ucHVzaChhLmZvcmNlRmx1c2goKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgdCA9IHsgZXJyb3I6IHMgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaSAmJiAhaS5kb25lICYmIChyID0gby5yZXR1cm4pICYmIHIuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAodCkgdGhyb3cgdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgUHJvbWlzZS5hbGwobikudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICBzKCk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGwpIHtcbiAgICAgICAgICBuZSQxKGwgfHwgbmV3IEVycm9yKFwiTXVsdGlTcGFuUHJvY2Vzc29yOiBmb3JjZUZsdXNoIGZhaWxlZFwiKSksIHMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBlLnByb3RvdHlwZS5vblN0YXJ0ID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgdmFyIG4sIG87XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBpID0gTyh0aGlzLl9zcGFuUHJvY2Vzc29ycyksIGEgPSBpLm5leHQoKTsgIWEuZG9uZTsgYSA9IGkubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIHMgPSBhLnZhbHVlO1xuICAgICAgICAgIHMub25TdGFydCh0LCByKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAobCkge1xuICAgICAgICBuID0geyBlcnJvcjogbCB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhICYmICFhLmRvbmUgJiYgKG8gPSBpLnJldHVybikgJiYgby5jYWxsKGkpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChuKSB0aHJvdyBuLmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgZS5wcm90b3R5cGUub25FbmQgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgciwgbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBPKHRoaXMuX3NwYW5Qcm9jZXNzb3JzKSwgaSA9IG8ubmV4dCgpOyAhaS5kb25lOyBpID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgYSA9IGkudmFsdWU7XG4gICAgICAgICAgYS5vbkVuZCh0KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICByID0geyBlcnJvcjogcyB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpICYmICFpLmRvbmUgJiYgKG4gPSBvLnJldHVybikgJiYgbi5jYWxsKG8pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgZS5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0LCByLCBuID0gW107XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gTyh0aGlzLl9zcGFuUHJvY2Vzc29ycyksIGkgPSBvLm5leHQoKTsgIWkuZG9uZTsgaSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGEgPSBpLnZhbHVlO1xuICAgICAgICAgIG4ucHVzaChhLnNodXRkb3duKCkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgIHQgPSB7IGVycm9yOiBzIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGkgJiYgIWkuZG9uZSAmJiAociA9IG8ucmV0dXJuKSAmJiByLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKHQpIHRocm93IHQuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihzLCBsKSB7XG4gICAgICAgIFByb21pc2UuYWxsKG4pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcygpO1xuICAgICAgICB9LCBsKTtcbiAgICAgIH0pO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwganQgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLm9uU3RhcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgfSwgZS5wcm90b3R5cGUub25FbmQgPSBmdW5jdGlvbih0KSB7XG4gICAgfSwgZS5wcm90b3R5cGUuc2h1dGRvd24gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBWdCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBvLCBpID0gW10sIGE7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShvID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKG8udmFsdWUpO1xuICB9IGNhdGNoIChzKSB7XG4gICAgYSA9IHsgZXJyb3I6IHMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgbyAmJiAhby5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwga3QgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgbyA9IHQubGVuZ3RoLCBpOyBuIDwgbzsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgUztcbihmdW5jdGlvbihlKSB7XG4gIGVbZS5yZXNvbHZlZCA9IDBdID0gXCJyZXNvbHZlZFwiLCBlW2UudGltZW91dCA9IDFdID0gXCJ0aW1lb3V0XCIsIGVbZS5lcnJvciA9IDJdID0gXCJlcnJvclwiLCBlW2UudW5yZXNvbHZlZCA9IDNdID0gXCJ1bnJlc29sdmVkXCI7XG59KShTIHx8IChTID0ge30pKTtcbnZhciByZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHQgPT09IHZvaWQgMCAmJiAodCA9IHt9KTtcbiAgICAgIHZhciByLCBuO1xuICAgICAgdGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzID0gW10sIHRoaXMuX3RyYWNlcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgdmFyIG8gPSBrcih7fSwgSigpLCBNdCh0KSk7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZSA9IChyID0gby5yZXNvdXJjZSkgIT09IG51bGwgJiYgciAhPT0gdm9pZCAwID8gciA6IFIkMS5lbXB0eSgpLCBvLm1lcmdlUmVzb3VyY2VXaXRoRGVmYXVsdHMgJiYgKHRoaXMucmVzb3VyY2UgPSBSJDEuZGVmYXVsdCgpLm1lcmdlKHRoaXMucmVzb3VyY2UpKSwgdGhpcy5fY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgbywge1xuICAgICAgICByZXNvdXJjZTogdGhpcy5yZXNvdXJjZVxuICAgICAgfSksICEoKG4gPSB0LnNwYW5Qcm9jZXNzb3JzKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDApICYmIG4ubGVuZ3RoKVxuICAgICAgICB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMgPSBrdChbXSwgVnQodC5zcGFuUHJvY2Vzc29ycyksICExKSwgdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yID0gbmV3IEsodGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgaSA9IHRoaXMuX2J1aWxkRXhwb3J0ZXJGcm9tRW52KCk7XG4gICAgICAgIGlmIChpICE9PSB2b2lkIDApIHtcbiAgICAgICAgICB2YXIgYSA9IG5ldyBEdChpKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBhO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICB0aGlzLmFjdGl2ZVNwYW5Qcm9jZXNzb3IgPSBuZXcganQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmdldFRyYWNlciA9IGZ1bmN0aW9uKHQsIHIsIG4pIHtcbiAgICAgIHZhciBvID0gdCArIFwiQFwiICsgKHIgfHwgXCJcIikgKyBcIjpcIiArICgobiA9PSBudWxsID8gdm9pZCAwIDogbi5zY2hlbWFVcmwpIHx8IFwiXCIpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYWNlcnMuaGFzKG8pIHx8IHRoaXMuX3RyYWNlcnMuc2V0KG8sIG5ldyB6dCh7IG5hbWU6IHQsIHZlcnNpb246IHIsIHNjaGVtYVVybDogbiA9PSBudWxsID8gdm9pZCAwIDogbi5zY2hlbWFVcmwgfSwgdGhpcy5fY29uZmlnLCB0aGlzKSksIHRoaXMuX3RyYWNlcnMuZ2V0KG8pO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZFNwYW5Qcm9jZXNzb3IgPSBmdW5jdGlvbih0KSB7XG4gICAgICB0aGlzLl9yZWdpc3RlcmVkU3BhblByb2Nlc3NvcnMubGVuZ3RoID09PSAwICYmIHRoaXMuYWN0aXZlU3BhblByb2Nlc3Nvci5zaHV0ZG93bigpLmNhdGNoKGZ1bmN0aW9uKHIkMSkge1xuICAgICAgICByZXR1cm4gci5lcnJvcihcIkVycm9yIHdoaWxlIHRyeWluZyB0byBzaHV0ZG93biBjdXJyZW50IHNwYW4gcHJvY2Vzc29yXCIsIHIkMSk7XG4gICAgICB9KSwgdGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzLnB1c2godCksIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvciA9IG5ldyBLKHRoaXMuX3JlZ2lzdGVyZWRTcGFuUHJvY2Vzc29ycyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0QWN0aXZlU3BhblByb2Nlc3NvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlU3BhblByb2Nlc3NvcjtcbiAgICB9LCBlLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHQgPT09IHZvaWQgMCAmJiAodCA9IHt9KSwgUGUuc2V0R2xvYmFsVHJhY2VyUHJvdmlkZXIodGhpcyksIHQucHJvcGFnYXRvciA9PT0gdm9pZCAwICYmICh0LnByb3BhZ2F0b3IgPSB0aGlzLl9idWlsZFByb3BhZ2F0b3JGcm9tRW52KCkpLCB0LmNvbnRleHRNYW5hZ2VyICYmIENlLnNldEdsb2JhbENvbnRleHRNYW5hZ2VyKHQuY29udGV4dE1hbmFnZXIpLCB0LnByb3BhZ2F0b3IgJiYgeV8uc2V0R2xvYmFsUHJvcGFnYXRvcih0LnByb3BhZ2F0b3IpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gdGhpcy5fY29uZmlnLmZvcmNlRmx1c2hUaW1lb3V0TWlsbGlzLCByID0gdGhpcy5fcmVnaXN0ZXJlZFNwYW5Qcm9jZXNzb3JzLm1hcChmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihvKSB7XG4gICAgICAgICAgdmFyIGksIGEgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbyhuZXcgRXJyb3IoXCJTcGFuIHByb2Nlc3NvciBkaWQgbm90IGNvbXBsZXRlZCB3aXRoaW4gdGltZW91dCBwZXJpb2Qgb2YgXCIgKyB0ICsgXCIgbXNcIikpLCBpID0gUy50aW1lb3V0O1xuICAgICAgICAgIH0sIHQpO1xuICAgICAgICAgIG4uZm9yY2VGbHVzaCgpLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoYSksIGkgIT09IFMudGltZW91dCAmJiAoaSA9IFMucmVzb2x2ZWQsIG8oaSkpO1xuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChhKSwgaSA9IFMuZXJyb3IsIG8ocyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obiwgbykge1xuICAgICAgICBQcm9taXNlLmFsbChyKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICB2YXIgYSA9IGkuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBzICE9PSBTLnJlc29sdmVkO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGEubGVuZ3RoID4gMCA/IG8oYSkgOiBuKCk7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICByZXR1cm4gbyhbaV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLnNodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVTcGFuUHJvY2Vzc29yLnNodXRkb3duKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2dldFByb3BhZ2F0b3IgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgcjtcbiAgICAgIHJldHVybiAociA9IHRoaXMuY29uc3RydWN0b3IuX3JlZ2lzdGVyZWRQcm9wYWdhdG9ycy5nZXQodCkpID09PSBudWxsIHx8IHIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHIoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0U3BhbkV4cG9ydGVyID0gZnVuY3Rpb24odCkge1xuICAgICAgdmFyIHI7XG4gICAgICByZXR1cm4gKHIgPSB0aGlzLmNvbnN0cnVjdG9yLl9yZWdpc3RlcmVkRXhwb3J0ZXJzLmdldCh0KSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogcigpO1xuICAgIH0sIGUucHJvdG90eXBlLl9idWlsZFByb3BhZ2F0b3JGcm9tRW52ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIHIkMSA9IEFycmF5LmZyb20obmV3IFNldChPVCgpLk9URUxfUFJPUEFHQVRPUlMpKSwgbiA9IHIkMS5tYXAoZnVuY3Rpb24oaSkge1xuICAgICAgICB2YXIgYSA9IHQuX2dldFByb3BhZ2F0b3IoaSk7XG4gICAgICAgIHJldHVybiBhIHx8IHIud2FybignUHJvcGFnYXRvciBcIicgKyBpICsgJ1wiIHJlcXVlc3RlZCB0aHJvdWdoIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHVuYXZhaWxhYmxlLicpLCBhO1xuICAgICAgfSksIG8gPSBuLnJlZHVjZShmdW5jdGlvbihpLCBhKSB7XG4gICAgICAgIHJldHVybiBhICYmIGkucHVzaChhKSwgaTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIGlmIChvLmxlbmd0aCAhPT0gMClcbiAgICAgICAgcmV0dXJuIHIkMS5sZW5ndGggPT09IDEgPyBvWzBdIDogbmV3IHByKHtcbiAgICAgICAgICBwcm9wYWdhdG9yczogb1xuICAgICAgICB9KTtcbiAgICB9LCBlLnByb3RvdHlwZS5fYnVpbGRFeHBvcnRlckZyb21FbnYgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ID0gT1QoKS5PVEVMX1RSQUNFU19FWFBPUlRFUjtcbiAgICAgIGlmICghKHQgPT09IFwibm9uZVwiIHx8IHQgPT09IFwiXCIpKSB7XG4gICAgICAgIHZhciByJDEgPSB0aGlzLl9nZXRTcGFuRXhwb3J0ZXIodCk7XG4gICAgICAgIHJldHVybiByJDEgfHwgci5lcnJvcignRXhwb3J0ZXIgXCInICsgdCArICdcIiByZXF1ZXN0ZWQgdGhyb3VnaCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyB1bmF2YWlsYWJsZS4nKSwgciQxO1xuICAgICAgfVxuICAgIH0sIGUuX3JlZ2lzdGVyZWRQcm9wYWdhdG9ycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKFtcbiAgICAgIFtcInRyYWNlY29udGV4dFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBicigpO1xuICAgICAgfV0sXG4gICAgICBbXCJiYWdnYWdlXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IEplKCk7XG4gICAgICB9XVxuICAgIF0pLCBlLl9yZWdpc3RlcmVkRXhwb3J0ZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgZTtcbiAgfSgpXG4pLCBIdCA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHIgPSB0ICYmIGVbdF0sIG4gPSAwO1xuICBpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHQgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBuZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZXhwb3J0ID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbmRTcGFucyh0LCByKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbmRTcGFucyhbXSksIHRoaXMuZm9yY2VGbHVzaCgpO1xuICAgIH0sIGUucHJvdG90eXBlLmZvcmNlRmx1c2ggPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZXhwb3J0SW5mbyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB0LnJlc291cmNlLmF0dHJpYnV0ZXNcbiAgICAgICAgfSxcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uU2NvcGU6IHQuaW5zdHJ1bWVudGF0aW9uTGlicmFyeSxcbiAgICAgICAgdHJhY2VJZDogdC5zcGFuQ29udGV4dCgpLnRyYWNlSWQsXG4gICAgICAgIHBhcmVudElkOiB0LnBhcmVudFNwYW5JZCxcbiAgICAgICAgdHJhY2VTdGF0ZTogKHIgPSB0LnNwYW5Db250ZXh0KCkudHJhY2VTdGF0ZSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5zZXJpYWxpemUoKSxcbiAgICAgICAgbmFtZTogdC5uYW1lLFxuICAgICAgICBpZDogdC5zcGFuQ29udGV4dCgpLnNwYW5JZCxcbiAgICAgICAga2luZDogdC5raW5kLFxuICAgICAgICB0aW1lc3RhbXA6IGtlKHQuc3RhcnRUaW1lKSxcbiAgICAgICAgZHVyYXRpb246IGtlKHQuZHVyYXRpb24pLFxuICAgICAgICBhdHRyaWJ1dGVzOiB0LmF0dHJpYnV0ZXMsXG4gICAgICAgIHN0YXR1czogdC5zdGF0dXMsXG4gICAgICAgIGV2ZW50czogdC5ldmVudHMsXG4gICAgICAgIGxpbmtzOiB0LmxpbmtzXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLl9zZW5kU3BhbnMgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICB2YXIgbiwgbztcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBIdCh0KSwgYSQxID0gaS5uZXh0KCk7ICFhJDEuZG9uZTsgYSQxID0gaS5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgcyA9IGEkMS52YWx1ZTtcbiAgICAgICAgICBjb25zb2xlLmRpcih0aGlzLl9leHBvcnRJbmZvKHMpLCB7IGRlcHRoOiAzIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIG4gPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGEkMSAmJiAhYSQxLmRvbmUgJiYgKG8gPSBpLnJldHVybikgJiYgby5jYWxsKGkpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChuKSB0aHJvdyBuLmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocilcbiAgICAgICAgcmV0dXJuIHIoeyBjb2RlOiBhLlNVQ0NFU1MgfSk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBRdCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBvLCBpID0gW10sIGE7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShvID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKG8udmFsdWUpO1xuICB9IGNhdGNoIChzKSB7XG4gICAgYSA9IHsgZXJyb3I6IHMgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgbyAmJiAhby5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgWHQgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgbyA9IHQubGVuZ3RoLCBpOyBuIDwgbzsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgaWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHRoaXMuX2ZpbmlzaGVkU3BhbnMgPSBbXSwgdGhpcy5fc3RvcHBlZCA9ICExO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZXhwb3J0ID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgdmFyIG47XG4gICAgICBpZiAodGhpcy5fc3RvcHBlZClcbiAgICAgICAgcmV0dXJuIHIoe1xuICAgICAgICAgIGNvZGU6IGEuRkFJTEVELFxuICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoXCJFeHBvcnRlciBoYXMgYmVlbiBzdG9wcGVkXCIpXG4gICAgICAgIH0pO1xuICAgICAgKG4gPSB0aGlzLl9maW5pc2hlZFNwYW5zKS5wdXNoLmFwcGx5KG4sIFh0KFtdLCBRdCh0KSwgITEpKSwgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHIoeyBjb2RlOiBhLlNVQ0NFU1MgfSk7XG4gICAgICB9LCAwKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0b3BwZWQgPSAhMCwgdGhpcy5fZmluaXNoZWRTcGFucyA9IFtdLCB0aGlzLmZvcmNlRmx1c2goKTtcbiAgICB9LCBlLnByb3RvdHlwZS5mb3JjZUZsdXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSwgZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX2ZpbmlzaGVkU3BhbnMgPSBbXTtcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRGaW5pc2hlZFNwYW5zID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmluaXNoZWRTcGFucztcbiAgICB9LCBlO1xuICB9KClcbiksIFd0ID0gZnVuY3Rpb24oZSwgdCwgciwgbikge1xuICBmdW5jdGlvbiBvKGkpIHtcbiAgICByZXR1cm4gaSBpbnN0YW5jZW9mIHIgPyBpIDogbmV3IHIoZnVuY3Rpb24oYSkge1xuICAgICAgYShpKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3IChyIHx8IChyID0gUHJvbWlzZSkpKGZ1bmN0aW9uKGksIGEpIHtcbiAgICBmdW5jdGlvbiBzKHApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUobi5uZXh0KHApKTtcbiAgICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgYShmKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbChwKSB7XG4gICAgICB0cnkge1xuICAgICAgICB1KG4udGhyb3cocCkpO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBhKGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB1KHApIHtcbiAgICAgIHAuZG9uZSA/IGkocC52YWx1ZSkgOiBvKHAudmFsdWUpLnRoZW4ocywgbCk7XG4gICAgfVxuICAgIHUoKG4gPSBuLmFwcGx5KGUsIFtdKSkubmV4dCgpKTtcbiAgfSk7XG59LCBZdCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAoaVswXSAmIDEpIHRocm93IGlbMV07XG4gICAgcmV0dXJuIGlbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIG4sIG8sIGksIGE7XG4gIHJldHVybiBhID0geyBuZXh0OiBzKDApLCB0aHJvdzogcygxKSwgcmV0dXJuOiBzKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIChhW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSksIGE7XG4gIGZ1bmN0aW9uIHModSkge1xuICAgIHJldHVybiBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gbChbdSwgcF0pO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gbCh1KSB7XG4gICAgaWYgKG4pIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgIGZvciAoOyByOyApIHRyeSB7XG4gICAgICBpZiAobiA9IDEsIG8gJiYgKGkgPSB1WzBdICYgMiA/IG8ucmV0dXJuIDogdVswXSA/IG8udGhyb3cgfHwgKChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKSwgMCkgOiBvLm5leHQpICYmICEoaSA9IGkuY2FsbChvLCB1WzFdKSkuZG9uZSkgcmV0dXJuIGk7XG4gICAgICBzd2l0Y2ggKG8gPSAwLCBpICYmICh1ID0gW3VbMF0gJiAyLCBpLnZhbHVlXSksIHVbMF0pIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaSA9IHU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gci5sYWJlbCsrLCB7IHZhbHVlOiB1WzFdLCBkb25lOiAhMSB9O1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgci5sYWJlbCsrLCBvID0gdVsxXSwgdSA9IFswXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHUgPSByLm9wcy5wb3AoKSwgci50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChpID0gci50cnlzLCAhKGkgPSBpLmxlbmd0aCA+IDAgJiYgaVtpLmxlbmd0aCAtIDFdKSAmJiAodVswXSA9PT0gNiB8fCB1WzBdID09PSAyKSkge1xuICAgICAgICAgICAgciA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVbMF0gPT09IDMgJiYgKCFpIHx8IHVbMV0gPiBpWzBdICYmIHVbMV0gPCBpWzNdKSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IHVbMV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVbMF0gPT09IDYgJiYgci5sYWJlbCA8IGlbMV0pIHtcbiAgICAgICAgICAgIHIubGFiZWwgPSBpWzFdLCBpID0gdTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaSAmJiByLmxhYmVsIDwgaVsyXSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IGlbMl0sIHIub3BzLnB1c2godSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaVsyXSAmJiByLm9wcy5wb3AoKSwgci50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdSA9IHQuY2FsbChlLCByKTtcbiAgICB9IGNhdGNoIChwKSB7XG4gICAgICB1ID0gWzYsIHBdLCBvID0gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbiA9IGkgPSAwO1xuICAgIH1cbiAgICBpZiAodVswXSAmIDUpIHRocm93IHVbMV07XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVbMF0gPyB1WzFdIDogdm9pZCAwLCBkb25lOiAhMCB9O1xuICB9XG59LCBvZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHRoaXMuX2V4cG9ydGVyID0gdCwgdGhpcy5fc2h1dGRvd25PbmNlID0gbmV3IFpyKHRoaXMuX3NodXRkb3duLCB0aGlzKSwgdGhpcy5fdW5yZXNvbHZlZEV4cG9ydHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZm9yY2VGbHVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFd0KHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFl0KHRoaXMsIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgICBzd2l0Y2ggKHQubGFiZWwpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgcmV0dXJuIFs0LCBQcm9taXNlLmFsbChBcnJheS5mcm9tKHRoaXMuX3VucmVzb2x2ZWRFeHBvcnRzKSldO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICByZXR1cm4gdC5zZW50KCksIHRoaXMuX2V4cG9ydGVyLmZvcmNlRmx1c2ggPyBbNCwgdGhpcy5fZXhwb3J0ZXIuZm9yY2VGbHVzaCgpXSA6IFszLCAzXTtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgdC5zZW50KCksIHQubGFiZWwgPSAzO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAvKnJldHVybiovXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGUucHJvdG90eXBlLm9uU3RhcnQgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgfSwgZS5wcm90b3R5cGUub25FbmQgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgciA9IHRoaXMsIG4sIG87XG4gICAgICBpZiAoIXRoaXMuX3NodXRkb3duT25jZS5pc0NhbGxlZCAmJiB0LnNwYW5Db250ZXh0KCkudHJhY2VGbGFncyAmIFB0LlNBTVBMRUQpIHtcbiAgICAgICAgdmFyIGkgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdHQuX2V4cG9ydChyLl9leHBvcnRlciwgW3RdKS50aGVuKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIHZhciBsO1xuICAgICAgICAgICAgcy5jb2RlICE9PSBhLlNVQ0NFU1MgJiYgbmUkMSgobCA9IHMuZXJyb3IpICE9PSBudWxsICYmIGwgIT09IHZvaWQgMCA/IGwgOiBuZXcgRXJyb3IoXCJTaW1wbGVTcGFuUHJvY2Vzc29yOiBzcGFuIGV4cG9ydCBmYWlsZWQgKHN0YXR1cyBcIiArIHMgKyBcIilcIikpO1xuICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgICAgIG5lJDEocyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0LnJlc291cmNlLmFzeW5jQXR0cmlidXRlc1BlbmRpbmcpIHtcbiAgICAgICAgICB2YXIgYSQxID0gKG8gPSAobiA9IHQucmVzb3VyY2UpLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMpID09PSBudWxsIHx8IG8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG8uY2FsbChuKS50aGVuKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGEkMSAhPSBudWxsICYmIHIuX3VucmVzb2x2ZWRFeHBvcnRzLmRlbGV0ZShhJDEpLCBpKCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24ocykge1xuICAgICAgICAgICAgcmV0dXJuIG5lJDEocyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYSQxICE9IG51bGwgJiYgdGhpcy5fdW5yZXNvbHZlZEV4cG9ydHMuYWRkKGEkMSk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIGkoKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5zaHV0ZG93biA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NodXRkb3duT25jZS5jYWxsKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3NodXRkb3duID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZXhwb3J0ZXIuc2h1dGRvd24oKTtcbiAgICB9LCBlO1xuICB9KClcbik7XG5cbmV4cG9ydCB7IER0IGFzIEQsIEd0IGFzIEcsIEksIE90IGFzIE8sIFAsIFMsIFcsIEQgYXMgYSwgZywgaWUgYXMgaSwganQgYXMgaiwgbmUgYXMgbiwgb2UgYXMgbywgcmUgYXMgciwgenQgYXMgeiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBSSxLQUFLQyxJQUFJLEdBQVMsS0FBS0MsSUFBSSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsSUFBTSxLQUFLQyxVQUFVO0FBQ3pGLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLE1BQU1DLEdBQUksTUFBTUMsSUFBSSxNQUFNQyxHQUFHLEtBQUtDLElBQUksS0FBS0MsR0FBSyxNQUFNQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsR0FBSSxNQUFNQyxHQUFJLEtBQUtDLElBQUksTUFBTUMsR0FBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFDOUksU0FBUyxLQUFBQyxJQUFHLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFBQyxJQUFHLEtBQUFDLEdBQUcsS0FBS0MsSUFBSSxLQUFLQyxJQUFJLEtBQUtDLElBQUksS0FB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RyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBU2EsR0FBRztBQUNuRCxnQkFBSUc7QUFDSixZQUFBSCxFQUFFLFNBQVNOLEVBQUUsV0FBV2pCLEdBQU0wQixJQUFJSCxFQUFFLFdBQVcsUUFBUUcsTUFBTSxTQUFTQSxJQUFJLElBQUksTUFBTSxxREFBcURILElBQUksR0FBRyxDQUFDO0FBQUEsVUFDbkosQ0FBQyxFQUFFLE1BQU0sU0FBU0EsR0FBRztBQUNuQixZQUFBdkIsRUFBS3VCLENBQUM7QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBQ0EsWUFBSSxFQUFFLFNBQVMsd0JBQXdCO0FBQ3JDLGNBQUllLEtBQU9uQixLQUFLLElBQUksRUFBRSxVQUFVLDRCQUE0QixRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLFdBQVc7QUFDcEgsbUJBQU9tQixLQUFPLFFBQVEsRUFBRSxtQkFBbUIsT0FBT0EsQ0FBRyxHQUFHaEIsRUFBRTtBQUFBLFVBQzVELEdBQUcsU0FBU0MsR0FBRztBQUNiLG1CQUFPdkIsRUFBS3VCLENBQUM7QUFBQSxVQUNmLENBQUM7QUFDRCxVQUFBZSxLQUFPLFFBQVEsS0FBSyxtQkFBbUIsSUFBSUEsQ0FBRztBQUFBLFFBQ2hEO0FBQ0UsVUFBQWhCLEVBQUU7QUFBQSxNQUNOO0FBQUEsSUFDRixHQUFHLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsYUFBTyxLQUFLLGNBQWMsS0FBSztBQUFBLElBQ2pDLEdBQUcsRUFBRSxVQUFVLFlBQVksV0FBVztBQUNwQyxhQUFPLEtBQUssVUFBVSxTQUFTO0FBQUEsSUFDakMsR0FBRztBQUFBLEVBQ0wsRUFBRTtBQUFBOyIsCiAgIm5hbWVzIjogWyJQZSIsICJJciIsICJzYSIsICJDZSIsICJ0YSIsICJxZSQxIiwgImxlIiwgInIiLCAicWUiLCAid2UiLCAiUiIsICJwXyIsICJPJDEiLCAiTl8iLCAiSF8iLCAickEiLCAiTkEiLCAieV8iLCAia2UiLCAicl8iLCAiTUEiLCAiWiIsICJaZSIsICJuZSQxIiwgInciLCAicCIsICJwciIsICJiciIsICJKZSIsICJXJDEiLCAic3IiLCAia3IiLCAiWnIiLCAidHQiLCAiciQxIiwgIk9UIiwgIkxUIiwgIlAkMSIsICJNIiwgIlIkMSIsICJhIiwgImJ0IiwgIm8iLCAiQ3QiLCAiWCIsICJpIiwgInMiLCAieHQiLCAiT3QiLCAibCIsICJmIiwgIlAiLCAiZyIsICJEIiwgIlB0IiwgIlciLCAiRSIsICJKIiwgIlkiLCAiYyIsICJ5IiwgImEkMSIsICJCdCIsICJEdCIsICJHdCIsICJxIiwgIngiLCAicCQxIiwgImoiLCAiRyIsICJiIiwgIk8iLCAiSyIsICJqdCIsICJWdCIsICJrdCIsICJTIiwgIlh0IiwgImllIiwgIld0IiwgIll0IiwgIm9lIl0KfQo=
|