@getopenpay/openpay-js-react 0.5.14 → 0.5.15

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.
Files changed (49) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{ExportResult-B-YLKMaU-DKI4wi_s.js → ExportResult-BacsqwKA-wgTHEn_9.js} +1 -1
  3. package/dist/Resource-C_JyOUi0-DCzIGxs8.js +176 -0
  4. package/dist/SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js +910 -0
  5. package/dist/_commonjsHelpers-CdLE1o9f-ChUIkuR8.js +30 -0
  6. package/dist/detect-resources-WIF4Hgfd-BW23wWaP.js +862 -0
  7. package/dist/diag-api-DbLQG6Cy-7Q64bfX9.js +6 -0
  8. package/dist/index-0_SuCli2-B5_tBBpx.js +430 -0
  9. package/dist/index-3-QFb-PY-DJRVxNSq.js +127 -0
  10. package/dist/index-B2hBQXxN-CgWoAORq.js +6 -0
  11. package/dist/index-BJ3-FtuX-DlTusXVc.js +28 -0
  12. package/dist/index-CDEhufnp-CDtO0j1l.js +18 -0
  13. package/dist/index-CV8wT6Y2-Bh-lYVds.js +6718 -0
  14. package/dist/index-DIoaqP4_-Cs74t_lP.js +1012 -0
  15. package/dist/index-DJhVQsLX-BiIZL-r4.js +147 -0
  16. package/dist/index-Din5I5pT-Be1fPmsi.js +1613 -0
  17. package/dist/index-nPWqtn7T.js +9357 -0
  18. package/dist/index.d.ts +24 -0
  19. package/dist/index.js +8 -8
  20. package/dist/lifecycle-D1BdEbZs-BvuQx__u.js +119 -0
  21. package/dist/{metrics-api-kGWvPyP1-D3Nmj2Ml.js → metrics-api-B_K2nQRV-Be59r2AI.js} +13 -13
  22. package/dist/sdk-info-ChuKu8zW-BkU0NT3O.js +285 -0
  23. package/dist/suppress-tracing-i166ZvAf-D2QqEK4Q.js +17 -0
  24. package/dist/url-D2-xNTDs-BLiqCwPG.js +798 -0
  25. package/dist/utils-BFjwGsZE-dHVj8huE.js +101 -0
  26. package/dist/utils-Blz-BInC-461m4Gx4.js +270 -0
  27. package/dist/utils-De78ey-v-ChjePi4C.js +12 -0
  28. package/package.json +5 -5
  29. package/dist/Resource-CWcxyqCu-BpY8XBEt.js +0 -176
  30. package/dist/SimpleSpanProcessor-C1qhGgiR-BsuHTDv6.js +0 -957
  31. package/dist/_commonjsHelpers-f76XedMs-N1iNS-iQ.js +0 -25
  32. package/dist/detect-resources-Dn5v7ndj-Cjz2K7Ne.js +0 -854
  33. package/dist/diag-api-CsQOTGkN-xb6cqTYK.js +0 -6
  34. package/dist/index-B0WqhX79-DcfF1_Rw.js +0 -6685
  35. package/dist/index-BBW4S5yj-CLc9aNqW.js +0 -150
  36. package/dist/index-BikTboCM-CuVpQZbQ.js +0 -1593
  37. package/dist/index-CTgGlkZ9-_jFlsPe_.js +0 -431
  38. package/dist/index-CWofBZiq-C1KAGcbi.js +0 -52
  39. package/dist/index-Cc1XQnJP-Cj99cshF.js +0 -130
  40. package/dist/index-CyljyZDC-CHsQ1lEf.js +0 -330
  41. package/dist/index-D-CzF5e8-BeCsZ_lY.js +0 -19
  42. package/dist/index-DXlPRASH.js +0 -9420
  43. package/dist/index-Dj77MBTj-Zoe1kwBN.js +0 -830
  44. package/dist/lifecycle-BjQ-7GLm-BmSFW2aE.js +0 -119
  45. package/dist/sdk-info-DDU3_0Kq-B_Ptfv97.js +0 -484
  46. package/dist/url-4OFtf8y3-Cudf4p-r.js +0 -797
  47. package/dist/utils-B8mlyr-p-D5QT4FOw.js +0 -142
  48. package/dist/utils-CX5YT7yI-BbTNmH0Z.js +0 -14
  49. package/dist/utils-DvAb8FQJ-4qBn4nnT.js +0 -381
@@ -0,0 +1,6 @@
1
+ import { v as r } from "./index-nPWqtn7T.js";
2
+ var a = r.instance();
3
+ export {
4
+ a as r
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiZGlhZy1hcGktRGJMUUc2Q3ktIX57MDBhfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHYgYXMgdnQgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcblxudmFyIHIgPSB2dC5pbnN0YW5jZSgpO1xuXG5leHBvcnQgeyByIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxTQUFVO0FBRXhCLElBQUlDLElBQUlELEVBQUcsU0FBUzsiLAogICJuYW1lcyI6IFsidnQiLCAiciJdCn0K
@@ -0,0 +1,430 @@
1
+ import { r as D } from "./diag-api-DbLQG6Cy-7Q64bfX9.js";
2
+ import { J as B, q as z, Z as $, $ as W, y as v, a as X, x as Z, k as G, p as C, O as I, E as J, h as b } from "./url-D2-xNTDs-BLiqCwPG.js";
3
+ import { B as V, U as K, W as Q } from "./utils-Blz-BInC-461m4Gx4.js";
4
+ import { T as E, y as k, C as x, b as Y, V as tt } from "./utils-BFjwGsZE-dHVj8huE.js";
5
+ import { M as P, T as h, e as et } from "./index-nPWqtn7T.js";
6
+ var g;
7
+ (function(o) {
8
+ o.COMPONENT = "component", o.HTTP_ERROR_NAME = "http.error_name", o.HTTP_STATUS_TEXT = "http.status_text";
9
+ })(g || (g = {}));
10
+ var nt = function(o, i, t, n) {
11
+ function r(e) {
12
+ return e instanceof t ? e : new t(function(s) {
13
+ s(e);
14
+ });
15
+ }
16
+ return new (t || (t = Promise))(function(e, s) {
17
+ function a(l) {
18
+ try {
19
+ u(n.next(l));
20
+ } catch (y) {
21
+ s(y);
22
+ }
23
+ }
24
+ function c(l) {
25
+ try {
26
+ u(n.throw(l));
27
+ } catch (y) {
28
+ s(y);
29
+ }
30
+ }
31
+ function u(l) {
32
+ l.done ? e(l.value) : r(l.value).then(a, c);
33
+ }
34
+ u((n = n.apply(o, [])).next());
35
+ });
36
+ }, rt = function(o, i) {
37
+ var t = { label: 0, sent: function() {
38
+ if (e[0] & 1) throw e[1];
39
+ return e[1];
40
+ }, trys: [], ops: [] }, n, r, e, s;
41
+ return s = { next: a(0), throw: a(1), return: a(2) }, typeof Symbol == "function" && (s[Symbol.iterator] = function() {
42
+ return this;
43
+ }), s;
44
+ function a(u) {
45
+ return function(l) {
46
+ return c([u, l]);
47
+ };
48
+ }
49
+ function c(u) {
50
+ if (n) throw new TypeError("Generator is already executing.");
51
+ for (; t; ) try {
52
+ if (n = 1, r && (e = u[0] & 2 ? r.return : u[0] ? r.throw || ((e = r.return) && e.call(r), 0) : r.next) && !(e = e.call(r, u[1])).done) return e;
53
+ switch (r = 0, e && (u = [u[0] & 2, e.value]), u[0]) {
54
+ case 0:
55
+ case 1:
56
+ e = u;
57
+ break;
58
+ case 4:
59
+ return t.label++, { value: u[1], done: !1 };
60
+ case 5:
61
+ t.label++, r = u[1], u = [0];
62
+ continue;
63
+ case 7:
64
+ u = t.ops.pop(), t.trys.pop();
65
+ continue;
66
+ default:
67
+ if (e = t.trys, !(e = e.length > 0 && e[e.length - 1]) && (u[0] === 6 || u[0] === 2)) {
68
+ t = 0;
69
+ continue;
70
+ }
71
+ if (u[0] === 3 && (!e || u[1] > e[0] && u[1] < e[3])) {
72
+ t.label = u[1];
73
+ break;
74
+ }
75
+ if (u[0] === 6 && t.label < e[1]) {
76
+ t.label = e[1], e = u;
77
+ break;
78
+ }
79
+ if (e && t.label < e[2]) {
80
+ t.label = e[2], t.ops.push(u);
81
+ break;
82
+ }
83
+ e[2] && t.ops.pop(), t.trys.pop();
84
+ continue;
85
+ }
86
+ u = i.call(o, t);
87
+ } catch (l) {
88
+ u = [6, l], r = 0;
89
+ } finally {
90
+ n = e = 0;
91
+ }
92
+ if (u[0] & 5) throw u[1];
93
+ return { value: u[0] ? u[1] : void 0, done: !0 };
94
+ }
95
+ }, ot = function(o) {
96
+ var i = typeof Symbol == "function" && Symbol.iterator, t = i && o[i], n = 0;
97
+ if (t) return t.call(o);
98
+ if (o && typeof o.length == "number") return {
99
+ next: function() {
100
+ return o && n >= o.length && (o = void 0), { value: o && o[n++], done: !o };
101
+ }
102
+ };
103
+ throw new TypeError(i ? "Object is not iterable." : "Symbol.iterator is not defined.");
104
+ }, it = function(o, i) {
105
+ var t = typeof Symbol == "function" && o[Symbol.iterator];
106
+ if (!t) return o;
107
+ var n = t.call(o), r, e = [], s;
108
+ try {
109
+ for (; (i === void 0 || i-- > 0) && !(r = n.next()).done; ) e.push(r.value);
110
+ } catch (a) {
111
+ s = { error: a };
112
+ } finally {
113
+ try {
114
+ r && !r.done && (t = n.return) && t.call(n);
115
+ } finally {
116
+ if (s) throw s.error;
117
+ }
118
+ }
119
+ return e;
120
+ }, N = D.createComponentLogger({
121
+ namespace: "@opentelemetry/opentelemetry-instrumentation-fetch/utils"
122
+ });
123
+ function st() {
124
+ for (var o = [], i = 0; i < arguments.length; i++)
125
+ o[i] = arguments[i];
126
+ if (o[0] instanceof URL || typeof o[0] == "string") {
127
+ var t = o[1];
128
+ if (!t?.body)
129
+ return Promise.resolve();
130
+ if (t.body instanceof ReadableStream) {
131
+ var n = at(t.body), r = n.body, e = n.length;
132
+ return t.body = r, e;
133
+ } else
134
+ return Promise.resolve(ut(t.body));
135
+ } else {
136
+ var s = o[0];
137
+ return s?.body ? s.clone().text().then(function(a) {
138
+ return S(a);
139
+ }) : Promise.resolve();
140
+ }
141
+ }
142
+ function at(o) {
143
+ if (!o.pipeThrough)
144
+ return N.warn("Platform has ReadableStream but not pipeThrough!"), {
145
+ body: o,
146
+ length: Promise.resolve(void 0)
147
+ };
148
+ var i = 0, t, n = new Promise(function(e) {
149
+ t = e;
150
+ }), r = new TransformStream({
151
+ start: function() {
152
+ },
153
+ transform: function(e, s) {
154
+ return nt(this, void 0, void 0, function() {
155
+ var a;
156
+ return rt(this, function(c) {
157
+ switch (c.label) {
158
+ case 0:
159
+ return [4, e];
160
+ case 1:
161
+ return a = c.sent(), i += a.byteLength, s.enqueue(e), [
162
+ 2
163
+ /*return*/
164
+ ];
165
+ }
166
+ });
167
+ });
168
+ },
169
+ flush: function() {
170
+ t(i);
171
+ }
172
+ });
173
+ return {
174
+ body: o.pipeThrough(r),
175
+ length: n
176
+ };
177
+ }
178
+ function ut(o) {
179
+ if (typeof Document < "u" && o instanceof Document)
180
+ return new XMLSerializer().serializeToString(document).length;
181
+ if (o instanceof Blob)
182
+ return o.size;
183
+ if (o.byteLength !== void 0)
184
+ return o.byteLength;
185
+ if (o instanceof FormData)
186
+ return ft(o);
187
+ if (o instanceof URLSearchParams)
188
+ return S(o.toString());
189
+ if (typeof o == "string")
190
+ return S(o);
191
+ N.warn("unknown body type");
192
+ }
193
+ var ct = new TextEncoder();
194
+ function S(o) {
195
+ return ct.encode(o).byteLength;
196
+ }
197
+ function ft(o) {
198
+ var i, t, n = 0;
199
+ try {
200
+ for (var r = ot(o.entries()), e = r.next(); !e.done; e = r.next()) {
201
+ var s = it(e.value, 2), a = s[0], c = s[1];
202
+ n += a.length, c instanceof Blob ? n += c.size : n += c.length;
203
+ }
204
+ } catch (u) {
205
+ i = { error: u };
206
+ } finally {
207
+ try {
208
+ e && !e.done && (t = r.return) && t.call(r);
209
+ } finally {
210
+ if (i) throw i.error;
211
+ }
212
+ }
213
+ return n;
214
+ }
215
+ var O = "0.57.2", lt = /* @__PURE__ */ function() {
216
+ var o = function(i, t) {
217
+ return o = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, r) {
218
+ n.__proto__ = r;
219
+ } || function(n, r) {
220
+ for (var e in r) Object.prototype.hasOwnProperty.call(r, e) && (n[e] = r[e]);
221
+ }, o(i, t);
222
+ };
223
+ return function(i, t) {
224
+ if (typeof t != "function" && t !== null)
225
+ throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
226
+ o(i, t);
227
+ function n() {
228
+ this.constructor = i;
229
+ }
230
+ i.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n());
231
+ };
232
+ }(), pt = function(o, i) {
233
+ var t = typeof Symbol == "function" && o[Symbol.iterator];
234
+ if (!t) return o;
235
+ var n = t.call(o), r, e = [], s;
236
+ try {
237
+ for (; (i === void 0 || i-- > 0) && !(r = n.next()).done; ) e.push(r.value);
238
+ } catch (a) {
239
+ s = { error: a };
240
+ } finally {
241
+ try {
242
+ r && !r.done && (t = n.return) && t.call(n);
243
+ } finally {
244
+ if (s) throw s.error;
245
+ }
246
+ }
247
+ return e;
248
+ }, ht = function(o, i, t) {
249
+ if (arguments.length === 2) for (var n = 0, r = i.length, e; n < r; n++)
250
+ (e || !(n in i)) && (e || (e = Array.prototype.slice.call(i, 0, n)), e[n] = i[n]);
251
+ return o.concat(e || Array.prototype.slice.call(i));
252
+ }, _, yt = 300, U = typeof process == "object" && ((_ = process.release) === null || _ === void 0 ? void 0 : _.name) === "node", _t = (
253
+ /** @class */
254
+ function(o) {
255
+ lt(i, o);
256
+ function i(t) {
257
+ t === void 0 && (t = {});
258
+ var n = o.call(this, "@opentelemetry/instrumentation-fetch", O, t) || this;
259
+ return n.component = "fetch", n.version = O, n.moduleName = n.component, n._usedResources = /* @__PURE__ */ new WeakSet(), n._tasksCount = 0, n;
260
+ }
261
+ return i.prototype.init = function() {
262
+ }, i.prototype._addChildSpan = function(t, n) {
263
+ var r = this.tracer.startSpan("CORS Preflight", {
264
+ startTime: n[E.FETCH_START]
265
+ }, P.setSpan(h.active(), t));
266
+ k(r, n, this.getConfig().ignoreNetworkEvents), r.end(n[E.RESPONSE_END]);
267
+ }, i.prototype._addFinalSpanAttributes = function(t, n) {
268
+ var r = x(n.url);
269
+ t.setAttribute(B, n.status), n.statusText != null && t.setAttribute(g.HTTP_STATUS_TEXT, n.statusText), t.setAttribute(z, r.host), t.setAttribute($, r.protocol.replace(":", "")), typeof navigator < "u" && t.setAttribute(W, navigator.userAgent);
270
+ }, i.prototype._addHeaders = function(t, n) {
271
+ if (!Y(n, this.getConfig().propagateTraceHeaderCorsUrls)) {
272
+ var r = {};
273
+ v.inject(h.active(), r), Object.keys(r).length > 0 && this._diag.debug("headers inject skipped due to CORS policy");
274
+ return;
275
+ }
276
+ if (t instanceof Request)
277
+ v.inject(h.active(), t.headers, {
278
+ set: function(e, s, a) {
279
+ return e.set(s, typeof a == "string" ? a : String(a));
280
+ }
281
+ });
282
+ else if (t.headers instanceof Headers)
283
+ v.inject(h.active(), t.headers, {
284
+ set: function(e, s, a) {
285
+ return e.set(s, typeof a == "string" ? a : String(a));
286
+ }
287
+ });
288
+ else if (t.headers instanceof Map)
289
+ v.inject(h.active(), t.headers, {
290
+ set: function(e, s, a) {
291
+ return e.set(s, typeof a == "string" ? a : String(a));
292
+ }
293
+ });
294
+ else {
295
+ var r = {};
296
+ v.inject(h.active(), r), t.headers = Object.assign({}, r, t.headers || {});
297
+ }
298
+ }, i.prototype._clearResources = function() {
299
+ this._tasksCount === 0 && this.getConfig().clearTimingResources && (performance.clearResourceTimings(), this._usedResources = /* @__PURE__ */ new WeakSet());
300
+ }, i.prototype._createSpan = function(t, n) {
301
+ var r;
302
+ if (n === void 0 && (n = {}), X(t, this.getConfig().ignoreUrls)) {
303
+ this._diag.debug("ignoring span as url matches ignored url");
304
+ return;
305
+ }
306
+ var e = (n.method || "GET").toUpperCase(), s = "HTTP " + e;
307
+ return this.tracer.startSpan(s, {
308
+ kind: et.CLIENT,
309
+ attributes: (r = {}, r[g.COMPONENT] = this.moduleName, r[Z] = e, r[G] = t, r)
310
+ });
311
+ }, i.prototype._findResourceAndAddNetworkEvents = function(t, n, r) {
312
+ var e = n.entries;
313
+ if (!e.length) {
314
+ if (!performance.getEntriesByType)
315
+ return;
316
+ e = performance.getEntriesByType("resource");
317
+ }
318
+ var s = tt(n.spanUrl, n.startTime, r, e, this._usedResources, "fetch");
319
+ if (s.mainRequest) {
320
+ var a = s.mainRequest;
321
+ this._markResourceAsUsed(a);
322
+ var c = s.corsPreFlightRequest;
323
+ c && (this._addChildSpan(t, c), this._markResourceAsUsed(c)), k(t, a, this.getConfig().ignoreNetworkEvents);
324
+ }
325
+ }, i.prototype._markResourceAsUsed = function(t) {
326
+ this._usedResources.add(t);
327
+ }, i.prototype._endSpan = function(t, n, r) {
328
+ var e = this, s = I(Date.now()), a = C();
329
+ this._addFinalSpanAttributes(t, r), setTimeout(function() {
330
+ var c;
331
+ (c = n.observer) === null || c === void 0 || c.disconnect(), e._findResourceAndAddNetworkEvents(t, n, a), e._tasksCount--, e._clearResources(), t.end(s);
332
+ }, yt);
333
+ }, i.prototype._patchConstructor = function() {
334
+ var t = this;
335
+ return function(n) {
336
+ var r = t;
337
+ return function() {
338
+ for (var e = [], s = 0; s < arguments.length; s++)
339
+ e[s] = arguments[s];
340
+ var a = this, c = x(e[0] instanceof Request ? e[0].url : String(e[0])).href, u = e[0] instanceof Request ? e[0] : e[1] || {}, l = r._createSpan(c, u);
341
+ if (!l)
342
+ return n.apply(this, e);
343
+ var y = r._prepareSpanData(c);
344
+ r.getConfig().measureRequestSize && st.apply(void 0, ht([], pt(e), !1)).then(function(f) {
345
+ f && l.setAttribute(J, f);
346
+ }).catch(function(f) {
347
+ r._diag.warn("getFetchBodyLength", f);
348
+ });
349
+ function T(f, p) {
350
+ r._applyAttributesAfterFetch(f, u, p), r._endSpan(f, y, {
351
+ status: p.status || 0,
352
+ statusText: p.message,
353
+ url: c
354
+ });
355
+ }
356
+ function w(f, p) {
357
+ r._applyAttributesAfterFetch(f, u, p), p.status >= 200 && p.status < 400 ? r._endSpan(f, y, p) : r._endSpan(f, y, {
358
+ status: p.status,
359
+ statusText: p.statusText,
360
+ url: c
361
+ });
362
+ }
363
+ function j(f, p, d) {
364
+ try {
365
+ var F = d.clone(), L = d.clone(), A = F.body;
366
+ if (A) {
367
+ var H = A.getReader(), R = function() {
368
+ H.read().then(function(m) {
369
+ var M = m.done;
370
+ M ? w(f, L) : R();
371
+ }, function(m) {
372
+ T(f, m);
373
+ });
374
+ };
375
+ R();
376
+ } else
377
+ w(f, d);
378
+ } finally {
379
+ p(d);
380
+ }
381
+ }
382
+ function q(f, p, d) {
383
+ try {
384
+ T(f, d);
385
+ } finally {
386
+ p(d);
387
+ }
388
+ }
389
+ return new Promise(function(f, p) {
390
+ return h.with(P.setSpan(h.active(), l), function() {
391
+ return r._addHeaders(u, c), r._tasksCount++, n.apply(a, u instanceof Request ? [u] : [c, u]).then(j.bind(a, l, f), q.bind(a, l, p));
392
+ });
393
+ });
394
+ };
395
+ };
396
+ }, i.prototype._applyAttributesAfterFetch = function(t, n, r) {
397
+ var e = this, s = this.getConfig().applyCustomAttributesOnSpan;
398
+ s && V(function() {
399
+ return s(t, n, r);
400
+ }, function(a) {
401
+ a && e._diag.error("applyCustomAttributesOnSpan", a);
402
+ });
403
+ }, i.prototype._prepareSpanData = function(t) {
404
+ var n = C(), r = [];
405
+ if (typeof PerformanceObserver != "function")
406
+ return { entries: r, startTime: n, spanUrl: t };
407
+ var e = new PerformanceObserver(function(s) {
408
+ var a = s.getEntries();
409
+ a.forEach(function(c) {
410
+ c.initiatorType === "fetch" && c.name === t && r.push(c);
411
+ });
412
+ });
413
+ return e.observe({
414
+ entryTypes: ["resource"]
415
+ }), { entries: r, observer: e, startTime: n, spanUrl: t };
416
+ }, i.prototype.enable = function() {
417
+ if (U) {
418
+ this._diag.warn("this instrumentation is intended for web usage only, it does not instrument Node.js's fetch()");
419
+ return;
420
+ }
421
+ K(fetch) && (this._unwrap(b, "fetch"), this._diag.debug("removing previous patch for constructor")), this._wrap(b, "fetch", this._patchConstructor());
422
+ }, i.prototype.disable = function() {
423
+ U || (this._unwrap(b, "fetch"), this._usedResources = /* @__PURE__ */ new WeakSet());
424
+ }, i;
425
+ }(Q)
426
+ );
427
+ export {
428
+ _t as FetchInstrumentation
429
+ };
430
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtMF9TdUNsaTItIX57MDA5fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHIgfSBmcm9tICcuL2RpYWctYXBpLURiTFFHNkN5LSF+ezAwYX1+LmpzJztcbmltcG9ydCB7IEogYXMgSkEsIHEgYXMgcUEsIFogYXMgWkEsICQgYXMgJEEsIHkgYXMgeV8sIGEgYXMgWmUsIHggYXMgeEEsIGsgYXMga0EsIHAgYXMgcF8sIE8sIEUgYXMgRXIsIGggYXMgaF8gfSBmcm9tICcuL3VybC1EMi14TlREcy0hfnswMGJ9fi5qcyc7XG5pbXBvcnQgeyBCLCBVIGFzIFUkMSwgVyB9IGZyb20gJy4vdXRpbHMtQmx6LUJJbkMtIX57MDBjfX4uanMnO1xuaW1wb3J0IHsgVCwgeSBhcyB5JDEsIEMsIGIgYXMgYiQxLCBWIH0gZnJvbSAnLi91dGlscy1CRmp3R3NaRS0hfnswMDh9fi5qcyc7XG5pbXBvcnQgeyBNIGFzIE1lLCBUIGFzIFRlLCBlIGFzIGV0IH0gZnJvbSAnLi9pbmRleC0hfnswMDd9fi5qcyc7XG5cbnZhciB5O1xuKGZ1bmN0aW9uKGEpIHtcbiAgYS5DT01QT05FTlQgPSBcImNvbXBvbmVudFwiLCBhLkhUVFBfRVJST1JfTkFNRSA9IFwiaHR0cC5lcnJvcl9uYW1lXCIsIGEuSFRUUF9TVEFUVVNfVEVYVCA9IFwiaHR0cC5zdGF0dXNfdGV4dFwiO1xufSkoeSB8fCAoeSA9IHt9KSk7XG52YXIgbmUgPSBmdW5jdGlvbihhLCBvLCBlLCByKSB7XG4gIGZ1bmN0aW9uIG4odCkge1xuICAgIHJldHVybiB0IGluc3RhbmNlb2YgZSA/IHQgOiBuZXcgZShmdW5jdGlvbihpKSB7XG4gICAgICBpKHQpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKGUgfHwgKGUgPSBQcm9taXNlKSkoZnVuY3Rpb24odCwgaSkge1xuICAgIGZ1bmN0aW9uIHMoYykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShyLm5leHQoYykpO1xuICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICBpKGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmKGMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci50aHJvdyhjKSk7XG4gICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgIGkoaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoYykge1xuICAgICAgYy5kb25lID8gdChjLnZhbHVlKSA6IG4oYy52YWx1ZSkudGhlbihzLCBmKTtcbiAgICB9XG4gICAgdSgociA9IHIuYXBwbHkoYSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn0sIGFlID0gZnVuY3Rpb24oYSwgbykge1xuICB2YXIgZSA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTtcbiAgICByZXR1cm4gdFsxXTtcbiAgfSwgdHJ5czogW10sIG9wczogW10gfSwgciwgbiwgdCwgaTtcbiAgcmV0dXJuIGkgPSB7IG5leHQ6IHMoMCksIHRocm93OiBzKDEpLCByZXR1cm46IHMoMikgfSwgdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgKGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgaTtcbiAgZnVuY3Rpb24gcyh1KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGMpIHtcbiAgICAgIHJldHVybiBmKFt1LCBjXSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBmKHUpIHtcbiAgICBpZiAocikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgZm9yICg7IGU7ICkgdHJ5IHtcbiAgICAgIGlmIChyID0gMSwgbiAmJiAodCA9IHVbMF0gJiAyID8gbi5yZXR1cm4gOiB1WzBdID8gbi50aHJvdyB8fCAoKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pLCAwKSA6IG4ubmV4dCkgJiYgISh0ID0gdC5jYWxsKG4sIHVbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgIHN3aXRjaCAobiA9IDAsIHQgJiYgKHUgPSBbdVswXSAmIDIsIHQudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0ID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBlLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBlLmxhYmVsKyssIG4gPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKHQgPSBlLnRyeXMsICEodCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICBlID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIXQgfHwgdVsxXSA+IHRbMF0gJiYgdVsxXSA8IHRbM10pKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiBlLmxhYmVsIDwgdFsxXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHRbMV0sIHQgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0ICYmIGUubGFiZWwgPCB0WzJdKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdFsyXSwgZS5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0WzJdICYmIGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gby5jYWxsKGEsIGUpO1xuICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgIHUgPSBbNiwgY10sIG4gPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByID0gdCA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufSwgaWUgPSBmdW5jdGlvbihhKSB7XG4gIHZhciBvID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBlID0gbyAmJiBhW29dLCByID0gMDtcbiAgaWYgKGUpIHJldHVybiBlLmNhbGwoYSk7XG4gIGlmIChhICYmIHR5cGVvZiBhLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGEgJiYgciA+PSBhLmxlbmd0aCAmJiAoYSA9IHZvaWQgMCksIHsgdmFsdWU6IGEgJiYgYVtyKytdLCBkb25lOiAhYSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihvID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgb2UgPSBmdW5jdGlvbihhLCBvKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgYVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiBhO1xuICB2YXIgciA9IGUuY2FsbChhKSwgbiwgdCA9IFtdLCBpO1xuICB0cnkge1xuICAgIGZvciAoOyAobyA9PT0gdm9pZCAwIHx8IG8tLSA+IDApICYmICEobiA9IHIubmV4dCgpKS5kb25lOyApIHQucHVzaChuLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGkgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG4gJiYgIW4uZG9uZSAmJiAoZSA9IHIucmV0dXJuKSAmJiBlLmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChpKSB0aHJvdyBpLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdDtcbn0sIFUgPSByLmNyZWF0ZUNvbXBvbmVudExvZ2dlcih7XG4gIG5hbWVzcGFjZTogXCJAb3BlbnRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWluc3RydW1lbnRhdGlvbi1mZXRjaC91dGlsc1wiXG59KTtcbmZ1bmN0aW9uIHNlKCkge1xuICBmb3IgKHZhciBhID0gW10sIG8gPSAwOyBvIDwgYXJndW1lbnRzLmxlbmd0aDsgbysrKVxuICAgIGFbb10gPSBhcmd1bWVudHNbb107XG4gIGlmIChhWzBdIGluc3RhbmNlb2YgVVJMIHx8IHR5cGVvZiBhWzBdID09IFwic3RyaW5nXCIpIHtcbiAgICB2YXIgZSA9IGFbMV07XG4gICAgaWYgKCFlPy5ib2R5KVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChlLmJvZHkgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSkge1xuICAgICAgdmFyIHIgPSB1ZShlLmJvZHkpLCBuID0gci5ib2R5LCB0ID0gci5sZW5ndGg7XG4gICAgICByZXR1cm4gZS5ib2R5ID0gbiwgdDtcbiAgICB9IGVsc2VcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmUoZS5ib2R5KSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGkgPSBhWzBdO1xuICAgIHJldHVybiBpPy5ib2R5ID8gaS5jbG9uZSgpLnRleHQoKS50aGVuKGZ1bmN0aW9uKHMpIHtcbiAgICAgIHJldHVybiBiKHMpO1xuICAgIH0pIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHVlKGEpIHtcbiAgaWYgKCFhLnBpcGVUaHJvdWdoKVxuICAgIHJldHVybiBVLndhcm4oXCJQbGF0Zm9ybSBoYXMgUmVhZGFibGVTdHJlYW0gYnV0IG5vdCBwaXBlVGhyb3VnaCFcIiksIHtcbiAgICAgIGJvZHk6IGEsXG4gICAgICBsZW5ndGg6IFByb21pc2UucmVzb2x2ZSh2b2lkIDApXG4gICAgfTtcbiAgdmFyIG8gPSAwLCBlLCByID0gbmV3IFByb21pc2UoZnVuY3Rpb24odCkge1xuICAgIGUgPSB0O1xuICB9KSwgbiA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB9LFxuICAgIHRyYW5zZm9ybTogZnVuY3Rpb24odCwgaSkge1xuICAgICAgcmV0dXJuIG5lKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHM7XG4gICAgICAgIHJldHVybiBhZSh0aGlzLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgc3dpdGNoIChmLmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIHJldHVybiBbNCwgdF07XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHJldHVybiBzID0gZi5zZW50KCksIG8gKz0gcy5ieXRlTGVuZ3RoLCBpLmVucXVldWUodCksIFtcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGZsdXNoOiBmdW5jdGlvbigpIHtcbiAgICAgIGUobyk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBib2R5OiBhLnBpcGVUaHJvdWdoKG4pLFxuICAgIGxlbmd0aDogclxuICB9O1xufVxuZnVuY3Rpb24gZmUoYSkge1xuICBpZiAodHlwZW9mIERvY3VtZW50IDwgXCJ1XCIgJiYgYSBpbnN0YW5jZW9mIERvY3VtZW50KVxuICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvY3VtZW50KS5sZW5ndGg7XG4gIGlmIChhIGluc3RhbmNlb2YgQmxvYilcbiAgICByZXR1cm4gYS5zaXplO1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSB2b2lkIDApXG4gICAgcmV0dXJuIGEuYnl0ZUxlbmd0aDtcbiAgaWYgKGEgaW5zdGFuY2VvZiBGb3JtRGF0YSlcbiAgICByZXR1cm4gbGUoYSk7XG4gIGlmIChhIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zKVxuICAgIHJldHVybiBiKGEudG9TdHJpbmcoKSk7XG4gIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBiKGEpO1xuICBVLndhcm4oXCJ1bmtub3duIGJvZHkgdHlwZVwiKTtcbn1cbnZhciBjZSA9IG5ldyBUZXh0RW5jb2RlcigpO1xuZnVuY3Rpb24gYihhKSB7XG4gIHJldHVybiBjZS5lbmNvZGUoYSkuYnl0ZUxlbmd0aDtcbn1cbmZ1bmN0aW9uIGxlKGEpIHtcbiAgdmFyIG8sIGUsIHIgPSAwO1xuICB0cnkge1xuICAgIGZvciAodmFyIG4gPSBpZShhLmVudHJpZXMoKSksIHQgPSBuLm5leHQoKTsgIXQuZG9uZTsgdCA9IG4ubmV4dCgpKSB7XG4gICAgICB2YXIgaSA9IG9lKHQudmFsdWUsIDIpLCBzID0gaVswXSwgZiA9IGlbMV07XG4gICAgICByICs9IHMubGVuZ3RoLCBmIGluc3RhbmNlb2YgQmxvYiA/IHIgKz0gZi5zaXplIDogciArPSBmLmxlbmd0aDtcbiAgICB9XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICB0ICYmICF0LmRvbmUgJiYgKGUgPSBuLnJldHVybikgJiYgZS5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG52YXIgayA9IFwiMC41Ny4yXCIsIGRlID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgYSA9IGZ1bmN0aW9uKG8sIGUpIHtcbiAgICByZXR1cm4gYSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgIHIuX19wcm90b19fID0gbjtcbiAgICB9IHx8IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgIGZvciAodmFyIHQgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHQpICYmIChyW3RdID0gblt0XSk7XG4gICAgfSwgYShvLCBlKTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKG8sIGUpIHtcbiAgICBpZiAodHlwZW9mIGUgIT0gXCJmdW5jdGlvblwiICYmIGUgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhlKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgYShvLCBlKTtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IG87XG4gICAgfVxuICAgIG8ucHJvdG90eXBlID0gZSA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoZSkgOiAoci5wcm90b3R5cGUgPSBlLnByb3RvdHlwZSwgbmV3IHIoKSk7XG4gIH07XG59KCksIGhlID0gZnVuY3Rpb24oYSwgbykge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGFbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFlKSByZXR1cm4gYTtcbiAgdmFyIHIgPSBlLmNhbGwoYSksIG4sIHQgPSBbXSwgaTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKG8gPT09IHZvaWQgMCB8fCBvLS0gPiAwKSAmJiAhKG4gPSByLm5leHQoKSkuZG9uZTsgKSB0LnB1c2gobi52YWx1ZSk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBpID0geyBlcnJvcjogcyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBuICYmICFuLmRvbmUgJiYgKGUgPSByLnJldHVybikgJiYgZS5jYWxsKHIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoaSkgdGhyb3cgaS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHQ7XG59LCBwZSA9IGZ1bmN0aW9uKGEsIG8sIGUpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIHIgPSAwLCBuID0gby5sZW5ndGgsIHQ7IHIgPCBuOyByKyspXG4gICAgKHQgfHwgIShyIGluIG8pKSAmJiAodCB8fCAodCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG8sIDAsIHIpKSwgdFtyXSA9IG9bcl0pO1xuICByZXR1cm4gYS5jb25jYXQodCB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvKSk7XG59LCBTLCB2ZSA9IDMwMCwgSCA9IHR5cGVvZiBwcm9jZXNzID09IFwib2JqZWN0XCIgJiYgKChTID0gcHJvY2Vzcy5yZWxlYXNlKSA9PT0gbnVsbCB8fCBTID09PSB2b2lkIDAgPyB2b2lkIDAgOiBTLm5hbWUpID09PSBcIm5vZGVcIiwgU2UgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oYSkge1xuICAgIGRlKG8sIGEpO1xuICAgIGZ1bmN0aW9uIG8oZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pO1xuICAgICAgdmFyIHIgPSBhLmNhbGwodGhpcywgXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZmV0Y2hcIiwgaywgZSkgfHwgdGhpcztcbiAgICAgIHJldHVybiByLmNvbXBvbmVudCA9IFwiZmV0Y2hcIiwgci52ZXJzaW9uID0gaywgci5tb2R1bGVOYW1lID0gci5jb21wb25lbnQsIHIuX3VzZWRSZXNvdXJjZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtTZXQoKSwgci5fdGFza3NDb3VudCA9IDAsIHI7XG4gICAgfVxuICAgIHJldHVybiBvLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZENoaWxkU3BhbiA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICAgIHZhciBuID0gdGhpcy50cmFjZXIuc3RhcnRTcGFuKFwiQ09SUyBQcmVmbGlnaHRcIiwge1xuICAgICAgICBzdGFydFRpbWU6IHJbVC5GRVRDSF9TVEFSVF1cbiAgICAgIH0sIE1lLnNldFNwYW4oVGUuYWN0aXZlKCksIGUpKTtcbiAgICAgIHkkMShuLCByLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZU5ldHdvcmtFdmVudHMpLCBuLmVuZChyW1QuUkVTUE9OU0VfRU5EXSk7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZEZpbmFsU3BhbkF0dHJpYnV0ZXMgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgICB2YXIgbiA9IEMoci51cmwpO1xuICAgICAgZS5zZXRBdHRyaWJ1dGUoSkEsIHIuc3RhdHVzKSwgci5zdGF0dXNUZXh0ICE9IG51bGwgJiYgZS5zZXRBdHRyaWJ1dGUoeS5IVFRQX1NUQVRVU19URVhULCByLnN0YXR1c1RleHQpLCBlLnNldEF0dHJpYnV0ZShxQSwgbi5ob3N0KSwgZS5zZXRBdHRyaWJ1dGUoWkEsIG4ucHJvdG9jb2wucmVwbGFjZShcIjpcIiwgXCJcIikpLCB0eXBlb2YgbmF2aWdhdG9yIDwgXCJ1XCIgJiYgZS5zZXRBdHRyaWJ1dGUoJEEsIG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9hZGRIZWFkZXJzID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgaWYgKCFiJDEociwgdGhpcy5nZXRDb25maWcoKS5wcm9wYWdhdGVUcmFjZUhlYWRlckNvcnNVcmxzKSkge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBPYmplY3Qua2V5cyhuKS5sZW5ndGggPiAwICYmIHRoaXMuX2RpYWcuZGVidWcoXCJoZWFkZXJzIGluamVjdCBza2lwcGVkIGR1ZSB0byBDT1JTIHBvbGljeVwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBSZXF1ZXN0KVxuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIGUuaGVhZGVycywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24odCwgaSwgcykge1xuICAgICAgICAgICAgcmV0dXJuIHQuc2V0KGksIHR5cGVvZiBzID09IFwic3RyaW5nXCIgPyBzIDogU3RyaW5nKHMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgZWxzZSBpZiAoZS5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycylcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2UgaWYgKGUuaGVhZGVycyBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBlLmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBuLCBlLmhlYWRlcnMgfHwge30pO1xuICAgICAgfVxuICAgIH0sIG8ucHJvdG90eXBlLl9jbGVhclJlc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fdGFza3NDb3VudCA9PT0gMCAmJiB0aGlzLmdldENvbmZpZygpLmNsZWFyVGltaW5nUmVzb3VyY2VzICYmIChwZXJmb3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9jcmVhdGVTcGFuID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgdmFyIG47XG4gICAgICBpZiAociA9PT0gdm9pZCAwICYmIChyID0ge30pLCBaZShlLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZVVybHMpKSB7XG4gICAgICAgIHRoaXMuX2RpYWcuZGVidWcoXCJpZ25vcmluZyBzcGFuIGFzIHVybCBtYXRjaGVzIGlnbm9yZWQgdXJsXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgdCA9IChyLm1ldGhvZCB8fCBcIkdFVFwiKS50b1VwcGVyQ2FzZSgpLCBpID0gXCJIVFRQIFwiICsgdDtcbiAgICAgIHJldHVybiB0aGlzLnRyYWNlci5zdGFydFNwYW4oaSwge1xuICAgICAgICBraW5kOiBldC5DTElFTlQsXG4gICAgICAgIGF0dHJpYnV0ZXM6IChuID0ge30sIG5beS5DT01QT05FTlRdID0gdGhpcy5tb2R1bGVOYW1lLCBuW3hBXSA9IHQsIG5ba0FdID0gZSwgbilcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9maW5kUmVzb3VyY2VBbmRBZGROZXR3b3JrRXZlbnRzID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSByLmVudHJpZXM7XG4gICAgICBpZiAoIXQubGVuZ3RoKSB7XG4gICAgICAgIGlmICghcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHQgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwicmVzb3VyY2VcIik7XG4gICAgICB9XG4gICAgICB2YXIgaSA9IFYoci5zcGFuVXJsLCByLnN0YXJ0VGltZSwgbiwgdCwgdGhpcy5fdXNlZFJlc291cmNlcywgXCJmZXRjaFwiKTtcbiAgICAgIGlmIChpLm1haW5SZXF1ZXN0KSB7XG4gICAgICAgIHZhciBzID0gaS5tYWluUmVxdWVzdDtcbiAgICAgICAgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKHMpO1xuICAgICAgICB2YXIgZiA9IGkuY29yc1ByZUZsaWdodFJlcXVlc3Q7XG4gICAgICAgIGYgJiYgKHRoaXMuX2FkZENoaWxkU3BhbihlLCBmKSwgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKGYpKSwgeSQxKGUsIHMsIHRoaXMuZ2V0Q29uZmlnKCkuaWdub3JlTmV0d29ya0V2ZW50cyk7XG4gICAgICB9XG4gICAgfSwgby5wcm90b3R5cGUuX21hcmtSZXNvdXJjZUFzVXNlZCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3VzZWRSZXNvdXJjZXMuYWRkKGUpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9lbmRTcGFuID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSB0aGlzLCBpID0gTyhEYXRlLm5vdygpKSwgcyA9IHBfKCk7XG4gICAgICB0aGlzLl9hZGRGaW5hbFNwYW5BdHRyaWJ1dGVzKGUsIG4pLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZjtcbiAgICAgICAgKGYgPSByLm9ic2VydmVyKSA9PT0gbnVsbCB8fCBmID09PSB2b2lkIDAgfHwgZi5kaXNjb25uZWN0KCksIHQuX2ZpbmRSZXNvdXJjZUFuZEFkZE5ldHdvcmtFdmVudHMoZSwgciwgcyksIHQuX3Rhc2tzQ291bnQtLSwgdC5fY2xlYXJSZXNvdXJjZXMoKSwgZS5lbmQoaSk7XG4gICAgICB9LCB2ZSk7XG4gICAgfSwgby5wcm90b3R5cGUuX3BhdGNoQ29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7XG4gICAgICAgIHZhciBuID0gZTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSBbXSwgcyA9IDA7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspXG4gICAgICAgICAgICBpW3NdID0gYXJndW1lbnRzW3NdO1xuICAgICAgICAgIHZhciBmID0gdGhpcywgdSA9IEMoaVswXSBpbnN0YW5jZW9mIFJlcXVlc3QgPyBpWzBdLnVybCA6IFN0cmluZyhpWzBdKSkuaHJlZiwgYyA9IGlbMF0gaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaVswXSA6IGlbMV0gfHwge30sIGggPSBuLl9jcmVhdGVTcGFuKHUsIGMpO1xuICAgICAgICAgIGlmICghaClcbiAgICAgICAgICAgIHJldHVybiByLmFwcGx5KHRoaXMsIGkpO1xuICAgICAgICAgIHZhciBnID0gbi5fcHJlcGFyZVNwYW5EYXRhKHUpO1xuICAgICAgICAgIG4uZ2V0Q29uZmlnKCkubWVhc3VyZVJlcXVlc3RTaXplICYmIHNlLmFwcGx5KHZvaWQgMCwgcGUoW10sIGhlKGkpLCBmYWxzZSkpLnRoZW4oZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbCAmJiBoLnNldEF0dHJpYnV0ZShFciwgbCk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbi5fZGlhZy53YXJuKFwiZ2V0RmV0Y2hCb2R5TGVuZ3RoXCIsIGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZ1bmN0aW9uIEUobCwgZCkge1xuICAgICAgICAgICAgbi5fYXBwbHlBdHRyaWJ1dGVzQWZ0ZXJGZXRjaChsLCBjLCBkKSwgbi5fZW5kU3BhbihsLCBnLCB7XG4gICAgICAgICAgICAgIHN0YXR1czogZC5zdGF0dXMgfHwgMCxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5tZXNzYWdlLFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiB3KGwsIGQpIHtcbiAgICAgICAgICAgIG4uX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2gobCwgYywgZCksIGQuc3RhdHVzID49IDIwMCAmJiBkLnN0YXR1cyA8IDQwMCA/IG4uX2VuZFNwYW4obCwgZywgZCkgOiBuLl9lbmRTcGFuKGwsIGcsIHtcbiAgICAgICAgICAgICAgc3RhdHVzOiBkLnN0YXR1cyxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBNKGwsIGQsIHYpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBqID0gdi5jbG9uZSgpLCBEID0gdi5jbG9uZSgpLCBSID0gai5ib2R5O1xuICAgICAgICAgICAgICBpZiAoUikge1xuICAgICAgICAgICAgICAgIHZhciBCID0gUi5nZXRSZWFkZXIoKSwgQSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgQi5yZWFkKCkudGhlbihmdW5jdGlvbihtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBGID0gbS5kb25lO1xuICAgICAgICAgICAgICAgICAgICBGID8gdyhsLCBEKSA6IEEoKTtcbiAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgRShsLCBtKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgQSgpO1xuICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICB3KGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gTChsLCBkLCB2KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBFKGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGwsIGQpIHtcbiAgICAgICAgICAgIHJldHVybiBUZS53aXRoKE1lLnNldFNwYW4oVGUuYWN0aXZlKCksIGgpLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG4uX2FkZEhlYWRlcnMoYywgdSksIG4uX3Rhc2tzQ291bnQrKywgci5hcHBseShmLCBjIGluc3RhbmNlb2YgUmVxdWVzdCA/IFtjXSA6IFt1LCBjXSkudGhlbihNLmJpbmQoZiwgaCwgbCksIEwuYmluZChmLCBoLCBkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfSwgby5wcm90b3R5cGUuX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2ggPSBmdW5jdGlvbihlLCByLCBuKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIGkgPSB0aGlzLmdldENvbmZpZygpLmFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhbjtcbiAgICAgIGkgJiYgQihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGkoZSwgciwgbik7XG4gICAgICB9LCBmdW5jdGlvbihzKSB7XG4gICAgICAgIHMgJiYgdC5fZGlhZy5lcnJvcihcImFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhblwiLCBzKTtcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9wcmVwYXJlU3BhbkRhdGEgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgciA9IHBfKCksIG4gPSBbXTtcbiAgICAgIGlmICh0eXBlb2YgUGVyZm9ybWFuY2VPYnNlcnZlciAhPSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHJldHVybiB7IGVudHJpZXM6IG4sIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgICAgdmFyIHQgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBzID0gaS5nZXRFbnRyaWVzKCk7XG4gICAgICAgIHMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgICAgZi5pbml0aWF0b3JUeXBlID09PSBcImZldGNoXCIgJiYgZi5uYW1lID09PSBlICYmIG4ucHVzaChmKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0Lm9ic2VydmUoe1xuICAgICAgICBlbnRyeVR5cGVzOiBbXCJyZXNvdXJjZVwiXVxuICAgICAgfSksIHsgZW50cmllczogbiwgb2JzZXJ2ZXI6IHQsIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgIH0sIG8ucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKEgpIHtcbiAgICAgICAgdGhpcy5fZGlhZy53YXJuKFwidGhpcyBpbnN0cnVtZW50YXRpb24gaXMgaW50ZW5kZWQgZm9yIHdlYiB1c2FnZSBvbmx5LCBpdCBkb2VzIG5vdCBpbnN0cnVtZW50IE5vZGUuanMncyBmZXRjaCgpXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBVJDEoZmV0Y2gpICYmICh0aGlzLl91bndyYXAoaF8sIFwiZmV0Y2hcIiksIHRoaXMuX2RpYWcuZGVidWcoXCJyZW1vdmluZyBwcmV2aW91cyBwYXRjaCBmb3IgY29uc3RydWN0b3JcIikpLCB0aGlzLl93cmFwKGhfLCBcImZldGNoXCIsIHRoaXMuX3BhdGNoQ29uc3RydWN0b3IoKSk7XG4gICAgfSwgby5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgSCB8fCAodGhpcy5fdW53cmFwKGhfLCBcImZldGNoXCIpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG87XG4gIH0oVylcbik7XG5cbmV4cG9ydCB7IFNlIGFzIEZldGNoSW5zdHJ1bWVudGF0aW9uIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFBQSxTQUFTO0FBQ2xCLFNBQVMsS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBQUMsR0FBRyxLQUFLQyxHQUFJLEtBQUtDLFNBQVU7QUFDckgsU0FBUyxLQUFBQyxHQUFHLEtBQUtDLEdBQUssS0FBQUMsU0FBUztBQUMvQixTQUFTLEtBQUFDLEdBQUcsS0FBS0MsR0FBSyxLQUFBQyxHQUFHLEtBQUtDLEdBQUssS0FBQUMsVUFBUztBQUM1QyxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLLFVBQVU7QUFFMUMsSUFBSUM7QUFBQSxDQUNILFNBQVNDLEdBQUc7QUFDWCxFQUFBQSxFQUFFLFlBQVksYUFBYUEsRUFBRSxrQkFBa0IsbUJBQW1CQSxFQUFFLG1CQUFtQjtBQUN6RixHQUFHRCxNQUFNQSxJQUFJLENBQUMsRUFBRTtBQUNoQixJQUFJRSxLQUFLLFNBQVNELEdBQUdFLEdBQUdDLEdBQUczQixHQUFHO0FBQzVCLFdBQVM0QixFQUFFQyxHQUFHO0FBQ1osV0FBT0EsYUFBYUYsSUFBSUUsSUFBSSxJQUFJRixFQUFFLFNBQVNHLEdBQUc7QUFDNUMsTUFBQUEsRUFBRUQsQ0FBQztBQUFBLElBQ0wsQ0FBQztBQUFBLEVBQ0g7QUFDQSxTQUFPLEtBQUtGLE1BQU1BLElBQUksVUFBVSxTQUFTRSxHQUFHQyxHQUFHO0FBQzdDLGFBQVNDLEVBQUVDLEdBQUc7QUFDWixVQUFJO0FBQ0YsVUFBRWhDLEVBQUUsS0FBS2dDLENBQUMsQ0FBQztBQUFBLE1BQ2IsU0FBU0MsR0FBRztBQUNWLFFBQUFILEVBQUVHLENBQUM7QUFBQSxNQUNMO0FBQUEsSUFDRjtBQUNBLGFBQVNDLEVBQUVGLEdBQUc7QUFDWixVQUFJO0FBQ0YsVUFBRWhDLEVBQUUsTUFBTWdDLENBQUMsQ0FBQztBQUFBLE1BQ2QsU0FBU0MsR0FBRztBQUNWLFFBQUFILEVBQUVHLENBQUM7QUFBQSxNQUNMO0FBQUEsSUFDRjtBQUNBLGFBQVMsRUFBRUQsR0FBRztBQUNaLE1BQUFBLEVBQUUsT0FBT0gsRUFBRUcsRUFBRSxLQUFLLElBQUlKLEVBQUVJLEVBQUUsS0FBSyxFQUFFLEtBQUtELEdBQUdHLENBQUM7QUFBQSxJQUM1QztBQUNBLE9BQUdsQyxJQUFJQSxFQUFFLE1BQU13QixHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUFBLEVBQy9CLENBQUM7QUFDSCxHQUFHVyxLQUFLLFNBQVNYLEdBQUdFLEdBQUc7QUFDckIsTUFBSUMsSUFBSSxFQUFFLE9BQU8sR0FBRyxNQUFNLFdBQVc7QUFDbkMsUUFBSUUsRUFBRSxDQUFDLElBQUksRUFBRyxPQUFNQSxFQUFFLENBQUM7QUFDdkIsV0FBT0EsRUFBRSxDQUFDO0FBQUEsRUFDWixHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUc3QixHQUFHNEIsR0FBR0MsR0FBR0M7QUFDakMsU0FBT0EsSUFBSSxFQUFFLE1BQU1DLEVBQUUsQ0FBQyxHQUFHLE9BQU9BLEVBQUUsQ0FBQyxHQUFHLFFBQVFBLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxVQUFVLGVBQWVELEVBQUUsT0FBTyxRQUFRLElBQUksV0FBVztBQUNwSCxXQUFPO0FBQUEsRUFDVCxJQUFJQTtBQUNKLFdBQVNDLEVBQUUsR0FBRztBQUNaLFdBQU8sU0FBU0MsR0FBRztBQUNqQixhQUFPRSxFQUFFLENBQUMsR0FBR0YsQ0FBQyxDQUFDO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsV0FBU0UsRUFBRSxHQUFHO0FBQ1osUUFBSWxDLEVBQUcsT0FBTSxJQUFJLFVBQVUsaUNBQWlDO0FBQzVELFdBQU8yQixJQUFLLEtBQUk7QUFDZCxVQUFJM0IsSUFBSSxHQUFHNEIsTUFBTUMsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJRCxFQUFFLFNBQVMsRUFBRSxDQUFDLElBQUlBLEVBQUUsV0FBV0MsSUFBSUQsRUFBRSxXQUFXQyxFQUFFLEtBQUtELENBQUMsR0FBRyxLQUFLQSxFQUFFLFNBQVMsRUFBRUMsSUFBSUEsRUFBRSxLQUFLRCxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBTSxRQUFPQztBQUMvSSxjQUFRRCxJQUFJLEdBQUdDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUdBLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHO0FBQUEsUUFDbkQsS0FBSztBQUFBLFFBQ0wsS0FBSztBQUNILFVBQUFBLElBQUk7QUFDSjtBQUFBLFFBQ0YsS0FBSztBQUNILGlCQUFPRixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRztBQUFBLFFBQzVDLEtBQUs7QUFDSCxVQUFBQSxFQUFFLFNBQVNDLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDM0I7QUFBQSxRQUNGLEtBQUs7QUFDSCxjQUFJRCxFQUFFLElBQUksSUFBSSxHQUFHQSxFQUFFLEtBQUssSUFBSTtBQUM1QjtBQUFBLFFBQ0Y7QUFDRSxjQUFJRSxJQUFJRixFQUFFLE1BQU0sRUFBRUUsSUFBSUEsRUFBRSxTQUFTLEtBQUtBLEVBQUVBLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJO0FBQ3BGLFlBQUFGLElBQUk7QUFDSjtBQUFBLFVBQ0Y7QUFDQSxjQUFJLEVBQUUsQ0FBQyxNQUFNLE1BQU0sQ0FBQ0UsS0FBSyxFQUFFLENBQUMsSUFBSUEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUlBLEVBQUUsQ0FBQyxJQUFJO0FBQ3BELFlBQUFGLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDYjtBQUFBLFVBQ0Y7QUFDQSxjQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUtBLEVBQUUsUUFBUUUsRUFBRSxDQUFDLEdBQUc7QUFDaEMsWUFBQUYsRUFBRSxRQUFRRSxFQUFFLENBQUMsR0FBR0EsSUFBSTtBQUNwQjtBQUFBLFVBQ0Y7QUFDQSxjQUFJQSxLQUFLRixFQUFFLFFBQVFFLEVBQUUsQ0FBQyxHQUFHO0FBQ3ZCLFlBQUFGLEVBQUUsUUFBUUUsRUFBRSxDQUFDLEdBQUdGLEVBQUUsSUFBSSxLQUFLLENBQUM7QUFDNUI7QUFBQSxVQUNGO0FBQ0EsVUFBQUUsRUFBRSxDQUFDLEtBQUtGLEVBQUUsSUFBSSxJQUFJLEdBQUdBLEVBQUUsS0FBSyxJQUFJO0FBQ2hDO0FBQUEsTUFDSjtBQUNBLFVBQUlELEVBQUUsS0FBS0YsR0FBR0csQ0FBQztBQUFBLElBQ2pCLFNBQVNLLEdBQUc7QUFDVixVQUFJLENBQUMsR0FBR0EsQ0FBQyxHQUFHSixJQUFJO0FBQUEsSUFDbEIsVUFBRTtBQUNBLE1BQUE1QixJQUFJNkIsSUFBSTtBQUFBLElBQ1Y7QUFDQSxRQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUcsT0FBTSxFQUFFLENBQUM7QUFDdkIsV0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksUUFBUSxNQUFNLEdBQUs7QUFBQSxFQUNuRDtBQUNGLEdBQUdPLEtBQUssU0FBU1osR0FBRztBQUNsQixNQUFJRSxJQUFJLE9BQU8sVUFBVSxjQUFjLE9BQU8sVUFBVUMsSUFBSUQsS0FBS0YsRUFBRUUsQ0FBQyxHQUFHMUIsSUFBSTtBQUMzRSxNQUFJMkIsRUFBRyxRQUFPQSxFQUFFLEtBQUtILENBQUM7QUFDdEIsTUFBSUEsS0FBSyxPQUFPQSxFQUFFLFVBQVUsU0FBVSxRQUFPO0FBQUEsSUFDM0MsTUFBTSxXQUFXO0FBQ2YsYUFBT0EsS0FBS3hCLEtBQUt3QixFQUFFLFdBQVdBLElBQUksU0FBUyxFQUFFLE9BQU9BLEtBQUtBLEVBQUV4QixHQUFHLEdBQUcsTUFBTSxDQUFDd0IsRUFBRTtBQUFBLElBQzVFO0FBQUEsRUFDRjtBQUNBLFFBQU0sSUFBSSxVQUFVRSxJQUFJLDRCQUE0QixpQ0FBaUM7QUFDdkYsR0FBR1csS0FBSyxTQUFTYixHQUFHRSxHQUFHO0FBQ3JCLE1BQUlDLElBQUksT0FBTyxVQUFVLGNBQWNILEVBQUUsT0FBTyxRQUFRO0FBQ3hELE1BQUksQ0FBQ0csRUFBRyxRQUFPSDtBQUNmLE1BQUl4QixJQUFJMkIsRUFBRSxLQUFLSCxDQUFDLEdBQUdJLEdBQUdDLElBQUksQ0FBQyxHQUFHQztBQUM5QixNQUFJO0FBQ0YsWUFBUUosTUFBTSxVQUFVQSxNQUFNLE1BQU0sRUFBRUUsSUFBSTVCLEVBQUUsS0FBSyxHQUFHLE9BQVEsQ0FBQTZCLEVBQUUsS0FBS0QsRUFBRSxLQUFLO0FBQUEsRUFDNUUsU0FBU0csR0FBRztBQUNWLElBQUFELElBQUksRUFBRSxPQUFPQyxFQUFFO0FBQUEsRUFDakIsVUFBRTtBQUNBLFFBQUk7QUFDRixNQUFBSCxLQUFLLENBQUNBLEVBQUUsU0FBU0QsSUFBSTNCLEVBQUUsV0FBVzJCLEVBQUUsS0FBSzNCLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSThCLEVBQUcsT0FBTUEsRUFBRTtBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUNBLFNBQU9EO0FBQ1QsR0FBR1MsSUFBSXRDLEVBQUUsc0JBQXNCO0FBQUEsRUFDN0IsV0FBVztBQUNiLENBQUM7QUFDRCxTQUFTdUMsS0FBSztBQUNaLFdBQVNmLElBQUksQ0FBQyxHQUFHRSxJQUFJLEdBQUdBLElBQUksVUFBVSxRQUFRQTtBQUM1QyxJQUFBRixFQUFFRSxDQUFDLElBQUksVUFBVUEsQ0FBQztBQUNwQixNQUFJRixFQUFFLENBQUMsYUFBYSxPQUFPLE9BQU9BLEVBQUUsQ0FBQyxLQUFLLFVBQVU7QUFDbEQsUUFBSUcsSUFBSUgsRUFBRSxDQUFDO0FBQ1gsUUFBSSxDQUFDRyxHQUFHO0FBQ04sYUFBTyxRQUFRLFFBQVE7QUFDekIsUUFBSUEsRUFBRSxnQkFBZ0IsZ0JBQWdCO0FBQ3BDLFVBQUkzQixJQUFJd0MsR0FBR2IsRUFBRSxJQUFJLEdBQUdDLElBQUk1QixFQUFFLE1BQU02QixJQUFJN0IsRUFBRTtBQUN0QyxhQUFPMkIsRUFBRSxPQUFPQyxHQUFHQztBQUFBLElBQ3JCO0FBQ0UsYUFBTyxRQUFRLFFBQVFZLEdBQUdkLEVBQUUsSUFBSSxDQUFDO0FBQUEsRUFDckMsT0FBTztBQUNMLFFBQUlHLElBQUlOLEVBQUUsQ0FBQztBQUNYLFdBQU9NLEdBQUcsT0FBT0EsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssU0FBU0MsR0FBRztBQUNqRCxhQUFPVyxFQUFFWCxDQUFDO0FBQUEsSUFDWixDQUFDLElBQUksUUFBUSxRQUFRO0FBQUEsRUFDdkI7QUFDRjtBQUNBLFNBQVNTLEdBQUdoQixHQUFHO0FBQ2IsTUFBSSxDQUFDQSxFQUFFO0FBQ0wsV0FBT2MsRUFBRSxLQUFLLGtEQUFrRCxHQUFHO0FBQUEsTUFDakUsTUFBTWQ7QUFBQSxNQUNOLFFBQVEsUUFBUSxRQUFRLE1BQU07QUFBQSxJQUNoQztBQUNGLE1BQUlFLElBQUksR0FBR0MsR0FBRzNCLElBQUksSUFBSSxRQUFRLFNBQVM2QixHQUFHO0FBQ3hDLElBQUFGLElBQUlFO0FBQUEsRUFDTixDQUFDLEdBQUdELElBQUksSUFBSSxnQkFBZ0I7QUFBQSxJQUMxQixPQUFPLFdBQVc7QUFBQSxJQUNsQjtBQUFBLElBQ0EsV0FBVyxTQUFTQyxHQUFHQyxHQUFHO0FBQ3hCLGFBQU9MLEdBQUcsTUFBTSxRQUFRLFFBQVEsV0FBVztBQUN6QyxZQUFJTTtBQUNKLGVBQU9JLEdBQUcsTUFBTSxTQUFTRCxHQUFHO0FBQzFCLGtCQUFRQSxFQUFFLE9BQU87QUFBQSxZQUNmLEtBQUs7QUFDSCxxQkFBTyxDQUFDLEdBQUdMLENBQUM7QUFBQSxZQUNkLEtBQUs7QUFDSCxxQkFBT0UsSUFBSUcsRUFBRSxLQUFLLEdBQUdSLEtBQUtLLEVBQUUsWUFBWUQsRUFBRSxRQUFRRCxDQUFDLEdBQUc7QUFBQSxnQkFDcEQ7QUFBQTtBQUFBLGNBRUY7QUFBQSxVQUNKO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxDQUFDO0FBQUEsSUFDSDtBQUFBLElBQ0EsT0FBTyxXQUFXO0FBQ2hCLE1BQUFGLEVBQUVELENBQUM7QUFBQSxJQUNMO0FBQUEsRUFDRixDQUFDO0FBQ0QsU0FBTztBQUFBLElBQ0wsTUFBTUYsRUFBRSxZQUFZSSxDQUFDO0FBQUEsSUFDckIsUUFBUTVCO0FBQUEsRUFDVjtBQUNGO0FBQ0EsU0FBU3lDLEdBQUdqQixHQUFHO0FBQ2IsTUFBSSxPQUFPLFdBQVcsT0FBT0EsYUFBYTtBQUN4QyxXQUFPLElBQUksY0FBYyxFQUFFLGtCQUFrQixRQUFRLEVBQUU7QUFDekQsTUFBSUEsYUFBYTtBQUNmLFdBQU9BLEVBQUU7QUFDWCxNQUFJQSxFQUFFLGVBQWU7QUFDbkIsV0FBT0EsRUFBRTtBQUNYLE1BQUlBLGFBQWE7QUFDZixXQUFPbUIsR0FBR25CLENBQUM7QUFDYixNQUFJQSxhQUFhO0FBQ2YsV0FBT2tCLEVBQUVsQixFQUFFLFNBQVMsQ0FBQztBQUN2QixNQUFJLE9BQU9BLEtBQUs7QUFDZCxXQUFPa0IsRUFBRWxCLENBQUM7QUFDWixFQUFBYyxFQUFFLEtBQUssbUJBQW1CO0FBQzVCO0FBQ0EsSUFBSU0sS0FBSyxJQUFJLFlBQVk7QUFDekIsU0FBU0YsRUFBRWxCLEdBQUc7QUFDWixTQUFPb0IsR0FBRyxPQUFPcEIsQ0FBQyxFQUFFO0FBQ3RCO0FBQ0EsU0FBU21CLEdBQUduQixHQUFHO0FBQ2IsTUFBSUUsR0FBR0MsR0FBRzNCLElBQUk7QUFDZCxNQUFJO0FBQ0YsYUFBUzRCLElBQUlRLEdBQUdaLEVBQUUsUUFBUSxDQUFDLEdBQUdLLElBQUlELEVBQUUsS0FBSyxHQUFHLENBQUNDLEVBQUUsTUFBTUEsSUFBSUQsRUFBRSxLQUFLLEdBQUc7QUFDakUsVUFBSUUsSUFBSU8sR0FBR1IsRUFBRSxPQUFPLENBQUMsR0FBR0UsSUFBSUQsRUFBRSxDQUFDLEdBQUdJLElBQUlKLEVBQUUsQ0FBQztBQUN6QyxNQUFBOUIsS0FBSytCLEVBQUUsUUFBUUcsYUFBYSxPQUFPbEMsS0FBS2tDLEVBQUUsT0FBT2xDLEtBQUtrQyxFQUFFO0FBQUEsSUFDMUQ7QUFBQSxFQUNGLFNBQVMsR0FBRztBQUNWLElBQUFSLElBQUksRUFBRSxPQUFPLEVBQUU7QUFBQSxFQUNqQixVQUFFO0FBQ0EsUUFBSTtBQUNGLE1BQUFHLEtBQUssQ0FBQ0EsRUFBRSxTQUFTRixJQUFJQyxFQUFFLFdBQVdELEVBQUUsS0FBS0MsQ0FBQztBQUFBLElBQzVDLFVBQUU7QUFDQSxVQUFJRixFQUFHLE9BQU1BLEVBQUU7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFDQSxTQUFPMUI7QUFDVDtBQUNBLElBQUk2QyxJQUFJLFVBQVVDLEtBQXFCLDJCQUFXO0FBQ2hELE1BQUl0QixJQUFJLFNBQVNFLEdBQUdDLEdBQUc7QUFDckIsV0FBT0gsSUFBSSxPQUFPLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxFQUFFLGFBQWEsU0FBUyxTQUFTeEIsR0FBRzRCLEdBQUc7QUFDdkYsTUFBQTVCLEVBQUUsWUFBWTRCO0FBQUEsSUFDaEIsS0FBSyxTQUFTNUIsR0FBRzRCLEdBQUc7QUFDbEIsZUFBU0MsS0FBS0QsRUFBRyxRQUFPLFVBQVUsZUFBZSxLQUFLQSxHQUFHQyxDQUFDLE1BQU03QixFQUFFNkIsQ0FBQyxJQUFJRCxFQUFFQyxDQUFDO0FBQUEsSUFDNUUsR0FBR0wsRUFBRUUsR0FBR0MsQ0FBQztBQUFBLEVBQ1g7QUFDQSxTQUFPLFNBQVNELEdBQUdDLEdBQUc7QUFDcEIsUUFBSSxPQUFPQSxLQUFLLGNBQWNBLE1BQU07QUFDbEMsWUFBTSxJQUFJLFVBQVUseUJBQXlCLE9BQU9BLENBQUMsSUFBSSwrQkFBK0I7QUFDMUYsSUFBQUgsRUFBRUUsR0FBR0MsQ0FBQztBQUNOLGFBQVMzQixJQUFJO0FBQ1gsV0FBSyxjQUFjMEI7QUFBQSxJQUNyQjtBQUNBLElBQUFBLEVBQUUsWUFBWUMsTUFBTSxPQUFPLE9BQU8sT0FBT0EsQ0FBQyxLQUFLM0IsRUFBRSxZQUFZMkIsRUFBRSxXQUFXLElBQUkzQixFQUFFO0FBQUEsRUFDbEY7QUFDRixFQUFFLEdBQUcrQyxLQUFLLFNBQVN2QixHQUFHRSxHQUFHO0FBQ3ZCLE1BQUlDLElBQUksT0FBTyxVQUFVLGNBQWNILEVBQUUsT0FBTyxRQUFRO0FBQ3hELE1BQUksQ0FBQ0csRUFBRyxRQUFPSDtBQUNmLE1BQUl4QixJQUFJMkIsRUFBRSxLQUFLSCxDQUFDLEdBQUdJLEdBQUdDLElBQUksQ0FBQyxHQUFHQztBQUM5QixNQUFJO0FBQ0YsWUFBUUosTUFBTSxVQUFVQSxNQUFNLE1BQU0sRUFBRUUsSUFBSTVCLEVBQUUsS0FBSyxHQUFHLE9BQVEsQ0FBQTZCLEVBQUUsS0FBS0QsRUFBRSxLQUFLO0FBQUEsRUFDNUUsU0FBU0csR0FBRztBQUNWLElBQUFELElBQUksRUFBRSxPQUFPQyxFQUFFO0FBQUEsRUFDakIsVUFBRTtBQUNBLFFBQUk7QUFDRixNQUFBSCxLQUFLLENBQUNBLEVBQUUsU0FBU0QsSUFBSTNCLEVBQUUsV0FBVzJCLEVBQUUsS0FBSzNCLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSThCLEVBQUcsT0FBTUEsRUFBRTtBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUNBLFNBQU9EO0FBQ1QsR0FBR21CLEtBQUssU0FBU3hCLEdBQUdFLEdBQUdDLEdBQUc7QUFDeEIsTUFBSSxVQUFVLFdBQVcsRUFBRyxVQUFTM0IsSUFBSSxHQUFHNEIsSUFBSUYsRUFBRSxRQUFRRyxHQUFHN0IsSUFBSTRCLEdBQUc1QjtBQUNsRSxLQUFDNkIsS0FBSyxFQUFFN0IsS0FBSzBCLFFBQVFHLE1BQU1BLElBQUksTUFBTSxVQUFVLE1BQU0sS0FBS0gsR0FBRyxHQUFHMUIsQ0FBQyxJQUFJNkIsRUFBRTdCLENBQUMsSUFBSTBCLEVBQUUxQixDQUFDO0FBQ2pGLFNBQU93QixFQUFFLE9BQU9LLEtBQUssTUFBTSxVQUFVLE1BQU0sS0FBS0gsQ0FBQyxDQUFDO0FBQ3BELEdBQUd1QixHQUFHQyxLQUFLLEtBQUtDLElBQUksT0FBTyxXQUFXLGNBQWNGLElBQUksUUFBUSxhQUFhLFFBQVFBLE1BQU0sU0FBUyxTQUFTQSxFQUFFLFVBQVUsUUFBUUc7QUFBQTtBQUFBLEVBRS9ILFNBQVM1QixHQUFHO0FBQ1YsSUFBQXNCLEdBQUdwQixHQUFHRixDQUFDO0FBQ1AsYUFBU0UsRUFBRUMsR0FBRztBQUNaLE1BQUFBLE1BQU0sV0FBV0EsSUFBSSxDQUFDO0FBQ3RCLFVBQUkzQixJQUFJd0IsRUFBRSxLQUFLLE1BQU0sd0NBQXdDcUIsR0FBR2xCLENBQUMsS0FBSztBQUN0RSxhQUFPM0IsRUFBRSxZQUFZLFNBQVNBLEVBQUUsVUFBVTZDLEdBQUc3QyxFQUFFLGFBQWFBLEVBQUUsV0FBV0EsRUFBRSxpQkFBaUMsb0JBQUksUUFBUSxHQUFHQSxFQUFFLGNBQWMsR0FBR0E7QUFBQSxJQUNoSjtBQUNBLFdBQU8wQixFQUFFLFVBQVUsT0FBTyxXQUFXO0FBQUEsSUFDckMsR0FBR0EsRUFBRSxVQUFVLGdCQUFnQixTQUFTQyxHQUFHM0IsR0FBRztBQUM1QyxVQUFJNEIsSUFBSSxLQUFLLE9BQU8sVUFBVSxrQkFBa0I7QUFBQSxRQUM5QyxXQUFXNUIsRUFBRWdCLEVBQUUsV0FBVztBQUFBLE1BQzVCLEdBQUdLLEVBQUcsUUFBUUMsRUFBRyxPQUFPLEdBQUdLLENBQUMsQ0FBQztBQUM3QixNQUFBVixFQUFJVyxHQUFHNUIsR0FBRyxLQUFLLFVBQVUsRUFBRSxtQkFBbUIsR0FBRzRCLEVBQUUsSUFBSTVCLEVBQUVnQixFQUFFLFlBQVksQ0FBQztBQUFBLElBQzFFLEdBQUdVLEVBQUUsVUFBVSwwQkFBMEIsU0FBU0MsR0FBRzNCLEdBQUc7QUFDdEQsVUFBSTRCLElBQUlWLEVBQUVsQixFQUFFLEdBQUc7QUFDZixNQUFBMkIsRUFBRSxhQUFhMUIsR0FBSUQsRUFBRSxNQUFNLEdBQUdBLEVBQUUsY0FBYyxRQUFRMkIsRUFBRSxhQUFhSixFQUFFLGtCQUFrQnZCLEVBQUUsVUFBVSxHQUFHMkIsRUFBRSxhQUFhekIsR0FBSTBCLEVBQUUsSUFBSSxHQUFHRCxFQUFFLGFBQWF4QixHQUFJeUIsRUFBRSxTQUFTLFFBQVEsS0FBSyxFQUFFLENBQUMsR0FBRyxPQUFPLFlBQVksT0FBT0QsRUFBRSxhQUFhdkIsR0FBSSxVQUFVLFNBQVM7QUFBQSxJQUN2UCxHQUFHc0IsRUFBRSxVQUFVLGNBQWMsU0FBU0MsR0FBRzNCLEdBQUc7QUFDMUMsVUFBSSxDQUFDbUIsRUFBSW5CLEdBQUcsS0FBSyxVQUFVLEVBQUUsNEJBQTRCLEdBQUc7QUFDMUQsWUFBSTRCLElBQUksQ0FBQztBQUNULFFBQUF2QixFQUFHLE9BQU9pQixFQUFHLE9BQU8sR0FBR00sQ0FBQyxHQUFHLE9BQU8sS0FBS0EsQ0FBQyxFQUFFLFNBQVMsS0FBSyxLQUFLLE1BQU0sTUFBTSwyQ0FBMkM7QUFDcEg7QUFBQSxNQUNGO0FBQ0EsVUFBSUQsYUFBYTtBQUNmLFFBQUF0QixFQUFHLE9BQU9pQixFQUFHLE9BQU8sR0FBR0ssRUFBRSxTQUFTO0FBQUEsVUFDaEMsS0FBSyxTQUFTRSxHQUFHQyxHQUFHQyxHQUFHO0FBQ3JCLG1CQUFPRixFQUFFLElBQUlDLEdBQUcsT0FBT0MsS0FBSyxXQUFXQSxJQUFJLE9BQU9BLENBQUMsQ0FBQztBQUFBLFVBQ3REO0FBQUEsUUFDRixDQUFDO0FBQUEsZUFDTUosRUFBRSxtQkFBbUI7QUFDNUIsUUFBQXRCLEVBQUcsT0FBT2lCLEVBQUcsT0FBTyxHQUFHSyxFQUFFLFNBQVM7QUFBQSxVQUNoQyxLQUFLLFNBQVNFLEdBQUdDLEdBQUdDLEdBQUc7QUFDckIsbUJBQU9GLEVBQUUsSUFBSUMsR0FBRyxPQUFPQyxLQUFLLFdBQVdBLElBQUksT0FBT0EsQ0FBQyxDQUFDO0FBQUEsVUFDdEQ7QUFBQSxRQUNGLENBQUM7QUFBQSxlQUNNSixFQUFFLG1CQUFtQjtBQUM1QixRQUFBdEIsRUFBRyxPQUFPaUIsRUFBRyxPQUFPLEdBQUdLLEVBQUUsU0FBUztBQUFBLFVBQ2hDLEtBQUssU0FBU0UsR0FBR0MsR0FBR0MsR0FBRztBQUNyQixtQkFBT0YsRUFBRSxJQUFJQyxHQUFHLE9BQU9DLEtBQUssV0FBV0EsSUFBSSxPQUFPQSxDQUFDLENBQUM7QUFBQSxVQUN0RDtBQUFBLFFBQ0YsQ0FBQztBQUFBLFdBQ0U7QUFDSCxZQUFJSCxJQUFJLENBQUM7QUFDVCxRQUFBdkIsRUFBRyxPQUFPaUIsRUFBRyxPQUFPLEdBQUdNLENBQUMsR0FBR0QsRUFBRSxVQUFVLE9BQU8sT0FBTyxDQUFDLEdBQUdDLEdBQUdELEVBQUUsV0FBVyxDQUFDLENBQUM7QUFBQSxNQUM3RTtBQUFBLElBQ0YsR0FBR0QsRUFBRSxVQUFVLGtCQUFrQixXQUFXO0FBQzFDLFdBQUssZ0JBQWdCLEtBQUssS0FBSyxVQUFVLEVBQUUseUJBQXlCLFlBQVkscUJBQXFCLEdBQUcsS0FBSyxpQkFBaUMsb0JBQUksUUFBUTtBQUFBLElBQzVKLEdBQUdBLEVBQUUsVUFBVSxjQUFjLFNBQVNDLEdBQUczQixHQUFHO0FBQzFDLFVBQUk0QjtBQUNKLFVBQUk1QixNQUFNLFdBQVdBLElBQUksQ0FBQyxJQUFJTSxFQUFHcUIsR0FBRyxLQUFLLFVBQVUsRUFBRSxVQUFVLEdBQUc7QUFDaEUsYUFBSyxNQUFNLE1BQU0sMENBQTBDO0FBQzNEO0FBQUEsTUFDRjtBQUNBLFVBQUlFLEtBQUs3QixFQUFFLFVBQVUsT0FBTyxZQUFZLEdBQUc4QixJQUFJLFVBQVVEO0FBQ3pELGFBQU8sS0FBSyxPQUFPLFVBQVVDLEdBQUc7QUFBQSxRQUM5QixNQUFNLEdBQUc7QUFBQSxRQUNULGFBQWFGLElBQUksQ0FBQyxHQUFHQSxFQUFFTCxFQUFFLFNBQVMsSUFBSSxLQUFLLFlBQVlLLEVBQUVyQixDQUFFLElBQUlzQixHQUFHRCxFQUFFcEIsQ0FBRSxJQUFJbUIsR0FBR0M7QUFBQSxNQUMvRSxDQUFDO0FBQUEsSUFDSCxHQUFHRixFQUFFLFVBQVUsbUNBQW1DLFNBQVNDLEdBQUczQixHQUFHNEIsR0FBRztBQUNsRSxVQUFJQyxJQUFJN0IsRUFBRTtBQUNWLFVBQUksQ0FBQzZCLEVBQUUsUUFBUTtBQUNiLFlBQUksQ0FBQyxZQUFZO0FBQ2Y7QUFDRixRQUFBQSxJQUFJLFlBQVksaUJBQWlCLFVBQVU7QUFBQSxNQUM3QztBQUNBLFVBQUlDLElBQUlWLEdBQUVwQixFQUFFLFNBQVNBLEVBQUUsV0FBVzRCLEdBQUdDLEdBQUcsS0FBSyxnQkFBZ0IsT0FBTztBQUNwRSxVQUFJQyxFQUFFLGFBQWE7QUFDakIsWUFBSUMsSUFBSUQsRUFBRTtBQUNWLGFBQUssb0JBQW9CQyxDQUFDO0FBQzFCLFlBQUlHLElBQUlKLEVBQUU7QUFDVixRQUFBSSxNQUFNLEtBQUssY0FBY1AsR0FBR08sQ0FBQyxHQUFHLEtBQUssb0JBQW9CQSxDQUFDLElBQUlqQixFQUFJVSxHQUFHSSxHQUFHLEtBQUssVUFBVSxFQUFFLG1CQUFtQjtBQUFBLE1BQzlHO0FBQUEsSUFDRixHQUFHTCxFQUFFLFVBQVUsc0JBQXNCLFNBQVNDLEdBQUc7QUFDL0MsV0FBSyxlQUFlLElBQUlBLENBQUM7QUFBQSxJQUMzQixHQUFHRCxFQUFFLFVBQVUsV0FBVyxTQUFTQyxHQUFHM0IsR0FBRzRCLEdBQUc7QUFDMUMsVUFBSUMsSUFBSSxNQUFNQyxJQUFJcEIsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHcUIsSUFBSXRCLEVBQUc7QUFDeEMsV0FBSyx3QkFBd0JrQixHQUFHQyxDQUFDLEdBQUcsV0FBVyxXQUFXO0FBQ3hELFlBQUlNO0FBQ0osU0FBQ0EsSUFBSWxDLEVBQUUsY0FBYyxRQUFRa0MsTUFBTSxVQUFVQSxFQUFFLFdBQVcsR0FBR0wsRUFBRSxpQ0FBaUNGLEdBQUczQixHQUFHK0IsQ0FBQyxHQUFHRixFQUFFLGVBQWVBLEVBQUUsZ0JBQWdCLEdBQUdGLEVBQUUsSUFBSUcsQ0FBQztBQUFBLE1BQ3pKLEdBQUdvQixFQUFFO0FBQUEsSUFDUCxHQUFHeEIsRUFBRSxVQUFVLG9CQUFvQixXQUFXO0FBQzVDLFVBQUlDLElBQUk7QUFDUixhQUFPLFNBQVMzQixHQUFHO0FBQ2pCLFlBQUk0QixJQUFJRDtBQUNSLGVBQU8sV0FBVztBQUNoQixtQkFBU0csSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksVUFBVSxRQUFRO0FBQzVDLFlBQUFBLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQztBQUNwQixjQUFJSSxJQUFJLE1BQU1tQixJQUFJbkMsRUFBRVksRUFBRSxDQUFDLGFBQWEsVUFBVUEsRUFBRSxDQUFDLEVBQUUsTUFBTSxPQUFPQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTUUsSUFBSUYsRUFBRSxDQUFDLGFBQWEsVUFBVUEsRUFBRSxDQUFDLElBQUlBLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBR0csSUFBSUwsRUFBRSxZQUFZeUIsR0FBR3JCLENBQUM7QUFDcEosY0FBSSxDQUFDQztBQUNILG1CQUFPakMsRUFBRSxNQUFNLE1BQU04QixDQUFDO0FBQ3hCLGNBQUl3QixJQUFJMUIsRUFBRSxpQkFBaUJ5QixDQUFDO0FBQzVCLFVBQUF6QixFQUFFLFVBQVUsRUFBRSxzQkFBc0JXLEdBQUcsTUFBTSxRQUFRUyxHQUFHLENBQUMsR0FBR0QsR0FBR2pCLENBQUMsR0FBRyxFQUFLLENBQUMsRUFBRSxLQUFLLFNBQVN5QixHQUFHO0FBQzFGLFlBQUFBLEtBQUt0QixFQUFFLGFBQWF0QixHQUFJNEMsQ0FBQztBQUFBLFVBQzNCLENBQUMsRUFBRSxNQUFNLFNBQVNBLEdBQUc7QUFDbkIsWUFBQTNCLEVBQUUsTUFBTSxLQUFLLHNCQUFzQjJCLENBQUM7QUFBQSxVQUN0QyxDQUFDO0FBQ0QsbUJBQVNDLEVBQUVELEdBQUdFLEdBQUc7QUFDZixZQUFBN0IsRUFBRSwyQkFBMkIyQixHQUFHdkIsR0FBR3lCLENBQUMsR0FBRzdCLEVBQUUsU0FBUzJCLEdBQUdELEdBQUc7QUFBQSxjQUN0RCxRQUFRRyxFQUFFLFVBQVU7QUFBQSxjQUNwQixZQUFZQSxFQUFFO0FBQUEsY0FDZCxLQUFLSjtBQUFBLFlBQ1AsQ0FBQztBQUFBLFVBQ0g7QUFDQSxtQkFBUyxFQUFFRSxHQUFHRSxHQUFHO0FBQ2YsWUFBQTdCLEVBQUUsMkJBQTJCMkIsR0FBR3ZCLEdBQUd5QixDQUFDLEdBQUdBLEVBQUUsVUFBVSxPQUFPQSxFQUFFLFNBQVMsTUFBTTdCLEVBQUUsU0FBUzJCLEdBQUdELEdBQUdHLENBQUMsSUFBSTdCLEVBQUUsU0FBUzJCLEdBQUdELEdBQUc7QUFBQSxjQUNoSCxRQUFRRyxFQUFFO0FBQUEsY0FDVixZQUFZQSxFQUFFO0FBQUEsY0FDZCxLQUFLSjtBQUFBLFlBQ1AsQ0FBQztBQUFBLFVBQ0g7QUFDQSxtQkFBU0ssRUFBRUgsR0FBR0UsR0FBR0UsR0FBRztBQUNsQixnQkFBSTtBQUNGLGtCQUFJQyxJQUFJRCxFQUFFLE1BQU0sR0FBR0UsSUFBSUYsRUFBRSxNQUFNLEdBQUdHLElBQUlGLEVBQUU7QUFDeEMsa0JBQUlFLEdBQUc7QUFDTCxvQkFBSWpELElBQUlpRCxFQUFFLFVBQVUsR0FBR0MsSUFBSSxXQUFXO0FBQ3BDLGtCQUFBbEQsRUFBRSxLQUFLLEVBQUUsS0FBSyxTQUFTLEdBQUc7QUFDeEIsd0JBQUltRCxJQUFJLEVBQUU7QUFDVixvQkFBQUEsSUFBSSxFQUFFVCxHQUFHTSxDQUFDLElBQUlFLEVBQUU7QUFBQSxrQkFDbEIsR0FBRyxTQUFTLEdBQUc7QUFDYixvQkFBQVAsRUFBRUQsR0FBRyxDQUFDO0FBQUEsa0JBQ1IsQ0FBQztBQUFBLGdCQUNIO0FBQ0EsZ0JBQUFRLEVBQUU7QUFBQSxjQUNKO0FBQ0Usa0JBQUVSLEdBQUdJLENBQUM7QUFBQSxZQUNWLFVBQUU7QUFDQSxjQUFBRixFQUFFRSxDQUFDO0FBQUEsWUFDTDtBQUFBLFVBQ0Y7QUFDQSxtQkFBU00sRUFBRVYsR0FBR0UsR0FBR0UsR0FBRztBQUNsQixnQkFBSTtBQUNGLGNBQUFILEVBQUVELEdBQUdJLENBQUM7QUFBQSxZQUNSLFVBQUU7QUFDQSxjQUFBRixFQUFFRSxDQUFDO0FBQUEsWUFDTDtBQUFBLFVBQ0Y7QUFDQSxpQkFBTyxJQUFJLFFBQVEsU0FBU0osR0FBR0UsR0FBRztBQUNoQyxtQkFBT25DLEVBQUcsS0FBS0QsRUFBRyxRQUFRQyxFQUFHLE9BQU8sR0FBR1csQ0FBQyxHQUFHLFdBQVc7QUFDcEQscUJBQU9MLEVBQUUsWUFBWUksR0FBR3FCLENBQUMsR0FBR3pCLEVBQUUsZUFBZTVCLEVBQUUsTUFBTWtDLEdBQUdGLGFBQWEsVUFBVSxDQUFDQSxDQUFDLElBQUksQ0FBQ3FCLEdBQUdyQixDQUFDLENBQUMsRUFBRSxLQUFLMEIsRUFBRSxLQUFLeEIsR0FBR0QsR0FBR3NCLENBQUMsR0FBR1UsRUFBRSxLQUFLL0IsR0FBR0QsR0FBR3dCLENBQUMsQ0FBQztBQUFBLFlBQ3BJLENBQUM7QUFBQSxVQUNILENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0YsR0FBRy9CLEVBQUUsVUFBVSw2QkFBNkIsU0FBU0MsR0FBRzNCLEdBQUc0QixHQUFHO0FBQzVELFVBQUlDLElBQUksTUFBTUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtBQUNuQyxNQUFBQSxLQUFLakIsRUFBRSxXQUFXO0FBQ2hCLGVBQU9pQixFQUFFSCxHQUFHM0IsR0FBRzRCLENBQUM7QUFBQSxNQUNsQixHQUFHLFNBQVNHLEdBQUc7QUFDYixRQUFBQSxLQUFLRixFQUFFLE1BQU0sTUFBTSwrQkFBK0JFLENBQUM7QUFBQSxNQUNyRCxDQUFDO0FBQUEsSUFDSCxHQUFHTCxFQUFFLFVBQVUsbUJBQW1CLFNBQVNDLEdBQUc7QUFDNUMsVUFBSTNCLElBQUlTLEVBQUcsR0FBR21CLElBQUksQ0FBQztBQUNuQixVQUFJLE9BQU8sdUJBQXVCO0FBQ2hDLGVBQU8sRUFBRSxTQUFTQSxHQUFHLFdBQVc1QixHQUFHLFNBQVMyQixFQUFFO0FBQ2hELFVBQUlFLElBQUksSUFBSSxvQkFBb0IsU0FBU0MsR0FBRztBQUMxQyxZQUFJQyxJQUFJRCxFQUFFLFdBQVc7QUFDckIsUUFBQUMsRUFBRSxRQUFRLFNBQVNHLEdBQUc7QUFDcEIsVUFBQUEsRUFBRSxrQkFBa0IsV0FBV0EsRUFBRSxTQUFTUCxLQUFLQyxFQUFFLEtBQUtNLENBQUM7QUFBQSxRQUN6RCxDQUFDO0FBQUEsTUFDSCxDQUFDO0FBQ0QsYUFBT0wsRUFBRSxRQUFRO0FBQUEsUUFDZixZQUFZLENBQUMsVUFBVTtBQUFBLE1BQ3pCLENBQUMsR0FBRyxFQUFFLFNBQVNELEdBQUcsVUFBVUMsR0FBRyxXQUFXN0IsR0FBRyxTQUFTMkIsRUFBRTtBQUFBLElBQzFELEdBQUdELEVBQUUsVUFBVSxTQUFTLFdBQVc7QUFDakMsVUFBSXlCLEdBQUc7QUFDTCxhQUFLLE1BQU0sS0FBSywrRkFBK0Y7QUFDL0c7QUFBQSxNQUNGO0FBQ0EsTUFBQXJDLEVBQUksS0FBSyxNQUFNLEtBQUssUUFBUUYsR0FBSSxPQUFPLEdBQUcsS0FBSyxNQUFNLE1BQU0seUNBQXlDLElBQUksS0FBSyxNQUFNQSxHQUFJLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQztBQUFBLElBQzFKLEdBQUdjLEVBQUUsVUFBVSxVQUFVLFdBQVc7QUFDbEMsTUFBQXlCLE1BQU0sS0FBSyxRQUFRdkMsR0FBSSxPQUFPLEdBQUcsS0FBSyxpQkFBaUMsb0JBQUksUUFBUTtBQUFBLElBQ3JGLEdBQUdjO0FBQUEsRUFDTCxFQUFFWCxDQUFDO0FBQUE7IiwKICAibmFtZXMiOiBbInIiLCAiSkEiLCAicUEiLCAiWkEiLCAiJEEiLCAieV8iLCAiWmUiLCAieEEiLCAia0EiLCAicF8iLCAiTyIsICJFciIsICJoXyIsICJCIiwgIlUkMSIsICJXIiwgIlQiLCAieSQxIiwgIkMiLCAiYiQxIiwgIlYiLCAiTWUiLCAiVGUiLCAieSIsICJhIiwgIm5lIiwgIm8iLCAiZSIsICJuIiwgInQiLCAiaSIsICJzIiwgImMiLCAiaCIsICJmIiwgImFlIiwgImllIiwgIm9lIiwgIlUiLCAic2UiLCAidWUiLCAiZmUiLCAiYiIsICJsZSIsICJjZSIsICJrIiwgImRlIiwgImhlIiwgInBlIiwgIlMiLCAidmUiLCAiSCIsICJTZSIsICJ1IiwgImciLCAibCIsICJFIiwgImQiLCAiTSIsICJ2IiwgImoiLCAiRCIsICJSIiwgIkEiLCAiRiIsICJMIl0KfQo=
@@ -0,0 +1,127 @@
1
+ import { Q as c } from "./index-nPWqtn7T.js";
2
+ import { t as u } from "./SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js";
3
+ import { R as b, g as x, D as _, e as S, S as w, j as P, B as C, G as O, P as T, r as M, x as j, W as A, z as B } from "./SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js";
4
+ import { T as E, u as F, y as N, V as k, D, C as G, b as I, U as Q } from "./utils-BFjwGsZE-dHVj8huE.js";
5
+ var l = function(n, r) {
6
+ var t = typeof Symbol == "function" && n[Symbol.iterator];
7
+ if (!t) return n;
8
+ var e = t.call(n), a, o = [], i;
9
+ try {
10
+ for (; (r === void 0 || r-- > 0) && !(a = e.next()).done; ) o.push(a.value);
11
+ } catch (s) {
12
+ i = { error: s };
13
+ } finally {
14
+ try {
15
+ a && !a.done && (t = e.return) && t.call(e);
16
+ } finally {
17
+ if (i) throw i.error;
18
+ }
19
+ }
20
+ return o;
21
+ }, p = function(n, r, t) {
22
+ if (arguments.length === 2) for (var e = 0, a = r.length, o; e < a; e++)
23
+ (o || !(e in r)) && (o || (o = Array.prototype.slice.call(r, 0, e)), o[e] = r[e]);
24
+ return n.concat(o || Array.prototype.slice.call(r));
25
+ }, f = (
26
+ /** @class */
27
+ function() {
28
+ function n() {
29
+ this._enabled = !1, this._currentContext = c;
30
+ }
31
+ return n.prototype._bindFunction = function(r, t) {
32
+ r === void 0 && (r = c);
33
+ var e = this, a = function() {
34
+ for (var o = this, i = [], s = 0; s < arguments.length; s++)
35
+ i[s] = arguments[s];
36
+ return e.with(r, function() {
37
+ return t.apply(o, i);
38
+ });
39
+ };
40
+ return Object.defineProperty(a, "length", {
41
+ enumerable: !1,
42
+ configurable: !0,
43
+ writable: !1,
44
+ value: t.length
45
+ }), a;
46
+ }, n.prototype.active = function() {
47
+ return this._currentContext;
48
+ }, n.prototype.bind = function(r, t) {
49
+ return r === void 0 && (r = this.active()), typeof t == "function" ? this._bindFunction(r, t) : t;
50
+ }, n.prototype.disable = function() {
51
+ return this._currentContext = c, this._enabled = !1, this;
52
+ }, n.prototype.enable = function() {
53
+ return this._enabled ? this : (this._enabled = !0, this._currentContext = c, this);
54
+ }, n.prototype.with = function(r, t, e) {
55
+ for (var a = [], o = 3; o < arguments.length; o++)
56
+ a[o - 3] = arguments[o];
57
+ var i = this._currentContext;
58
+ this._currentContext = r || c;
59
+ try {
60
+ return t.call.apply(t, p([e], l(a), !1));
61
+ } finally {
62
+ this._currentContext = i;
63
+ }
64
+ }, n;
65
+ }()
66
+ ), h = /* @__PURE__ */ function() {
67
+ var n = function(r, t) {
68
+ return n = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, a) {
69
+ e.__proto__ = a;
70
+ } || function(e, a) {
71
+ for (var o in a) Object.prototype.hasOwnProperty.call(a, o) && (e[o] = a[o]);
72
+ }, n(r, t);
73
+ };
74
+ return function(r, t) {
75
+ if (typeof t != "function" && t !== null)
76
+ throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
77
+ n(r, t);
78
+ function e() {
79
+ this.constructor = r;
80
+ }
81
+ r.prototype = t === null ? Object.create(t) : (e.prototype = t.prototype, new e());
82
+ };
83
+ }(), g = (
84
+ /** @class */
85
+ function(n) {
86
+ h(r, n);
87
+ function r(t) {
88
+ t === void 0 && (t = {});
89
+ var e = n.call(this, t) || this;
90
+ if (t.contextManager)
91
+ throw "contextManager should be defined in register method not in constructor";
92
+ if (t.propagator)
93
+ throw "propagator should be defined in register method not in constructor";
94
+ return e;
95
+ }
96
+ return r.prototype.register = function(t) {
97
+ t === void 0 && (t = {}), t.contextManager === void 0 && (t.contextManager = new f()), t.contextManager && t.contextManager.enable(), n.prototype.register.call(this, t);
98
+ }, r;
99
+ }(u)
100
+ );
101
+ export {
102
+ b as AlwaysOffSampler,
103
+ x as AlwaysOnSampler,
104
+ u as BasicTracerProvider,
105
+ _ as BatchSpanProcessor,
106
+ S as ConsoleSpanExporter,
107
+ w as ForceFlushState,
108
+ P as NoopSpanProcessor,
109
+ C as ParentBasedSampler,
110
+ E as PerformanceTimingNames,
111
+ O as RandomIdGenerator,
112
+ T as SamplingDecision,
113
+ M as SimpleSpanProcessor,
114
+ j as Span,
115
+ f as StackContextManager,
116
+ A as TraceIdRatioBasedSampler,
117
+ B as Tracer,
118
+ g as WebTracerProvider,
119
+ F as addSpanNetworkEvent,
120
+ N as addSpanNetworkEvents,
121
+ k as getResource,
122
+ D as hasKey,
123
+ G as parseUrl,
124
+ I as shouldPropagateTraceHeaders,
125
+ Q as sortResources
126
+ };
127
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtMy1RRmItUFktIX57MDA2fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFEgYXMgUWkgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IHQgYXMgdGUgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItRHNheW1rcUEtIX57MDA0fX4uanMnO1xuZXhwb3J0IHsgUiBhcyBBbHdheXNPZmZTYW1wbGVyLCBnIGFzIEFsd2F5c09uU2FtcGxlciwgRCBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIGUgYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgUyBhcyBGb3JjZUZsdXNoU3RhdGUsIGogYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIEIgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBHIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBQIGFzIFNhbXBsaW5nRGVjaXNpb24sIHIgYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgeCBhcyBTcGFuLCBXIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgeiBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItRHNheW1rcUEtIX57MDA0fX4uanMnO1xuZXhwb3J0IHsgVCBhcyBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLCB1IGFzIGFkZFNwYW5OZXR3b3JrRXZlbnQsIHkgYXMgYWRkU3Bhbk5ldHdvcmtFdmVudHMsIFYgYXMgZ2V0UmVzb3VyY2UsIEQgYXMgaGFzS2V5LCBDIGFzIHBhcnNlVXJsLCBiIGFzIHNob3VsZFByb3BhZ2F0ZVRyYWNlSGVhZGVycywgVSBhcyBzb3J0UmVzb3VyY2VzIH0gZnJvbSAnLi91dGlscy1CRmp3R3NaRS0hfnswMDh9fi5qcyc7XG5cbnZhciBsID0gZnVuY3Rpb24obiwgcikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIG5bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFlKSByZXR1cm4gbjtcbiAgdmFyIHQgPSBlLmNhbGwobiksIG8sIGEgPSBbXSwgcztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKG8gPSB0Lm5leHQoKSkuZG9uZTsgKSBhLnB1c2goby52YWx1ZSk7XG4gIH0gY2F0Y2ggKGkpIHtcbiAgICBzID0geyBlcnJvcjogaSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBvICYmICFvLmRvbmUgJiYgKGUgPSB0LnJldHVybikgJiYgZS5jYWxsKHQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAocykgdGhyb3cgcy5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGE7XG59LCBwID0gZnVuY3Rpb24obiwgciwgZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgdCA9IDAsIG8gPSByLmxlbmd0aCwgYTsgdCA8IG87IHQrKylcbiAgICAoYSB8fCAhKHQgaW4gcikpICYmIChhIHx8IChhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgdCkpLCBhW3RdID0gclt0XSk7XG4gIHJldHVybiBuLmNvbmNhdChhIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIGYgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZSwgdGhpcy5fY3VycmVudENvbnRleHQgPSBRaTtcbiAgICB9XG4gICAgcmV0dXJuIG4ucHJvdG90eXBlLl9iaW5kRnVuY3Rpb24gPSBmdW5jdGlvbihyLCBlKSB7XG4gICAgICByID09PSB2b2lkIDAgJiYgKHIgPSBRaSk7XG4gICAgICB2YXIgdCA9IHRoaXMsIG8gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICh2YXIgYSA9IHRoaXMsIHMgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIHQud2l0aChyLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gZS5hcHBseShhLCBzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImxlbmd0aFwiLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IGUubGVuZ3RoXG4gICAgICB9KSwgbztcbiAgICB9LCBuLnByb3RvdHlwZS5hY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q29udGV4dDtcbiAgICB9LCBuLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24ociwgZSkge1xuICAgICAgcmV0dXJuIHIgPT09IHZvaWQgMCAmJiAociA9IHRoaXMuYWN0aXZlKCkpLCB0eXBlb2YgZSA9PSBcImZ1bmN0aW9uXCIgPyB0aGlzLl9iaW5kRnVuY3Rpb24ociwgZSkgOiBlO1xuICAgIH0sIG4ucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q29udGV4dCA9IFFpLCB0aGlzLl9lbmFibGVkID0gZmFsc2UsIHRoaXM7XG4gICAgfSwgbi5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCA/IHRoaXMgOiAodGhpcy5fZW5hYmxlZCA9IHRydWUsIHRoaXMuX2N1cnJlbnRDb250ZXh0ID0gUWksIHRoaXMpO1xuICAgIH0sIG4ucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbihyLCBlLCB0KSB7XG4gICAgICBmb3IgKHZhciBvID0gW10sIGEgPSAzOyBhIDwgYXJndW1lbnRzLmxlbmd0aDsgYSsrKVxuICAgICAgICBvW2EgLSAzXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIHZhciBzID0gdGhpcy5fY3VycmVudENvbnRleHQ7XG4gICAgICB0aGlzLl9jdXJyZW50Q29udGV4dCA9IHIgfHwgUWk7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZS5jYWxsLmFwcGx5KGUsIHAoW3RdLCBsKG8pLCAhMSkpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5fY3VycmVudENvbnRleHQgPSBzO1xuICAgICAgfVxuICAgIH0sIG47XG4gIH0oKVxuKSwgZCA9IC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgdmFyIG4gPSBmdW5jdGlvbihyLCBlKSB7XG4gICAgcmV0dXJuIG4gPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbih0LCBvKSB7XG4gICAgICB0Ll9fcHJvdG9fXyA9IG87XG4gICAgfSB8fCBmdW5jdGlvbih0LCBvKSB7XG4gICAgICBmb3IgKHZhciBhIGluIG8pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBhKSAmJiAodFthXSA9IG9bYV0pO1xuICAgIH0sIG4ociwgZSk7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbihyLCBlKSB7XG4gICAgaWYgKHR5cGVvZiBlICE9IFwiZnVuY3Rpb25cIiAmJiBlICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoZSkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIG4ociwgZSk7XG4gICAgZnVuY3Rpb24gdCgpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSByO1xuICAgIH1cbiAgICByLnByb3RvdHlwZSA9IGUgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGUpIDogKHQucHJvdG90eXBlID0gZS5wcm90b3R5cGUsIG5ldyB0KCkpO1xuICB9O1xufSgpLCB2ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKG4pIHtcbiAgICBkKHIsIG4pO1xuICAgIGZ1bmN0aW9uIHIoZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pO1xuICAgICAgdmFyIHQgPSBuLmNhbGwodGhpcywgZSkgfHwgdGhpcztcbiAgICAgIGlmIChlLmNvbnRleHRNYW5hZ2VyKVxuICAgICAgICB0aHJvdyBcImNvbnRleHRNYW5hZ2VyIHNob3VsZCBiZSBkZWZpbmVkIGluIHJlZ2lzdGVyIG1ldGhvZCBub3QgaW4gY29uc3RydWN0b3JcIjtcbiAgICAgIGlmIChlLnByb3BhZ2F0b3IpXG4gICAgICAgIHRocm93IFwicHJvcGFnYXRvciBzaG91bGQgYmUgZGVmaW5lZCBpbiByZWdpc3RlciBtZXRob2Qgbm90IGluIGNvbnN0cnVjdG9yXCI7XG4gICAgICByZXR1cm4gdDtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24oZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pLCBlLmNvbnRleHRNYW5hZ2VyID09PSB2b2lkIDAgJiYgKGUuY29udGV4dE1hbmFnZXIgPSBuZXcgZigpKSwgZS5jb250ZXh0TWFuYWdlciAmJiBlLmNvbnRleHRNYW5hZ2VyLmVuYWJsZSgpLCBuLnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKHRoaXMsIGUpO1xuICAgIH0sIHI7XG4gIH0odGUpXG4pO1xuXG5leHBvcnQgeyB0ZSBhcyBCYXNpY1RyYWNlclByb3ZpZGVyLCBmIGFzIFN0YWNrQ29udGV4dE1hbmFnZXIsIHYgYXMgV2ViVHJhY2VyUHJvdmlkZXIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFNBQVU7QUFDeEIsU0FBUyxLQUFLQyxTQUFVO0FBQ3hCLFNBQWMsS0FBTEMsR0FBNEIsS0FBTEMsR0FBMkIsS0FBTEMsR0FBOEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBMkIsS0FBTEMsR0FBNkIsS0FBTEMsR0FB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LE1BQU0sT0FBTyxPQUFPLE9BQU9BLENBQUMsS0FBS2lCLEVBQUUsWUFBWWpCLEVBQUUsV0FBVyxJQUFJaUIsRUFBRTtBQUFBLEVBQ2xGO0FBQ0YsRUFBRSxHQUFHTTtBQUFBO0FBQUEsRUFFSCxTQUFTLEdBQUc7QUFDVixJQUFBRCxFQUFFLEdBQUcsQ0FBQztBQUNOLGFBQVMsRUFBRXRCLEdBQUc7QUFDWixNQUFBQSxNQUFNLFdBQVdBLElBQUksQ0FBQztBQUN0QixVQUFJaUIsSUFBSSxFQUFFLEtBQUssTUFBTWpCLENBQUMsS0FBSztBQUMzQixVQUFJQSxFQUFFO0FBQ0osY0FBTTtBQUNSLFVBQUlBLEVBQUU7QUFDSixjQUFNO0FBQ1IsYUFBT2lCO0FBQUEsSUFDVDtBQUNBLFdBQU8sRUFBRSxVQUFVLFdBQVcsU0FBU2pCLEdBQUc7QUFDeEMsTUFBQUEsTUFBTSxXQUFXQSxJQUFJLENBQUMsSUFBSUEsRUFBRSxtQkFBbUIsV0FBV0EsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLElBQUlBLEVBQUUsa0JBQWtCQSxFQUFFLGVBQWUsT0FBTyxHQUFHLEVBQUUsVUFBVSxTQUFTLEtBQUssTUFBTUEsQ0FBQztBQUFBLElBQ3pLLEdBQUc7QUFBQSxFQUNMLEVBQUVKLENBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiUWkiLCAidGUiLCAiUiIsICJnIiwgIkQiLCAiZSIsICJTIiwgImoiLCAiQiIsICJHIiwgIlAiLCAiciIsICJ4IiwgIlciLCAieiIsICJUIiwgInUiLCAieSIsICJWIiwgIkMiLCAiYiIsICJVIiwgInQiLCAibyIsICJhIiwgInMiLCAiaSIsICJkIiwgInYiXQp9Cg==