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