@getopenpay/openpay-js-react 0.5.15 → 0.5.17
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-Ci2cMsNJ-r_pjpkns.js +176 -0
- package/dist/SimpleSpanProcessor-B0eU7C8A-CjPgIH6s.js +910 -0
- package/dist/detect-resources-ChhXDAxq-Btymf6C7.js +862 -0
- package/dist/{diag-api-DbLQG6Cy-7Q64bfX9.js → diag-api-DC4dxlqZ-DOFCnxry.js} +2 -2
- package/dist/index-1sGeF-S8-Cf5_9V8Q.js +1613 -0
- package/dist/{index-BJ3-FtuX-DlTusXVc.js → index-925BJ6Jo-FMJz60P8.js} +5 -5
- package/dist/{index-B2hBQXxN-CgWoAORq.js → index-BE9m_H38-DZJya01O.js} +2 -2
- package/dist/index-BRlq-xUA.js +9354 -0
- package/dist/index-BXyoTbrS-DGGjVY6j.js +430 -0
- package/dist/{index-CDEhufnp-CDtO0j1l.js → index-C3N5jtkQ-BnMnAIzy.js} +2 -2
- package/dist/index-CD5ZzJ0E-BNo61tUq.js +127 -0
- package/dist/index-CfmI3mSs-kdYEhELt.js +6718 -0
- package/dist/index-DHKyZPe5-DB9begqh.js +147 -0
- package/dist/index-v1SRbPSI-Ck3VxOS9.js +1012 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.js +5 -5
- package/dist/metrics-api-B-98-wmH-CgGZj7qs.js +160 -0
- package/dist/{suppress-tracing-i166ZvAf-D2QqEK4Q.js → suppress-tracing-BuitcWA2-BFsdq8P_.js} +2 -2
- package/dist/url-CTAMV9Fr-n8hDYbJZ.js +798 -0
- package/dist/{utils-BFjwGsZE-dHVj8huE.js → utils-CKW-Vl9c-CCUGWG5V.js} +2 -2
- package/dist/utils-DCVGrgLr-DxhyWIXT.js +270 -0
- package/package.json +1 -1
- package/dist/Resource-C_JyOUi0-DCzIGxs8.js +0 -176
- package/dist/SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js +0 -910
- package/dist/detect-resources-WIF4Hgfd-BW23wWaP.js +0 -862
- package/dist/index-0_SuCli2-B5_tBBpx.js +0 -430
- package/dist/index-3-QFb-PY-DJRVxNSq.js +0 -127
- package/dist/index-CV8wT6Y2-Bh-lYVds.js +0 -6718
- package/dist/index-DIoaqP4_-Cs74t_lP.js +0 -1012
- package/dist/index-DJhVQsLX-BiIZL-r4.js +0 -147
- package/dist/index-Din5I5pT-Be1fPmsi.js +0 -1613
- package/dist/index-nPWqtn7T.js +0 -9357
- package/dist/metrics-api-B_K2nQRV-Be59r2AI.js +0 -160
- package/dist/url-D2-xNTDs-BLiqCwPG.js +0 -798
- package/dist/utils-Blz-BInC-461m4Gx4.js +0 -270
|
@@ -1,1613 +0,0 @@
|
|
|
1
|
-
import { Q as Xe } from "./index-nPWqtn7T.js";
|
|
2
|
-
function At(I) {
|
|
3
|
-
return I === void 0 && (I = {}), typeof I.addEventListener == "function" && typeof I.removeEventListener == "function";
|
|
4
|
-
}
|
|
5
|
-
var dt = "OT_ZONE_CONTEXT", Gt = (
|
|
6
|
-
/** @class */
|
|
7
|
-
function() {
|
|
8
|
-
function I() {
|
|
9
|
-
this._enabled = !1, this._zoneCounter = 0;
|
|
10
|
-
}
|
|
11
|
-
return I.prototype._activeContextFromZone = function(C) {
|
|
12
|
-
return C && C.get(dt) || Xe;
|
|
13
|
-
}, I.prototype._bindFunction = function(C, V) {
|
|
14
|
-
var H = this, ee = function() {
|
|
15
|
-
for (var te = this, ae = [], he = 0; he < arguments.length; he++)
|
|
16
|
-
ae[he] = arguments[he];
|
|
17
|
-
return H.with(C, function() {
|
|
18
|
-
return V.apply(te, ae);
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
return Object.defineProperty(ee, "length", {
|
|
22
|
-
enumerable: !1,
|
|
23
|
-
configurable: !0,
|
|
24
|
-
writable: !1,
|
|
25
|
-
value: V.length
|
|
26
|
-
}), ee;
|
|
27
|
-
}, I.prototype._bindListener = function(C, V) {
|
|
28
|
-
var H = V;
|
|
29
|
-
return H.__ot_listeners !== void 0 || (H.__ot_listeners = {}, typeof H.addEventListener == "function" && (H.addEventListener = this._patchAddEventListener(H, H.addEventListener, C)), typeof H.removeEventListener == "function" && (H.removeEventListener = this._patchRemoveEventListener(H, H.removeEventListener))), V;
|
|
30
|
-
}, I.prototype._createZoneName = function() {
|
|
31
|
-
this._zoneCounter++;
|
|
32
|
-
var C = Math.random();
|
|
33
|
-
return this._zoneCounter + "-" + C;
|
|
34
|
-
}, I.prototype._createZone = function(C, V) {
|
|
35
|
-
var H;
|
|
36
|
-
return Zone.current.fork({
|
|
37
|
-
name: C,
|
|
38
|
-
properties: (H = {}, H[dt] = V, H)
|
|
39
|
-
});
|
|
40
|
-
}, I.prototype._getActiveZone = function() {
|
|
41
|
-
return Zone.current;
|
|
42
|
-
}, I.prototype._patchAddEventListener = function(C, V, H) {
|
|
43
|
-
var ee = this;
|
|
44
|
-
return function(te, ae, he) {
|
|
45
|
-
C.__ot_listeners === void 0 && (C.__ot_listeners = {});
|
|
46
|
-
var Te = C.__ot_listeners[te];
|
|
47
|
-
Te === void 0 && (Te = /* @__PURE__ */ new WeakMap(), C.__ot_listeners[te] = Te);
|
|
48
|
-
var be = ee.bind(H, ae);
|
|
49
|
-
return Te.set(ae, be), V.call(this, te, be, he);
|
|
50
|
-
};
|
|
51
|
-
}, I.prototype._patchRemoveEventListener = function(C, V) {
|
|
52
|
-
return function(H, ee) {
|
|
53
|
-
if (C.__ot_listeners === void 0 || C.__ot_listeners[H] === void 0)
|
|
54
|
-
return V.call(this, H, ee);
|
|
55
|
-
var te = C.__ot_listeners[H], ae = te.get(ee);
|
|
56
|
-
return te.delete(ee), V.call(this, H, ae || ee);
|
|
57
|
-
};
|
|
58
|
-
}, I.prototype.active = function() {
|
|
59
|
-
if (!this._enabled)
|
|
60
|
-
return Xe;
|
|
61
|
-
var C = this._getActiveZone(), V = this._activeContextFromZone(C);
|
|
62
|
-
return V || Xe;
|
|
63
|
-
}, I.prototype.bind = function(C, V) {
|
|
64
|
-
return C === void 0 && (C = this.active()), typeof V == "function" ? this._bindFunction(C, V) : (At(V) && this._bindListener(C, V), V);
|
|
65
|
-
}, I.prototype.disable = function() {
|
|
66
|
-
return this._enabled = !1, this;
|
|
67
|
-
}, I.prototype.enable = function() {
|
|
68
|
-
return this._enabled = !0, this;
|
|
69
|
-
}, I.prototype.with = function(C, V, H) {
|
|
70
|
-
for (var ee = [], te = 3; te < arguments.length; te++)
|
|
71
|
-
ee[te - 3] = arguments[te];
|
|
72
|
-
var ae = this._createZoneName(), he = this._createZone(ae, C);
|
|
73
|
-
return he.run(V, H, ee);
|
|
74
|
-
}, I;
|
|
75
|
-
}()
|
|
76
|
-
), kt = {}, mt;
|
|
77
|
-
function xt() {
|
|
78
|
-
if (mt) return kt;
|
|
79
|
-
mt = 1;
|
|
80
|
-
/**
|
|
81
|
-
* @license Angular v<unknown>
|
|
82
|
-
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
83
|
-
* License: MIT
|
|
84
|
-
*/
|
|
85
|
-
const I = globalThis;
|
|
86
|
-
function C(e) {
|
|
87
|
-
return (I.__Zone_symbol_prefix || "__zone_symbol__") + e;
|
|
88
|
-
}
|
|
89
|
-
function V() {
|
|
90
|
-
const e = I.performance;
|
|
91
|
-
function n(L) {
|
|
92
|
-
e && e.mark && e.mark(L);
|
|
93
|
-
}
|
|
94
|
-
function c(L, a) {
|
|
95
|
-
e && e.measure && e.measure(L, a);
|
|
96
|
-
}
|
|
97
|
-
n("Zone");
|
|
98
|
-
class t {
|
|
99
|
-
static __symbol__ = C;
|
|
100
|
-
static assertZonePatched() {
|
|
101
|
-
if (I.Promise !== O.ZoneAwarePromise)
|
|
102
|
-
throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)");
|
|
103
|
-
}
|
|
104
|
-
static get root() {
|
|
105
|
-
let a = t.current;
|
|
106
|
-
for (; a.parent; )
|
|
107
|
-
a = a.parent;
|
|
108
|
-
return a;
|
|
109
|
-
}
|
|
110
|
-
static get current() {
|
|
111
|
-
return E.zone;
|
|
112
|
-
}
|
|
113
|
-
static get currentTask() {
|
|
114
|
-
return S;
|
|
115
|
-
}
|
|
116
|
-
static __load_patch(a, s, r = !1) {
|
|
117
|
-
if (O.hasOwnProperty(a)) {
|
|
118
|
-
const T = I[C("forceDuplicateZoneCheck")] === !0;
|
|
119
|
-
if (!r && T)
|
|
120
|
-
throw Error("Already loaded patch: " + a);
|
|
121
|
-
} else if (!I["__Zone_disable_" + a]) {
|
|
122
|
-
const T = "Zone:" + a;
|
|
123
|
-
n(T), O[a] = s(I, t, D), c(T, T);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
get parent() {
|
|
127
|
-
return this._parent;
|
|
128
|
-
}
|
|
129
|
-
get name() {
|
|
130
|
-
return this._name;
|
|
131
|
-
}
|
|
132
|
-
_parent;
|
|
133
|
-
_name;
|
|
134
|
-
_properties;
|
|
135
|
-
_zoneDelegate;
|
|
136
|
-
constructor(a, s) {
|
|
137
|
-
this._parent = a, this._name = s ? s.name || "unnamed" : "<root>", this._properties = s && s.properties || {}, this._zoneDelegate = new u(this, this._parent && this._parent._zoneDelegate, s);
|
|
138
|
-
}
|
|
139
|
-
get(a) {
|
|
140
|
-
const s = this.getZoneWith(a);
|
|
141
|
-
if (s)
|
|
142
|
-
return s._properties[a];
|
|
143
|
-
}
|
|
144
|
-
getZoneWith(a) {
|
|
145
|
-
let s = this;
|
|
146
|
-
for (; s; ) {
|
|
147
|
-
if (s._properties.hasOwnProperty(a))
|
|
148
|
-
return s;
|
|
149
|
-
s = s._parent;
|
|
150
|
-
}
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
fork(a) {
|
|
154
|
-
if (!a)
|
|
155
|
-
throw new Error("ZoneSpec required!");
|
|
156
|
-
return this._zoneDelegate.fork(this, a);
|
|
157
|
-
}
|
|
158
|
-
wrap(a, s) {
|
|
159
|
-
if (typeof a != "function")
|
|
160
|
-
throw new Error("Expecting function got: " + a);
|
|
161
|
-
const r = this._zoneDelegate.intercept(this, a, s), T = this;
|
|
162
|
-
return function() {
|
|
163
|
-
return T.runGuarded(r, this, arguments, s);
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
run(a, s, r, T) {
|
|
167
|
-
E = { parent: E, zone: this };
|
|
168
|
-
try {
|
|
169
|
-
return this._zoneDelegate.invoke(this, a, s, r, T);
|
|
170
|
-
} finally {
|
|
171
|
-
E = E.parent;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
runGuarded(a, s = null, r, T) {
|
|
175
|
-
E = { parent: E, zone: this };
|
|
176
|
-
try {
|
|
177
|
-
try {
|
|
178
|
-
return this._zoneDelegate.invoke(this, a, s, r, T);
|
|
179
|
-
} catch (U) {
|
|
180
|
-
if (this._zoneDelegate.handleError(this, U))
|
|
181
|
-
throw U;
|
|
182
|
-
}
|
|
183
|
-
} finally {
|
|
184
|
-
E = E.parent;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
runTask(a, s, r) {
|
|
188
|
-
if (a.zone != this)
|
|
189
|
-
throw new Error("A task can only be run in the zone of creation! (Creation: " + (a.zone || re).name + "; Execution: " + this.name + ")");
|
|
190
|
-
const T = a, { type: U, data: { isPeriodic: ie = !1, isRefreshable: N = !1 } = {} } = a;
|
|
191
|
-
if (a.state === K && (U === B || U === k))
|
|
192
|
-
return;
|
|
193
|
-
const me = a.state != A;
|
|
194
|
-
me && T._transitionTo(A, p);
|
|
195
|
-
const ve = S;
|
|
196
|
-
S = T, E = { parent: E, zone: this };
|
|
197
|
-
try {
|
|
198
|
-
U == k && a.data && !ie && !N && (a.cancelFn = void 0);
|
|
199
|
-
try {
|
|
200
|
-
return this._zoneDelegate.invokeTask(this, T, s, r);
|
|
201
|
-
} catch (se) {
|
|
202
|
-
if (this._zoneDelegate.handleError(this, se))
|
|
203
|
-
throw se;
|
|
204
|
-
}
|
|
205
|
-
} finally {
|
|
206
|
-
const se = a.state;
|
|
207
|
-
if (se !== K && se !== J)
|
|
208
|
-
if (U == B || ie || N && se === v)
|
|
209
|
-
me && T._transitionTo(p, A, v);
|
|
210
|
-
else {
|
|
211
|
-
const we = T._zoneDelegates;
|
|
212
|
-
this._updateTaskCount(T, -1), me && T._transitionTo(K, A, K), N && (T._zoneDelegates = we);
|
|
213
|
-
}
|
|
214
|
-
E = E.parent, S = ve;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
scheduleTask(a) {
|
|
218
|
-
if (a.zone && a.zone !== this) {
|
|
219
|
-
let r = this;
|
|
220
|
-
for (; r; ) {
|
|
221
|
-
if (r === a.zone)
|
|
222
|
-
throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${a.zone.name}`);
|
|
223
|
-
r = r.parent;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
a._transitionTo(v, K);
|
|
227
|
-
const s = [];
|
|
228
|
-
a._zoneDelegates = s, a._zone = this;
|
|
229
|
-
try {
|
|
230
|
-
a = this._zoneDelegate.scheduleTask(this, a);
|
|
231
|
-
} catch (r) {
|
|
232
|
-
throw a._transitionTo(J, v, K), this._zoneDelegate.handleError(this, r), r;
|
|
233
|
-
}
|
|
234
|
-
return a._zoneDelegates === s && this._updateTaskCount(a, 1), a.state == v && a._transitionTo(p, v), a;
|
|
235
|
-
}
|
|
236
|
-
scheduleMicroTask(a, s, r, T) {
|
|
237
|
-
return this.scheduleTask(new d($, a, s, r, T, void 0));
|
|
238
|
-
}
|
|
239
|
-
scheduleMacroTask(a, s, r, T, U) {
|
|
240
|
-
return this.scheduleTask(new d(k, a, s, r, T, U));
|
|
241
|
-
}
|
|
242
|
-
scheduleEventTask(a, s, r, T, U) {
|
|
243
|
-
return this.scheduleTask(new d(B, a, s, r, T, U));
|
|
244
|
-
}
|
|
245
|
-
cancelTask(a) {
|
|
246
|
-
if (a.zone != this)
|
|
247
|
-
throw new Error("A task can only be cancelled in the zone of creation! (Creation: " + (a.zone || re).name + "; Execution: " + this.name + ")");
|
|
248
|
-
if (!(a.state !== p && a.state !== A)) {
|
|
249
|
-
a._transitionTo(G, p, A);
|
|
250
|
-
try {
|
|
251
|
-
this._zoneDelegate.cancelTask(this, a);
|
|
252
|
-
} catch (s) {
|
|
253
|
-
throw a._transitionTo(J, G), this._zoneDelegate.handleError(this, s), s;
|
|
254
|
-
}
|
|
255
|
-
return this._updateTaskCount(a, -1), a._transitionTo(K, G), a.runCount = -1, a;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
_updateTaskCount(a, s) {
|
|
259
|
-
const r = a._zoneDelegates;
|
|
260
|
-
s == -1 && (a._zoneDelegates = null);
|
|
261
|
-
for (let T = 0; T < r.length; T++)
|
|
262
|
-
r[T]._updateTaskCount(a.type, s);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
const i = {
|
|
266
|
-
name: "",
|
|
267
|
-
onHasTask: (L, a, s, r) => L.hasTask(s, r),
|
|
268
|
-
onScheduleTask: (L, a, s, r) => L.scheduleTask(s, r),
|
|
269
|
-
onInvokeTask: (L, a, s, r, T, U) => L.invokeTask(s, r, T, U),
|
|
270
|
-
onCancelTask: (L, a, s, r) => L.cancelTask(s, r)
|
|
271
|
-
};
|
|
272
|
-
class u {
|
|
273
|
-
get zone() {
|
|
274
|
-
return this._zone;
|
|
275
|
-
}
|
|
276
|
-
_zone;
|
|
277
|
-
_taskCounts = {
|
|
278
|
-
microTask: 0,
|
|
279
|
-
macroTask: 0,
|
|
280
|
-
eventTask: 0
|
|
281
|
-
};
|
|
282
|
-
_parentDelegate;
|
|
283
|
-
_forkDlgt;
|
|
284
|
-
_forkZS;
|
|
285
|
-
_forkCurrZone;
|
|
286
|
-
_interceptDlgt;
|
|
287
|
-
_interceptZS;
|
|
288
|
-
_interceptCurrZone;
|
|
289
|
-
_invokeDlgt;
|
|
290
|
-
_invokeZS;
|
|
291
|
-
_invokeCurrZone;
|
|
292
|
-
_handleErrorDlgt;
|
|
293
|
-
_handleErrorZS;
|
|
294
|
-
_handleErrorCurrZone;
|
|
295
|
-
_scheduleTaskDlgt;
|
|
296
|
-
_scheduleTaskZS;
|
|
297
|
-
_scheduleTaskCurrZone;
|
|
298
|
-
_invokeTaskDlgt;
|
|
299
|
-
_invokeTaskZS;
|
|
300
|
-
_invokeTaskCurrZone;
|
|
301
|
-
_cancelTaskDlgt;
|
|
302
|
-
_cancelTaskZS;
|
|
303
|
-
_cancelTaskCurrZone;
|
|
304
|
-
_hasTaskDlgt;
|
|
305
|
-
_hasTaskDlgtOwner;
|
|
306
|
-
_hasTaskZS;
|
|
307
|
-
_hasTaskCurrZone;
|
|
308
|
-
constructor(a, s, r) {
|
|
309
|
-
this._zone = a, this._parentDelegate = s, this._forkZS = r && (r && r.onFork ? r : s._forkZS), this._forkDlgt = r && (r.onFork ? s : s._forkDlgt), this._forkCurrZone = r && (r.onFork ? this._zone : s._forkCurrZone), this._interceptZS = r && (r.onIntercept ? r : s._interceptZS), this._interceptDlgt = r && (r.onIntercept ? s : s._interceptDlgt), this._interceptCurrZone = r && (r.onIntercept ? this._zone : s._interceptCurrZone), this._invokeZS = r && (r.onInvoke ? r : s._invokeZS), this._invokeDlgt = r && (r.onInvoke ? s : s._invokeDlgt), this._invokeCurrZone = r && (r.onInvoke ? this._zone : s._invokeCurrZone), this._handleErrorZS = r && (r.onHandleError ? r : s._handleErrorZS), this._handleErrorDlgt = r && (r.onHandleError ? s : s._handleErrorDlgt), this._handleErrorCurrZone = r && (r.onHandleError ? this._zone : s._handleErrorCurrZone), this._scheduleTaskZS = r && (r.onScheduleTask ? r : s._scheduleTaskZS), this._scheduleTaskDlgt = r && (r.onScheduleTask ? s : s._scheduleTaskDlgt), this._scheduleTaskCurrZone = r && (r.onScheduleTask ? this._zone : s._scheduleTaskCurrZone), this._invokeTaskZS = r && (r.onInvokeTask ? r : s._invokeTaskZS), this._invokeTaskDlgt = r && (r.onInvokeTask ? s : s._invokeTaskDlgt), this._invokeTaskCurrZone = r && (r.onInvokeTask ? this._zone : s._invokeTaskCurrZone), this._cancelTaskZS = r && (r.onCancelTask ? r : s._cancelTaskZS), this._cancelTaskDlgt = r && (r.onCancelTask ? s : s._cancelTaskDlgt), this._cancelTaskCurrZone = r && (r.onCancelTask ? this._zone : s._cancelTaskCurrZone), this._hasTaskZS = null, this._hasTaskDlgt = null, this._hasTaskDlgtOwner = null, this._hasTaskCurrZone = null;
|
|
310
|
-
const T = r && r.onHasTask, U = s && s._hasTaskZS;
|
|
311
|
-
(T || U) && (this._hasTaskZS = T ? r : i, this._hasTaskDlgt = s, this._hasTaskDlgtOwner = this, this._hasTaskCurrZone = this._zone, r.onScheduleTask || (this._scheduleTaskZS = i, this._scheduleTaskDlgt = s, this._scheduleTaskCurrZone = this._zone), r.onInvokeTask || (this._invokeTaskZS = i, this._invokeTaskDlgt = s, this._invokeTaskCurrZone = this._zone), r.onCancelTask || (this._cancelTaskZS = i, this._cancelTaskDlgt = s, this._cancelTaskCurrZone = this._zone));
|
|
312
|
-
}
|
|
313
|
-
fork(a, s) {
|
|
314
|
-
return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, a, s) : new t(a, s);
|
|
315
|
-
}
|
|
316
|
-
intercept(a, s, r) {
|
|
317
|
-
return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, a, s, r) : s;
|
|
318
|
-
}
|
|
319
|
-
invoke(a, s, r, T, U) {
|
|
320
|
-
return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, a, s, r, T, U) : s.apply(r, T);
|
|
321
|
-
}
|
|
322
|
-
handleError(a, s) {
|
|
323
|
-
return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, a, s) : !0;
|
|
324
|
-
}
|
|
325
|
-
scheduleTask(a, s) {
|
|
326
|
-
let r = s;
|
|
327
|
-
if (this._scheduleTaskZS)
|
|
328
|
-
this._hasTaskZS && r._zoneDelegates.push(this._hasTaskDlgtOwner), r = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, a, s), r || (r = s);
|
|
329
|
-
else if (s.scheduleFn)
|
|
330
|
-
s.scheduleFn(s);
|
|
331
|
-
else if (s.type == $)
|
|
332
|
-
X(s);
|
|
333
|
-
else
|
|
334
|
-
throw new Error("Task is missing scheduleFn.");
|
|
335
|
-
return r;
|
|
336
|
-
}
|
|
337
|
-
invokeTask(a, s, r, T) {
|
|
338
|
-
return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, a, s, r, T) : s.callback.apply(r, T);
|
|
339
|
-
}
|
|
340
|
-
cancelTask(a, s) {
|
|
341
|
-
let r;
|
|
342
|
-
if (this._cancelTaskZS)
|
|
343
|
-
r = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, a, s);
|
|
344
|
-
else {
|
|
345
|
-
if (!s.cancelFn)
|
|
346
|
-
throw Error("Task is not cancelable");
|
|
347
|
-
r = s.cancelFn(s);
|
|
348
|
-
}
|
|
349
|
-
return r;
|
|
350
|
-
}
|
|
351
|
-
hasTask(a, s) {
|
|
352
|
-
try {
|
|
353
|
-
this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, a, s);
|
|
354
|
-
} catch (r) {
|
|
355
|
-
this.handleError(a, r);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
_updateTaskCount(a, s) {
|
|
359
|
-
const r = this._taskCounts, T = r[a], U = r[a] = T + s;
|
|
360
|
-
if (U < 0)
|
|
361
|
-
throw new Error("More tasks executed then were scheduled.");
|
|
362
|
-
if (T == 0 || U == 0) {
|
|
363
|
-
const ie = {
|
|
364
|
-
microTask: r.microTask > 0,
|
|
365
|
-
macroTask: r.macroTask > 0,
|
|
366
|
-
eventTask: r.eventTask > 0,
|
|
367
|
-
change: a
|
|
368
|
-
};
|
|
369
|
-
this.hasTask(this._zone, ie);
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
class d {
|
|
374
|
-
type;
|
|
375
|
-
source;
|
|
376
|
-
invoke;
|
|
377
|
-
callback;
|
|
378
|
-
data;
|
|
379
|
-
scheduleFn;
|
|
380
|
-
cancelFn;
|
|
381
|
-
_zone = null;
|
|
382
|
-
runCount = 0;
|
|
383
|
-
_zoneDelegates = null;
|
|
384
|
-
_state = "notScheduled";
|
|
385
|
-
constructor(a, s, r, T, U, ie) {
|
|
386
|
-
if (this.type = a, this.source = s, this.data = T, this.scheduleFn = U, this.cancelFn = ie, !r)
|
|
387
|
-
throw new Error("callback is not defined");
|
|
388
|
-
this.callback = r;
|
|
389
|
-
const N = this;
|
|
390
|
-
a === B && T && T.useG ? this.invoke = d.invokeTask : this.invoke = function() {
|
|
391
|
-
return d.invokeTask.call(I, N, this, arguments);
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
|
-
static invokeTask(a, s, r) {
|
|
395
|
-
a || (a = this), oe++;
|
|
396
|
-
try {
|
|
397
|
-
return a.runCount++, a.zone.runTask(a, s, r);
|
|
398
|
-
} finally {
|
|
399
|
-
oe == 1 && ne(), oe--;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
get zone() {
|
|
403
|
-
return this._zone;
|
|
404
|
-
}
|
|
405
|
-
get state() {
|
|
406
|
-
return this._state;
|
|
407
|
-
}
|
|
408
|
-
cancelScheduleRequest() {
|
|
409
|
-
this._transitionTo(K, v);
|
|
410
|
-
}
|
|
411
|
-
_transitionTo(a, s, r) {
|
|
412
|
-
if (this._state === s || this._state === r)
|
|
413
|
-
this._state = a, a == K && (this._zoneDelegates = null);
|
|
414
|
-
else
|
|
415
|
-
throw new Error(`${this.type} '${this.source}': can not transition to '${a}', expecting state '${s}'${r ? " or '" + r + "'" : ""}, was '${this._state}'.`);
|
|
416
|
-
}
|
|
417
|
-
toString() {
|
|
418
|
-
return this.data && typeof this.data.handleId < "u" ? this.data.handleId.toString() : Object.prototype.toString.call(this);
|
|
419
|
-
}
|
|
420
|
-
// add toJSON method to prevent cyclic error when
|
|
421
|
-
// call JSON.stringify(zoneTask)
|
|
422
|
-
toJSON() {
|
|
423
|
-
return {
|
|
424
|
-
type: this.type,
|
|
425
|
-
state: this.state,
|
|
426
|
-
source: this.source,
|
|
427
|
-
zone: this.zone.name,
|
|
428
|
-
runCount: this.runCount
|
|
429
|
-
};
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
const g = C("setTimeout"), y = C("Promise"), w = C("then");
|
|
433
|
-
let _ = [], R = !1, j;
|
|
434
|
-
function x(L) {
|
|
435
|
-
if (j || I[y] && (j = I[y].resolve(0)), j) {
|
|
436
|
-
let a = j[w];
|
|
437
|
-
a || (a = j.then), a.call(j, L);
|
|
438
|
-
} else
|
|
439
|
-
I[g](L, 0);
|
|
440
|
-
}
|
|
441
|
-
function X(L) {
|
|
442
|
-
oe === 0 && _.length === 0 && x(ne), L && _.push(L);
|
|
443
|
-
}
|
|
444
|
-
function ne() {
|
|
445
|
-
if (!R) {
|
|
446
|
-
for (R = !0; _.length; ) {
|
|
447
|
-
const L = _;
|
|
448
|
-
_ = [];
|
|
449
|
-
for (let a = 0; a < L.length; a++) {
|
|
450
|
-
const s = L[a];
|
|
451
|
-
try {
|
|
452
|
-
s.zone.runTask(s, null, null);
|
|
453
|
-
} catch (r) {
|
|
454
|
-
D.onUnhandledError(r);
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
D.microtaskDrainDone(), R = !1;
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
const re = { name: "NO ZONE" }, K = "notScheduled", v = "scheduling", p = "scheduled", A = "running", G = "canceling", J = "unknown", $ = "microTask", k = "macroTask", B = "eventTask", O = {}, D = {
|
|
462
|
-
symbol: C,
|
|
463
|
-
currentZoneFrame: () => E,
|
|
464
|
-
onUnhandledError: Y,
|
|
465
|
-
microtaskDrainDone: Y,
|
|
466
|
-
scheduleMicroTask: X,
|
|
467
|
-
showUncaughtError: () => !t[C("ignoreConsoleErrorUncaughtError")],
|
|
468
|
-
patchEventTarget: () => [],
|
|
469
|
-
patchOnProperties: Y,
|
|
470
|
-
patchMethod: () => Y,
|
|
471
|
-
bindArguments: () => [],
|
|
472
|
-
patchThen: () => Y,
|
|
473
|
-
patchMacroTask: () => Y,
|
|
474
|
-
patchEventPrototype: () => Y,
|
|
475
|
-
isIEOrEdge: () => !1,
|
|
476
|
-
getGlobalObjects: () => {
|
|
477
|
-
},
|
|
478
|
-
ObjectDefineProperty: () => Y,
|
|
479
|
-
ObjectGetOwnPropertyDescriptor: () => {
|
|
480
|
-
},
|
|
481
|
-
ObjectCreate: () => {
|
|
482
|
-
},
|
|
483
|
-
ArraySlice: () => [],
|
|
484
|
-
patchClass: () => Y,
|
|
485
|
-
wrapWithCurrentZone: () => Y,
|
|
486
|
-
filterProperties: () => [],
|
|
487
|
-
attachOriginToPatched: () => Y,
|
|
488
|
-
_redefineProperty: () => Y,
|
|
489
|
-
patchCallbacks: () => Y,
|
|
490
|
-
nativeScheduleMicroTask: x
|
|
491
|
-
};
|
|
492
|
-
let E = { parent: null, zone: new t(null, null) }, S = null, oe = 0;
|
|
493
|
-
function Y() {
|
|
494
|
-
}
|
|
495
|
-
return c("Zone", "Zone"), t;
|
|
496
|
-
}
|
|
497
|
-
function H() {
|
|
498
|
-
const e = globalThis, n = e[C("forceDuplicateZoneCheck")] === !0;
|
|
499
|
-
if (e.Zone && (n || typeof e.Zone.__symbol__ != "function"))
|
|
500
|
-
throw new Error("Zone already loaded.");
|
|
501
|
-
return e.Zone ??= V(), e.Zone;
|
|
502
|
-
}
|
|
503
|
-
const ee = Object.getOwnPropertyDescriptor, te = Object.defineProperty, ae = Object.getPrototypeOf, he = Object.create, Te = Array.prototype.slice, be = "addEventListener", Ne = "removeEventListener", Ie = C(be), Fe = C(Ne), _e = "true", ge = "false", Se = C("");
|
|
504
|
-
function Ae(e, n) {
|
|
505
|
-
return Zone.current.wrap(e, n);
|
|
506
|
-
}
|
|
507
|
-
function xe(e, n, c, t, i) {
|
|
508
|
-
return Zone.current.scheduleMacroTask(e, n, c, t, i);
|
|
509
|
-
}
|
|
510
|
-
const F = C, Pe = typeof window < "u", Ce = Pe ? window : void 0, Q = Pe && Ce || globalThis, yt = "removeAttribute";
|
|
511
|
-
function He(e, n) {
|
|
512
|
-
for (let c = e.length - 1; c >= 0; c--)
|
|
513
|
-
typeof e[c] == "function" && (e[c] = Ae(e[c], n + "_" + c));
|
|
514
|
-
return e;
|
|
515
|
-
}
|
|
516
|
-
function vt(e, n) {
|
|
517
|
-
const c = e.constructor.name;
|
|
518
|
-
for (let t = 0; t < n.length; t++) {
|
|
519
|
-
const i = n[t], u = e[i];
|
|
520
|
-
if (u) {
|
|
521
|
-
const d = ee(e, i);
|
|
522
|
-
if (!$e(d))
|
|
523
|
-
continue;
|
|
524
|
-
e[i] = ((g) => {
|
|
525
|
-
const y = function() {
|
|
526
|
-
return g.apply(this, He(arguments, c + "." + i));
|
|
527
|
-
};
|
|
528
|
-
return ke(y, g), y;
|
|
529
|
-
})(u);
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
function $e(e) {
|
|
534
|
-
return e ? e.writable === !1 ? !1 : !(typeof e.get == "function" && typeof e.set > "u") : !0;
|
|
535
|
-
}
|
|
536
|
-
const Be = typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope, Re = !("nw" in Q) && typeof Q.process < "u" && Q.process.toString() === "[object process]", Ge = !Re && !Be && !!(Pe && Ce.HTMLElement), Ye = typeof Q.process < "u" && Q.process.toString() === "[object process]" && !Be && !!(Pe && Ce.HTMLElement), je = {}, Tt = F("enable_beforeunload"), Ke = function(e) {
|
|
537
|
-
if (e = e || Q.event, !e)
|
|
538
|
-
return;
|
|
539
|
-
let n = je[e.type];
|
|
540
|
-
n || (n = je[e.type] = F("ON_PROPERTY" + e.type));
|
|
541
|
-
const c = this || e.target || Q, t = c[n];
|
|
542
|
-
let i;
|
|
543
|
-
if (Ge && c === Ce && e.type === "error") {
|
|
544
|
-
const u = e;
|
|
545
|
-
i = t && t.call(this, u.message, u.filename, u.lineno, u.colno, u.error), i === !0 && e.preventDefault();
|
|
546
|
-
} else
|
|
547
|
-
i = t && t.apply(this, arguments), // https://github.com/angular/angular/issues/47579
|
|
548
|
-
// https://www.w3.org/TR/2011/WD-html5-20110525/history.html#beforeunloadevent
|
|
549
|
-
// This is the only specific case we should check for. The spec defines that the
|
|
550
|
-
// `returnValue` attribute represents the message to show the user. When the event
|
|
551
|
-
// is created, this attribute must be set to the empty string.
|
|
552
|
-
e.type === "beforeunload" && // To prevent any breaking changes resulting from this change, given that
|
|
553
|
-
// it was already causing a significant number of failures in G3, we have hidden
|
|
554
|
-
// that behavior behind a global configuration flag. Consumers can enable this
|
|
555
|
-
// flag explicitly if they want the `beforeunload` event to be handled as defined
|
|
556
|
-
// in the specification.
|
|
557
|
-
Q[Tt] && // The IDL event definition is `attribute DOMString returnValue`, so we check whether
|
|
558
|
-
// `typeof result` is a string.
|
|
559
|
-
typeof i == "string" ? e.returnValue = i : i != null && !i && e.preventDefault();
|
|
560
|
-
return i;
|
|
561
|
-
};
|
|
562
|
-
function Je(e, n, c) {
|
|
563
|
-
let t = ee(e, n);
|
|
564
|
-
if (!t && c && ee(c, n) && (t = { enumerable: !0, configurable: !0 }), !t || !t.configurable)
|
|
565
|
-
return;
|
|
566
|
-
const i = F("on" + n + "patched");
|
|
567
|
-
if (e.hasOwnProperty(i) && e[i])
|
|
568
|
-
return;
|
|
569
|
-
delete t.writable, delete t.value;
|
|
570
|
-
const u = t.get, d = t.set, g = n.slice(2);
|
|
571
|
-
let y = je[g];
|
|
572
|
-
y || (y = je[g] = F("ON_PROPERTY" + g)), t.set = function(w) {
|
|
573
|
-
let _ = this;
|
|
574
|
-
!_ && e === Q && (_ = Q), _ && (typeof _[y] == "function" && _.removeEventListener(g, Ke), d?.call(_, null), _[y] = w, typeof w == "function" && _.addEventListener(g, Ke, !1));
|
|
575
|
-
}, t.get = function() {
|
|
576
|
-
let w = this;
|
|
577
|
-
if (!w && e === Q && (w = Q), !w)
|
|
578
|
-
return null;
|
|
579
|
-
const _ = w[y];
|
|
580
|
-
if (_)
|
|
581
|
-
return _;
|
|
582
|
-
if (u) {
|
|
583
|
-
let R = u.call(this);
|
|
584
|
-
if (R)
|
|
585
|
-
return t.set.call(this, R), typeof w[yt] == "function" && w.removeAttribute(n), R;
|
|
586
|
-
}
|
|
587
|
-
return null;
|
|
588
|
-
}, te(e, n, t), e[i] = !0;
|
|
589
|
-
}
|
|
590
|
-
function Qe(e, n, c) {
|
|
591
|
-
if (n)
|
|
592
|
-
for (let t = 0; t < n.length; t++)
|
|
593
|
-
Je(e, "on" + n[t], c);
|
|
594
|
-
else {
|
|
595
|
-
const t = [];
|
|
596
|
-
for (const i in e)
|
|
597
|
-
i.slice(0, 2) == "on" && t.push(i);
|
|
598
|
-
for (let i = 0; i < t.length; i++)
|
|
599
|
-
Je(e, t[i], c);
|
|
600
|
-
}
|
|
601
|
-
}
|
|
602
|
-
const le = F("originalInstance");
|
|
603
|
-
function Oe(e) {
|
|
604
|
-
const n = Q[e];
|
|
605
|
-
if (!n)
|
|
606
|
-
return;
|
|
607
|
-
Q[F(e)] = n, Q[e] = function() {
|
|
608
|
-
const i = He(arguments, e);
|
|
609
|
-
switch (i.length) {
|
|
610
|
-
case 0:
|
|
611
|
-
this[le] = new n();
|
|
612
|
-
break;
|
|
613
|
-
case 1:
|
|
614
|
-
this[le] = new n(i[0]);
|
|
615
|
-
break;
|
|
616
|
-
case 2:
|
|
617
|
-
this[le] = new n(i[0], i[1]);
|
|
618
|
-
break;
|
|
619
|
-
case 3:
|
|
620
|
-
this[le] = new n(i[0], i[1], i[2]);
|
|
621
|
-
break;
|
|
622
|
-
case 4:
|
|
623
|
-
this[le] = new n(i[0], i[1], i[2], i[3]);
|
|
624
|
-
break;
|
|
625
|
-
default:
|
|
626
|
-
throw new Error("Arg list too long.");
|
|
627
|
-
}
|
|
628
|
-
}, ke(Q[e], n);
|
|
629
|
-
const c = new n(function() {
|
|
630
|
-
});
|
|
631
|
-
let t;
|
|
632
|
-
for (t in c)
|
|
633
|
-
e === "XMLHttpRequest" && t === "responseBlob" || function(i) {
|
|
634
|
-
typeof c[i] == "function" ? Q[e].prototype[i] = function() {
|
|
635
|
-
return this[le][i].apply(this[le], arguments);
|
|
636
|
-
} : te(Q[e].prototype, i, {
|
|
637
|
-
set: function(u) {
|
|
638
|
-
typeof u == "function" ? (this[le][i] = Ae(u, e + "." + i), ke(this[le][i], u)) : this[le][i] = u;
|
|
639
|
-
},
|
|
640
|
-
get: function() {
|
|
641
|
-
return this[le][i];
|
|
642
|
-
}
|
|
643
|
-
});
|
|
644
|
-
}(t);
|
|
645
|
-
for (t in n)
|
|
646
|
-
t !== "prototype" && n.hasOwnProperty(t) && (Q[e][t] = n[t]);
|
|
647
|
-
}
|
|
648
|
-
function de(e, n, c) {
|
|
649
|
-
let t = e;
|
|
650
|
-
for (; t && !t.hasOwnProperty(n); )
|
|
651
|
-
t = ae(t);
|
|
652
|
-
!t && e[n] && (t = e);
|
|
653
|
-
const i = F(n);
|
|
654
|
-
let u = null;
|
|
655
|
-
if (t && (!(u = t[i]) || !t.hasOwnProperty(i))) {
|
|
656
|
-
u = t[i] = t[n];
|
|
657
|
-
const d = t && ee(t, n);
|
|
658
|
-
if ($e(d)) {
|
|
659
|
-
const g = c(u, i, n);
|
|
660
|
-
t[n] = function() {
|
|
661
|
-
return g(this, arguments);
|
|
662
|
-
}, ke(t[n], u);
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
return u;
|
|
666
|
-
}
|
|
667
|
-
function bt(e, n, c) {
|
|
668
|
-
let t = null;
|
|
669
|
-
function i(u) {
|
|
670
|
-
const d = u.data;
|
|
671
|
-
return d.args[d.cbIdx] = function() {
|
|
672
|
-
u.invoke.apply(this, arguments);
|
|
673
|
-
}, t.apply(d.target, d.args), u;
|
|
674
|
-
}
|
|
675
|
-
t = de(e, n, (u) => function(d, g) {
|
|
676
|
-
const y = c(d, g);
|
|
677
|
-
return y.cbIdx >= 0 && typeof g[y.cbIdx] == "function" ? xe(y.name, g[y.cbIdx], y, i) : u.apply(d, g);
|
|
678
|
-
});
|
|
679
|
-
}
|
|
680
|
-
function ke(e, n) {
|
|
681
|
-
e[F("OriginalDelegate")] = n;
|
|
682
|
-
}
|
|
683
|
-
let et = !1, Ue = !1;
|
|
684
|
-
function Et() {
|
|
685
|
-
if (et)
|
|
686
|
-
return Ue;
|
|
687
|
-
et = !0;
|
|
688
|
-
try {
|
|
689
|
-
const e = Ce.navigator.userAgent;
|
|
690
|
-
(e.indexOf("MSIE ") !== -1 || e.indexOf("Trident/") !== -1 || e.indexOf("Edge/") !== -1) && (Ue = !0);
|
|
691
|
-
} catch {
|
|
692
|
-
}
|
|
693
|
-
return Ue;
|
|
694
|
-
}
|
|
695
|
-
function tt(e) {
|
|
696
|
-
return typeof e == "function";
|
|
697
|
-
}
|
|
698
|
-
function nt(e) {
|
|
699
|
-
return typeof e == "number";
|
|
700
|
-
}
|
|
701
|
-
const wt = {
|
|
702
|
-
useG: !0
|
|
703
|
-
}, ce = {}, rt = {}, ot = new RegExp("^" + Se + "(\\w+)(true|false)$"), st = F("propagationStopped");
|
|
704
|
-
function at(e, n) {
|
|
705
|
-
const c = (n ? n(e) : e) + ge, t = (n ? n(e) : e) + _e, i = Se + c, u = Se + t;
|
|
706
|
-
ce[e] = {}, ce[e][ge] = i, ce[e][_e] = u;
|
|
707
|
-
}
|
|
708
|
-
function Zt(e, n, c, t) {
|
|
709
|
-
const i = t && t.add || be, u = t && t.rm || Ne, d = t && t.listeners || "eventListeners", g = t && t.rmAll || "removeAllListeners", y = F(i), w = "." + i + ":", _ = "prependListener", R = "." + _ + ":", j = function(v, p, A) {
|
|
710
|
-
if (v.isRemoved)
|
|
711
|
-
return;
|
|
712
|
-
const G = v.callback;
|
|
713
|
-
typeof G == "object" && G.handleEvent && (v.callback = (k) => G.handleEvent(k), v.originalDelegate = G);
|
|
714
|
-
let J;
|
|
715
|
-
try {
|
|
716
|
-
v.invoke(v, p, [A]);
|
|
717
|
-
} catch (k) {
|
|
718
|
-
J = k;
|
|
719
|
-
}
|
|
720
|
-
const $ = v.options;
|
|
721
|
-
if ($ && typeof $ == "object" && $.once) {
|
|
722
|
-
const k = v.originalDelegate ? v.originalDelegate : v.callback;
|
|
723
|
-
p[u].call(p, A.type, k, $);
|
|
724
|
-
}
|
|
725
|
-
return J;
|
|
726
|
-
};
|
|
727
|
-
function x(v, p, A) {
|
|
728
|
-
if (p = p || e.event, !p)
|
|
729
|
-
return;
|
|
730
|
-
const G = v || p.target || e, J = G[ce[p.type][A ? _e : ge]];
|
|
731
|
-
if (J) {
|
|
732
|
-
const $ = [];
|
|
733
|
-
if (J.length === 1) {
|
|
734
|
-
const k = j(J[0], G, p);
|
|
735
|
-
k && $.push(k);
|
|
736
|
-
} else {
|
|
737
|
-
const k = J.slice();
|
|
738
|
-
for (let B = 0; B < k.length && !(p && p[st] === !0); B++) {
|
|
739
|
-
const O = j(k[B], G, p);
|
|
740
|
-
O && $.push(O);
|
|
741
|
-
}
|
|
742
|
-
}
|
|
743
|
-
if ($.length === 1)
|
|
744
|
-
throw $[0];
|
|
745
|
-
for (let k = 0; k < $.length; k++) {
|
|
746
|
-
const B = $[k];
|
|
747
|
-
n.nativeScheduleMicroTask(() => {
|
|
748
|
-
throw B;
|
|
749
|
-
});
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
const X = function(v) {
|
|
754
|
-
return x(this, v, !1);
|
|
755
|
-
}, ne = function(v) {
|
|
756
|
-
return x(this, v, !0);
|
|
757
|
-
};
|
|
758
|
-
function re(v, p) {
|
|
759
|
-
if (!v)
|
|
760
|
-
return !1;
|
|
761
|
-
let A = !0;
|
|
762
|
-
p && p.useG !== void 0 && (A = p.useG);
|
|
763
|
-
const G = p && p.vh;
|
|
764
|
-
let J = !0;
|
|
765
|
-
p && p.chkDup !== void 0 && (J = p.chkDup);
|
|
766
|
-
let $ = !1;
|
|
767
|
-
p && p.rt !== void 0 && ($ = p.rt);
|
|
768
|
-
let k = v;
|
|
769
|
-
for (; k && !k.hasOwnProperty(i); )
|
|
770
|
-
k = ae(k);
|
|
771
|
-
if (!k && v[i] && (k = v), !k || k[y])
|
|
772
|
-
return !1;
|
|
773
|
-
const B = p && p.eventNameToString, O = {}, D = k[y] = k[i], E = k[F(u)] = k[u], S = k[F(d)] = k[d], oe = k[F(g)] = k[g];
|
|
774
|
-
let Y;
|
|
775
|
-
p && p.prepend && (Y = k[F(p.prepend)] = k[p.prepend]);
|
|
776
|
-
function L(o, h) {
|
|
777
|
-
return h ? typeof o == "boolean" ? { capture: o, passive: !0 } : o ? typeof o == "object" && o.passive !== !1 ? { ...o, passive: !0 } : o : { passive: !0 } : o;
|
|
778
|
-
}
|
|
779
|
-
const a = function(o) {
|
|
780
|
-
if (!O.isExisting)
|
|
781
|
-
return D.call(O.target, O.eventName, O.capture ? ne : X, O.options);
|
|
782
|
-
}, s = function(o) {
|
|
783
|
-
if (!o.isRemoved) {
|
|
784
|
-
const h = ce[o.eventName];
|
|
785
|
-
let b;
|
|
786
|
-
h && (b = h[o.capture ? _e : ge]);
|
|
787
|
-
const Z = b && o.target[b];
|
|
788
|
-
if (Z) {
|
|
789
|
-
for (let m = 0; m < Z.length; m++)
|
|
790
|
-
if (Z[m] === o) {
|
|
791
|
-
Z.splice(m, 1), o.isRemoved = !0, o.removeAbortListener && (o.removeAbortListener(), o.removeAbortListener = null), Z.length === 0 && (o.allRemoved = !0, o.target[b] = null);
|
|
792
|
-
break;
|
|
793
|
-
}
|
|
794
|
-
}
|
|
795
|
-
}
|
|
796
|
-
if (o.allRemoved)
|
|
797
|
-
return E.call(o.target, o.eventName, o.capture ? ne : X, o.options);
|
|
798
|
-
}, r = function(o) {
|
|
799
|
-
return D.call(O.target, O.eventName, o.invoke, O.options);
|
|
800
|
-
}, T = function(o) {
|
|
801
|
-
return Y.call(O.target, O.eventName, o.invoke, O.options);
|
|
802
|
-
}, U = function(o) {
|
|
803
|
-
return E.call(o.target, o.eventName, o.invoke, o.options);
|
|
804
|
-
}, ie = A ? a : r, N = A ? s : U, me = function(o, h) {
|
|
805
|
-
const b = typeof h;
|
|
806
|
-
return b === "function" && o.callback === h || b === "object" && o.originalDelegate === h;
|
|
807
|
-
}, ve = p?.diff || me, se = Zone[F("UNPATCHED_EVENTS")], we = e[F("PASSIVE_EVENTS")];
|
|
808
|
-
function f(o) {
|
|
809
|
-
if (typeof o == "object" && o !== null) {
|
|
810
|
-
const h = { ...o };
|
|
811
|
-
return o.signal && (h.signal = o.signal), h;
|
|
812
|
-
}
|
|
813
|
-
return o;
|
|
814
|
-
}
|
|
815
|
-
const l = function(o, h, b, Z, m = !1, z = !1) {
|
|
816
|
-
return function() {
|
|
817
|
-
const M = this || e;
|
|
818
|
-
let P = arguments[0];
|
|
819
|
-
p && p.transferEventName && (P = p.transferEventName(P));
|
|
820
|
-
let W = arguments[1];
|
|
821
|
-
if (!W)
|
|
822
|
-
return o.apply(this, arguments);
|
|
823
|
-
if (Re && P === "uncaughtException")
|
|
824
|
-
return o.apply(this, arguments);
|
|
825
|
-
let q = !1;
|
|
826
|
-
if (typeof W != "function") {
|
|
827
|
-
if (!W.handleEvent)
|
|
828
|
-
return o.apply(this, arguments);
|
|
829
|
-
q = !0;
|
|
830
|
-
}
|
|
831
|
-
if (G && !G(o, W, M, arguments))
|
|
832
|
-
return;
|
|
833
|
-
const ye = !!we && we.indexOf(P) !== -1, fe = f(L(arguments[2], ye)), Ze = fe?.signal;
|
|
834
|
-
if (Ze?.aborted)
|
|
835
|
-
return;
|
|
836
|
-
if (se) {
|
|
837
|
-
for (let pe = 0; pe < se.length; pe++)
|
|
838
|
-
if (P === se[pe])
|
|
839
|
-
return ye ? o.call(M, P, W, fe) : o.apply(this, arguments);
|
|
840
|
-
}
|
|
841
|
-
const qe = fe ? typeof fe == "boolean" ? !0 : fe.capture : !1, ht = fe && typeof fe == "object" ? fe.once : !1, Ft = Zone.current;
|
|
842
|
-
let Ve = ce[P];
|
|
843
|
-
Ve || (at(P, B), Ve = ce[P]);
|
|
844
|
-
const ft = Ve[qe ? _e : ge];
|
|
845
|
-
let De = M[ft], pt = !1;
|
|
846
|
-
if (De) {
|
|
847
|
-
if (pt = !0, J) {
|
|
848
|
-
for (let pe = 0; pe < De.length; pe++)
|
|
849
|
-
if (ve(De[pe], W))
|
|
850
|
-
return;
|
|
851
|
-
}
|
|
852
|
-
} else
|
|
853
|
-
De = M[ft] = [];
|
|
854
|
-
let Me;
|
|
855
|
-
const _t = M.constructor.name, gt = rt[_t];
|
|
856
|
-
gt && (Me = gt[P]), Me || (Me = _t + h + (B ? B(P) : P)), O.options = fe, ht && (O.options.once = !1), O.target = M, O.capture = qe, O.eventName = P, O.isExisting = pt;
|
|
857
|
-
const ze = A ? wt : void 0;
|
|
858
|
-
ze && (ze.taskData = O), Ze && (O.options.signal = void 0);
|
|
859
|
-
const ue = Ft.scheduleEventTask(Me, W, ze, b, Z);
|
|
860
|
-
if (Ze) {
|
|
861
|
-
O.options.signal = Ze;
|
|
862
|
-
const pe = () => ue.zone.cancelTask(ue);
|
|
863
|
-
o.call(Ze, "abort", pe, { once: !0 }), ue.removeAbortListener = () => Ze.removeEventListener("abort", pe);
|
|
864
|
-
}
|
|
865
|
-
if (O.target = null, ze && (ze.taskData = null), ht && (O.options.once = !0), typeof ue.options != "boolean" && (ue.options = fe), ue.target = M, ue.capture = qe, ue.eventName = P, q && (ue.originalDelegate = W), z ? De.unshift(ue) : De.push(ue), m)
|
|
866
|
-
return M;
|
|
867
|
-
};
|
|
868
|
-
};
|
|
869
|
-
return k[i] = l(D, w, ie, N, $), Y && (k[_] = l(Y, R, T, N, $, !0)), k[u] = function() {
|
|
870
|
-
const o = this || e;
|
|
871
|
-
let h = arguments[0];
|
|
872
|
-
p && p.transferEventName && (h = p.transferEventName(h));
|
|
873
|
-
const b = arguments[2], Z = b ? typeof b == "boolean" ? !0 : b.capture : !1, m = arguments[1];
|
|
874
|
-
if (!m)
|
|
875
|
-
return E.apply(this, arguments);
|
|
876
|
-
if (G && !G(E, m, o, arguments))
|
|
877
|
-
return;
|
|
878
|
-
const z = ce[h];
|
|
879
|
-
let M;
|
|
880
|
-
z && (M = z[Z ? _e : ge]);
|
|
881
|
-
const P = M && o[M];
|
|
882
|
-
if (P)
|
|
883
|
-
for (let W = 0; W < P.length; W++) {
|
|
884
|
-
const q = P[W];
|
|
885
|
-
if (ve(q, m)) {
|
|
886
|
-
if (P.splice(W, 1), q.isRemoved = !0, P.length === 0 && (q.allRemoved = !0, o[M] = null, !Z && typeof h == "string")) {
|
|
887
|
-
const ye = Se + "ON_PROPERTY" + h;
|
|
888
|
-
o[ye] = null;
|
|
889
|
-
}
|
|
890
|
-
return q.zone.cancelTask(q), $ ? o : void 0;
|
|
891
|
-
}
|
|
892
|
-
}
|
|
893
|
-
return E.apply(this, arguments);
|
|
894
|
-
}, k[d] = function() {
|
|
895
|
-
const o = this || e;
|
|
896
|
-
let h = arguments[0];
|
|
897
|
-
p && p.transferEventName && (h = p.transferEventName(h));
|
|
898
|
-
const b = [], Z = it(o, B ? B(h) : h);
|
|
899
|
-
for (let m = 0; m < Z.length; m++) {
|
|
900
|
-
const z = Z[m];
|
|
901
|
-
let M = z.originalDelegate ? z.originalDelegate : z.callback;
|
|
902
|
-
b.push(M);
|
|
903
|
-
}
|
|
904
|
-
return b;
|
|
905
|
-
}, k[g] = function() {
|
|
906
|
-
const o = this || e;
|
|
907
|
-
let h = arguments[0];
|
|
908
|
-
if (h) {
|
|
909
|
-
p && p.transferEventName && (h = p.transferEventName(h));
|
|
910
|
-
const b = ce[h];
|
|
911
|
-
if (b) {
|
|
912
|
-
const Z = b[ge], m = b[_e], z = o[Z], M = o[m];
|
|
913
|
-
if (z) {
|
|
914
|
-
const P = z.slice();
|
|
915
|
-
for (let W = 0; W < P.length; W++) {
|
|
916
|
-
const q = P[W];
|
|
917
|
-
let ye = q.originalDelegate ? q.originalDelegate : q.callback;
|
|
918
|
-
this[u].call(this, h, ye, q.options);
|
|
919
|
-
}
|
|
920
|
-
}
|
|
921
|
-
if (M) {
|
|
922
|
-
const P = M.slice();
|
|
923
|
-
for (let W = 0; W < P.length; W++) {
|
|
924
|
-
const q = P[W];
|
|
925
|
-
let ye = q.originalDelegate ? q.originalDelegate : q.callback;
|
|
926
|
-
this[u].call(this, h, ye, q.options);
|
|
927
|
-
}
|
|
928
|
-
}
|
|
929
|
-
}
|
|
930
|
-
} else {
|
|
931
|
-
const b = Object.keys(o);
|
|
932
|
-
for (let Z = 0; Z < b.length; Z++) {
|
|
933
|
-
const m = b[Z], z = ot.exec(m);
|
|
934
|
-
let M = z && z[1];
|
|
935
|
-
M && M !== "removeListener" && this[g].call(this, M);
|
|
936
|
-
}
|
|
937
|
-
this[g].call(this, "removeListener");
|
|
938
|
-
}
|
|
939
|
-
if ($)
|
|
940
|
-
return this;
|
|
941
|
-
}, ke(k[i], D), ke(k[u], E), oe && ke(k[g], oe), S && ke(k[d], S), !0;
|
|
942
|
-
}
|
|
943
|
-
let K = [];
|
|
944
|
-
for (let v = 0; v < c.length; v++)
|
|
945
|
-
K[v] = re(c[v], t);
|
|
946
|
-
return K;
|
|
947
|
-
}
|
|
948
|
-
function it(e, n) {
|
|
949
|
-
if (!n) {
|
|
950
|
-
const u = [];
|
|
951
|
-
for (let d in e) {
|
|
952
|
-
const g = ot.exec(d);
|
|
953
|
-
let y = g && g[1];
|
|
954
|
-
if (y && (!n || y === n)) {
|
|
955
|
-
const w = e[d];
|
|
956
|
-
if (w)
|
|
957
|
-
for (let _ = 0; _ < w.length; _++)
|
|
958
|
-
u.push(w[_]);
|
|
959
|
-
}
|
|
960
|
-
}
|
|
961
|
-
return u;
|
|
962
|
-
}
|
|
963
|
-
let c = ce[n];
|
|
964
|
-
c || (at(n), c = ce[n]);
|
|
965
|
-
const t = e[c[ge]], i = e[c[_e]];
|
|
966
|
-
return t ? i ? t.concat(i) : t.slice() : i ? i.slice() : [];
|
|
967
|
-
}
|
|
968
|
-
function Dt(e, n) {
|
|
969
|
-
const c = e.Event;
|
|
970
|
-
c && c.prototype && n.patchMethod(c.prototype, "stopImmediatePropagation", (t) => function(i, u) {
|
|
971
|
-
i[st] = !0, t && t.apply(i, u);
|
|
972
|
-
});
|
|
973
|
-
}
|
|
974
|
-
function St(e, n) {
|
|
975
|
-
n.patchMethod(e, "queueMicrotask", (c) => function(t, i) {
|
|
976
|
-
Zone.current.scheduleMicroTask("queueMicrotask", i[0]);
|
|
977
|
-
});
|
|
978
|
-
}
|
|
979
|
-
const Le = F("zoneTask");
|
|
980
|
-
function Ee(e, n, c, t) {
|
|
981
|
-
let i = null, u = null;
|
|
982
|
-
n += t, c += t;
|
|
983
|
-
const d = {};
|
|
984
|
-
function g(w) {
|
|
985
|
-
const _ = w.data;
|
|
986
|
-
_.args[0] = function() {
|
|
987
|
-
return w.invoke.apply(this, arguments);
|
|
988
|
-
};
|
|
989
|
-
const R = i.apply(e, _.args);
|
|
990
|
-
return nt(R) ? _.handleId = R : (_.handle = R, _.isRefreshable = tt(R.refresh)), w;
|
|
991
|
-
}
|
|
992
|
-
function y(w) {
|
|
993
|
-
const { handle: _, handleId: R } = w.data;
|
|
994
|
-
return u.call(e, _ ?? R);
|
|
995
|
-
}
|
|
996
|
-
i = de(e, n, (w) => function(_, R) {
|
|
997
|
-
if (tt(R[0])) {
|
|
998
|
-
const j = {
|
|
999
|
-
isRefreshable: !1,
|
|
1000
|
-
isPeriodic: t === "Interval",
|
|
1001
|
-
delay: t === "Timeout" || t === "Interval" ? R[1] || 0 : void 0,
|
|
1002
|
-
args: R
|
|
1003
|
-
}, x = R[0];
|
|
1004
|
-
R[0] = function() {
|
|
1005
|
-
try {
|
|
1006
|
-
return x.apply(this, arguments);
|
|
1007
|
-
} finally {
|
|
1008
|
-
const { handle: p, handleId: A, isPeriodic: G, isRefreshable: J } = j;
|
|
1009
|
-
!G && !J && (A ? delete d[A] : p && (p[Le] = null));
|
|
1010
|
-
}
|
|
1011
|
-
};
|
|
1012
|
-
const X = xe(n, R[0], j, g, y);
|
|
1013
|
-
if (!X)
|
|
1014
|
-
return X;
|
|
1015
|
-
const { handleId: ne, handle: re, isRefreshable: K, isPeriodic: v } = X.data;
|
|
1016
|
-
if (ne)
|
|
1017
|
-
d[ne] = X;
|
|
1018
|
-
else if (re && (re[Le] = X, K && !v)) {
|
|
1019
|
-
const p = re.refresh;
|
|
1020
|
-
re.refresh = function() {
|
|
1021
|
-
const { zone: A, state: G } = X;
|
|
1022
|
-
return G === "notScheduled" ? (X._state = "scheduled", A._updateTaskCount(X, 1)) : G === "running" && (X._state = "scheduling"), p.call(this);
|
|
1023
|
-
};
|
|
1024
|
-
}
|
|
1025
|
-
return re ?? ne ?? X;
|
|
1026
|
-
} else
|
|
1027
|
-
return w.apply(e, R);
|
|
1028
|
-
}), u = de(e, c, (w) => function(_, R) {
|
|
1029
|
-
const j = R[0];
|
|
1030
|
-
let x;
|
|
1031
|
-
nt(j) ? (x = d[j], delete d[j]) : (x = j?.[Le], x ? j[Le] = null : x = j), x?.type ? x.cancelFn && x.zone.cancelTask(x) : w.apply(e, R);
|
|
1032
|
-
});
|
|
1033
|
-
}
|
|
1034
|
-
function Ct(e, n) {
|
|
1035
|
-
const { isBrowser: c, isMix: t } = n.getGlobalObjects();
|
|
1036
|
-
if (!c && !t || !e.customElements || !("customElements" in e))
|
|
1037
|
-
return;
|
|
1038
|
-
const i = [
|
|
1039
|
-
"connectedCallback",
|
|
1040
|
-
"disconnectedCallback",
|
|
1041
|
-
"adoptedCallback",
|
|
1042
|
-
"attributeChangedCallback",
|
|
1043
|
-
"formAssociatedCallback",
|
|
1044
|
-
"formDisabledCallback",
|
|
1045
|
-
"formResetCallback",
|
|
1046
|
-
"formStateRestoreCallback"
|
|
1047
|
-
];
|
|
1048
|
-
n.patchCallbacks(n, e.customElements, "customElements", "define", i);
|
|
1049
|
-
}
|
|
1050
|
-
function Ot(e, n) {
|
|
1051
|
-
if (Zone[n.symbol("patchEventTarget")])
|
|
1052
|
-
return;
|
|
1053
|
-
const { eventNames: c, zoneSymbolEventNames: t, TRUE_STR: i, FALSE_STR: u, ZONE_SYMBOL_PREFIX: d } = n.getGlobalObjects();
|
|
1054
|
-
for (let y = 0; y < c.length; y++) {
|
|
1055
|
-
const w = c[y], _ = w + u, R = w + i, j = d + _, x = d + R;
|
|
1056
|
-
t[w] = {}, t[w][u] = j, t[w][i] = x;
|
|
1057
|
-
}
|
|
1058
|
-
const g = e.EventTarget;
|
|
1059
|
-
if (!(!g || !g.prototype))
|
|
1060
|
-
return n.patchEventTarget(e, n, [g && g.prototype]), !0;
|
|
1061
|
-
}
|
|
1062
|
-
function zt(e, n) {
|
|
1063
|
-
n.patchEventPrototype(e, n);
|
|
1064
|
-
}
|
|
1065
|
-
function ct(e, n, c) {
|
|
1066
|
-
if (!c || c.length === 0)
|
|
1067
|
-
return n;
|
|
1068
|
-
const t = c.filter((u) => u.target === e);
|
|
1069
|
-
if (t.length === 0)
|
|
1070
|
-
return n;
|
|
1071
|
-
const i = t[0].ignoreProperties;
|
|
1072
|
-
return n.filter((u) => i.indexOf(u) === -1);
|
|
1073
|
-
}
|
|
1074
|
-
function lt(e, n, c, t) {
|
|
1075
|
-
if (!e)
|
|
1076
|
-
return;
|
|
1077
|
-
const i = ct(e, n, c);
|
|
1078
|
-
Qe(e, i, t);
|
|
1079
|
-
}
|
|
1080
|
-
function We(e) {
|
|
1081
|
-
return Object.getOwnPropertyNames(e).filter((n) => n.startsWith("on") && n.length > 2).map((n) => n.substring(2));
|
|
1082
|
-
}
|
|
1083
|
-
function Pt(e, n) {
|
|
1084
|
-
if (Re && !Ye || Zone[e.symbol("patchEvents")])
|
|
1085
|
-
return;
|
|
1086
|
-
const c = n.__Zone_ignore_on_properties;
|
|
1087
|
-
let t = [];
|
|
1088
|
-
if (Ge) {
|
|
1089
|
-
const i = window;
|
|
1090
|
-
t = t.concat([
|
|
1091
|
-
"Document",
|
|
1092
|
-
"SVGElement",
|
|
1093
|
-
"Element",
|
|
1094
|
-
"HTMLElement",
|
|
1095
|
-
"HTMLBodyElement",
|
|
1096
|
-
"HTMLMediaElement",
|
|
1097
|
-
"HTMLFrameSetElement",
|
|
1098
|
-
"HTMLFrameElement",
|
|
1099
|
-
"HTMLIFrameElement",
|
|
1100
|
-
"HTMLMarqueeElement",
|
|
1101
|
-
"Worker"
|
|
1102
|
-
]);
|
|
1103
|
-
const u = [];
|
|
1104
|
-
lt(i, We(i), c && c.concat(u), ae(i));
|
|
1105
|
-
}
|
|
1106
|
-
t = t.concat([
|
|
1107
|
-
"XMLHttpRequest",
|
|
1108
|
-
"XMLHttpRequestEventTarget",
|
|
1109
|
-
"IDBIndex",
|
|
1110
|
-
"IDBRequest",
|
|
1111
|
-
"IDBOpenDBRequest",
|
|
1112
|
-
"IDBDatabase",
|
|
1113
|
-
"IDBTransaction",
|
|
1114
|
-
"IDBCursor",
|
|
1115
|
-
"WebSocket"
|
|
1116
|
-
]);
|
|
1117
|
-
for (let i = 0; i < t.length; i++) {
|
|
1118
|
-
const u = n[t[i]];
|
|
1119
|
-
u?.prototype && lt(u.prototype, We(u.prototype), c);
|
|
1120
|
-
}
|
|
1121
|
-
}
|
|
1122
|
-
function Rt(e) {
|
|
1123
|
-
e.__load_patch("legacy", (n) => {
|
|
1124
|
-
const c = n[e.__symbol__("legacyPatch")];
|
|
1125
|
-
c && c();
|
|
1126
|
-
}), e.__load_patch("timers", (n) => {
|
|
1127
|
-
const c = "clear";
|
|
1128
|
-
Ee(n, "set", c, "Timeout"), Ee(n, "set", c, "Interval"), Ee(n, "set", c, "Immediate");
|
|
1129
|
-
}), e.__load_patch("requestAnimationFrame", (n) => {
|
|
1130
|
-
Ee(n, "request", "cancel", "AnimationFrame"), Ee(n, "mozRequest", "mozCancel", "AnimationFrame"), Ee(n, "webkitRequest", "webkitCancel", "AnimationFrame");
|
|
1131
|
-
}), e.__load_patch("blocking", (n, c) => {
|
|
1132
|
-
const t = ["alert", "prompt", "confirm"];
|
|
1133
|
-
for (let i = 0; i < t.length; i++) {
|
|
1134
|
-
const u = t[i];
|
|
1135
|
-
de(n, u, (d, g, y) => function(w, _) {
|
|
1136
|
-
return c.current.run(d, n, _, y);
|
|
1137
|
-
});
|
|
1138
|
-
}
|
|
1139
|
-
}), e.__load_patch("EventTarget", (n, c, t) => {
|
|
1140
|
-
zt(n, t), Ot(n, t);
|
|
1141
|
-
const i = n.XMLHttpRequestEventTarget;
|
|
1142
|
-
i && i.prototype && t.patchEventTarget(n, t, [i.prototype]);
|
|
1143
|
-
}), e.__load_patch("MutationObserver", (n, c, t) => {
|
|
1144
|
-
Oe("MutationObserver"), Oe("WebKitMutationObserver");
|
|
1145
|
-
}), e.__load_patch("IntersectionObserver", (n, c, t) => {
|
|
1146
|
-
Oe("IntersectionObserver");
|
|
1147
|
-
}), e.__load_patch("FileReader", (n, c, t) => {
|
|
1148
|
-
Oe("FileReader");
|
|
1149
|
-
}), e.__load_patch("on_property", (n, c, t) => {
|
|
1150
|
-
Pt(t, n);
|
|
1151
|
-
}), e.__load_patch("customElements", (n, c, t) => {
|
|
1152
|
-
Ct(n, t);
|
|
1153
|
-
}), e.__load_patch("XHR", (n, c) => {
|
|
1154
|
-
w(n);
|
|
1155
|
-
const t = F("xhrTask"), i = F("xhrSync"), u = F("xhrListener"), d = F("xhrScheduled"), g = F("xhrURL"), y = F("xhrErrorBeforeScheduled");
|
|
1156
|
-
function w(_) {
|
|
1157
|
-
const R = _.XMLHttpRequest;
|
|
1158
|
-
if (!R)
|
|
1159
|
-
return;
|
|
1160
|
-
const j = R.prototype;
|
|
1161
|
-
function x(D) {
|
|
1162
|
-
return D[t];
|
|
1163
|
-
}
|
|
1164
|
-
let X = j[Ie], ne = j[Fe];
|
|
1165
|
-
if (!X) {
|
|
1166
|
-
const D = _.XMLHttpRequestEventTarget;
|
|
1167
|
-
if (D) {
|
|
1168
|
-
const E = D.prototype;
|
|
1169
|
-
X = E[Ie], ne = E[Fe];
|
|
1170
|
-
}
|
|
1171
|
-
}
|
|
1172
|
-
const re = "readystatechange", K = "scheduled";
|
|
1173
|
-
function v(D) {
|
|
1174
|
-
const E = D.data, S = E.target;
|
|
1175
|
-
S[d] = !1, S[y] = !1;
|
|
1176
|
-
const oe = S[u];
|
|
1177
|
-
X || (X = S[Ie], ne = S[Fe]), oe && ne.call(S, re, oe);
|
|
1178
|
-
const Y = S[u] = () => {
|
|
1179
|
-
if (S.readyState === S.DONE)
|
|
1180
|
-
if (!E.aborted && S[d] && D.state === K) {
|
|
1181
|
-
const L = S[c.__symbol__("loadfalse")];
|
|
1182
|
-
if (S.status !== 0 && L && L.length > 0) {
|
|
1183
|
-
const a = D.invoke;
|
|
1184
|
-
D.invoke = function() {
|
|
1185
|
-
const s = S[c.__symbol__("loadfalse")];
|
|
1186
|
-
for (let r = 0; r < s.length; r++)
|
|
1187
|
-
s[r] === D && s.splice(r, 1);
|
|
1188
|
-
!E.aborted && D.state === K && a.call(D);
|
|
1189
|
-
}, L.push(D);
|
|
1190
|
-
} else
|
|
1191
|
-
D.invoke();
|
|
1192
|
-
} else !E.aborted && S[d] === !1 && (S[y] = !0);
|
|
1193
|
-
};
|
|
1194
|
-
return X.call(S, re, Y), S[t] || (S[t] = D), B.apply(S, E.args), S[d] = !0, D;
|
|
1195
|
-
}
|
|
1196
|
-
function p() {
|
|
1197
|
-
}
|
|
1198
|
-
function A(D) {
|
|
1199
|
-
const E = D.data;
|
|
1200
|
-
return E.aborted = !0, O.apply(E.target, E.args);
|
|
1201
|
-
}
|
|
1202
|
-
const G = de(j, "open", () => function(D, E) {
|
|
1203
|
-
return D[i] = E[2] == !1, D[g] = E[1], G.apply(D, E);
|
|
1204
|
-
}), J = "XMLHttpRequest.send", $ = F("fetchTaskAborting"), k = F("fetchTaskScheduling"), B = de(j, "send", () => function(D, E) {
|
|
1205
|
-
if (c.current[k] === !0 || D[i])
|
|
1206
|
-
return B.apply(D, E);
|
|
1207
|
-
{
|
|
1208
|
-
const S = {
|
|
1209
|
-
target: D,
|
|
1210
|
-
url: D[g],
|
|
1211
|
-
isPeriodic: !1,
|
|
1212
|
-
args: E,
|
|
1213
|
-
aborted: !1
|
|
1214
|
-
}, oe = xe(J, p, S, v, A);
|
|
1215
|
-
D && D[y] === !0 && !S.aborted && oe.state === K && oe.invoke();
|
|
1216
|
-
}
|
|
1217
|
-
}), O = de(j, "abort", () => function(D, E) {
|
|
1218
|
-
const S = x(D);
|
|
1219
|
-
if (S && typeof S.type == "string") {
|
|
1220
|
-
if (S.cancelFn == null || S.data && S.data.aborted)
|
|
1221
|
-
return;
|
|
1222
|
-
S.zone.cancelTask(S);
|
|
1223
|
-
} else if (c.current[$] === !0)
|
|
1224
|
-
return O.apply(D, E);
|
|
1225
|
-
});
|
|
1226
|
-
}
|
|
1227
|
-
}), e.__load_patch("geolocation", (n) => {
|
|
1228
|
-
n.navigator && n.navigator.geolocation && vt(n.navigator.geolocation, ["getCurrentPosition", "watchPosition"]);
|
|
1229
|
-
}), e.__load_patch("PromiseRejectionEvent", (n, c) => {
|
|
1230
|
-
function t(i) {
|
|
1231
|
-
return function(u) {
|
|
1232
|
-
it(n, i).forEach((d) => {
|
|
1233
|
-
const g = n.PromiseRejectionEvent;
|
|
1234
|
-
if (g) {
|
|
1235
|
-
const y = new g(i, {
|
|
1236
|
-
promise: u.promise,
|
|
1237
|
-
reason: u.rejection
|
|
1238
|
-
});
|
|
1239
|
-
d.invoke(y);
|
|
1240
|
-
}
|
|
1241
|
-
});
|
|
1242
|
-
};
|
|
1243
|
-
}
|
|
1244
|
-
n.PromiseRejectionEvent && (c[F("unhandledPromiseRejectionHandler")] = t("unhandledrejection"), c[F("rejectionHandledHandler")] = t("rejectionhandled"));
|
|
1245
|
-
}), e.__load_patch("queueMicrotask", (n, c, t) => {
|
|
1246
|
-
St(n, t);
|
|
1247
|
-
});
|
|
1248
|
-
}
|
|
1249
|
-
function jt(e) {
|
|
1250
|
-
e.__load_patch("ZoneAwarePromise", (n, c, t) => {
|
|
1251
|
-
const i = Object.getOwnPropertyDescriptor, u = Object.defineProperty;
|
|
1252
|
-
function d(f) {
|
|
1253
|
-
return f && f.toString === Object.prototype.toString ? (f.constructor && f.constructor.name || "") + ": " + JSON.stringify(f) : f ? f.toString() : Object.prototype.toString.call(f);
|
|
1254
|
-
}
|
|
1255
|
-
const g = t.symbol, y = [], w = n[g("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")] !== !1, _ = g("Promise"), R = g("then"), j = "__creationTrace__";
|
|
1256
|
-
t.onUnhandledError = (f) => {
|
|
1257
|
-
if (t.showUncaughtError()) {
|
|
1258
|
-
const l = f && f.rejection;
|
|
1259
|
-
l ? console.error("Unhandled Promise rejection:", l instanceof Error ? l.message : l, "; Zone:", f.zone.name, "; Task:", f.task && f.task.source, "; Value:", l, l instanceof Error ? l.stack : void 0) : console.error(f);
|
|
1260
|
-
}
|
|
1261
|
-
}, t.microtaskDrainDone = () => {
|
|
1262
|
-
for (; y.length; ) {
|
|
1263
|
-
const f = y.shift();
|
|
1264
|
-
try {
|
|
1265
|
-
f.zone.runGuarded(() => {
|
|
1266
|
-
throw f.throwOriginal ? f.rejection : f;
|
|
1267
|
-
});
|
|
1268
|
-
} catch (l) {
|
|
1269
|
-
X(l);
|
|
1270
|
-
}
|
|
1271
|
-
}
|
|
1272
|
-
};
|
|
1273
|
-
const x = g("unhandledPromiseRejectionHandler");
|
|
1274
|
-
function X(f) {
|
|
1275
|
-
t.onUnhandledError(f);
|
|
1276
|
-
try {
|
|
1277
|
-
const l = c[x];
|
|
1278
|
-
typeof l == "function" && l.call(this, f);
|
|
1279
|
-
} catch {
|
|
1280
|
-
}
|
|
1281
|
-
}
|
|
1282
|
-
function ne(f) {
|
|
1283
|
-
return f && typeof f.then == "function";
|
|
1284
|
-
}
|
|
1285
|
-
function re(f) {
|
|
1286
|
-
return f;
|
|
1287
|
-
}
|
|
1288
|
-
function K(f) {
|
|
1289
|
-
return N.reject(f);
|
|
1290
|
-
}
|
|
1291
|
-
const v = g("state"), p = g("value"), A = g("finally"), G = g("parentPromiseValue"), J = g("parentPromiseState"), $ = "Promise.then", k = null, B = !0, O = !1, D = 0;
|
|
1292
|
-
function E(f, l) {
|
|
1293
|
-
return (o) => {
|
|
1294
|
-
try {
|
|
1295
|
-
L(f, l, o);
|
|
1296
|
-
} catch (h) {
|
|
1297
|
-
L(f, !1, h);
|
|
1298
|
-
}
|
|
1299
|
-
};
|
|
1300
|
-
}
|
|
1301
|
-
const S = function() {
|
|
1302
|
-
let f = !1;
|
|
1303
|
-
return function(l) {
|
|
1304
|
-
return function() {
|
|
1305
|
-
f || (f = !0, l.apply(null, arguments));
|
|
1306
|
-
};
|
|
1307
|
-
};
|
|
1308
|
-
}, oe = "Promise resolved with itself", Y = g("currentTaskTrace");
|
|
1309
|
-
function L(f, l, o) {
|
|
1310
|
-
const h = S();
|
|
1311
|
-
if (f === o)
|
|
1312
|
-
throw new TypeError(oe);
|
|
1313
|
-
if (f[v] === k) {
|
|
1314
|
-
let b = null;
|
|
1315
|
-
try {
|
|
1316
|
-
(typeof o == "object" || typeof o == "function") && (b = o && o.then);
|
|
1317
|
-
} catch (Z) {
|
|
1318
|
-
return h(() => {
|
|
1319
|
-
L(f, !1, Z);
|
|
1320
|
-
})(), f;
|
|
1321
|
-
}
|
|
1322
|
-
if (l !== O && o instanceof N && o.hasOwnProperty(v) && o.hasOwnProperty(p) && o[v] !== k)
|
|
1323
|
-
s(o), L(f, o[v], o[p]);
|
|
1324
|
-
else if (l !== O && typeof b == "function")
|
|
1325
|
-
try {
|
|
1326
|
-
b.call(o, h(E(f, l)), h(E(f, !1)));
|
|
1327
|
-
} catch (Z) {
|
|
1328
|
-
h(() => {
|
|
1329
|
-
L(f, !1, Z);
|
|
1330
|
-
})();
|
|
1331
|
-
}
|
|
1332
|
-
else {
|
|
1333
|
-
f[v] = l;
|
|
1334
|
-
const Z = f[p];
|
|
1335
|
-
if (f[p] = o, f[A] === A && l === B && (f[v] = f[J], f[p] = f[G]), l === O && o instanceof Error) {
|
|
1336
|
-
const m = c.currentTask && c.currentTask.data && c.currentTask.data[j];
|
|
1337
|
-
m && u(o, Y, {
|
|
1338
|
-
configurable: !0,
|
|
1339
|
-
enumerable: !1,
|
|
1340
|
-
writable: !0,
|
|
1341
|
-
value: m
|
|
1342
|
-
});
|
|
1343
|
-
}
|
|
1344
|
-
for (let m = 0; m < Z.length; )
|
|
1345
|
-
r(f, Z[m++], Z[m++], Z[m++], Z[m++]);
|
|
1346
|
-
if (Z.length == 0 && l == O) {
|
|
1347
|
-
f[v] = D;
|
|
1348
|
-
let m = o;
|
|
1349
|
-
try {
|
|
1350
|
-
throw new Error("Uncaught (in promise): " + d(o) + (o && o.stack ? `
|
|
1351
|
-
` + o.stack : ""));
|
|
1352
|
-
} catch (z) {
|
|
1353
|
-
m = z;
|
|
1354
|
-
}
|
|
1355
|
-
w && (m.throwOriginal = !0), m.rejection = o, m.promise = f, m.zone = c.current, m.task = c.currentTask, y.push(m), t.scheduleMicroTask();
|
|
1356
|
-
}
|
|
1357
|
-
}
|
|
1358
|
-
}
|
|
1359
|
-
return f;
|
|
1360
|
-
}
|
|
1361
|
-
const a = g("rejectionHandledHandler");
|
|
1362
|
-
function s(f) {
|
|
1363
|
-
if (f[v] === D) {
|
|
1364
|
-
try {
|
|
1365
|
-
const l = c[a];
|
|
1366
|
-
l && typeof l == "function" && l.call(this, { rejection: f[p], promise: f });
|
|
1367
|
-
} catch {
|
|
1368
|
-
}
|
|
1369
|
-
f[v] = O;
|
|
1370
|
-
for (let l = 0; l < y.length; l++)
|
|
1371
|
-
f === y[l].promise && y.splice(l, 1);
|
|
1372
|
-
}
|
|
1373
|
-
}
|
|
1374
|
-
function r(f, l, o, h, b) {
|
|
1375
|
-
s(f);
|
|
1376
|
-
const Z = f[v], m = Z ? typeof h == "function" ? h : re : typeof b == "function" ? b : K;
|
|
1377
|
-
l.scheduleMicroTask($, () => {
|
|
1378
|
-
try {
|
|
1379
|
-
const z = f[p], M = !!o && A === o[A];
|
|
1380
|
-
M && (o[G] = z, o[J] = Z);
|
|
1381
|
-
const P = l.run(m, void 0, M && m !== K && m !== re ? [] : [z]);
|
|
1382
|
-
L(o, !0, P);
|
|
1383
|
-
} catch (z) {
|
|
1384
|
-
L(o, !1, z);
|
|
1385
|
-
}
|
|
1386
|
-
}, o);
|
|
1387
|
-
}
|
|
1388
|
-
const T = "function ZoneAwarePromise() { [native code] }", U = function() {
|
|
1389
|
-
}, ie = n.AggregateError;
|
|
1390
|
-
class N {
|
|
1391
|
-
static toString() {
|
|
1392
|
-
return T;
|
|
1393
|
-
}
|
|
1394
|
-
static resolve(l) {
|
|
1395
|
-
return l instanceof N ? l : L(new this(null), B, l);
|
|
1396
|
-
}
|
|
1397
|
-
static reject(l) {
|
|
1398
|
-
return L(new this(null), O, l);
|
|
1399
|
-
}
|
|
1400
|
-
static withResolvers() {
|
|
1401
|
-
const l = {};
|
|
1402
|
-
return l.promise = new N((o, h) => {
|
|
1403
|
-
l.resolve = o, l.reject = h;
|
|
1404
|
-
}), l;
|
|
1405
|
-
}
|
|
1406
|
-
static any(l) {
|
|
1407
|
-
if (!l || typeof l[Symbol.iterator] != "function")
|
|
1408
|
-
return Promise.reject(new ie([], "All promises were rejected"));
|
|
1409
|
-
const o = [];
|
|
1410
|
-
let h = 0;
|
|
1411
|
-
try {
|
|
1412
|
-
for (let m of l)
|
|
1413
|
-
h++, o.push(N.resolve(m));
|
|
1414
|
-
} catch {
|
|
1415
|
-
return Promise.reject(new ie([], "All promises were rejected"));
|
|
1416
|
-
}
|
|
1417
|
-
if (h === 0)
|
|
1418
|
-
return Promise.reject(new ie([], "All promises were rejected"));
|
|
1419
|
-
let b = !1;
|
|
1420
|
-
const Z = [];
|
|
1421
|
-
return new N((m, z) => {
|
|
1422
|
-
for (let M = 0; M < o.length; M++)
|
|
1423
|
-
o[M].then((P) => {
|
|
1424
|
-
b || (b = !0, m(P));
|
|
1425
|
-
}, (P) => {
|
|
1426
|
-
Z.push(P), h--, h === 0 && (b = !0, z(new ie(Z, "All promises were rejected")));
|
|
1427
|
-
});
|
|
1428
|
-
});
|
|
1429
|
-
}
|
|
1430
|
-
static race(l) {
|
|
1431
|
-
let o, h, b = new this((z, M) => {
|
|
1432
|
-
o = z, h = M;
|
|
1433
|
-
});
|
|
1434
|
-
function Z(z) {
|
|
1435
|
-
o(z);
|
|
1436
|
-
}
|
|
1437
|
-
function m(z) {
|
|
1438
|
-
h(z);
|
|
1439
|
-
}
|
|
1440
|
-
for (let z of l)
|
|
1441
|
-
ne(z) || (z = this.resolve(z)), z.then(Z, m);
|
|
1442
|
-
return b;
|
|
1443
|
-
}
|
|
1444
|
-
static all(l) {
|
|
1445
|
-
return N.allWithCallback(l);
|
|
1446
|
-
}
|
|
1447
|
-
static allSettled(l) {
|
|
1448
|
-
return (this && this.prototype instanceof N ? this : N).allWithCallback(l, {
|
|
1449
|
-
thenCallback: (o) => ({ status: "fulfilled", value: o }),
|
|
1450
|
-
errorCallback: (o) => ({ status: "rejected", reason: o })
|
|
1451
|
-
});
|
|
1452
|
-
}
|
|
1453
|
-
static allWithCallback(l, o) {
|
|
1454
|
-
let h, b, Z = new this((P, W) => {
|
|
1455
|
-
h = P, b = W;
|
|
1456
|
-
}), m = 2, z = 0;
|
|
1457
|
-
const M = [];
|
|
1458
|
-
for (let P of l) {
|
|
1459
|
-
ne(P) || (P = this.resolve(P));
|
|
1460
|
-
const W = z;
|
|
1461
|
-
try {
|
|
1462
|
-
P.then((q) => {
|
|
1463
|
-
M[W] = o ? o.thenCallback(q) : q, m--, m === 0 && h(M);
|
|
1464
|
-
}, (q) => {
|
|
1465
|
-
o ? (M[W] = o.errorCallback(q), m--, m === 0 && h(M)) : b(q);
|
|
1466
|
-
});
|
|
1467
|
-
} catch (q) {
|
|
1468
|
-
b(q);
|
|
1469
|
-
}
|
|
1470
|
-
m++, z++;
|
|
1471
|
-
}
|
|
1472
|
-
return m -= 2, m === 0 && h(M), Z;
|
|
1473
|
-
}
|
|
1474
|
-
constructor(l) {
|
|
1475
|
-
const o = this;
|
|
1476
|
-
if (!(o instanceof N))
|
|
1477
|
-
throw new Error("Must be an instanceof Promise.");
|
|
1478
|
-
o[v] = k, o[p] = [];
|
|
1479
|
-
try {
|
|
1480
|
-
const h = S();
|
|
1481
|
-
l && l(h(E(o, B)), h(E(o, O)));
|
|
1482
|
-
} catch (h) {
|
|
1483
|
-
L(o, !1, h);
|
|
1484
|
-
}
|
|
1485
|
-
}
|
|
1486
|
-
get [Symbol.toStringTag]() {
|
|
1487
|
-
return "Promise";
|
|
1488
|
-
}
|
|
1489
|
-
get [Symbol.species]() {
|
|
1490
|
-
return N;
|
|
1491
|
-
}
|
|
1492
|
-
then(l, o) {
|
|
1493
|
-
let h = this.constructor?.[Symbol.species];
|
|
1494
|
-
(!h || typeof h != "function") && (h = this.constructor || N);
|
|
1495
|
-
const b = new h(U), Z = c.current;
|
|
1496
|
-
return this[v] == k ? this[p].push(Z, b, l, o) : r(this, Z, b, l, o), b;
|
|
1497
|
-
}
|
|
1498
|
-
catch(l) {
|
|
1499
|
-
return this.then(null, l);
|
|
1500
|
-
}
|
|
1501
|
-
finally(l) {
|
|
1502
|
-
let o = this.constructor?.[Symbol.species];
|
|
1503
|
-
(!o || typeof o != "function") && (o = N);
|
|
1504
|
-
const h = new o(U);
|
|
1505
|
-
h[A] = A;
|
|
1506
|
-
const b = c.current;
|
|
1507
|
-
return this[v] == k ? this[p].push(b, h, l, l) : r(this, b, h, l, l), h;
|
|
1508
|
-
}
|
|
1509
|
-
}
|
|
1510
|
-
N.resolve = N.resolve, N.reject = N.reject, N.race = N.race, N.all = N.all;
|
|
1511
|
-
const me = n[_] = n.Promise;
|
|
1512
|
-
n.Promise = N;
|
|
1513
|
-
const ve = g("thenPatched");
|
|
1514
|
-
function se(f) {
|
|
1515
|
-
const l = f.prototype, o = i(l, "then");
|
|
1516
|
-
if (o && (o.writable === !1 || !o.configurable))
|
|
1517
|
-
return;
|
|
1518
|
-
const h = l.then;
|
|
1519
|
-
l[R] = h, f.prototype.then = function(b, Z) {
|
|
1520
|
-
return new N((m, z) => {
|
|
1521
|
-
h.call(this, m, z);
|
|
1522
|
-
}).then(b, Z);
|
|
1523
|
-
}, f[ve] = !0;
|
|
1524
|
-
}
|
|
1525
|
-
t.patchThen = se;
|
|
1526
|
-
function we(f) {
|
|
1527
|
-
return function(l, o) {
|
|
1528
|
-
let h = f.apply(l, o);
|
|
1529
|
-
if (h instanceof N)
|
|
1530
|
-
return h;
|
|
1531
|
-
let b = h.constructor;
|
|
1532
|
-
return b[ve] || se(b), h;
|
|
1533
|
-
};
|
|
1534
|
-
}
|
|
1535
|
-
return me && (se(me), de(n, "fetch", (f) => we(f))), Promise[c.__symbol__("uncaughtPromiseErrors")] = y, N;
|
|
1536
|
-
});
|
|
1537
|
-
}
|
|
1538
|
-
function Lt(e) {
|
|
1539
|
-
e.__load_patch("toString", (n) => {
|
|
1540
|
-
const c = Function.prototype.toString, t = F("OriginalDelegate"), i = F("Promise"), u = F("Error"), d = function() {
|
|
1541
|
-
if (typeof this == "function") {
|
|
1542
|
-
const w = this[t];
|
|
1543
|
-
if (w)
|
|
1544
|
-
return typeof w == "function" ? c.call(w) : Object.prototype.toString.call(w);
|
|
1545
|
-
if (this === Promise) {
|
|
1546
|
-
const _ = n[i];
|
|
1547
|
-
if (_)
|
|
1548
|
-
return c.call(_);
|
|
1549
|
-
}
|
|
1550
|
-
if (this === Error) {
|
|
1551
|
-
const _ = n[u];
|
|
1552
|
-
if (_)
|
|
1553
|
-
return c.call(_);
|
|
1554
|
-
}
|
|
1555
|
-
}
|
|
1556
|
-
return c.call(this);
|
|
1557
|
-
};
|
|
1558
|
-
d[t] = c, Function.prototype.toString = d;
|
|
1559
|
-
const g = Object.prototype.toString, y = "[object Promise]";
|
|
1560
|
-
Object.prototype.toString = function() {
|
|
1561
|
-
return typeof Promise == "function" && this instanceof Promise ? y : g.call(this);
|
|
1562
|
-
};
|
|
1563
|
-
});
|
|
1564
|
-
}
|
|
1565
|
-
function Mt(e, n, c, t, i) {
|
|
1566
|
-
const u = Zone.__symbol__(t);
|
|
1567
|
-
if (n[u])
|
|
1568
|
-
return;
|
|
1569
|
-
const d = n[u] = n[t];
|
|
1570
|
-
n[t] = function(g, y, w) {
|
|
1571
|
-
return y && y.prototype && i.forEach(function(_) {
|
|
1572
|
-
const R = `${c}.${t}::` + _, j = y.prototype;
|
|
1573
|
-
try {
|
|
1574
|
-
if (j.hasOwnProperty(_)) {
|
|
1575
|
-
const x = e.ObjectGetOwnPropertyDescriptor(j, _);
|
|
1576
|
-
x && x.value ? (x.value = e.wrapWithCurrentZone(x.value, R), e._redefineProperty(y.prototype, _, x)) : j[_] && (j[_] = e.wrapWithCurrentZone(j[_], R));
|
|
1577
|
-
} else j[_] && (j[_] = e.wrapWithCurrentZone(j[_], R));
|
|
1578
|
-
} catch {
|
|
1579
|
-
}
|
|
1580
|
-
}), d.call(n, g, y, w);
|
|
1581
|
-
}, e.attachOriginToPatched(n[t], d);
|
|
1582
|
-
}
|
|
1583
|
-
function Nt(e) {
|
|
1584
|
-
e.__load_patch("util", (n, c, t) => {
|
|
1585
|
-
const i = We(n);
|
|
1586
|
-
t.patchOnProperties = Qe, t.patchMethod = de, t.bindArguments = He, t.patchMacroTask = bt;
|
|
1587
|
-
const u = c.__symbol__("BLACK_LISTED_EVENTS"), d = c.__symbol__("UNPATCHED_EVENTS");
|
|
1588
|
-
n[d] && (n[u] = n[d]), n[u] && (c[u] = c[d] = n[u]), t.patchEventPrototype = Dt, t.patchEventTarget = Zt, t.isIEOrEdge = Et, t.ObjectDefineProperty = te, t.ObjectGetOwnPropertyDescriptor = ee, t.ObjectCreate = he, t.ArraySlice = Te, t.patchClass = Oe, t.wrapWithCurrentZone = Ae, t.filterProperties = ct, t.attachOriginToPatched = ke, t._redefineProperty = Object.defineProperty, t.patchCallbacks = Mt, t.getGlobalObjects = () => ({
|
|
1589
|
-
globalSources: rt,
|
|
1590
|
-
zoneSymbolEventNames: ce,
|
|
1591
|
-
eventNames: i,
|
|
1592
|
-
isBrowser: Ge,
|
|
1593
|
-
isMix: Ye,
|
|
1594
|
-
isNode: Re,
|
|
1595
|
-
TRUE_STR: _e,
|
|
1596
|
-
FALSE_STR: ge,
|
|
1597
|
-
ZONE_SYMBOL_PREFIX: Se,
|
|
1598
|
-
ADD_EVENT_LISTENER_STR: be,
|
|
1599
|
-
REMOVE_EVENT_LISTENER_STR: Ne
|
|
1600
|
-
});
|
|
1601
|
-
});
|
|
1602
|
-
}
|
|
1603
|
-
function It(e) {
|
|
1604
|
-
jt(e), Lt(e), Nt(e);
|
|
1605
|
-
}
|
|
1606
|
-
const ut = H();
|
|
1607
|
-
return It(ut), Rt(ut), kt;
|
|
1608
|
-
}
|
|
1609
|
-
xt();
|
|
1610
|
-
export {
|
|
1611
|
-
Gt as ZoneContextManager
|
|
1612
|
-
};
|
|
1613
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRGluNUk1cFQtIX57MDBkfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFEgYXMgUWkgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcblxuZnVuY3Rpb24geHQoaikge1xuICByZXR1cm4gaiA9PT0gdm9pZCAwICYmIChqID0ge30pLCB0eXBlb2Ygai5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygai5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIjtcbn1cbnZhciBFdCA9IFwiT1RfWk9ORV9DT05URVhUXCIsIHp0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGooKSB7XG4gICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2UsIHRoaXMuX3pvbmVDb3VudGVyID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGoucHJvdG90eXBlLl9hY3RpdmVDb250ZXh0RnJvbVpvbmUgPSBmdW5jdGlvbihTKSB7XG4gICAgICByZXR1cm4gUyAmJiBTLmdldChFdCkgfHwgUWk7XG4gICAgfSwgai5wcm90b3R5cGUuX2JpbmRGdW5jdGlvbiA9IGZ1bmN0aW9uKFMsIEIpIHtcbiAgICAgIHZhciB6ID0gdGhpcywgZWUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICh2YXIgdGUgPSB0aGlzLCBpZSA9IFtdLCBmZSA9IDA7IGZlIDwgYXJndW1lbnRzLmxlbmd0aDsgZmUrKylcbiAgICAgICAgICBpZVtmZV0gPSBhcmd1bWVudHNbZmVdO1xuICAgICAgICByZXR1cm4gei53aXRoKFMsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBCLmFwcGx5KHRlLCBpZSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWUsIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogQi5sZW5ndGhcbiAgICAgIH0pLCBlZTtcbiAgICB9LCBqLnByb3RvdHlwZS5fYmluZExpc3RlbmVyID0gZnVuY3Rpb24oUywgQikge1xuICAgICAgdmFyIHogPSBCO1xuICAgICAgcmV0dXJuIHouX19vdF9saXN0ZW5lcnMgIT09IHZvaWQgMCB8fCAoei5fX290X2xpc3RlbmVycyA9IHt9LCB0eXBlb2Ygei5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiAoei5hZGRFdmVudExpc3RlbmVyID0gdGhpcy5fcGF0Y2hBZGRFdmVudExpc3RlbmVyKHosIHouYWRkRXZlbnRMaXN0ZW5lciwgUykpLCB0eXBlb2Ygei5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiAoei5yZW1vdmVFdmVudExpc3RlbmVyID0gdGhpcy5fcGF0Y2hSZW1vdmVFdmVudExpc3RlbmVyKHosIHoucmVtb3ZlRXZlbnRMaXN0ZW5lcikpKSwgQjtcbiAgICB9LCBqLnByb3RvdHlwZS5fY3JlYXRlWm9uZU5hbWUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuX3pvbmVDb3VudGVyKys7XG4gICAgICB2YXIgUyA9IE1hdGgucmFuZG9tKCk7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZUNvdW50ZXIgKyBcIi1cIiArIFM7XG4gICAgfSwgai5wcm90b3R5cGUuX2NyZWF0ZVpvbmUgPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICB2YXIgejtcbiAgICAgIHJldHVybiBab25lLmN1cnJlbnQuZm9yayh7XG4gICAgICAgIG5hbWU6IFMsXG4gICAgICAgIHByb3BlcnRpZXM6ICh6ID0ge30sIHpbRXRdID0gQiwgeilcbiAgICAgIH0pO1xuICAgIH0sIGoucHJvdG90eXBlLl9nZXRBY3RpdmVab25lID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gWm9uZS5jdXJyZW50O1xuICAgIH0sIGoucHJvdG90eXBlLl9wYXRjaEFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihTLCBCLCB6KSB7XG4gICAgICB2YXIgZWUgPSB0aGlzO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHRlLCBpZSwgZmUpIHtcbiAgICAgICAgUy5fX290X2xpc3RlbmVycyA9PT0gdm9pZCAwICYmIChTLl9fb3RfbGlzdGVuZXJzID0ge30pO1xuICAgICAgICB2YXIga2UgPSBTLl9fb3RfbGlzdGVuZXJzW3RlXTtcbiAgICAgICAga2UgPT09IHZvaWQgMCAmJiAoa2UgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKSwgUy5fX290X2xpc3RlbmVyc1t0ZV0gPSBrZSk7XG4gICAgICAgIHZhciB2ZSA9IGVlLmJpbmQoeiwgaWUpO1xuICAgICAgICByZXR1cm4ga2Uuc2V0KGllLCB2ZSksIEIuY2FsbCh0aGlzLCB0ZSwgdmUsIGZlKTtcbiAgICAgIH07XG4gICAgfSwgai5wcm90b3R5cGUuX3BhdGNoUmVtb3ZlRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKFMsIEIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbih6LCBlZSkge1xuICAgICAgICBpZiAoUy5fX290X2xpc3RlbmVycyA9PT0gdm9pZCAwIHx8IFMuX19vdF9saXN0ZW5lcnNbel0gPT09IHZvaWQgMClcbiAgICAgICAgICByZXR1cm4gQi5jYWxsKHRoaXMsIHosIGVlKTtcbiAgICAgICAgdmFyIHRlID0gUy5fX290X2xpc3RlbmVyc1t6XSwgaWUgPSB0ZS5nZXQoZWUpO1xuICAgICAgICByZXR1cm4gdGUuZGVsZXRlKGVlKSwgQi5jYWxsKHRoaXMsIHosIGllIHx8IGVlKTtcbiAgICAgIH07XG4gICAgfSwgai5wcm90b3R5cGUuYWN0aXZlID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpXG4gICAgICAgIHJldHVybiBRaTtcbiAgICAgIHZhciBTID0gdGhpcy5fZ2V0QWN0aXZlWm9uZSgpLCBCID0gdGhpcy5fYWN0aXZlQ29udGV4dEZyb21ab25lKFMpO1xuICAgICAgcmV0dXJuIEIgfHwgUWk7XG4gICAgfSwgai5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uKFMsIEIpIHtcbiAgICAgIHJldHVybiBTID09PSB2b2lkIDAgJiYgKFMgPSB0aGlzLmFjdGl2ZSgpKSwgdHlwZW9mIEIgPT0gXCJmdW5jdGlvblwiID8gdGhpcy5fYmluZEZ1bmN0aW9uKFMsIEIpIDogKHh0KEIpICYmIHRoaXMuX2JpbmRMaXN0ZW5lcihTLCBCKSwgQik7XG4gICAgfSwgai5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQgPSBmYWxzZSwgdGhpcztcbiAgICB9LCBqLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkID0gdHJ1ZSwgdGhpcztcbiAgICB9LCBqLnByb3RvdHlwZS53aXRoID0gZnVuY3Rpb24oUywgQiwgeikge1xuICAgICAgZm9yICh2YXIgZWUgPSBbXSwgdGUgPSAzOyB0ZSA8IGFyZ3VtZW50cy5sZW5ndGg7IHRlKyspXG4gICAgICAgIGVlW3RlIC0gM10gPSBhcmd1bWVudHNbdGVdO1xuICAgICAgdmFyIGllID0gdGhpcy5fY3JlYXRlWm9uZU5hbWUoKSwgZmUgPSB0aGlzLl9jcmVhdGVab25lKGllLCBTKTtcbiAgICAgIHJldHVybiBmZS5ydW4oQiwgeiwgZWUpO1xuICAgIH0sIGo7XG4gIH0oKVxuKSwgcHQgPSB7fSwgZ3Q7XG5mdW5jdGlvbiBGdCgpIHtcbiAgaWYgKGd0KSByZXR1cm4gcHQ7XG4gIGd0ID0gMTtcbiAgLyoqXG4gICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjx1bmtub3duPlxuICAgKiAoYykgMjAxMC0yMDI1IEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby9cbiAgICogTGljZW5zZTogTUlUXG4gICAqL1xuICBjb25zdCBqID0gZ2xvYmFsVGhpcztcbiAgZnVuY3Rpb24gUyh0KSB7XG4gICAgcmV0dXJuIChqLl9fWm9uZV9zeW1ib2xfcHJlZml4IHx8IFwiX196b25lX3N5bWJvbF9fXCIpICsgdDtcbiAgfVxuICBmdW5jdGlvbiBCKCkge1xuICAgIGNvbnN0IHQgPSBqLnBlcmZvcm1hbmNlO1xuICAgIGZ1bmN0aW9uIG4oSSkge1xuICAgICAgdCAmJiB0Lm1hcmsgJiYgdC5tYXJrKEkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhKEksIHMpIHtcbiAgICAgIHQgJiYgdC5tZWFzdXJlICYmIHQubWVhc3VyZShJLCBzKTtcbiAgICB9XG4gICAgbihcIlpvbmVcIik7XG4gICAgY2xhc3MgZSB7XG4gICAgICBzdGF0aWMgX19zeW1ib2xfXyA9IFM7XG4gICAgICBzdGF0aWMgYXNzZXJ0Wm9uZVBhdGNoZWQoKSB7XG4gICAgICAgIGlmIChqLlByb21pc2UgIT09IE8uWm9uZUF3YXJlUHJvbWlzZSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lLmpzIGhhcyBkZXRlY3RlZCB0aGF0IFpvbmVBd2FyZVByb21pc2UgYCh3aW5kb3d8Z2xvYmFsKS5Qcm9taXNlYCBoYXMgYmVlbiBvdmVyd3JpdHRlbi5cXG5Nb3N0IGxpa2VseSBjYXVzZSBpcyB0aGF0IGEgUHJvbWlzZSBwb2x5ZmlsbCBoYXMgYmVlbiBsb2FkZWQgYWZ0ZXIgWm9uZS5qcyAoUG9seWZpbGxpbmcgUHJvbWlzZSBhcGkgaXMgbm90IG5lY2Vzc2FyeSB3aGVuIHpvbmUuanMgaXMgbG9hZGVkLiBJZiB5b3UgbXVzdCBsb2FkIG9uZSwgZG8gc28gYmVmb3JlIGxvYWRpbmcgem9uZS5qcy4pXCIpO1xuICAgICAgfVxuICAgICAgc3RhdGljIGdldCByb290KCkge1xuICAgICAgICBsZXQgcyA9IGUuY3VycmVudDtcbiAgICAgICAgZm9yICg7IHMucGFyZW50OyApXG4gICAgICAgICAgcyA9IHMucGFyZW50O1xuICAgICAgICByZXR1cm4gcztcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgcmV0dXJuIGIuem9uZTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBnZXQgY3VycmVudFRhc2soKSB7XG4gICAgICAgIHJldHVybiBEO1xuICAgICAgfVxuICAgICAgc3RhdGljIF9fbG9hZF9wYXRjaChzLCBpLCByID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKE8uaGFzT3duUHJvcGVydHkocykpIHtcbiAgICAgICAgICBjb25zdCBFID0galtTKFwiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2tcIildID09PSB0cnVlO1xuICAgICAgICAgIGlmICghciAmJiBFKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJBbHJlYWR5IGxvYWRlZCBwYXRjaDogXCIgKyBzKTtcbiAgICAgICAgfSBlbHNlIGlmICghaltcIl9fWm9uZV9kaXNhYmxlX1wiICsgc10pIHtcbiAgICAgICAgICBjb25zdCBFID0gXCJab25lOlwiICsgcztcbiAgICAgICAgICBuKEUpLCBPW3NdID0gaShqLCBlLCBQKSwgYShFLCBFKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZ2V0IHBhcmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudDtcbiAgICAgIH1cbiAgICAgIGdldCBuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgICAgIH1cbiAgICAgIF9wYXJlbnQ7XG4gICAgICBfbmFtZTtcbiAgICAgIF9wcm9wZXJ0aWVzO1xuICAgICAgX3pvbmVEZWxlZ2F0ZTtcbiAgICAgIGNvbnN0cnVjdG9yKHMsIGkpIHtcbiAgICAgICAgdGhpcy5fcGFyZW50ID0gcywgdGhpcy5fbmFtZSA9IGkgPyBpLm5hbWUgfHwgXCJ1bm5hbWVkXCIgOiBcIjxyb290PlwiLCB0aGlzLl9wcm9wZXJ0aWVzID0gaSAmJiBpLnByb3BlcnRpZXMgfHwge30sIHRoaXMuX3pvbmVEZWxlZ2F0ZSA9IG5ldyBmKHRoaXMsIHRoaXMuX3BhcmVudCAmJiB0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSwgaSk7XG4gICAgICB9XG4gICAgICBnZXQocykge1xuICAgICAgICBjb25zdCBpID0gdGhpcy5nZXRab25lV2l0aChzKTtcbiAgICAgICAgaWYgKGkpXG4gICAgICAgICAgcmV0dXJuIGkuX3Byb3BlcnRpZXNbc107XG4gICAgICB9XG4gICAgICBnZXRab25lV2l0aChzKSB7XG4gICAgICAgIGxldCBpID0gdGhpcztcbiAgICAgICAgZm9yICg7IGk7ICkge1xuICAgICAgICAgIGlmIChpLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHMpKVxuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgaSA9IGkuX3BhcmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGZvcmsocykge1xuICAgICAgICBpZiAoIXMpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWm9uZVNwZWMgcmVxdWlyZWQhXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcywgcyk7XG4gICAgICB9XG4gICAgICB3cmFwKHMsIGkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzICE9IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiBcIiArIHMpO1xuICAgICAgICBjb25zdCByID0gdGhpcy5fem9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLCBzLCBpKSwgRSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gRS5ydW5HdWFyZGVkKHIsIHRoaXMsIGFyZ3VtZW50cywgaSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBydW4ocywgaSwgciwgRSkge1xuICAgICAgICBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLCBzLCBpLCByLCBFKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBiID0gYi5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJ1bkd1YXJkZWQocywgaSA9IG51bGwsIHIsIEUpIHtcbiAgICAgICAgYiA9IHsgcGFyZW50OiBiLCB6b25lOiB0aGlzIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsIHMsIGksIHIsIEUpO1xuICAgICAgICAgIH0gY2F0Y2ggKEcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcywgRykpXG4gICAgICAgICAgICAgIHRocm93IEc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcnVuVGFzayhzLCBpLCByKSB7XG4gICAgICAgIGlmIChzLnpvbmUgIT0gdGhpcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246IFwiICsgKHMuem9uZSB8fCByZSkubmFtZSArIFwiOyBFeGVjdXRpb246IFwiICsgdGhpcy5uYW1lICsgXCIpXCIpO1xuICAgICAgICBjb25zdCBFID0gcywgeyB0eXBlOiBHLCBkYXRhOiB7IGlzUGVyaW9kaWM6IGNlID0gZmFsc2UsIGlzUmVmcmVzaGFibGU6IEEgPSBmYWxzZSB9ID0ge30gfSA9IHM7XG4gICAgICAgIGlmIChzLnN0YXRlID09PSBKICYmIChHID09PSBZIHx8IEcgPT09IGcpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZ2UgPSBzLnN0YXRlICE9IHg7XG4gICAgICAgIGdlICYmIEUuX3RyYW5zaXRpb25Ubyh4LCBkKTtcbiAgICAgICAgY29uc3QgeWUgPSBEO1xuICAgICAgICBEID0gRSwgYiA9IHsgcGFyZW50OiBiLCB6b25lOiB0aGlzIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgRyA9PSBnICYmIHMuZGF0YSAmJiAhY2UgJiYgIUEgJiYgKHMuY2FuY2VsRm4gPSB2b2lkIDApO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcywgRSwgaSwgcik7XG4gICAgICAgICAgfSBjYXRjaCAoc2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcywgc2UpKVxuICAgICAgICAgICAgICB0aHJvdyBzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgY29uc3Qgc2UgPSBzLnN0YXRlO1xuICAgICAgICAgIGlmIChzZSAhPT0gSiAmJiBzZSAhPT0gSylcbiAgICAgICAgICAgIGlmIChHID09IFkgfHwgY2UgfHwgQSAmJiBzZSA9PT0gaylcbiAgICAgICAgICAgICAgZ2UgJiYgRS5fdHJhbnNpdGlvblRvKGQsIHgsIGspO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IENlID0gRS5fem9uZURlbGVnYXRlcztcbiAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGFza0NvdW50KEUsIC0xKSwgZ2UgJiYgRS5fdHJhbnNpdGlvblRvKEosIHgsIEopLCBBICYmIChFLl96b25lRGVsZWdhdGVzID0gQ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGIgPSBiLnBhcmVudCwgRCA9IHllO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzY2hlZHVsZVRhc2socykge1xuICAgICAgICBpZiAocy56b25lICYmIHMuem9uZSAhPT0gdGhpcykge1xuICAgICAgICAgIGxldCByID0gdGhpcztcbiAgICAgICAgICBmb3IgKDsgcjsgKSB7XG4gICAgICAgICAgICBpZiAociA9PT0gcy56b25lKVxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihgY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gJHt0aGlzLm5hbWV9IHdoaWNoIGlzIGRlc2NlbmRhbnRzIG9mIHRoZSBvcmlnaW5hbCB6b25lICR7cy56b25lLm5hbWV9YCk7XG4gICAgICAgICAgICByID0gci5wYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHMuX3RyYW5zaXRpb25UbyhrLCBKKTtcbiAgICAgICAgY29uc3QgaSA9IFtdO1xuICAgICAgICBzLl96b25lRGVsZWdhdGVzID0gaSwgcy5fem9uZSA9IHRoaXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcyA9IHRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcywgcyk7XG4gICAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAgICB0aHJvdyBzLl90cmFuc2l0aW9uVG8oSywgaywgSiksIHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCByKSwgcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcy5fem9uZURlbGVnYXRlcyA9PT0gaSAmJiB0aGlzLl91cGRhdGVUYXNrQ291bnQocywgMSksIHMuc3RhdGUgPT0gayAmJiBzLl90cmFuc2l0aW9uVG8oZCwgayksIHM7XG4gICAgICB9XG4gICAgICBzY2hlZHVsZU1pY3JvVGFzayhzLCBpLCByLCBFKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcChVLCBzLCBpLCByLCBFLCB2b2lkIDApKTtcbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlTWFjcm9UYXNrKHMsIGksIHIsIEUsIEcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKGcsIHMsIGksIHIsIEUsIEcpKTtcbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlRXZlbnRUYXNrKHMsIGksIHIsIEUsIEcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKFksIHMsIGksIHIsIEUsIEcpKTtcbiAgICAgIH1cbiAgICAgIGNhbmNlbFRhc2socykge1xuICAgICAgICBpZiAocy56b25lICE9IHRoaXMpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiBcIiArIChzLnpvbmUgfHwgcmUpLm5hbWUgKyBcIjsgRXhlY3V0aW9uOiBcIiArIHRoaXMubmFtZSArIFwiKVwiKTtcbiAgICAgICAgaWYgKCEocy5zdGF0ZSAhPT0gZCAmJiBzLnN0YXRlICE9PSB4KSkge1xuICAgICAgICAgIHMuX3RyYW5zaXRpb25UbyhWLCBkLCB4KTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fem9uZURlbGVnYXRlLmNhbmNlbFRhc2sodGhpcywgcyk7XG4gICAgICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICAgICAgdGhyb3cgcy5fdHJhbnNpdGlvblRvKEssIFYpLCB0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcywgaSksIGk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVUYXNrQ291bnQocywgLTEpLCBzLl90cmFuc2l0aW9uVG8oSiwgViksIHMucnVuQ291bnQgPSAtMSwgcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX3VwZGF0ZVRhc2tDb3VudChzLCBpKSB7XG4gICAgICAgIGNvbnN0IHIgPSBzLl96b25lRGVsZWdhdGVzO1xuICAgICAgICBpID09IC0xICYmIChzLl96b25lRGVsZWdhdGVzID0gbnVsbCk7XG4gICAgICAgIGZvciAobGV0IEUgPSAwOyBFIDwgci5sZW5ndGg7IEUrKylcbiAgICAgICAgICByW0VdLl91cGRhdGVUYXNrQ291bnQocy50eXBlLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYyA9IHtcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBvbkhhc1Rhc2s6IChJLCBzLCBpLCByKSA9PiBJLmhhc1Rhc2soaSwgciksXG4gICAgICBvblNjaGVkdWxlVGFzazogKEksIHMsIGksIHIpID0+IEkuc2NoZWR1bGVUYXNrKGksIHIpLFxuICAgICAgb25JbnZva2VUYXNrOiAoSSwgcywgaSwgciwgRSwgRykgPT4gSS5pbnZva2VUYXNrKGksIHIsIEUsIEcpLFxuICAgICAgb25DYW5jZWxUYXNrOiAoSSwgcywgaSwgcikgPT4gSS5jYW5jZWxUYXNrKGksIHIpXG4gICAgfTtcbiAgICBjbGFzcyBmIHtcbiAgICAgIGdldCB6b25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fem9uZTtcbiAgICAgIH1cbiAgICAgIF96b25lO1xuICAgICAgX3Rhc2tDb3VudHMgPSB7XG4gICAgICAgIG1pY3JvVGFzazogMCxcbiAgICAgICAgbWFjcm9UYXNrOiAwLFxuICAgICAgICBldmVudFRhc2s6IDBcbiAgICAgIH07XG4gICAgICBfcGFyZW50RGVsZWdhdGU7XG4gICAgICBfZm9ya0RsZ3Q7XG4gICAgICBfZm9ya1pTO1xuICAgICAgX2ZvcmtDdXJyWm9uZTtcbiAgICAgIF9pbnRlcmNlcHREbGd0O1xuICAgICAgX2ludGVyY2VwdFpTO1xuICAgICAgX2ludGVyY2VwdEN1cnJab25lO1xuICAgICAgX2ludm9rZURsZ3Q7XG4gICAgICBfaW52b2tlWlM7XG4gICAgICBfaW52b2tlQ3VyclpvbmU7XG4gICAgICBfaGFuZGxlRXJyb3JEbGd0O1xuICAgICAgX2hhbmRsZUVycm9yWlM7XG4gICAgICBfaGFuZGxlRXJyb3JDdXJyWm9uZTtcbiAgICAgIF9zY2hlZHVsZVRhc2tEbGd0O1xuICAgICAgX3NjaGVkdWxlVGFza1pTO1xuICAgICAgX3NjaGVkdWxlVGFza0N1cnJab25lO1xuICAgICAgX2ludm9rZVRhc2tEbGd0O1xuICAgICAgX2ludm9rZVRhc2taUztcbiAgICAgIF9pbnZva2VUYXNrQ3VyclpvbmU7XG4gICAgICBfY2FuY2VsVGFza0RsZ3Q7XG4gICAgICBfY2FuY2VsVGFza1pTO1xuICAgICAgX2NhbmNlbFRhc2tDdXJyWm9uZTtcbiAgICAgIF9oYXNUYXNrRGxndDtcbiAgICAgIF9oYXNUYXNrRGxndE93bmVyO1xuICAgICAgX2hhc1Rhc2taUztcbiAgICAgIF9oYXNUYXNrQ3VyclpvbmU7XG4gICAgICBjb25zdHJ1Y3RvcihzLCBpLCByKSB7XG4gICAgICAgIHRoaXMuX3pvbmUgPSBzLCB0aGlzLl9wYXJlbnREZWxlZ2F0ZSA9IGksIHRoaXMuX2ZvcmtaUyA9IHIgJiYgKHIgJiYgci5vbkZvcmsgPyByIDogaS5fZm9ya1pTKSwgdGhpcy5fZm9ya0RsZ3QgPSByICYmIChyLm9uRm9yayA/IGkgOiBpLl9mb3JrRGxndCksIHRoaXMuX2ZvcmtDdXJyWm9uZSA9IHIgJiYgKHIub25Gb3JrID8gdGhpcy5fem9uZSA6IGkuX2ZvcmtDdXJyWm9uZSksIHRoaXMuX2ludGVyY2VwdFpTID0gciAmJiAoci5vbkludGVyY2VwdCA/IHIgOiBpLl9pbnRlcmNlcHRaUyksIHRoaXMuX2ludGVyY2VwdERsZ3QgPSByICYmIChyLm9uSW50ZXJjZXB0ID8gaSA6IGkuX2ludGVyY2VwdERsZ3QpLCB0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSA9IHIgJiYgKHIub25JbnRlcmNlcHQgPyB0aGlzLl96b25lIDogaS5faW50ZXJjZXB0Q3VyclpvbmUpLCB0aGlzLl9pbnZva2VaUyA9IHIgJiYgKHIub25JbnZva2UgPyByIDogaS5faW52b2tlWlMpLCB0aGlzLl9pbnZva2VEbGd0ID0gciAmJiAoci5vbkludm9rZSA/IGkgOiBpLl9pbnZva2VEbGd0KSwgdGhpcy5faW52b2tlQ3VyclpvbmUgPSByICYmIChyLm9uSW52b2tlID8gdGhpcy5fem9uZSA6IGkuX2ludm9rZUN1cnJab25lKSwgdGhpcy5faGFuZGxlRXJyb3JaUyA9IHIgJiYgKHIub25IYW5kbGVFcnJvciA/IHIgOiBpLl9oYW5kbGVFcnJvclpTKSwgdGhpcy5faGFuZGxlRXJyb3JEbGd0ID0gciAmJiAoci5vbkhhbmRsZUVycm9yID8gaSA6IGkuX2hhbmRsZUVycm9yRGxndCksIHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmUgPSByICYmIChyLm9uSGFuZGxlRXJyb3IgPyB0aGlzLl96b25lIDogaS5faGFuZGxlRXJyb3JDdXJyWm9uZSksIHRoaXMuX3NjaGVkdWxlVGFza1pTID0gciAmJiAoci5vblNjaGVkdWxlVGFzayA/IHIgOiBpLl9zY2hlZHVsZVRhc2taUyksIHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QgPSByICYmIChyLm9uU2NoZWR1bGVUYXNrID8gaSA6IGkuX3NjaGVkdWxlVGFza0RsZ3QpLCB0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSA9IHIgJiYgKHIub25TY2hlZHVsZVRhc2sgPyB0aGlzLl96b25lIDogaS5fc2NoZWR1bGVUYXNrQ3VyclpvbmUpLCB0aGlzLl9pbnZva2VUYXNrWlMgPSByICYmIChyLm9uSW52b2tlVGFzayA/IHIgOiBpLl9pbnZva2VUYXNrWlMpLCB0aGlzLl9pbnZva2VUYXNrRGxndCA9IHIgJiYgKHIub25JbnZva2VUYXNrID8gaSA6IGkuX2ludm9rZVRhc2tEbGd0KSwgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gciAmJiAoci5vbkludm9rZVRhc2sgPyB0aGlzLl96b25lIDogaS5faW52b2tlVGFza0N1cnJab25lKSwgdGhpcy5fY2FuY2VsVGFza1pTID0gciAmJiAoci5vbkNhbmNlbFRhc2sgPyByIDogaS5fY2FuY2VsVGFza1pTKSwgdGhpcy5fY2FuY2VsVGFza0RsZ3QgPSByICYmIChyLm9uQ2FuY2VsVGFzayA/IGkgOiBpLl9jYW5jZWxUYXNrRGxndCksIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IHIgJiYgKHIub25DYW5jZWxUYXNrID8gdGhpcy5fem9uZSA6IGkuX2NhbmNlbFRhc2tDdXJyWm9uZSksIHRoaXMuX2hhc1Rhc2taUyA9IG51bGwsIHRoaXMuX2hhc1Rhc2tEbGd0ID0gbnVsbCwgdGhpcy5faGFzVGFza0RsZ3RPd25lciA9IG51bGwsIHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSA9IG51bGw7XG4gICAgICAgIGNvbnN0IEUgPSByICYmIHIub25IYXNUYXNrLCBHID0gaSAmJiBpLl9oYXNUYXNrWlM7XG4gICAgICAgIChFIHx8IEcpICYmICh0aGlzLl9oYXNUYXNrWlMgPSBFID8gciA6IGMsIHRoaXMuX2hhc1Rhc2tEbGd0ID0gaSwgdGhpcy5faGFzVGFza0RsZ3RPd25lciA9IHRoaXMsIHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSA9IHRoaXMuX3pvbmUsIHIub25TY2hlZHVsZVRhc2sgfHwgKHRoaXMuX3NjaGVkdWxlVGFza1pTID0gYywgdGhpcy5fc2NoZWR1bGVUYXNrRGxndCA9IGksIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lID0gdGhpcy5fem9uZSksIHIub25JbnZva2VUYXNrIHx8ICh0aGlzLl9pbnZva2VUYXNrWlMgPSBjLCB0aGlzLl9pbnZva2VUYXNrRGxndCA9IGksIHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSA9IHRoaXMuX3pvbmUpLCByLm9uQ2FuY2VsVGFzayB8fCAodGhpcy5fY2FuY2VsVGFza1pTID0gYywgdGhpcy5fY2FuY2VsVGFza0RsZ3QgPSBpLCB0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmUgPSB0aGlzLl96b25lKSk7XG4gICAgICB9XG4gICAgICBmb3JrKHMsIGkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvcmtaUyA/IHRoaXMuX2ZvcmtaUy5vbkZvcmsodGhpcy5fZm9ya0RsZ3QsIHRoaXMuem9uZSwgcywgaSkgOiBuZXcgZShzLCBpKTtcbiAgICAgIH1cbiAgICAgIGludGVyY2VwdChzLCBpLCByKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnRlcmNlcHRaUyA/IHRoaXMuX2ludGVyY2VwdFpTLm9uSW50ZXJjZXB0KHRoaXMuX2ludGVyY2VwdERsZ3QsIHRoaXMuX2ludGVyY2VwdEN1cnJab25lLCBzLCBpLCByKSA6IGk7XG4gICAgICB9XG4gICAgICBpbnZva2UocywgaSwgciwgRSwgRykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlWlMgPyB0aGlzLl9pbnZva2VaUy5vbkludm9rZSh0aGlzLl9pbnZva2VEbGd0LCB0aGlzLl9pbnZva2VDdXJyWm9uZSwgcywgaSwgciwgRSwgRykgOiBpLmFwcGx5KHIsIEUpO1xuICAgICAgfVxuICAgICAgaGFuZGxlRXJyb3IocywgaSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRXJyb3JaUyA/IHRoaXMuX2hhbmRsZUVycm9yWlMub25IYW5kbGVFcnJvcih0aGlzLl9oYW5kbGVFcnJvckRsZ3QsIHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmUsIHMsIGkpIDogdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlVGFzayhzLCBpKSB7XG4gICAgICAgIGxldCByID0gaTtcbiAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlVGFza1pTKVxuICAgICAgICAgIHRoaXMuX2hhc1Rhc2taUyAmJiByLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksIHIgPSB0aGlzLl9zY2hlZHVsZVRhc2taUy5vblNjaGVkdWxlVGFzayh0aGlzLl9zY2hlZHVsZVRhc2tEbGd0LCB0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSwgcywgaSksIHIgfHwgKHIgPSBpKTtcbiAgICAgICAgZWxzZSBpZiAoaS5zY2hlZHVsZUZuKVxuICAgICAgICAgIGkuc2NoZWR1bGVGbihpKTtcbiAgICAgICAgZWxzZSBpZiAoaS50eXBlID09IFUpXG4gICAgICAgICAgWChpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhc2sgaXMgbWlzc2luZyBzY2hlZHVsZUZuLlwiKTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9XG4gICAgICBpbnZva2VUYXNrKHMsIGksIHIsIEUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUyA/IHRoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsIHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSwgcywgaSwgciwgRSkgOiBpLmNhbGxiYWNrLmFwcGx5KHIsIEUpO1xuICAgICAgfVxuICAgICAgY2FuY2VsVGFzayhzLCBpKSB7XG4gICAgICAgIGxldCByO1xuICAgICAgICBpZiAodGhpcy5fY2FuY2VsVGFza1pTKVxuICAgICAgICAgIHIgPSB0aGlzLl9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LCB0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmUsIHMsIGkpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoIWkuY2FuY2VsRm4pXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIlRhc2sgaXMgbm90IGNhbmNlbGFibGVcIik7XG4gICAgICAgICAgciA9IGkuY2FuY2VsRm4oaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9XG4gICAgICBoYXNUYXNrKHMsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLl9oYXNUYXNrWlMgJiYgdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCwgdGhpcy5faGFzVGFza0N1cnJab25lLCBzLCBpKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3Iocywgcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF91cGRhdGVUYXNrQ291bnQocywgaSkge1xuICAgICAgICBjb25zdCByID0gdGhpcy5fdGFza0NvdW50cywgRSA9IHJbc10sIEcgPSByW3NdID0gRSArIGk7XG4gICAgICAgIGlmIChHIDwgMClcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNb3JlIHRhc2tzIGV4ZWN1dGVkIHRoZW4gd2VyZSBzY2hlZHVsZWQuXCIpO1xuICAgICAgICBpZiAoRSA9PSAwIHx8IEcgPT0gMCkge1xuICAgICAgICAgIGNvbnN0IGNlID0ge1xuICAgICAgICAgICAgbWljcm9UYXNrOiByLm1pY3JvVGFzayA+IDAsXG4gICAgICAgICAgICBtYWNyb1Rhc2s6IHIubWFjcm9UYXNrID4gMCxcbiAgICAgICAgICAgIGV2ZW50VGFzazogci5ldmVudFRhc2sgPiAwLFxuICAgICAgICAgICAgY2hhbmdlOiBzXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmhhc1Rhc2sodGhpcy5fem9uZSwgY2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNsYXNzIHAge1xuICAgICAgdHlwZTtcbiAgICAgIHNvdXJjZTtcbiAgICAgIGludm9rZTtcbiAgICAgIGNhbGxiYWNrO1xuICAgICAgZGF0YTtcbiAgICAgIHNjaGVkdWxlRm47XG4gICAgICBjYW5jZWxGbjtcbiAgICAgIF96b25lID0gbnVsbDtcbiAgICAgIHJ1bkNvdW50ID0gMDtcbiAgICAgIF96b25lRGVsZWdhdGVzID0gbnVsbDtcbiAgICAgIF9zdGF0ZSA9IFwibm90U2NoZWR1bGVkXCI7XG4gICAgICBjb25zdHJ1Y3RvcihzLCBpLCByLCBFLCBHLCBjZSkge1xuICAgICAgICBpZiAodGhpcy50eXBlID0gcywgdGhpcy5zb3VyY2UgPSBpLCB0aGlzLmRhdGEgPSBFLCB0aGlzLnNjaGVkdWxlRm4gPSBHLCB0aGlzLmNhbmNlbEZuID0gY2UsICFyKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhbGxiYWNrIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICB0aGlzLmNhbGxiYWNrID0gcjtcbiAgICAgICAgY29uc3QgQSA9IHRoaXM7XG4gICAgICAgIHMgPT09IFkgJiYgRSAmJiBFLnVzZUcgPyB0aGlzLmludm9rZSA9IHAuaW52b2tlVGFzayA6IHRoaXMuaW52b2tlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHAuaW52b2tlVGFzay5jYWxsKGosIEEsIHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBzdGF0aWMgaW52b2tlVGFzayhzLCBpLCByKSB7XG4gICAgICAgIHMgfHwgKHMgPSB0aGlzKSwgb2UrKztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gcy5ydW5Db3VudCsrLCBzLnpvbmUucnVuVGFzayhzLCBpLCByKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBvZSA9PSAxICYmIG5lKCksIG9lLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGdldCB6b25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fem9uZTtcbiAgICAgIH1cbiAgICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICAgICAgfVxuICAgICAgY2FuY2VsU2NoZWR1bGVSZXF1ZXN0KCkge1xuICAgICAgICB0aGlzLl90cmFuc2l0aW9uVG8oSiwgayk7XG4gICAgICB9XG4gICAgICBfdHJhbnNpdGlvblRvKHMsIGksIHIpIHtcbiAgICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSBpIHx8IHRoaXMuX3N0YXRlID09PSByKVxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gcywgcyA9PSBKICYmICh0aGlzLl96b25lRGVsZWdhdGVzID0gbnVsbCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy50eXBlfSAnJHt0aGlzLnNvdXJjZX0nOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyR7c30nLCBleHBlY3Rpbmcgc3RhdGUgJyR7aX0nJHtyID8gXCIgb3IgJ1wiICsgciArIFwiJ1wiIDogXCJcIn0sIHdhcyAnJHt0aGlzLl9zdGF0ZX0nLmApO1xuICAgICAgfVxuICAgICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEgJiYgdHlwZW9mIHRoaXMuZGF0YS5oYW5kbGVJZCA8IFwidVwiID8gdGhpcy5kYXRhLmhhbmRsZUlkLnRvU3RyaW5nKCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyk7XG4gICAgICB9XG4gICAgICAvLyBhZGQgdG9KU09OIG1ldGhvZCB0byBwcmV2ZW50IGN5Y2xpYyBlcnJvciB3aGVuXG4gICAgICAvLyBjYWxsIEpTT04uc3RyaW5naWZ5KHpvbmVUYXNrKVxuICAgICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgICAgIHpvbmU6IHRoaXMuem9uZS5uYW1lLFxuICAgICAgICAgIHJ1bkNvdW50OiB0aGlzLnJ1bkNvdW50XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IFQgPSBTKFwic2V0VGltZW91dFwiKSwgeSA9IFMoXCJQcm9taXNlXCIpLCB3ID0gUyhcInRoZW5cIik7XG4gICAgbGV0IF8gPSBbXSwgQyA9IGZhbHNlLCBNO1xuICAgIGZ1bmN0aW9uIEYoSSkge1xuICAgICAgaWYgKE0gfHwgalt5XSAmJiAoTSA9IGpbeV0ucmVzb2x2ZSgwKSksIE0pIHtcbiAgICAgICAgbGV0IHMgPSBNW3ddO1xuICAgICAgICBzIHx8IChzID0gTS50aGVuKSwgcy5jYWxsKE0sIEkpO1xuICAgICAgfSBlbHNlXG4gICAgICAgIGpbVF0oSSwgMCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFgoSSkge1xuICAgICAgb2UgPT09IDAgJiYgXy5sZW5ndGggPT09IDAgJiYgRihuZSksIEkgJiYgXy5wdXNoKEkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBuZSgpIHtcbiAgICAgIGlmICghQykge1xuICAgICAgICBmb3IgKEMgPSB0cnVlOyBfLmxlbmd0aDsgKSB7XG4gICAgICAgICAgY29uc3QgSSA9IF87XG4gICAgICAgICAgXyA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgSS5sZW5ndGg7IHMrKykge1xuICAgICAgICAgICAgY29uc3QgaSA9IElbc107XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpLnpvbmUucnVuVGFzayhpLCBudWxsLCBudWxsKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAgICAgICAgUC5vblVuaGFuZGxlZEVycm9yKHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBQLm1pY3JvdGFza0RyYWluRG9uZSgpLCBDID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlID0geyBuYW1lOiBcIk5PIFpPTkVcIiB9LCBKID0gXCJub3RTY2hlZHVsZWRcIiwgayA9IFwic2NoZWR1bGluZ1wiLCBkID0gXCJzY2hlZHVsZWRcIiwgeCA9IFwicnVubmluZ1wiLCBWID0gXCJjYW5jZWxpbmdcIiwgSyA9IFwidW5rbm93blwiLCBVID0gXCJtaWNyb1Rhc2tcIiwgZyA9IFwibWFjcm9UYXNrXCIsIFkgPSBcImV2ZW50VGFza1wiLCBPID0ge30sIFAgPSB7XG4gICAgICBzeW1ib2w6IFMsXG4gICAgICBjdXJyZW50Wm9uZUZyYW1lOiAoKSA9PiBiLFxuICAgICAgb25VbmhhbmRsZWRFcnJvcjogJCxcbiAgICAgIG1pY3JvdGFza0RyYWluRG9uZTogJCxcbiAgICAgIHNjaGVkdWxlTWljcm9UYXNrOiBYLFxuICAgICAgc2hvd1VuY2F1Z2h0RXJyb3I6ICgpID0+ICFlW1MoXCJpZ25vcmVDb25zb2xlRXJyb3JVbmNhdWdodEVycm9yXCIpXSxcbiAgICAgIHBhdGNoRXZlbnRUYXJnZXQ6ICgpID0+IFtdLFxuICAgICAgcGF0Y2hPblByb3BlcnRpZXM6ICQsXG4gICAgICBwYXRjaE1ldGhvZDogKCkgPT4gJCxcbiAgICAgIGJpbmRBcmd1bWVudHM6ICgpID0+IFtdLFxuICAgICAgcGF0Y2hUaGVuOiAoKSA9PiAkLFxuICAgICAgcGF0Y2hNYWNyb1Rhc2s6ICgpID0+ICQsXG4gICAgICBwYXRjaEV2ZW50UHJvdG90eXBlOiAoKSA9PiAkLFxuICAgICAgaXNJRU9yRWRnZTogKCkgPT4gZmFsc2UsXG4gICAgICBnZXRHbG9iYWxPYmplY3RzOiAoKSA9PiB7XG4gICAgICB9LFxuICAgICAgT2JqZWN0RGVmaW5lUHJvcGVydHk6ICgpID0+ICQsXG4gICAgICBPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICgpID0+IHtcbiAgICAgIH0sXG4gICAgICBPYmplY3RDcmVhdGU6ICgpID0+IHtcbiAgICAgIH0sXG4gICAgICBBcnJheVNsaWNlOiAoKSA9PiBbXSxcbiAgICAgIHBhdGNoQ2xhc3M6ICgpID0+ICQsXG4gICAgICB3cmFwV2l0aEN1cnJlbnRab25lOiAoKSA9PiAkLFxuICAgICAgZmlsdGVyUHJvcGVydGllczogKCkgPT4gW10sXG4gICAgICBhdHRhY2hPcmlnaW5Ub1BhdGNoZWQ6ICgpID0+ICQsXG4gICAgICBfcmVkZWZpbmVQcm9wZXJ0eTogKCkgPT4gJCxcbiAgICAgIHBhdGNoQ2FsbGJhY2tzOiAoKSA9PiAkLFxuICAgICAgbmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2s6IEZcbiAgICB9O1xuICAgIGxldCBiID0geyBwYXJlbnQ6IG51bGwsIHpvbmU6IG5ldyBlKG51bGwsIG51bGwpIH0sIEQgPSBudWxsLCBvZSA9IDA7XG4gICAgZnVuY3Rpb24gJCgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGEoXCJab25lXCIsIFwiWm9uZVwiKSwgZTtcbiAgfVxuICBmdW5jdGlvbiB6KCkge1xuICAgIGNvbnN0IHQgPSBnbG9iYWxUaGlzLCBuID0gdFtTKFwiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2tcIildID09PSB0cnVlO1xuICAgIGlmICh0LlpvbmUgJiYgKG4gfHwgdHlwZW9mIHQuWm9uZS5fX3N5bWJvbF9fICE9IFwiZnVuY3Rpb25cIikpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lIGFscmVhZHkgbG9hZGVkLlwiKTtcbiAgICByZXR1cm4gdC5ab25lID8/PSBCKCksIHQuWm9uZTtcbiAgfVxuICBjb25zdCBlZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIHRlID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LCBpZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiwgZmUgPSBPYmplY3QuY3JlYXRlLCBrZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZSwgdmUgPSBcImFkZEV2ZW50TGlzdGVuZXJcIiwgQWUgPSBcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiwgamUgPSBTKHZlKSwgSGUgPSBTKEFlKSwgX2UgPSBcInRydWVcIiwgVGUgPSBcImZhbHNlXCIsIHdlID0gUyhcIlwiKTtcbiAgZnVuY3Rpb24geGUodCwgbikge1xuICAgIHJldHVybiBab25lLmN1cnJlbnQud3JhcCh0LCBuKTtcbiAgfVxuICBmdW5jdGlvbiBGZSh0LCBuLCBhLCBlLCBjKSB7XG4gICAgcmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayh0LCBuLCBhLCBlLCBjKTtcbiAgfVxuICBjb25zdCBIID0gUywgTmUgPSB0eXBlb2Ygd2luZG93IDwgXCJ1XCIsIERlID0gTmUgPyB3aW5kb3cgOiB2b2lkIDAsIFEgPSBOZSAmJiBEZSB8fCBnbG9iYWxUaGlzLCBtdCA9IFwicmVtb3ZlQXR0cmlidXRlXCI7XG4gIGZ1bmN0aW9uIFZlKHQsIG4pIHtcbiAgICBmb3IgKGxldCBhID0gdC5sZW5ndGggLSAxOyBhID49IDA7IGEtLSlcbiAgICAgIHR5cGVvZiB0W2FdID09IFwiZnVuY3Rpb25cIiAmJiAodFthXSA9IHhlKHRbYV0sIG4gKyBcIl9cIiArIGEpKTtcbiAgICByZXR1cm4gdDtcbiAgfVxuICBmdW5jdGlvbiB5dCh0LCBuKSB7XG4gICAgY29uc3QgYSA9IHQuY29uc3RydWN0b3IubmFtZTtcbiAgICBmb3IgKGxldCBlID0gMDsgZSA8IG4ubGVuZ3RoOyBlKyspIHtcbiAgICAgIGNvbnN0IGMgPSBuW2VdLCBmID0gdFtjXTtcbiAgICAgIGlmIChmKSB7XG4gICAgICAgIGNvbnN0IHAgPSBlZSh0LCBjKTtcbiAgICAgICAgaWYgKCFYZShwKSlcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgdFtjXSA9ICgoVCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHkgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBULmFwcGx5KHRoaXMsIFZlKGFyZ3VtZW50cywgYSArIFwiLlwiICsgYykpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHBlKHksIFQpLCB5O1xuICAgICAgICB9KShmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gWGUodCkge1xuICAgIHJldHVybiB0ID8gdC53cml0YWJsZSA9PT0gZmFsc2UgPyBmYWxzZSA6ICEodHlwZW9mIHQuZ2V0ID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgdC5zZXQgPiBcInVcIikgOiB0cnVlO1xuICB9XG4gIGNvbnN0IFllID0gdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlIDwgXCJ1XCIgJiYgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLCBaZSA9ICEoXCJud1wiIGluIFEpICYmIHR5cGVvZiBRLnByb2Nlc3MgPCBcInVcIiAmJiBRLnByb2Nlc3MudG9TdHJpbmcoKSA9PT0gXCJbb2JqZWN0IHByb2Nlc3NdXCIsIHplID0gIVplICYmICFZZSAmJiAhIShOZSAmJiBEZS5IVE1MRWxlbWVudCksICRlID0gdHlwZW9mIFEucHJvY2VzcyA8IFwidVwiICYmIFEucHJvY2Vzcy50b1N0cmluZygpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIiAmJiAhWWUgJiYgISEoTmUgJiYgRGUuSFRNTEVsZW1lbnQpLCBMZSA9IHt9LCBrdCA9IEgoXCJlbmFibGVfYmVmb3JldW5sb2FkXCIpLCBKZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICBpZiAodCA9IHQgfHwgUS5ldmVudCwgIXQpXG4gICAgICByZXR1cm47XG4gICAgbGV0IG4gPSBMZVt0LnR5cGVdO1xuICAgIG4gfHwgKG4gPSBMZVt0LnR5cGVdID0gSChcIk9OX1BST1BFUlRZXCIgKyB0LnR5cGUpKTtcbiAgICBjb25zdCBhID0gdGhpcyB8fCB0LnRhcmdldCB8fCBRLCBlID0gYVtuXTtcbiAgICBsZXQgYztcbiAgICBpZiAoemUgJiYgYSA9PT0gRGUgJiYgdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgIGNvbnN0IGYgPSB0O1xuICAgICAgYyA9IGUgJiYgZS5jYWxsKHRoaXMsIGYubWVzc2FnZSwgZi5maWxlbmFtZSwgZi5saW5lbm8sIGYuY29sbm8sIGYuZXJyb3IpLCBjID09PSB0cnVlICYmIHQucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2VcbiAgICAgIGMgPSBlICYmIGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNDc1NzlcbiAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWh0bWw1LTIwMTEwNTI1L2hpc3RvcnkuaHRtbCNiZWZvcmV1bmxvYWRldmVudFxuICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBzcGVjaWZpYyBjYXNlIHdlIHNob3VsZCBjaGVjayBmb3IuIFRoZSBzcGVjIGRlZmluZXMgdGhhdCB0aGVcbiAgICAgIC8vIGByZXR1cm5WYWx1ZWAgYXR0cmlidXRlIHJlcHJlc2VudHMgdGhlIG1lc3NhZ2UgdG8gc2hvdyB0aGUgdXNlci4gV2hlbiB0aGUgZXZlbnRcbiAgICAgIC8vIGlzIGNyZWF0ZWQsIHRoaXMgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICB0LnR5cGUgPT09IFwiYmVmb3JldW5sb2FkXCIgJiYgLy8gVG8gcHJldmVudCBhbnkgYnJlYWtpbmcgY2hhbmdlcyByZXN1bHRpbmcgZnJvbSB0aGlzIGNoYW5nZSwgZ2l2ZW4gdGhhdFxuICAgICAgLy8gaXQgd2FzIGFscmVhZHkgY2F1c2luZyBhIHNpZ25pZmljYW50IG51bWJlciBvZiBmYWlsdXJlcyBpbiBHMywgd2UgaGF2ZSBoaWRkZW5cbiAgICAgIC8vIHRoYXQgYmVoYXZpb3IgYmVoaW5kIGEgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZmxhZy4gQ29uc3VtZXJzIGNhbiBlbmFibGUgdGhpc1xuICAgICAgLy8gZmxhZyBleHBsaWNpdGx5IGlmIHRoZXkgd2FudCB0aGUgYGJlZm9yZXVubG9hZGAgZXZlbnQgdG8gYmUgaGFuZGxlZCBhcyBkZWZpbmVkXG4gICAgICAvLyBpbiB0aGUgc3BlY2lmaWNhdGlvbi5cbiAgICAgIFFba3RdICYmIC8vIFRoZSBJREwgZXZlbnQgZGVmaW5pdGlvbiBpcyBgYXR0cmlidXRlIERPTVN0cmluZyByZXR1cm5WYWx1ZWAsIHNvIHdlIGNoZWNrIHdoZXRoZXJcbiAgICAgIC8vIGB0eXBlb2YgcmVzdWx0YCBpcyBhIHN0cmluZy5cbiAgICAgIHR5cGVvZiBjID09IFwic3RyaW5nXCIgPyB0LnJldHVyblZhbHVlID0gYyA6IGMgIT0gbnVsbCAmJiAhYyAmJiB0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgcmV0dXJuIGM7XG4gIH07XG4gIGZ1bmN0aW9uIEtlKHQsIG4sIGEpIHtcbiAgICBsZXQgZSA9IGVlKHQsIG4pO1xuICAgIGlmICghZSAmJiBhICYmIGVlKGEsIG4pICYmIChlID0geyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSksICFlIHx8ICFlLmNvbmZpZ3VyYWJsZSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBjID0gSChcIm9uXCIgKyBuICsgXCJwYXRjaGVkXCIpO1xuICAgIGlmICh0Lmhhc093blByb3BlcnR5KGMpICYmIHRbY10pXG4gICAgICByZXR1cm47XG4gICAgZGVsZXRlIGUud3JpdGFibGUsIGRlbGV0ZSBlLnZhbHVlO1xuICAgIGNvbnN0IGYgPSBlLmdldCwgcCA9IGUuc2V0LCBUID0gbi5zbGljZSgyKTtcbiAgICBsZXQgeSA9IExlW1RdO1xuICAgIHkgfHwgKHkgPSBMZVtUXSA9IEgoXCJPTl9QUk9QRVJUWVwiICsgVCkpLCBlLnNldCA9IGZ1bmN0aW9uKHcpIHtcbiAgICAgIGxldCBfID0gdGhpcztcbiAgICAgIGlmICghXyAmJiB0ID09PSBRICYmIChfID0gUSksICFfKVxuICAgICAgICByZXR1cm47XG4gICAgICB0eXBlb2YgX1t5XSA9PSBcImZ1bmN0aW9uXCIgJiYgXy5yZW1vdmVFdmVudExpc3RlbmVyKFQsIEplKSwgcD8uY2FsbChfLCBudWxsKSwgX1t5XSA9IHcsIHR5cGVvZiB3ID09IFwiZnVuY3Rpb25cIiAmJiBfLmFkZEV2ZW50TGlzdGVuZXIoVCwgSmUsIGZhbHNlKTtcbiAgICB9LCBlLmdldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IHcgPSB0aGlzO1xuICAgICAgaWYgKCF3ICYmIHQgPT09IFEgJiYgKHcgPSBRKSwgIXcpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgXyA9IHdbeV07XG4gICAgICBpZiAoXylcbiAgICAgICAgcmV0dXJuIF87XG4gICAgICBpZiAoZikge1xuICAgICAgICBsZXQgQyA9IGYuY2FsbCh0aGlzKTtcbiAgICAgICAgaWYgKEMpXG4gICAgICAgICAgcmV0dXJuIGUuc2V0LmNhbGwodGhpcywgQyksIHR5cGVvZiB3W210XSA9PSBcImZ1bmN0aW9uXCIgJiYgdy5yZW1vdmVBdHRyaWJ1dGUobiksIEM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LCB0ZSh0LCBuLCBlKSwgdFtjXSA9IHRydWU7XG4gIH1cbiAgZnVuY3Rpb24gUWUodCwgbiwgYSkge1xuICAgIGlmIChuKVxuICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCBuLmxlbmd0aDsgZSsrKVxuICAgICAgICBLZSh0LCBcIm9uXCIgKyBuW2VdLCBhKTtcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IGUgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgYyBpbiB0KVxuICAgICAgICBjLnNsaWNlKDAsIDIpID09IFwib25cIiAmJiBlLnB1c2goYyk7XG4gICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGUubGVuZ3RoOyBjKyspXG4gICAgICAgIEtlKHQsIGVbY10sIGEpO1xuICAgIH1cbiAgfVxuICBjb25zdCBsZSA9IEgoXCJvcmlnaW5hbEluc3RhbmNlXCIpO1xuICBmdW5jdGlvbiBTZSh0KSB7XG4gICAgY29uc3QgbiA9IFFbdF07XG4gICAgaWYgKCFuKVxuICAgICAgcmV0dXJuO1xuICAgIFFbSCh0KV0gPSBuLCBRW3RdID0gZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBjID0gVmUoYXJndW1lbnRzLCB0KTtcbiAgICAgIHN3aXRjaCAoYy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHRoaXNbbGVdID0gbmV3IG4oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRoaXNbbGVdID0gbmV3IG4oY1swXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aGlzW2xlXSA9IG5ldyBuKGNbMF0sIGNbMV0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbihjWzBdLCBjWzFdLCBjWzJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHRoaXNbbGVdID0gbmV3IG4oY1swXSwgY1sxXSwgY1syXSwgY1szXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXJnIGxpc3QgdG9vIGxvbmcuXCIpO1xuICAgICAgfVxuICAgIH0sIHBlKFFbdF0sIG4pO1xuICAgIGNvbnN0IGEgPSBuZXcgbihmdW5jdGlvbigpIHtcbiAgICB9KTtcbiAgICBsZXQgZTtcbiAgICBmb3IgKGUgaW4gYSlcbiAgICAgIHQgPT09IFwiWE1MSHR0cFJlcXVlc3RcIiAmJiBlID09PSBcInJlc3BvbnNlQmxvYlwiIHx8IGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgdHlwZW9mIGFbY10gPT0gXCJmdW5jdGlvblwiID8gUVt0XS5wcm90b3R5cGVbY10gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tsZV1bY10uYXBwbHkodGhpc1tsZV0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gOiB0ZShRW3RdLnByb3RvdHlwZSwgYywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24oZikge1xuICAgICAgICAgICAgdHlwZW9mIGYgPT0gXCJmdW5jdGlvblwiID8gKHRoaXNbbGVdW2NdID0geGUoZiwgdCArIFwiLlwiICsgYyksIHBlKHRoaXNbbGVdW2NdLCBmKSkgOiB0aGlzW2xlXVtjXSA9IGY7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbbGVdW2NdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KGUpO1xuICAgIGZvciAoZSBpbiBuKVxuICAgICAgZSAhPT0gXCJwcm90b3R5cGVcIiAmJiBuLmhhc093blByb3BlcnR5KGUpICYmIChRW3RdW2VdID0gbltlXSk7XG4gIH1cbiAgZnVuY3Rpb24gRWUodCwgbiwgYSkge1xuICAgIGxldCBlID0gdDtcbiAgICBmb3IgKDsgZSAmJiAhZS5oYXNPd25Qcm9wZXJ0eShuKTsgKVxuICAgICAgZSA9IGllKGUpO1xuICAgICFlICYmIHRbbl0gJiYgKGUgPSB0KTtcbiAgICBjb25zdCBjID0gSChuKTtcbiAgICBsZXQgZiA9IG51bGw7XG4gICAgaWYgKGUgJiYgKCEoZiA9IGVbY10pIHx8ICFlLmhhc093blByb3BlcnR5KGMpKSkge1xuICAgICAgZiA9IGVbY10gPSBlW25dO1xuICAgICAgY29uc3QgcCA9IGUgJiYgZWUoZSwgbik7XG4gICAgICBpZiAoWGUocCkpIHtcbiAgICAgICAgY29uc3QgVCA9IGEoZiwgYywgbik7XG4gICAgICAgIGVbbl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gVCh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9LCBwZShlW25dLCBmKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGY7XG4gIH1cbiAgZnVuY3Rpb24gdnQodCwgbiwgYSkge1xuICAgIGxldCBlID0gbnVsbDtcbiAgICBmdW5jdGlvbiBjKGYpIHtcbiAgICAgIGNvbnN0IHAgPSBmLmRhdGE7XG4gICAgICByZXR1cm4gcC5hcmdzW3AuY2JJZHhdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGYuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9LCBlLmFwcGx5KHAudGFyZ2V0LCBwLmFyZ3MpLCBmO1xuICAgIH1cbiAgICBlID0gRWUodCwgbiwgKGYpID0+IGZ1bmN0aW9uKHAsIFQpIHtcbiAgICAgIGNvbnN0IHkgPSBhKHAsIFQpO1xuICAgICAgcmV0dXJuIHkuY2JJZHggPj0gMCAmJiB0eXBlb2YgVFt5LmNiSWR4XSA9PSBcImZ1bmN0aW9uXCIgPyBGZSh5Lm5hbWUsIFRbeS5jYklkeF0sIHksIGMpIDogZi5hcHBseShwLCBUKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBwZSh0LCBuKSB7XG4gICAgdFtIKFwiT3JpZ2luYWxEZWxlZ2F0ZVwiKV0gPSBuO1xuICB9XG4gIGxldCBldCA9IGZhbHNlLCBHZSA9IGZhbHNlO1xuICBmdW5jdGlvbiBidCgpIHtcbiAgICBpZiAoZXQpXG4gICAgICByZXR1cm4gR2U7XG4gICAgZXQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0ID0gRGUubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICAgICh0LmluZGV4T2YoXCJNU0lFIFwiKSAhPT0gLTEgfHwgdC5pbmRleE9mKFwiVHJpZGVudC9cIikgIT09IC0xIHx8IHQuaW5kZXhPZihcIkVkZ2UvXCIpICE9PSAtMSkgJiYgKEdlID0gITApO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgICByZXR1cm4gR2U7XG4gIH1cbiAgZnVuY3Rpb24gdHQodCkge1xuICAgIHJldHVybiB0eXBlb2YgdCA9PSBcImZ1bmN0aW9uXCI7XG4gIH1cbiAgZnVuY3Rpb24gbnQodCkge1xuICAgIHJldHVybiB0eXBlb2YgdCA9PSBcIm51bWJlclwiO1xuICB9XG4gIGNvbnN0IEN0ID0ge1xuICAgIHVzZUc6IHRydWVcbiAgfSwgYWUgPSB7fSwgcnQgPSB7fSwgb3QgPSBuZXcgUmVnRXhwKFwiXlwiICsgd2UgKyBcIihcXFxcdyspKHRydWV8ZmFsc2UpJFwiKSwgc3QgPSBIKFwicHJvcGFnYXRpb25TdG9wcGVkXCIpO1xuICBmdW5jdGlvbiBpdCh0LCBuKSB7XG4gICAgY29uc3QgYSA9IChuID8gbih0KSA6IHQpICsgVGUsIGUgPSAobiA/IG4odCkgOiB0KSArIF9lLCBjID0gd2UgKyBhLCBmID0gd2UgKyBlO1xuICAgIGFlW3RdID0ge30sIGFlW3RdW1RlXSA9IGMsIGFlW3RdW19lXSA9IGY7XG4gIH1cbiAgZnVuY3Rpb24gUHQodCwgbiwgYSwgZSkge1xuICAgIGNvbnN0IGMgPSBlICYmIGUuYWRkIHx8IHZlLCBmID0gZSAmJiBlLnJtIHx8IEFlLCBwID0gZSAmJiBlLmxpc3RlbmVycyB8fCBcImV2ZW50TGlzdGVuZXJzXCIsIFQgPSBlICYmIGUucm1BbGwgfHwgXCJyZW1vdmVBbGxMaXN0ZW5lcnNcIiwgeSA9IEgoYyksIHcgPSBcIi5cIiArIGMgKyBcIjpcIiwgXyA9IFwicHJlcGVuZExpc3RlbmVyXCIsIEMgPSBcIi5cIiArIF8gKyBcIjpcIiwgTSA9IGZ1bmN0aW9uKGssIGQsIHgpIHtcbiAgICAgIGlmIChrLmlzUmVtb3ZlZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgViA9IGsuY2FsbGJhY2s7XG4gICAgICB0eXBlb2YgViA9PSBcIm9iamVjdFwiICYmIFYuaGFuZGxlRXZlbnQgJiYgKGsuY2FsbGJhY2sgPSAoZykgPT4gVi5oYW5kbGVFdmVudChnKSwgay5vcmlnaW5hbERlbGVnYXRlID0gVik7XG4gICAgICBsZXQgSztcbiAgICAgIHRyeSB7XG4gICAgICAgIGsuaW52b2tlKGssIGQsIFt4XSk7XG4gICAgICB9IGNhdGNoIChnKSB7XG4gICAgICAgIEsgPSBnO1xuICAgICAgfVxuICAgICAgY29uc3QgVSA9IGsub3B0aW9ucztcbiAgICAgIGlmIChVICYmIHR5cGVvZiBVID09IFwib2JqZWN0XCIgJiYgVS5vbmNlKSB7XG4gICAgICAgIGNvbnN0IGcgPSBrLm9yaWdpbmFsRGVsZWdhdGUgPyBrLm9yaWdpbmFsRGVsZWdhdGUgOiBrLmNhbGxiYWNrO1xuICAgICAgICBkW2ZdLmNhbGwoZCwgeC50eXBlLCBnLCBVKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBLO1xuICAgIH07XG4gICAgZnVuY3Rpb24gRihrLCBkLCB4KSB7XG4gICAgICBpZiAoZCA9IGQgfHwgdC5ldmVudCwgIWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IFYgPSBrIHx8IGQudGFyZ2V0IHx8IHQsIEsgPSBWW2FlW2QudHlwZV1beCA/IF9lIDogVGVdXTtcbiAgICAgIGlmIChLKSB7XG4gICAgICAgIGNvbnN0IFUgPSBbXTtcbiAgICAgICAgaWYgKEsubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgY29uc3QgZyA9IE0oS1swXSwgViwgZCk7XG4gICAgICAgICAgZyAmJiBVLnB1c2goZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZyA9IEsuc2xpY2UoKTtcbiAgICAgICAgICBmb3IgKGxldCBZID0gMDsgWSA8IGcubGVuZ3RoICYmICEoZCAmJiBkW3N0XSA9PT0gdHJ1ZSk7IFkrKykge1xuICAgICAgICAgICAgY29uc3QgTyA9IE0oZ1tZXSwgViwgZCk7XG4gICAgICAgICAgICBPICYmIFUucHVzaChPKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFUubGVuZ3RoID09PSAxKVxuICAgICAgICAgIHRocm93IFVbMF07XG4gICAgICAgIGZvciAobGV0IGcgPSAwOyBnIDwgVS5sZW5ndGg7IGcrKykge1xuICAgICAgICAgIGNvbnN0IFkgPSBVW2ddO1xuICAgICAgICAgIG4ubmF0aXZlU2NoZWR1bGVNaWNyb1Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgdGhyb3cgWTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBYID0gZnVuY3Rpb24oaykge1xuICAgICAgcmV0dXJuIEYodGhpcywgaywgZmFsc2UpO1xuICAgIH0sIG5lID0gZnVuY3Rpb24oaykge1xuICAgICAgcmV0dXJuIEYodGhpcywgaywgdHJ1ZSk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiByZShrLCBkKSB7XG4gICAgICBpZiAoIWspXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGxldCB4ID0gdHJ1ZTtcbiAgICAgIGQgJiYgZC51c2VHICE9PSB2b2lkIDAgJiYgKHggPSBkLnVzZUcpO1xuICAgICAgY29uc3QgViA9IGQgJiYgZC52aDtcbiAgICAgIGxldCBLID0gdHJ1ZTtcbiAgICAgIGQgJiYgZC5jaGtEdXAgIT09IHZvaWQgMCAmJiAoSyA9IGQuY2hrRHVwKTtcbiAgICAgIGxldCBVID0gZmFsc2U7XG4gICAgICBkICYmIGQucnQgIT09IHZvaWQgMCAmJiAoVSA9IGQucnQpO1xuICAgICAgbGV0IGcgPSBrO1xuICAgICAgZm9yICg7IGcgJiYgIWcuaGFzT3duUHJvcGVydHkoYyk7IClcbiAgICAgICAgZyA9IGllKGcpO1xuICAgICAgaWYgKCFnICYmIGtbY10gJiYgKGcgPSBrKSwgIWcgfHwgZ1t5XSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgWSA9IGQgJiYgZC5ldmVudE5hbWVUb1N0cmluZywgTyA9IHt9LCBQID0gZ1t5XSA9IGdbY10sIGIgPSBnW0goZildID0gZ1tmXSwgRCA9IGdbSChwKV0gPSBnW3BdLCBvZSA9IGdbSChUKV0gPSBnW1RdO1xuICAgICAgbGV0ICQ7XG4gICAgICBkICYmIGQucHJlcGVuZCAmJiAoJCA9IGdbSChkLnByZXBlbmQpXSA9IGdbZC5wcmVwZW5kXSk7XG4gICAgICBmdW5jdGlvbiBJKG8sIHUpIHtcbiAgICAgICAgcmV0dXJuIHUgPyB0eXBlb2YgbyA9PSBcImJvb2xlYW5cIiA/IHsgY2FwdHVyZTogbywgcGFzc2l2ZTogdHJ1ZSB9IDogbyA/IHR5cGVvZiBvID09IFwib2JqZWN0XCIgJiYgby5wYXNzaXZlICE9PSBmYWxzZSA/IHsgLi4ubywgcGFzc2l2ZTogdHJ1ZSB9IDogbyA6IHsgcGFzc2l2ZTogdHJ1ZSB9IDogbztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHMgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIGlmICghTy5pc0V4aXN0aW5nKVxuICAgICAgICAgIHJldHVybiBQLmNhbGwoTy50YXJnZXQsIE8uZXZlbnROYW1lLCBPLmNhcHR1cmUgPyBuZSA6IFgsIE8ub3B0aW9ucyk7XG4gICAgICB9LCBpID0gZnVuY3Rpb24obykge1xuICAgICAgICBpZiAoIW8uaXNSZW1vdmVkKSB7XG4gICAgICAgICAgY29uc3QgdSA9IGFlW28uZXZlbnROYW1lXTtcbiAgICAgICAgICBsZXQgdjtcbiAgICAgICAgICB1ICYmICh2ID0gdVtvLmNhcHR1cmUgPyBfZSA6IFRlXSk7XG4gICAgICAgICAgY29uc3QgUiA9IHYgJiYgby50YXJnZXRbdl07XG4gICAgICAgICAgaWYgKFIpIHtcbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgUi5sZW5ndGg7IG0rKylcbiAgICAgICAgICAgICAgaWYgKFJbbV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICBSLnNwbGljZShtLCAxKSwgby5pc1JlbW92ZWQgPSB0cnVlLCBvLnJlbW92ZUFib3J0TGlzdGVuZXIgJiYgKG8ucmVtb3ZlQWJvcnRMaXN0ZW5lcigpLCBvLnJlbW92ZUFib3J0TGlzdGVuZXIgPSBudWxsKSwgUi5sZW5ndGggPT09IDAgJiYgKG8uYWxsUmVtb3ZlZCA9IHRydWUsIG8udGFyZ2V0W3ZdID0gbnVsbCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG8uYWxsUmVtb3ZlZClcbiAgICAgICAgICByZXR1cm4gYi5jYWxsKG8udGFyZ2V0LCBvLmV2ZW50TmFtZSwgby5jYXB0dXJlID8gbmUgOiBYLCBvLm9wdGlvbnMpO1xuICAgICAgfSwgciA9IGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgcmV0dXJuIFAuY2FsbChPLnRhcmdldCwgTy5ldmVudE5hbWUsIG8uaW52b2tlLCBPLm9wdGlvbnMpO1xuICAgICAgfSwgRSA9IGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgcmV0dXJuICQuY2FsbChPLnRhcmdldCwgTy5ldmVudE5hbWUsIG8uaW52b2tlLCBPLm9wdGlvbnMpO1xuICAgICAgfSwgRyA9IGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgcmV0dXJuIGIuY2FsbChvLnRhcmdldCwgby5ldmVudE5hbWUsIG8uaW52b2tlLCBvLm9wdGlvbnMpO1xuICAgICAgfSwgY2UgPSB4ID8gcyA6IHIsIEEgPSB4ID8gaSA6IEcsIGdlID0gZnVuY3Rpb24obywgdSkge1xuICAgICAgICBjb25zdCB2ID0gdHlwZW9mIHU7XG4gICAgICAgIHJldHVybiB2ID09PSBcImZ1bmN0aW9uXCIgJiYgby5jYWxsYmFjayA9PT0gdSB8fCB2ID09PSBcIm9iamVjdFwiICYmIG8ub3JpZ2luYWxEZWxlZ2F0ZSA9PT0gdTtcbiAgICAgIH0sIHllID0gZD8uZGlmZiB8fCBnZSwgc2UgPSBab25lW0goXCJVTlBBVENIRURfRVZFTlRTXCIpXSwgQ2UgPSB0W0goXCJQQVNTSVZFX0VWRU5UU1wiKV07XG4gICAgICBmdW5jdGlvbiBoKG8pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIgJiYgbyAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHUgPSB7IC4uLm8gfTtcbiAgICAgICAgICByZXR1cm4gby5zaWduYWwgJiYgKHUuc2lnbmFsID0gby5zaWduYWwpLCB1O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvO1xuICAgICAgfVxuICAgICAgY29uc3QgbCA9IGZ1bmN0aW9uKG8sIHUsIHYsIFIsIG0gPSBmYWxzZSwgTiA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjb25zdCBaID0gdGhpcyB8fCB0O1xuICAgICAgICAgIGxldCBMID0gYXJndW1lbnRzWzBdO1xuICAgICAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAoTCA9IGQudHJhbnNmZXJFdmVudE5hbWUoTCkpO1xuICAgICAgICAgIGxldCBXID0gYXJndW1lbnRzWzFdO1xuICAgICAgICAgIGlmICghVylcbiAgICAgICAgICAgIHJldHVybiBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgaWYgKFplICYmIEwgPT09IFwidW5jYXVnaHRFeGNlcHRpb25cIilcbiAgICAgICAgICAgIHJldHVybiBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgbGV0IHEgPSBmYWxzZTtcbiAgICAgICAgICBpZiAodHlwZW9mIFcgIT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBpZiAoIVcuaGFuZGxlRXZlbnQpXG4gICAgICAgICAgICAgIHJldHVybiBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBxID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFYgJiYgIVYobywgVywgWiwgYXJndW1lbnRzKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjb25zdCBtZSA9ICEhQ2UgJiYgQ2UuaW5kZXhPZihMKSAhPT0gLTEsIGhlID0gaChJKGFyZ3VtZW50c1syXSwgbWUpKSwgUGUgPSBoZT8uc2lnbmFsO1xuICAgICAgICAgIGlmIChQZT8uYWJvcnRlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBpZiAoc2UpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGRlID0gMDsgZGUgPCBzZS5sZW5ndGg7IGRlKyspXG4gICAgICAgICAgICAgIGlmIChMID09PSBzZVtkZV0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lID8gby5jYWxsKFosIEwsIFcsIGhlKSA6IG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgVWUgPSBoZSA/IHR5cGVvZiBoZSA9PSBcImJvb2xlYW5cIiA/IHRydWUgOiBoZS5jYXB0dXJlIDogZmFsc2UsIGZ0ID0gaGUgJiYgdHlwZW9mIGhlID09IFwib2JqZWN0XCIgPyBoZS5vbmNlIDogZmFsc2UsIEh0ID0gWm9uZS5jdXJyZW50O1xuICAgICAgICAgIGxldCBXZSA9IGFlW0xdO1xuICAgICAgICAgIFdlIHx8IChpdChMLCBZKSwgV2UgPSBhZVtMXSk7XG4gICAgICAgICAgY29uc3QgaHQgPSBXZVtVZSA/IF9lIDogVGVdO1xuICAgICAgICAgIGxldCBSZSA9IFpbaHRdLCBkdCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChSZSkge1xuICAgICAgICAgICAgaWYgKGR0ID0gdHJ1ZSwgSykge1xuICAgICAgICAgICAgICBmb3IgKGxldCBkZSA9IDA7IGRlIDwgUmUubGVuZ3RoOyBkZSsrKVxuICAgICAgICAgICAgICAgIGlmICh5ZShSZVtkZV0sIFcpKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgUmUgPSBaW2h0XSA9IFtdO1xuICAgICAgICAgIGxldCBJZTtcbiAgICAgICAgICBjb25zdCBfdCA9IFouY29uc3RydWN0b3IubmFtZSwgVHQgPSBydFtfdF07XG4gICAgICAgICAgVHQgJiYgKEllID0gVHRbTF0pLCBJZSB8fCAoSWUgPSBfdCArIHUgKyAoWSA/IFkoTCkgOiBMKSksIE8ub3B0aW9ucyA9IGhlLCBmdCAmJiAoTy5vcHRpb25zLm9uY2UgPSBmYWxzZSksIE8udGFyZ2V0ID0gWiwgTy5jYXB0dXJlID0gVWUsIE8uZXZlbnROYW1lID0gTCwgTy5pc0V4aXN0aW5nID0gZHQ7XG4gICAgICAgICAgY29uc3QgT2UgPSB4ID8gQ3QgOiB2b2lkIDA7XG4gICAgICAgICAgT2UgJiYgKE9lLnRhc2tEYXRhID0gTyksIFBlICYmIChPLm9wdGlvbnMuc2lnbmFsID0gdm9pZCAwKTtcbiAgICAgICAgICBjb25zdCB1ZSA9IEh0LnNjaGVkdWxlRXZlbnRUYXNrKEllLCBXLCBPZSwgdiwgUik7XG4gICAgICAgICAgaWYgKFBlKSB7XG4gICAgICAgICAgICBPLm9wdGlvbnMuc2lnbmFsID0gUGU7XG4gICAgICAgICAgICBjb25zdCBkZSA9ICgpID0+IHVlLnpvbmUuY2FuY2VsVGFzayh1ZSk7XG4gICAgICAgICAgICBvLmNhbGwoUGUsIFwiYWJvcnRcIiwgZGUsIHsgb25jZTogdHJ1ZSB9KSwgdWUucmVtb3ZlQWJvcnRMaXN0ZW5lciA9ICgpID0+IFBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBkZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChPLnRhcmdldCA9IG51bGwsIE9lICYmIChPZS50YXNrRGF0YSA9IG51bGwpLCBmdCAmJiAoTy5vcHRpb25zLm9uY2UgPSB0cnVlKSwgdHlwZW9mIHVlLm9wdGlvbnMgIT0gXCJib29sZWFuXCIgJiYgKHVlLm9wdGlvbnMgPSBoZSksIHVlLnRhcmdldCA9IFosIHVlLmNhcHR1cmUgPSBVZSwgdWUuZXZlbnROYW1lID0gTCwgcSAmJiAodWUub3JpZ2luYWxEZWxlZ2F0ZSA9IFcpLCBOID8gUmUudW5zaGlmdCh1ZSkgOiBSZS5wdXNoKHVlKSwgbSlcbiAgICAgICAgICAgIHJldHVybiBaO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBnW2NdID0gbChQLCB3LCBjZSwgQSwgVSksICQgJiYgKGdbX10gPSBsKCQsIEMsIEUsIEEsIFUsIHRydWUpKSwgZ1tmXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zdCBvID0gdGhpcyB8fCB0O1xuICAgICAgICBsZXQgdSA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgZCAmJiBkLnRyYW5zZmVyRXZlbnROYW1lICYmICh1ID0gZC50cmFuc2ZlckV2ZW50TmFtZSh1KSk7XG4gICAgICAgIGNvbnN0IHYgPSBhcmd1bWVudHNbMl0sIFIgPSB2ID8gdHlwZW9mIHYgPT0gXCJib29sZWFuXCIgPyB0cnVlIDogdi5jYXB0dXJlIDogZmFsc2UsIG0gPSBhcmd1bWVudHNbMV07XG4gICAgICAgIGlmICghbSlcbiAgICAgICAgICByZXR1cm4gYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICBpZiAoViAmJiAhVihiLCBtLCBvLCBhcmd1bWVudHMpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgTiA9IGFlW3VdO1xuICAgICAgICBsZXQgWjtcbiAgICAgICAgTiAmJiAoWiA9IE5bUiA/IF9lIDogVGVdKTtcbiAgICAgICAgY29uc3QgTCA9IFogJiYgb1taXTtcbiAgICAgICAgaWYgKEwpXG4gICAgICAgICAgZm9yIChsZXQgVyA9IDA7IFcgPCBMLmxlbmd0aDsgVysrKSB7XG4gICAgICAgICAgICBjb25zdCBxID0gTFtXXTtcbiAgICAgICAgICAgIGlmICh5ZShxLCBtKSkge1xuICAgICAgICAgICAgICBpZiAoTC5zcGxpY2UoVywgMSksIHEuaXNSZW1vdmVkID0gdHJ1ZSwgTC5sZW5ndGggPT09IDAgJiYgKHEuYWxsUmVtb3ZlZCA9IHRydWUsIG9bWl0gPSBudWxsLCAhUiAmJiB0eXBlb2YgdSA9PSBcInN0cmluZ1wiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lID0gd2UgKyBcIk9OX1BST1BFUlRZXCIgKyB1O1xuICAgICAgICAgICAgICAgIG9bbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gcS56b25lLmNhbmNlbFRhc2socSksIFUgPyBvIDogdm9pZCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH0sIGdbcF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMgfHwgdDtcbiAgICAgICAgbGV0IHUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAodSA9IGQudHJhbnNmZXJFdmVudE5hbWUodSkpO1xuICAgICAgICBjb25zdCB2ID0gW10sIFIgPSBjdChvLCBZID8gWSh1KSA6IHUpO1xuICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IFIubGVuZ3RoOyBtKyspIHtcbiAgICAgICAgICBjb25zdCBOID0gUlttXTtcbiAgICAgICAgICBsZXQgWiA9IE4ub3JpZ2luYWxEZWxlZ2F0ZSA/IE4ub3JpZ2luYWxEZWxlZ2F0ZSA6IE4uY2FsbGJhY2s7XG4gICAgICAgICAgdi5wdXNoKFopO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSwgZ1tUXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zdCBvID0gdGhpcyB8fCB0O1xuICAgICAgICBsZXQgdSA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgaWYgKHUpIHtcbiAgICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKHUgPSBkLnRyYW5zZmVyRXZlbnROYW1lKHUpKTtcbiAgICAgICAgICBjb25zdCB2ID0gYWVbdV07XG4gICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIGNvbnN0IFIgPSB2W1RlXSwgbSA9IHZbX2VdLCBOID0gb1tSXSwgWiA9IG9bbV07XG4gICAgICAgICAgICBpZiAoTikge1xuICAgICAgICAgICAgICBjb25zdCBMID0gTi5zbGljZSgpO1xuICAgICAgICAgICAgICBmb3IgKGxldCBXID0gMDsgVyA8IEwubGVuZ3RoOyBXKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBxID0gTFtXXTtcbiAgICAgICAgICAgICAgICBsZXQgbWUgPSBxLm9yaWdpbmFsRGVsZWdhdGUgPyBxLm9yaWdpbmFsRGVsZWdhdGUgOiBxLmNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIHRoaXNbZl0uY2FsbCh0aGlzLCB1LCBtZSwgcS5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFopIHtcbiAgICAgICAgICAgICAgY29uc3QgTCA9IFouc2xpY2UoKTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgVyA9IDA7IFcgPCBMLmxlbmd0aDsgVysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcSA9IExbV107XG4gICAgICAgICAgICAgICAgbGV0IG1lID0gcS5vcmlnaW5hbERlbGVnYXRlID8gcS5vcmlnaW5hbERlbGVnYXRlIDogcS5jYWxsYmFjaztcbiAgICAgICAgICAgICAgICB0aGlzW2ZdLmNhbGwodGhpcywgdSwgbWUsIHEub3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdiA9IE9iamVjdC5rZXlzKG8pO1xuICAgICAgICAgIGZvciAobGV0IFIgPSAwOyBSIDwgdi5sZW5ndGg7IFIrKykge1xuICAgICAgICAgICAgY29uc3QgbSA9IHZbUl0sIE4gPSBvdC5leGVjKG0pO1xuICAgICAgICAgICAgbGV0IFogPSBOICYmIE5bMV07XG4gICAgICAgICAgICBaICYmIFogIT09IFwicmVtb3ZlTGlzdGVuZXJcIiAmJiB0aGlzW1RdLmNhbGwodGhpcywgWik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXNbVF0uY2FsbCh0aGlzLCBcInJlbW92ZUxpc3RlbmVyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChVKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSwgcGUoZ1tjXSwgUCksIHBlKGdbZl0sIGIpLCBvZSAmJiBwZShnW1RdLCBvZSksIEQgJiYgcGUoZ1twXSwgRCksIHRydWU7XG4gICAgfVxuICAgIGxldCBKID0gW107XG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBhLmxlbmd0aDsgaysrKVxuICAgICAgSltrXSA9IHJlKGFba10sIGUpO1xuICAgIHJldHVybiBKO1xuICB9XG4gIGZ1bmN0aW9uIGN0KHQsIG4pIHtcbiAgICBpZiAoIW4pIHtcbiAgICAgIGNvbnN0IGYgPSBbXTtcbiAgICAgIGZvciAobGV0IHAgaW4gdCkge1xuICAgICAgICBjb25zdCBUID0gb3QuZXhlYyhwKTtcbiAgICAgICAgbGV0IHkgPSBUICYmIFRbMV07XG4gICAgICAgIGlmICh5ICYmICghbiB8fCB5ID09PSBuKSkge1xuICAgICAgICAgIGNvbnN0IHcgPSB0W3BdO1xuICAgICAgICAgIGlmICh3KVxuICAgICAgICAgICAgZm9yIChsZXQgXyA9IDA7IF8gPCB3Lmxlbmd0aDsgXysrKVxuICAgICAgICAgICAgICBmLnB1c2god1tfXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmO1xuICAgIH1cbiAgICBsZXQgYSA9IGFlW25dO1xuICAgIGEgfHwgKGl0KG4pLCBhID0gYWVbbl0pO1xuICAgIGNvbnN0IGUgPSB0W2FbVGVdXSwgYyA9IHRbYVtfZV1dO1xuICAgIHJldHVybiBlID8gYyA/IGUuY29uY2F0KGMpIDogZS5zbGljZSgpIDogYyA/IGMuc2xpY2UoKSA6IFtdO1xuICB9XG4gIGZ1bmN0aW9uIFJ0KHQsIG4pIHtcbiAgICBjb25zdCBhID0gdC5FdmVudDtcbiAgICBhICYmIGEucHJvdG90eXBlICYmIG4ucGF0Y2hNZXRob2QoYS5wcm90b3R5cGUsIFwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uXCIsIChlKSA9PiBmdW5jdGlvbihjLCBmKSB7XG4gICAgICBjW3N0XSA9IHRydWUsIGUgJiYgZS5hcHBseShjLCBmKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiB3dCh0LCBuKSB7XG4gICAgbi5wYXRjaE1ldGhvZCh0LCBcInF1ZXVlTWljcm90YXNrXCIsIChhKSA9PiBmdW5jdGlvbihlLCBjKSB7XG4gICAgICBab25lLmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soXCJxdWV1ZU1pY3JvdGFza1wiLCBjWzBdKTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBNZSA9IEgoXCJ6b25lVGFza1wiKTtcbiAgZnVuY3Rpb24gYmUodCwgbiwgYSwgZSkge1xuICAgIGxldCBjID0gbnVsbCwgZiA9IG51bGw7XG4gICAgbiArPSBlLCBhICs9IGU7XG4gICAgY29uc3QgcCA9IHt9O1xuICAgIGZ1bmN0aW9uIFQodykge1xuICAgICAgY29uc3QgXyA9IHcuZGF0YTtcbiAgICAgIF8uYXJnc1swXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdy5pbnZva2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBDID0gYy5hcHBseSh0LCBfLmFyZ3MpO1xuICAgICAgcmV0dXJuIG50KEMpID8gXy5oYW5kbGVJZCA9IEMgOiAoXy5oYW5kbGUgPSBDLCBfLmlzUmVmcmVzaGFibGUgPSB0dChDLnJlZnJlc2gpKSwgdztcbiAgICB9XG4gICAgZnVuY3Rpb24geSh3KSB7XG4gICAgICBjb25zdCB7IGhhbmRsZTogXywgaGFuZGxlSWQ6IEMgfSA9IHcuZGF0YTtcbiAgICAgIHJldHVybiBmLmNhbGwodCwgXyA/PyBDKTtcbiAgICB9XG4gICAgYyA9IEVlKHQsIG4sICh3KSA9PiBmdW5jdGlvbihfLCBDKSB7XG4gICAgICBpZiAodHQoQ1swXSkpIHtcbiAgICAgICAgY29uc3QgTSA9IHtcbiAgICAgICAgICBpc1JlZnJlc2hhYmxlOiBmYWxzZSxcbiAgICAgICAgICBpc1BlcmlvZGljOiBlID09PSBcIkludGVydmFsXCIsXG4gICAgICAgICAgZGVsYXk6IGUgPT09IFwiVGltZW91dFwiIHx8IGUgPT09IFwiSW50ZXJ2YWxcIiA/IENbMV0gfHwgMCA6IHZvaWQgMCxcbiAgICAgICAgICBhcmdzOiBDXG4gICAgICAgIH0sIEYgPSBDWzBdO1xuICAgICAgICBDWzBdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBGLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgaGFuZGxlOiB4LCBoYW5kbGVJZDogViwgaXNQZXJpb2RpYzogSywgaXNSZWZyZXNoYWJsZTogVSB9ID0gTTtcbiAgICAgICAgICAgICFLICYmICFVICYmIChWID8gZGVsZXRlIHBbVl0gOiB4ICYmICh4W01lXSA9IG51bGwpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IFggPSBGZShuLCBDWzBdLCBNLCBULCB5KTtcbiAgICAgICAgaWYgKCFYKVxuICAgICAgICAgIHJldHVybiBYO1xuICAgICAgICBjb25zdCB7IGhhbmRsZUlkOiBuZSwgaGFuZGxlOiByZSwgaXNSZWZyZXNoYWJsZTogSiwgaXNQZXJpb2RpYzogayB9ID0gWC5kYXRhO1xuICAgICAgICBpZiAobmUpXG4gICAgICAgICAgcFtuZV0gPSBYO1xuICAgICAgICBlbHNlIGlmIChyZSAmJiAocmVbTWVdID0gWCwgSiAmJiAhaykpIHtcbiAgICAgICAgICBjb25zdCBkID0gcmUucmVmcmVzaDtcbiAgICAgICAgICByZS5yZWZyZXNoID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCB7IHpvbmU6IHgsIHN0YXRlOiBWIH0gPSBYO1xuICAgICAgICAgICAgcmV0dXJuIFYgPT09IFwibm90U2NoZWR1bGVkXCIgPyAoWC5fc3RhdGUgPSBcInNjaGVkdWxlZFwiLCB4Ll91cGRhdGVUYXNrQ291bnQoWCwgMSkpIDogViA9PT0gXCJydW5uaW5nXCIgJiYgKFguX3N0YXRlID0gXCJzY2hlZHVsaW5nXCIpLCBkLmNhbGwodGhpcyk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmUgPz8gbmUgPz8gWDtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gdy5hcHBseSh0LCBDKTtcbiAgICB9KSwgZiA9IEVlKHQsIGEsICh3KSA9PiBmdW5jdGlvbihfLCBDKSB7XG4gICAgICBjb25zdCBNID0gQ1swXTtcbiAgICAgIGxldCBGO1xuICAgICAgbnQoTSkgPyAoRiA9IHBbTV0sIGRlbGV0ZSBwW01dKSA6IChGID0gTT8uW01lXSwgRiA/IE1bTWVdID0gbnVsbCA6IEYgPSBNKSwgRj8udHlwZSA/IEYuY2FuY2VsRm4gJiYgRi56b25lLmNhbmNlbFRhc2soRikgOiB3LmFwcGx5KHQsIEMpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIER0KHQsIG4pIHtcbiAgICBjb25zdCB7IGlzQnJvd3NlcjogYSwgaXNNaXg6IGUgfSA9IG4uZ2V0R2xvYmFsT2JqZWN0cygpO1xuICAgIGlmICghYSAmJiAhZSB8fCAhdC5jdXN0b21FbGVtZW50cyB8fCAhKFwiY3VzdG9tRWxlbWVudHNcIiBpbiB0KSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBjID0gW1xuICAgICAgXCJjb25uZWN0ZWRDYWxsYmFja1wiLFxuICAgICAgXCJkaXNjb25uZWN0ZWRDYWxsYmFja1wiLFxuICAgICAgXCJhZG9wdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1Bc3NvY2lhdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiZm9ybURpc2FibGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiZm9ybVJlc2V0Q2FsbGJhY2tcIixcbiAgICAgIFwiZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrXCJcbiAgICBdO1xuICAgIG4ucGF0Y2hDYWxsYmFja3MobiwgdC5jdXN0b21FbGVtZW50cywgXCJjdXN0b21FbGVtZW50c1wiLCBcImRlZmluZVwiLCBjKTtcbiAgfVxuICBmdW5jdGlvbiBTdCh0LCBuKSB7XG4gICAgaWYgKFpvbmVbbi5zeW1ib2woXCJwYXRjaEV2ZW50VGFyZ2V0XCIpXSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCB7IGV2ZW50TmFtZXM6IGEsIHpvbmVTeW1ib2xFdmVudE5hbWVzOiBlLCBUUlVFX1NUUjogYywgRkFMU0VfU1RSOiBmLCBaT05FX1NZTUJPTF9QUkVGSVg6IHAgfSA9IG4uZ2V0R2xvYmFsT2JqZWN0cygpO1xuICAgIGZvciAobGV0IHkgPSAwOyB5IDwgYS5sZW5ndGg7IHkrKykge1xuICAgICAgY29uc3QgdyA9IGFbeV0sIF8gPSB3ICsgZiwgQyA9IHcgKyBjLCBNID0gcCArIF8sIEYgPSBwICsgQztcbiAgICAgIGVbd10gPSB7fSwgZVt3XVtmXSA9IE0sIGVbd11bY10gPSBGO1xuICAgIH1cbiAgICBjb25zdCBUID0gdC5FdmVudFRhcmdldDtcbiAgICBpZiAoISghVCB8fCAhVC5wcm90b3R5cGUpKVxuICAgICAgcmV0dXJuIG4ucGF0Y2hFdmVudFRhcmdldCh0LCBuLCBbVCAmJiBULnByb3RvdHlwZV0pLCB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIE90KHQsIG4pIHtcbiAgICBuLnBhdGNoRXZlbnRQcm90b3R5cGUodCwgbik7XG4gIH1cbiAgZnVuY3Rpb24gYXQodCwgbiwgYSkge1xuICAgIGlmICghYSB8fCBhLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiBuO1xuICAgIGNvbnN0IGUgPSBhLmZpbHRlcigoZikgPT4gZi50YXJnZXQgPT09IHQpO1xuICAgIGlmIChlLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiBuO1xuICAgIGNvbnN0IGMgPSBlWzBdLmlnbm9yZVByb3BlcnRpZXM7XG4gICAgcmV0dXJuIG4uZmlsdGVyKChmKSA9PiBjLmluZGV4T2YoZikgPT09IC0xKTtcbiAgfVxuICBmdW5jdGlvbiBsdCh0LCBuLCBhLCBlKSB7XG4gICAgaWYgKCF0KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGMgPSBhdCh0LCBuLCBhKTtcbiAgICBRZSh0LCBjLCBlKTtcbiAgfVxuICBmdW5jdGlvbiBCZSh0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZpbHRlcigobikgPT4gbi5zdGFydHNXaXRoKFwib25cIikgJiYgbi5sZW5ndGggPiAyKS5tYXAoKG4pID0+IG4uc3Vic3RyaW5nKDIpKTtcbiAgfVxuICBmdW5jdGlvbiBOdCh0LCBuKSB7XG4gICAgaWYgKFplICYmICEkZSB8fCBab25lW3Quc3ltYm9sKFwicGF0Y2hFdmVudHNcIildKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGEgPSBuLl9fWm9uZV9pZ25vcmVfb25fcHJvcGVydGllcztcbiAgICBsZXQgZSA9IFtdO1xuICAgIGlmICh6ZSkge1xuICAgICAgY29uc3QgYyA9IHdpbmRvdztcbiAgICAgIGUgPSBlLmNvbmNhdChbXG4gICAgICAgIFwiRG9jdW1lbnRcIixcbiAgICAgICAgXCJTVkdFbGVtZW50XCIsXG4gICAgICAgIFwiRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTEJvZHlFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTE1lZGlhRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxGcmFtZVNldEVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MRnJhbWVFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTElGcmFtZUVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MTWFycXVlZUVsZW1lbnRcIixcbiAgICAgICAgXCJXb3JrZXJcIlxuICAgICAgXSk7XG4gICAgICBjb25zdCBmID0gW107XG4gICAgICBsdChjLCBCZShjKSwgYSAmJiBhLmNvbmNhdChmKSwgaWUoYykpO1xuICAgIH1cbiAgICBlID0gZS5jb25jYXQoW1xuICAgICAgXCJYTUxIdHRwUmVxdWVzdFwiLFxuICAgICAgXCJYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0XCIsXG4gICAgICBcIklEQkluZGV4XCIsXG4gICAgICBcIklEQlJlcXVlc3RcIixcbiAgICAgIFwiSURCT3BlbkRCUmVxdWVzdFwiLFxuICAgICAgXCJJREJEYXRhYmFzZVwiLFxuICAgICAgXCJJREJUcmFuc2FjdGlvblwiLFxuICAgICAgXCJJREJDdXJzb3JcIixcbiAgICAgIFwiV2ViU29ja2V0XCJcbiAgICBdKTtcbiAgICBmb3IgKGxldCBjID0gMDsgYyA8IGUubGVuZ3RoOyBjKyspIHtcbiAgICAgIGNvbnN0IGYgPSBuW2VbY11dO1xuICAgICAgZj8ucHJvdG90eXBlICYmIGx0KGYucHJvdG90eXBlLCBCZShmLnByb3RvdHlwZSksIGEpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBadCh0KSB7XG4gICAgdC5fX2xvYWRfcGF0Y2goXCJsZWdhY3lcIiwgKG4pID0+IHtcbiAgICAgIGNvbnN0IGEgPSBuW3QuX19zeW1ib2xfXyhcImxlZ2FjeVBhdGNoXCIpXTtcbiAgICAgIGEgJiYgYSgpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcInRpbWVyc1wiLCAobikgPT4ge1xuICAgICAgY29uc3QgZSA9IFwiY2xlYXJcIjtcbiAgICAgIGJlKG4sIFwic2V0XCIsIGUsIFwiVGltZW91dFwiKSwgYmUobiwgXCJzZXRcIiwgZSwgXCJJbnRlcnZhbFwiKSwgYmUobiwgXCJzZXRcIiwgZSwgXCJJbW1lZGlhdGVcIik7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCIsIChuKSA9PiB7XG4gICAgICBiZShuLCBcInJlcXVlc3RcIiwgXCJjYW5jZWxcIiwgXCJBbmltYXRpb25GcmFtZVwiKSwgYmUobiwgXCJtb3pSZXF1ZXN0XCIsIFwibW96Q2FuY2VsXCIsIFwiQW5pbWF0aW9uRnJhbWVcIiksIGJlKG4sIFwid2Via2l0UmVxdWVzdFwiLCBcIndlYmtpdENhbmNlbFwiLCBcIkFuaW1hdGlvbkZyYW1lXCIpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcImJsb2NraW5nXCIsIChuLCBhKSA9PiB7XG4gICAgICBjb25zdCBlID0gW1wiYWxlcnRcIiwgXCJwcm9tcHRcIiwgXCJjb25maXJtXCJdO1xuICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBlLmxlbmd0aDsgYysrKSB7XG4gICAgICAgIGNvbnN0IGYgPSBlW2NdO1xuICAgICAgICBFZShuLCBmLCAocCwgVCwgeSkgPT4gZnVuY3Rpb24odywgXykge1xuICAgICAgICAgIHJldHVybiBhLmN1cnJlbnQucnVuKHAsIG4sIF8sIHkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJFdmVudFRhcmdldFwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgT3QobiwgZSksIFN0KG4sIGUpO1xuICAgICAgY29uc3QgYyA9IG4uWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtcbiAgICAgIGMgJiYgYy5wcm90b3R5cGUgJiYgZS5wYXRjaEV2ZW50VGFyZ2V0KG4sIGUsIFtjLnByb3RvdHlwZV0pO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcIk11dGF0aW9uT2JzZXJ2ZXJcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIFNlKFwiTXV0YXRpb25PYnNlcnZlclwiKSwgU2UoXCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyXCIpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcIkludGVyc2VjdGlvbk9ic2VydmVyXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBTZShcIkludGVyc2VjdGlvbk9ic2VydmVyXCIpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcIkZpbGVSZWFkZXJcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIFNlKFwiRmlsZVJlYWRlclwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJvbl9wcm9wZXJ0eVwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgTnQoZSwgbik7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiY3VzdG9tRWxlbWVudHNcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIER0KG4sIGUpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcIlhIUlwiLCAobiwgYSkgPT4ge1xuICAgICAgdyhuKTtcbiAgICAgIGNvbnN0IGUgPSBIKFwieGhyVGFza1wiKSwgYyA9IEgoXCJ4aHJTeW5jXCIpLCBmID0gSChcInhockxpc3RlbmVyXCIpLCBwID0gSChcInhoclNjaGVkdWxlZFwiKSwgVCA9IEgoXCJ4aHJVUkxcIiksIHkgPSBIKFwieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWRcIik7XG4gICAgICBmdW5jdGlvbiB3KF8pIHtcbiAgICAgICAgY29uc3QgQyA9IF8uWE1MSHR0cFJlcXVlc3Q7XG4gICAgICAgIGlmICghQylcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IE0gPSBDLnByb3RvdHlwZTtcbiAgICAgICAgZnVuY3Rpb24gRihQKSB7XG4gICAgICAgICAgcmV0dXJuIFBbZV07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IFggPSBNW2plXSwgbmUgPSBNW0hlXTtcbiAgICAgICAgaWYgKCFYKSB7XG4gICAgICAgICAgY29uc3QgUCA9IF8uWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtcbiAgICAgICAgICBpZiAoUCkge1xuICAgICAgICAgICAgY29uc3QgYiA9IFAucHJvdG90eXBlO1xuICAgICAgICAgICAgWCA9IGJbamVdLCBuZSA9IGJbSGVdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZSA9IFwicmVhZHlzdGF0ZWNoYW5nZVwiLCBKID0gXCJzY2hlZHVsZWRcIjtcbiAgICAgICAgZnVuY3Rpb24gayhQKSB7XG4gICAgICAgICAgY29uc3QgYiA9IFAuZGF0YSwgRCA9IGIudGFyZ2V0O1xuICAgICAgICAgIERbcF0gPSBmYWxzZSwgRFt5XSA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IG9lID0gRFtmXTtcbiAgICAgICAgICBYIHx8IChYID0gRFtqZV0sIG5lID0gRFtIZV0pLCBvZSAmJiBuZS5jYWxsKEQsIHJlLCBvZSk7XG4gICAgICAgICAgY29uc3QgJCA9IERbZl0gPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoRC5yZWFkeVN0YXRlID09PSBELkRPTkUpXG4gICAgICAgICAgICAgIGlmICghYi5hYm9ydGVkICYmIERbcF0gJiYgUC5zdGF0ZSA9PT0gSikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBEW2EuX19zeW1ib2xfXyhcImxvYWRmYWxzZVwiKV07XG4gICAgICAgICAgICAgICAgaWYgKEQuc3RhdHVzICE9PSAwICYmIHMgJiYgcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpID0gUC5pbnZva2U7XG4gICAgICAgICAgICAgICAgICBQLmludm9rZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gRFthLl9fc3ltYm9sX18oXCJsb2FkZmFsc2VcIildO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBFID0gMDsgRSA8IHIubGVuZ3RoOyBFKyspXG4gICAgICAgICAgICAgICAgICAgICAgcltFXSA9PT0gUCAmJiByLnNwbGljZShFLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgIWIuYWJvcnRlZCAmJiBQLnN0YXRlID09PSBKICYmIGkuY2FsbChQKTtcbiAgICAgICAgICAgICAgICAgIH0sIHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgIFAuaW52b2tlKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSAhYi5hYm9ydGVkICYmIERbcF0gPT09IGZhbHNlICYmIChEW3ldID0gdHJ1ZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gWC5jYWxsKEQsIHJlLCAkKSwgRFtlXSB8fCAoRFtlXSA9IFApLCBZLmFwcGx5KEQsIGIuYXJncyksIERbcF0gPSB0cnVlLCBQO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGQoKSB7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24geChQKSB7XG4gICAgICAgICAgY29uc3QgYiA9IFAuZGF0YTtcbiAgICAgICAgICByZXR1cm4gYi5hYm9ydGVkID0gdHJ1ZSwgTy5hcHBseShiLnRhcmdldCwgYi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBWID0gRWUoTSwgXCJvcGVuXCIsICgpID0+IGZ1bmN0aW9uKFAsIGIpIHtcbiAgICAgICAgICByZXR1cm4gUFtjXSA9IGJbMl0gPT0gZmFsc2UsIFBbVF0gPSBiWzFdLCBWLmFwcGx5KFAsIGIpO1xuICAgICAgICB9KSwgSyA9IFwiWE1MSHR0cFJlcXVlc3Quc2VuZFwiLCBVID0gSChcImZldGNoVGFza0Fib3J0aW5nXCIpLCBnID0gSChcImZldGNoVGFza1NjaGVkdWxpbmdcIiksIFkgPSBFZShNLCBcInNlbmRcIiwgKCkgPT4gZnVuY3Rpb24oUCwgYikge1xuICAgICAgICAgIGlmIChhLmN1cnJlbnRbZ10gPT09IHRydWUgfHwgUFtjXSlcbiAgICAgICAgICAgIHJldHVybiBZLmFwcGx5KFAsIGIpO1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IEQgPSB7XG4gICAgICAgICAgICAgIHRhcmdldDogUCxcbiAgICAgICAgICAgICAgdXJsOiBQW1RdLFxuICAgICAgICAgICAgICBpc1BlcmlvZGljOiBmYWxzZSxcbiAgICAgICAgICAgICAgYXJnczogYixcbiAgICAgICAgICAgICAgYWJvcnRlZDogZmFsc2VcbiAgICAgICAgICAgIH0sIG9lID0gRmUoSywgZCwgRCwgaywgeCk7XG4gICAgICAgICAgICBQICYmIFBbeV0gPT09IHRydWUgJiYgIUQuYWJvcnRlZCAmJiBvZS5zdGF0ZSA9PT0gSiAmJiBvZS5pbnZva2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBPID0gRWUoTSwgXCJhYm9ydFwiLCAoKSA9PiBmdW5jdGlvbihQLCBiKSB7XG4gICAgICAgICAgY29uc3QgRCA9IEYoUCk7XG4gICAgICAgICAgaWYgKEQgJiYgdHlwZW9mIEQudHlwZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpZiAoRC5jYW5jZWxGbiA9PSBudWxsIHx8IEQuZGF0YSAmJiBELmRhdGEuYWJvcnRlZClcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgRC56b25lLmNhbmNlbFRhc2soRCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChhLmN1cnJlbnRbVV0gPT09IHRydWUpXG4gICAgICAgICAgICByZXR1cm4gTy5hcHBseShQLCBiKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiZ2VvbG9jYXRpb25cIiwgKG4pID0+IHtcbiAgICAgIG4ubmF2aWdhdG9yICYmIG4ubmF2aWdhdG9yLmdlb2xvY2F0aW9uICYmIHl0KG4ubmF2aWdhdG9yLmdlb2xvY2F0aW9uLCBbXCJnZXRDdXJyZW50UG9zaXRpb25cIiwgXCJ3YXRjaFBvc2l0aW9uXCJdKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJQcm9taXNlUmVqZWN0aW9uRXZlbnRcIiwgKG4sIGEpID0+IHtcbiAgICAgIGZ1bmN0aW9uIGUoYykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZikge1xuICAgICAgICAgIGN0KG4sIGMpLmZvckVhY2goKFQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHkgPSBuLlByb21pc2VSZWplY3Rpb25FdmVudDtcbiAgICAgICAgICAgIGlmICh5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHcgPSBuZXcgeShjLCB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZTogZi5wcm9taXNlLFxuICAgICAgICAgICAgICAgIHJlYXNvbjogZi5yZWplY3Rpb25cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIFQuaW52b2tlKHcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgbi5Qcm9taXNlUmVqZWN0aW9uRXZlbnQgJiYgKGFbSChcInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyXCIpXSA9IGUoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIiksIGFbSChcInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyXCIpXSA9IGUoXCJyZWplY3Rpb25oYW5kbGVkXCIpKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJxdWV1ZU1pY3JvdGFza1wiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgd3QobiwgZSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gTHQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwiWm9uZUF3YXJlUHJvbWlzZVwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgY29uc3QgYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIGYgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4gICAgICBmdW5jdGlvbiBwKGgpIHtcbiAgICAgICAgaWYgKGggJiYgaC50b1N0cmluZyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuICAgICAgICAgIGNvbnN0IGwgPSBoLmNvbnN0cnVjdG9yICYmIGguY29uc3RydWN0b3IubmFtZTtcbiAgICAgICAgICByZXR1cm4gKGwgfHwgXCJcIikgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaCA/IGgudG9TdHJpbmcoKSA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IFQgPSBlLnN5bWJvbCwgeSA9IFtdLCB3ID0gbltUKFwiRElTQUJMRV9XUkFQUElOR19VTkNBVUdIVF9QUk9NSVNFX1JFSkVDVElPTlwiKV0gIT09IGZhbHNlLCBfID0gVChcIlByb21pc2VcIiksIEMgPSBUKFwidGhlblwiKSwgTSA9IFwiX19jcmVhdGlvblRyYWNlX19cIjtcbiAgICAgIGUub25VbmhhbmRsZWRFcnJvciA9IChoKSA9PiB7XG4gICAgICAgIGlmIChlLnNob3dVbmNhdWdodEVycm9yKCkpIHtcbiAgICAgICAgICBjb25zdCBsID0gaCAmJiBoLnJlamVjdGlvbjtcbiAgICAgICAgICBsID8gY29uc29sZS5lcnJvcihcIlVuaGFuZGxlZCBQcm9taXNlIHJlamVjdGlvbjpcIiwgbCBpbnN0YW5jZW9mIEVycm9yID8gbC5tZXNzYWdlIDogbCwgXCI7IFpvbmU6XCIsIGguem9uZS5uYW1lLCBcIjsgVGFzazpcIiwgaC50YXNrICYmIGgudGFzay5zb3VyY2UsIFwiOyBWYWx1ZTpcIiwgbCwgbCBpbnN0YW5jZW9mIEVycm9yID8gbC5zdGFjayA6IHZvaWQgMCkgOiBjb25zb2xlLmVycm9yKGgpO1xuICAgICAgICB9XG4gICAgICB9LCBlLm1pY3JvdGFza0RyYWluRG9uZSA9ICgpID0+IHtcbiAgICAgICAgZm9yICg7IHkubGVuZ3RoOyApIHtcbiAgICAgICAgICBjb25zdCBoID0geS5zaGlmdCgpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBoLnpvbmUucnVuR3VhcmRlZCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRocm93IGgudGhyb3dPcmlnaW5hbCA/IGgucmVqZWN0aW9uIDogaDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIFgobCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgRiA9IFQoXCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlclwiKTtcbiAgICAgIGZ1bmN0aW9uIFgoaCkge1xuICAgICAgICBlLm9uVW5oYW5kbGVkRXJyb3IoaCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbCA9IGFbRl07XG4gICAgICAgICAgdHlwZW9mIGwgPT0gXCJmdW5jdGlvblwiICYmIGwuY2FsbCh0aGlzLCBoKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIG5lKGgpIHtcbiAgICAgICAgcmV0dXJuIGggJiYgdHlwZW9mIGgudGhlbiA9PSBcImZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiByZShoKSB7XG4gICAgICAgIHJldHVybiBoO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gSihoKSB7XG4gICAgICAgIHJldHVybiBBLnJlamVjdChoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGsgPSBUKFwic3RhdGVcIiksIGQgPSBUKFwidmFsdWVcIiksIHggPSBUKFwiZmluYWxseVwiKSwgViA9IFQoXCJwYXJlbnRQcm9taXNlVmFsdWVcIiksIEsgPSBUKFwicGFyZW50UHJvbWlzZVN0YXRlXCIpLCBVID0gXCJQcm9taXNlLnRoZW5cIiwgZyA9IG51bGwsIFkgPSB0cnVlLCBPID0gZmFsc2UsIFAgPSAwO1xuICAgICAgZnVuY3Rpb24gYihoLCBsKSB7XG4gICAgICAgIHJldHVybiAobykgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBJKGgsIGwsIG8pO1xuICAgICAgICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgICAgICAgIEkoaCwgZmFsc2UsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IEQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IGggPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBoIHx8IChoID0gdHJ1ZSwgby5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgfSwgb2UgPSBcIlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGZcIiwgJCA9IFQoXCJjdXJyZW50VGFza1RyYWNlXCIpO1xuICAgICAgZnVuY3Rpb24gSShoLCBsLCBvKSB7XG4gICAgICAgIGNvbnN0IHUgPSBEKCk7XG4gICAgICAgIGlmIChoID09PSBvKVxuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Iob2UpO1xuICAgICAgICBpZiAoaFtrXSA9PT0gZykge1xuICAgICAgICAgIGxldCB2ID0gbnVsbDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgKHR5cGVvZiBvID09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG8gPT0gXCJmdW5jdGlvblwiKSAmJiAodiA9IG8gJiYgby50aGVuKTtcbiAgICAgICAgICB9IGNhdGNoIChSKSB7XG4gICAgICAgICAgICByZXR1cm4gdSgoKSA9PiB7XG4gICAgICAgICAgICAgIEkoaCwgZmFsc2UsIFIpO1xuICAgICAgICAgICAgfSkoKSwgaDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGwgIT09IE8gJiYgbyBpbnN0YW5jZW9mIEEgJiYgby5oYXNPd25Qcm9wZXJ0eShrKSAmJiBvLmhhc093blByb3BlcnR5KGQpICYmIG9ba10gIT09IGcpXG4gICAgICAgICAgICBpKG8pLCBJKGgsIG9ba10sIG9bZF0pO1xuICAgICAgICAgIGVsc2UgaWYgKGwgIT09IE8gJiYgdHlwZW9mIHYgPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdi5jYWxsKG8sIHUoYihoLCBsKSksIHUoYihoLCAhMSkpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKFIpIHtcbiAgICAgICAgICAgICAgdSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgSShoLCBmYWxzZSwgUik7XG4gICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoW2tdID0gbDtcbiAgICAgICAgICAgIGNvbnN0IFIgPSBoW2RdO1xuICAgICAgICAgICAgaWYgKGhbZF0gPSBvLCBoW3hdID09PSB4ICYmIGwgPT09IFkgJiYgKGhba10gPSBoW0tdLCBoW2RdID0gaFtWXSksIGwgPT09IE8gJiYgbyBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG0gPSBhLmN1cnJlbnRUYXNrICYmIGEuY3VycmVudFRhc2suZGF0YSAmJiBhLmN1cnJlbnRUYXNrLmRhdGFbTV07XG4gICAgICAgICAgICAgIG0gJiYgZihvLCAkLCB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBtXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBSLmxlbmd0aDsgKVxuICAgICAgICAgICAgICByKGgsIFJbbSsrXSwgUlttKytdLCBSW20rK10sIFJbbSsrXSk7XG4gICAgICAgICAgICBpZiAoUi5sZW5ndGggPT0gMCAmJiBsID09IE8pIHtcbiAgICAgICAgICAgICAgaFtrXSA9IFA7XG4gICAgICAgICAgICAgIGxldCBtID0gbztcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmNhdWdodCAoaW4gcHJvbWlzZSk6IFwiICsgcChvKSArIChvICYmIG8uc3RhY2sgPyBgXG5gICsgby5zdGFjayA6IFwiXCIpKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoTikge1xuICAgICAgICAgICAgICAgIG0gPSBOO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHcgJiYgKG0udGhyb3dPcmlnaW5hbCA9IHRydWUpLCBtLnJlamVjdGlvbiA9IG8sIG0ucHJvbWlzZSA9IGgsIG0uem9uZSA9IGEuY3VycmVudCwgbS50YXNrID0gYS5jdXJyZW50VGFzaywgeS5wdXNoKG0pLCBlLnNjaGVkdWxlTWljcm9UYXNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoO1xuICAgICAgfVxuICAgICAgY29uc3QgcyA9IFQoXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKTtcbiAgICAgIGZ1bmN0aW9uIGkoaCkge1xuICAgICAgICBpZiAoaFtrXSA9PT0gUCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBsID0gYVtzXTtcbiAgICAgICAgICAgIGwgJiYgdHlwZW9mIGwgPT0gXCJmdW5jdGlvblwiICYmIGwuY2FsbCh0aGlzLCB7IHJlamVjdGlvbjogaFtkXSwgcHJvbWlzZTogaCB9KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICB9XG4gICAgICAgICAgaFtrXSA9IE87XG4gICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCB5Lmxlbmd0aDsgbCsrKVxuICAgICAgICAgICAgaCA9PT0geVtsXS5wcm9taXNlICYmIHkuc3BsaWNlKGwsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiByKGgsIGwsIG8sIHUsIHYpIHtcbiAgICAgICAgaShoKTtcbiAgICAgICAgY29uc3QgUiA9IGhba10sIG0gPSBSID8gdHlwZW9mIHUgPT0gXCJmdW5jdGlvblwiID8gdSA6IHJlIDogdHlwZW9mIHYgPT0gXCJmdW5jdGlvblwiID8gdiA6IEo7XG4gICAgICAgIGwuc2NoZWR1bGVNaWNyb1Rhc2soVSwgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBOID0gaFtkXSwgWiA9ICEhbyAmJiB4ID09PSBvW3hdO1xuICAgICAgICAgICAgWiAmJiAob1tWXSA9IE4sIG9bS10gPSBSKTtcbiAgICAgICAgICAgIGNvbnN0IEwgPSBsLnJ1bihtLCB2b2lkIDAsIFogJiYgbSAhPT0gSiAmJiBtICE9PSByZSA/IFtdIDogW05dKTtcbiAgICAgICAgICAgIEkobywgITAsIEwpO1xuICAgICAgICAgIH0gY2F0Y2ggKE4pIHtcbiAgICAgICAgICAgIEkobywgZmFsc2UsIE4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgbyk7XG4gICAgICB9XG4gICAgICBjb25zdCBFID0gXCJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH1cIiwgRyA9IGZ1bmN0aW9uKCkge1xuICAgICAgfSwgY2UgPSBuLkFnZ3JlZ2F0ZUVycm9yO1xuICAgICAgY2xhc3MgQSB7XG4gICAgICAgIHN0YXRpYyB0b1N0cmluZygpIHtcbiAgICAgICAgICByZXR1cm4gRTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgcmVzb2x2ZShsKSB7XG4gICAgICAgICAgcmV0dXJuIGwgaW5zdGFuY2VvZiBBID8gbCA6IEkobmV3IHRoaXMobnVsbCksIFksIGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyByZWplY3QobCkge1xuICAgICAgICAgIHJldHVybiBJKG5ldyB0aGlzKG51bGwpLCBPLCBsKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgd2l0aFJlc29sdmVycygpIHtcbiAgICAgICAgICBjb25zdCBsID0ge307XG4gICAgICAgICAgcmV0dXJuIGwucHJvbWlzZSA9IG5ldyBBKChvLCB1KSA9PiB7XG4gICAgICAgICAgICBsLnJlc29sdmUgPSBvLCBsLnJlamVjdCA9IHU7XG4gICAgICAgICAgfSksIGw7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGFueShsKSB7XG4gICAgICAgICAgaWYgKCFsIHx8IHR5cGVvZiBsW1N5bWJvbC5pdGVyYXRvcl0gIT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBjZShbXSwgXCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZFwiKSk7XG4gICAgICAgICAgY29uc3QgbyA9IFtdO1xuICAgICAgICAgIGxldCB1ID0gMDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChsZXQgbSBvZiBsKVxuICAgICAgICAgICAgICB1KyssIG8ucHVzaChBLnJlc29sdmUobSkpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBjZShbXSwgXCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZFwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1ID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBjZShbXSwgXCJBbGwgcHJvbWlzZXMgd2VyZSByZWplY3RlZFwiKSk7XG4gICAgICAgICAgbGV0IHYgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBSID0gW107XG4gICAgICAgICAgcmV0dXJuIG5ldyBBKChtLCBOKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBaID0gMDsgWiA8IG8ubGVuZ3RoOyBaKyspXG4gICAgICAgICAgICAgIG9bWl0udGhlbigoTCkgPT4ge1xuICAgICAgICAgICAgICAgIHYgfHwgKHYgPSB0cnVlLCBtKEwpKTtcbiAgICAgICAgICAgICAgfSwgKEwpID0+IHtcbiAgICAgICAgICAgICAgICBSLnB1c2goTCksIHUtLSwgdSA9PT0gMCAmJiAodiA9IHRydWUsIE4obmV3IGNlKFIsIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHJhY2UobCkge1xuICAgICAgICAgIGxldCBvLCB1LCB2ID0gbmV3IHRoaXMoKE4sIFopID0+IHtcbiAgICAgICAgICAgIG8gPSBOLCB1ID0gWjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBmdW5jdGlvbiBSKE4pIHtcbiAgICAgICAgICAgIG8oTik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIG0oTikge1xuICAgICAgICAgICAgdShOKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgTiBvZiBsKVxuICAgICAgICAgICAgbmUoTikgfHwgKE4gPSB0aGlzLnJlc29sdmUoTikpLCBOLnRoZW4oUiwgbSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGFsbChsKSB7XG4gICAgICAgICAgcmV0dXJuIEEuYWxsV2l0aENhbGxiYWNrKGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhbGxTZXR0bGVkKGwpIHtcbiAgICAgICAgICByZXR1cm4gKHRoaXMgJiYgdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBBID8gdGhpcyA6IEEpLmFsbFdpdGhDYWxsYmFjayhsLCB7XG4gICAgICAgICAgICB0aGVuQ2FsbGJhY2s6ICh1KSA9PiAoeyBzdGF0dXM6IFwiZnVsZmlsbGVkXCIsIHZhbHVlOiB1IH0pLFxuICAgICAgICAgICAgZXJyb3JDYWxsYmFjazogKHUpID0+ICh7IHN0YXR1czogXCJyZWplY3RlZFwiLCByZWFzb246IHUgfSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgYWxsV2l0aENhbGxiYWNrKGwsIG8pIHtcbiAgICAgICAgICBsZXQgdSwgdiwgUiA9IG5ldyB0aGlzKChMLCBXKSA9PiB7XG4gICAgICAgICAgICB1ID0gTCwgdiA9IFc7XG4gICAgICAgICAgfSksIG0gPSAyLCBOID0gMDtcbiAgICAgICAgICBjb25zdCBaID0gW107XG4gICAgICAgICAgZm9yIChsZXQgTCBvZiBsKSB7XG4gICAgICAgICAgICBuZShMKSB8fCAoTCA9IHRoaXMucmVzb2x2ZShMKSk7XG4gICAgICAgICAgICBjb25zdCBXID0gTjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIEwudGhlbigocSkgPT4ge1xuICAgICAgICAgICAgICAgIFpbV10gPSBvID8gby50aGVuQ2FsbGJhY2socSkgOiBxLCBtLS0sIG0gPT09IDAgJiYgdShaKTtcbiAgICAgICAgICAgICAgfSwgKHEpID0+IHtcbiAgICAgICAgICAgICAgICBvID8gKFpbV10gPSBvLmVycm9yQ2FsbGJhY2socSksIG0tLSwgbSA9PT0gMCAmJiB1KFopKSA6IHYocSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCAocSkge1xuICAgICAgICAgICAgICB2KHEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbSsrLCBOKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtIC09IDIsIG0gPT09IDAgJiYgdShaKSwgUjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdHJ1Y3RvcihsKSB7XG4gICAgICAgICAgY29uc3QgbyA9IHRoaXM7XG4gICAgICAgICAgaWYgKCEobyBpbnN0YW5jZW9mIEEpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTXVzdCBiZSBhbiBpbnN0YW5jZW9mIFByb21pc2UuXCIpO1xuICAgICAgICAgIG9ba10gPSBnLCBvW2RdID0gW107XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHUgPSBEKCk7XG4gICAgICAgICAgICBsICYmIGwodShiKG8sIFkpKSwgdShiKG8sIE8pKSk7XG4gICAgICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICAgICAgSShvLCBmYWxzZSwgdSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICAgICAgICByZXR1cm4gXCJQcm9taXNlXCI7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IFtTeW1ib2wuc3BlY2llc10oKSB7XG4gICAgICAgICAgcmV0dXJuIEE7XG4gICAgICAgIH1cbiAgICAgICAgdGhlbihsLCBvKSB7XG4gICAgICAgICAgbGV0IHUgPSB0aGlzLmNvbnN0cnVjdG9yPy5bU3ltYm9sLnNwZWNpZXNdO1xuICAgICAgICAgICghdSB8fCB0eXBlb2YgdSAhPSBcImZ1bmN0aW9uXCIpICYmICh1ID0gdGhpcy5jb25zdHJ1Y3RvciB8fCBBKTtcbiAgICAgICAgICBjb25zdCB2ID0gbmV3IHUoRyksIFIgPSBhLmN1cnJlbnQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXNba10gPT0gZyA/IHRoaXNbZF0ucHVzaChSLCB2LCBsLCBvKSA6IHIodGhpcywgUiwgdiwgbCwgbyksIHY7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2gobCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRoZW4obnVsbCwgbCk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseShsKSB7XG4gICAgICAgICAgbGV0IG8gPSB0aGlzLmNvbnN0cnVjdG9yPy5bU3ltYm9sLnNwZWNpZXNdO1xuICAgICAgICAgICghbyB8fCB0eXBlb2YgbyAhPSBcImZ1bmN0aW9uXCIpICYmIChvID0gQSk7XG4gICAgICAgICAgY29uc3QgdSA9IG5ldyBvKEcpO1xuICAgICAgICAgIHVbeF0gPSB4O1xuICAgICAgICAgIGNvbnN0IHYgPSBhLmN1cnJlbnQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXNba10gPT0gZyA/IHRoaXNbZF0ucHVzaCh2LCB1LCBsLCBsKSA6IHIodGhpcywgdiwgdSwgbCwgbCksIHU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEEucmVzb2x2ZSA9IEEucmVzb2x2ZSwgQS5yZWplY3QgPSBBLnJlamVjdCwgQS5yYWNlID0gQS5yYWNlLCBBLmFsbCA9IEEuYWxsO1xuICAgICAgY29uc3QgZ2UgPSBuW19dID0gbi5Qcm9taXNlO1xuICAgICAgbi5Qcm9taXNlID0gQTtcbiAgICAgIGNvbnN0IHllID0gVChcInRoZW5QYXRjaGVkXCIpO1xuICAgICAgZnVuY3Rpb24gc2UoaCkge1xuICAgICAgICBjb25zdCBsID0gaC5wcm90b3R5cGUsIG8gPSBjKGwsIFwidGhlblwiKTtcbiAgICAgICAgaWYgKG8gJiYgKG8ud3JpdGFibGUgPT09IGZhbHNlIHx8ICFvLmNvbmZpZ3VyYWJsZSkpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB1ID0gbC50aGVuO1xuICAgICAgICBsW0NdID0gdSwgaC5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uKHYsIFIpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEEoKE4sIFopID0+IHtcbiAgICAgICAgICAgIHUuY2FsbCh0aGlzLCBOLCBaKTtcbiAgICAgICAgICB9KS50aGVuKHYsIFIpO1xuICAgICAgICB9LCBoW3llXSA9IHRydWU7XG4gICAgICB9XG4gICAgICBlLnBhdGNoVGhlbiA9IHNlO1xuICAgICAgZnVuY3Rpb24gQ2UoaCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24obCwgbykge1xuICAgICAgICAgIGxldCB1ID0gaC5hcHBseShsLCBvKTtcbiAgICAgICAgICBpZiAodSBpbnN0YW5jZW9mIEEpXG4gICAgICAgICAgICByZXR1cm4gdTtcbiAgICAgICAgICBsZXQgdiA9IHUuY29uc3RydWN0b3I7XG4gICAgICAgICAgcmV0dXJuIHZbeWVdIHx8IHNlKHYpLCB1O1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGdlICYmIChzZShnZSksIEVlKG4sIFwiZmV0Y2hcIiwgKGgpID0+IENlKGgpKSksIFByb21pc2VbYS5fX3N5bWJvbF9fKFwidW5jYXVnaHRQcm9taXNlRXJyb3JzXCIpXSA9IHksIEE7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gTXQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwidG9TdHJpbmdcIiwgKG4pID0+IHtcbiAgICAgIGNvbnN0IGEgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsIGUgPSBIKFwiT3JpZ2luYWxEZWxlZ2F0ZVwiKSwgYyA9IEgoXCJQcm9taXNlXCIpLCBmID0gSChcIkVycm9yXCIpLCBwID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcyA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICBjb25zdCBfID0gdGhpc1tlXTtcbiAgICAgICAgICBpZiAoXylcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgXyA9PSBcImZ1bmN0aW9uXCIgPyBhLmNhbGwoXykgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoXyk7XG4gICAgICAgICAgaWYgKHRoaXMgPT09IFByb21pc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IEMgPSBuW2NdO1xuICAgICAgICAgICAgaWYgKEMpXG4gICAgICAgICAgICAgIHJldHVybiBhLmNhbGwoQyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzID09PSBFcnJvcikge1xuICAgICAgICAgICAgY29uc3QgQyA9IG5bZl07XG4gICAgICAgICAgICBpZiAoQylcbiAgICAgICAgICAgICAgcmV0dXJuIGEuY2FsbChDKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEuY2FsbCh0aGlzKTtcbiAgICAgIH07XG4gICAgICBwW2VdID0gYSwgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gcDtcbiAgICAgIGNvbnN0IFQgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLCB5ID0gXCJbb2JqZWN0IFByb21pc2VdXCI7XG4gICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgUHJvbWlzZSA9PSBcImZ1bmN0aW9uXCIgJiYgdGhpcyBpbnN0YW5jZW9mIFByb21pc2UgPyB5IDogVC5jYWxsKHRoaXMpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBJdCh0LCBuLCBhLCBlLCBjKSB7XG4gICAgY29uc3QgZiA9IFpvbmUuX19zeW1ib2xfXyhlKTtcbiAgICBpZiAobltmXSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBwID0gbltmXSA9IG5bZV07XG4gICAgbltlXSA9IGZ1bmN0aW9uKFQsIHksIHcpIHtcbiAgICAgIHJldHVybiB5ICYmIHkucHJvdG90eXBlICYmIGMuZm9yRWFjaChmdW5jdGlvbihfKSB7XG4gICAgICAgIGNvbnN0IEMgPSBgJHthfS4ke2V9OjpgICsgXywgTSA9IHkucHJvdG90eXBlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChNLmhhc093blByb3BlcnR5KF8pKSB7XG4gICAgICAgICAgICBjb25zdCBGID0gdC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTSwgXyk7XG4gICAgICAgICAgICBGICYmIEYudmFsdWUgPyAoRi52YWx1ZSA9IHQud3JhcFdpdGhDdXJyZW50Wm9uZShGLnZhbHVlLCBDKSwgdC5fcmVkZWZpbmVQcm9wZXJ0eSh5LnByb3RvdHlwZSwgXywgRikpIDogTVtfXSAmJiAoTVtfXSA9IHQud3JhcFdpdGhDdXJyZW50Wm9uZShNW19dLCBDKSk7XG4gICAgICAgICAgfSBlbHNlIE1bX10gJiYgKE1bX10gPSB0LndyYXBXaXRoQ3VycmVudFpvbmUoTVtfXSwgQykpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgfVxuICAgICAgfSksIHAuY2FsbChuLCBULCB5LCB3KTtcbiAgICB9LCB0LmF0dGFjaE9yaWdpblRvUGF0Y2hlZChuW2VdLCBwKTtcbiAgfVxuICBmdW5jdGlvbiBBdCh0KSB7XG4gICAgdC5fX2xvYWRfcGF0Y2goXCJ1dGlsXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBjb25zdCBjID0gQmUobik7XG4gICAgICBlLnBhdGNoT25Qcm9wZXJ0aWVzID0gUWUsIGUucGF0Y2hNZXRob2QgPSBFZSwgZS5iaW5kQXJndW1lbnRzID0gVmUsIGUucGF0Y2hNYWNyb1Rhc2sgPSB2dDtcbiAgICAgIGNvbnN0IGYgPSBhLl9fc3ltYm9sX18oXCJCTEFDS19MSVNURURfRVZFTlRTXCIpLCBwID0gYS5fX3N5bWJvbF9fKFwiVU5QQVRDSEVEX0VWRU5UU1wiKTtcbiAgICAgIG5bcF0gJiYgKG5bZl0gPSBuW3BdKSwgbltmXSAmJiAoYVtmXSA9IGFbcF0gPSBuW2ZdKSwgZS5wYXRjaEV2ZW50UHJvdG90eXBlID0gUnQsIGUucGF0Y2hFdmVudFRhcmdldCA9IFB0LCBlLmlzSUVPckVkZ2UgPSBidCwgZS5PYmplY3REZWZpbmVQcm9wZXJ0eSA9IHRlLCBlLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGVlLCBlLk9iamVjdENyZWF0ZSA9IGZlLCBlLkFycmF5U2xpY2UgPSBrZSwgZS5wYXRjaENsYXNzID0gU2UsIGUud3JhcFdpdGhDdXJyZW50Wm9uZSA9IHhlLCBlLmZpbHRlclByb3BlcnRpZXMgPSBhdCwgZS5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQgPSBwZSwgZS5fcmVkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgZS5wYXRjaENhbGxiYWNrcyA9IEl0LCBlLmdldEdsb2JhbE9iamVjdHMgPSAoKSA9PiAoe1xuICAgICAgICBnbG9iYWxTb3VyY2VzOiBydCxcbiAgICAgICAgem9uZVN5bWJvbEV2ZW50TmFtZXM6IGFlLFxuICAgICAgICBldmVudE5hbWVzOiBjLFxuICAgICAgICBpc0Jyb3dzZXI6IHplLFxuICAgICAgICBpc01peDogJGUsXG4gICAgICAgIGlzTm9kZTogWmUsXG4gICAgICAgIFRSVUVfU1RSOiBfZSxcbiAgICAgICAgRkFMU0VfU1RSOiBUZSxcbiAgICAgICAgWk9ORV9TWU1CT0xfUFJFRklYOiB3ZSxcbiAgICAgICAgQUREX0VWRU5UX0xJU1RFTkVSX1NUUjogdmUsXG4gICAgICAgIFJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFI6IEFlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBqdCh0KSB7XG4gICAgTHQodCksIE10KHQpLCBBdCh0KTtcbiAgfVxuICBjb25zdCB1dCA9IHooKTtcbiAgcmV0dXJuIGp0KHV0KSwgWnQodXQpLCBwdDtcbn1cbkZ0KCk7XG5cbmV4cG9ydCB7IHp0IGFzIFpvbmVDb250ZXh0TWFuYWdlciB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsVUFBVTtBQUV4QixTQUFTQyxHQUFHQyxHQUFHO0FBQ2IsU0FBT0EsTUFBTSxXQUFXQSxJQUFJLENBQUMsSUFBSSxPQUFPQSxFQUFFLG9CQUFvQixjQUFjLE9BQU9BLEVBQUUsdUJBQXVCO0FBQzlHO0FBQ0EsSUFBSUMsS0FBSyxtQkFBbUJDO0FBQUE7QUFBQSxFQUUxQixXQUFXO0FBQ1QsYUFBU0YsSUFBSTtBQUNYLFdBQUssV0FBVyxJQUFPLEtBQUssZUFBZTtBQUFBLElBQzdDO0FBQ0EsV0FBT0EsRUFBRSxVQUFVLHlCQUF5QixTQUFTRyxHQUFHO0FBQ3RELGFBQU9BLEtBQUtBLEVBQUUsSUFBSUYsRUFBRSxLQUFLSDtBQUFBLElBQzNCLEdBQUdFLEVBQUUsVUFBVSxnQkFBZ0IsU0FBU0csR0FBR0MsR0FBRztBQUM1QyxVQUFJQyxJQUFJLE1BQU0sS0FBSyxXQUFXO0FBQzVCLGlCQUFTLEtBQUssTUFBTUMsS0FBSyxDQUFDLEdBQUdDLEtBQUssR0FBR0Es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QW9CLE9BQU8sZ0JBQWdCQSxFQUFFLGlCQUFpQnFHLElBQUlyRyxFQUFFLG1CQUFtQixPQUFPO0FBQUEsUUFDN2EsZUFBZTtBQUFBLFFBQ2Ysc0JBQXNCMEQ7QUFBQSxRQUN0QixZQUFZbkM7QUFBQSxRQUNaLFdBQVd1QjtBQUFBLFFBQ1gsT0FBT0M7QUFBQSxRQUNQLFFBQVFGO0FBQUEsUUFDUixVQUFVO0FBQUEsUUFDVixXQUFXYjtBQUFBLFFBQ1gsb0JBQW9CQztBQUFBLFFBQ3BCLHdCQUF3QnpDO0FBQUEsUUFDeEIsMkJBQTJCcUM7QUFBQSxNQUM3QjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDQSxXQUFTMEUsR0FBRzNHLEdBQUc7QUFDYixJQUFBcUcsR0FBR3JHLENBQUMsR0FBR3VHLEdBQUd2RyxDQUFDLEdBQUcwRyxHQUFHMUcsQ0FBQztBQUFBLEVBQ3BCO0FBQ0EsUUFBTSxLQUFLUixFQUFFO0FBQ2IsU0FBT21ILEdBQUcsRUFBRSxHQUFHVixHQUFHLEVBQUUsR0FBR3BHO0FBQ3pCO0FBQ0FFLEdBQUc7IiwKICAibmFtZXMiOiBbIlFpIiwgInh0IiwgImoiLCAiRXQiLCAienQiLCAiUyIsICJCIiwgInoiLCAiaWUiLCAiZmUiLCAia2UiLCAidmUiLCAicHQiLCAiZ3QiLCAiRnQiLCAidCIsICJJIiwgImEiLCAicyIsICJlIiwgImIiLCAiRCIsICJpIiwgIkUiLCAiUCIsICJmIiwgIkciLCAiY2UiLCAiQSIsICJKIiwgIlkiLCAiZyIsICJnZSIsICJ4IiwgImQiLCAieWUiLCAiSyIsICJrIiwgIkNlIiwgInAiLCAiVSIsICJWIiwgImMiLCAiVCIsICJDIiwgIk0iLCAiRiIsICIkIiwgIkFlIiwgImplIiwgIkhlIiwgIlRlIiwgIndlIiwgInhlIiwgIkZlIiwgIkgiLCAiTmUiLCAiRGUiLCAibXQiLCAiVmUiLCAieXQiLCAiWGUiLCAicGUiLCAiWWUiLCAiWmUiLCAiemUiLCAiJGUiLCAiTGUiLCAia3QiLCAiSmUiLCAiS2UiLCAiU2UiLCAiRWUiLCAidnQiLCAiR2UiLCAiYnQiLCAiQ3QiLCAiYWUiLCAiaXQiLCAiUHQiLCAidSIsICJ2IiwgIlIiLCAiaCIsICJOIiwgIloiLCAiTCIsICJtZSIsICJoZSIsICJQZSIsICJkZSIsICJVZSIsICJmdCIsICJIdCIsICJXZSIsICJodCIsICJSZSIsICJkdCIsICJJZSIsICJUdCIsICJPZSIsICJjdCIsICJSdCIsICJ3dCIsICJNZSIsICJiZSIsICJEdCIsICJTdCIsICJPdCIsICJhdCIsICJCZSIsICJOdCIsICJadCIsICJyIiwgInkiLCAidyIsICJMdCIsICJvIiwgIk10IiwgIl8iLCAiSXQiLCAiQXQiLCAianQiXQp9Cg==
|