@getopenpay/openpay-js-react 0.5.15 → 0.5.16

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 (36) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/Resource-D6e1SVqp-BeOAe8CK.js +176 -0
  3. package/dist/SimpleSpanProcessor-B5oeCAH_-CNwRvldN.js +910 -0
  4. package/dist/detect-resources-D-FR6I1M-DgVqsro8.js +862 -0
  5. package/dist/{diag-api-DbLQG6Cy-7Q64bfX9.js → diag-api-7f_bGNCd-CpEfr1jK.js} +2 -2
  6. package/dist/index-BFik66y9-BRo2pwAy.js +1012 -0
  7. package/dist/index-Bk9VFx-5-BeIAJsOs.js +127 -0
  8. package/dist/index-C1R5n4f5-BEiNGyPJ.js +430 -0
  9. package/dist/{index-B2hBQXxN-CgWoAORq.js → index-CfN_T6km-BTbU3RrT.js} +2 -2
  10. package/dist/index-Ck97EOCA-Zm6JWqpV.js +1613 -0
  11. package/dist/index-DjSIi8qA-DbNOQoO0.js +147 -0
  12. package/dist/{index-CDEhufnp-CDtO0j1l.js → index-SfjGhwLd-D8Gzvy7d.js} +2 -2
  13. package/dist/index-Zrl0yXaO-DZcZ2j3o.js +6718 -0
  14. package/dist/index-ghrKKt8-.js +9352 -0
  15. package/dist/{index-BJ3-FtuX-DlTusXVc.js → index-uguPxhWW-DM-QuCEc.js} +5 -5
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/metrics-api-Db6Frex7-qndTY0vL.js +160 -0
  19. package/dist/{suppress-tracing-i166ZvAf-D2QqEK4Q.js → suppress-tracing-CDURENlV-rNvzoerf.js} +2 -2
  20. package/dist/url-CIe6o1oH-CoerVU9o.js +798 -0
  21. package/dist/{utils-BFjwGsZE-dHVj8huE.js → utils-BhSCC4TN-CdIRB2pa.js} +2 -2
  22. package/dist/utils-cMYN_8r4-CH-hT-iy.js +270 -0
  23. package/package.json +1 -1
  24. package/dist/Resource-C_JyOUi0-DCzIGxs8.js +0 -176
  25. package/dist/SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js +0 -910
  26. package/dist/detect-resources-WIF4Hgfd-BW23wWaP.js +0 -862
  27. package/dist/index-0_SuCli2-B5_tBBpx.js +0 -430
  28. package/dist/index-3-QFb-PY-DJRVxNSq.js +0 -127
  29. package/dist/index-CV8wT6Y2-Bh-lYVds.js +0 -6718
  30. package/dist/index-DIoaqP4_-Cs74t_lP.js +0 -1012
  31. package/dist/index-DJhVQsLX-BiIZL-r4.js +0 -147
  32. package/dist/index-Din5I5pT-Be1fPmsi.js +0 -1613
  33. package/dist/index-nPWqtn7T.js +0 -9357
  34. package/dist/metrics-api-B_K2nQRV-Be59r2AI.js +0 -160
  35. package/dist/url-D2-xNTDs-BLiqCwPG.js +0 -798
  36. package/dist/utils-Blz-BInC-461m4Gx4.js +0 -270
@@ -1,1012 +0,0 @@
1
- import { y as v, h as D, dC as St, g as dt, w as yt, dG as It, O as At, a as ht, dH as mt, dE as vt, dK as gt, c as Ct, dL as Nt, dD as Mt, dF as bt, p as Ut, dJ as wt, dI as Bt } from "./url-D2-xNTDs-BLiqCwPG.js";
2
- import { a as X, u as J, s as Dt } from "./suppress-tracing-i166ZvAf-D2QqEK4Q.js";
3
- import { r as O } from "./diag-api-DbLQG6Cy-7Q64bfX9.js";
4
- import { A as Q, a as Xt } from "./ExportResult-BacsqwKA-wgTHEn_9.js";
5
- import { c as u, M as N, y as q, B as M, T as K, Z as jt, d as Gt } from "./index-nPWqtn7T.js";
6
- import { bm as xt, bl as Ht } from "./sdk-info-ChuKu8zW-BkU0NT3O.js";
7
- var s;
8
- (function(t) {
9
- t[t.NOT_RECORD = 0] = "NOT_RECORD", t[t.RECORD = 1] = "RECORD", t[t.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED";
10
- })(s || (s = {}));
11
- var Vt = "=", b = ";", I = ",", g = "baggage", Ft = 180, Kt = 4096, kt = 8192, $t = function(t, e) {
12
- var n = typeof Symbol == "function" && t[Symbol.iterator];
13
- if (!n) return t;
14
- var r = n.call(t), o, a = [], i;
15
- try {
16
- for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
17
- } catch (_) {
18
- i = { error: _ };
19
- } finally {
20
- try {
21
- o && !o.done && (n = r.return) && n.call(r);
22
- } finally {
23
- if (i) throw i.error;
24
- }
25
- }
26
- return a;
27
- };
28
- function tt(t) {
29
- return t.reduce(function(e, n) {
30
- var r = "" + e + (e !== "" ? I : "") + n;
31
- return r.length > kt ? e : r;
32
- }, "");
33
- }
34
- function et(t) {
35
- return t.getAllEntries().map(function(e) {
36
- var n = $t(e, 2), r = n[0], o = n[1], a = encodeURIComponent(r) + "=" + encodeURIComponent(o.value);
37
- return o.metadata !== void 0 && (a += b + o.metadata.toString()), a;
38
- });
39
- }
40
- function j(t) {
41
- var e = t.split(b);
42
- if (!(e.length <= 0)) {
43
- var n = e.shift();
44
- if (n) {
45
- var r = n.indexOf(Vt);
46
- if (!(r <= 0)) {
47
- var o = decodeURIComponent(n.substring(0, r).trim()), a = decodeURIComponent(n.substring(r + 1).trim()), i;
48
- return e.length > 0 && (i = St(e.join(b))), { key: o, value: a, metadata: i };
49
- }
50
- }
51
- }
52
- }
53
- function Zt(t) {
54
- return typeof t != "string" || t.length === 0 ? {} : t.split(I).map(function(e) {
55
- return j(e);
56
- }).filter(function(e) {
57
- return e !== void 0 && e.value.length > 0;
58
- }).reduce(function(e, n) {
59
- return e[n.key] = n.value, e;
60
- }, {});
61
- }
62
- var zt = (
63
- /** @class */
64
- function() {
65
- function t() {
66
- }
67
- return t.prototype.inject = function(e, n, r) {
68
- var o = v.getBaggage(e);
69
- if (!(!o || X(e))) {
70
- var a = et(o).filter(function(_) {
71
- return _.length <= Kt;
72
- }).slice(0, Ft), i = tt(a);
73
- i.length > 0 && r.set(n, g, i);
74
- }
75
- }, t.prototype.extract = function(e, n, r) {
76
- var o = r.get(n, g), a = Array.isArray(o) ? o.join(I) : o;
77
- if (!a)
78
- return e;
79
- var i = {};
80
- if (a.length === 0)
81
- return e;
82
- var _ = a.split(I);
83
- return _.forEach(function(T) {
84
- var E = j(T);
85
- if (E) {
86
- var c = { value: E.value };
87
- E.metadata && (c.metadata = E.metadata), i[E.key] = c;
88
- }
89
- }), Object.entries(i).length === 0 ? e : v.setBaggage(e, v.createBaggage(i));
90
- }, t.prototype.fields = function() {
91
- return [g];
92
- }, t;
93
- }()
94
- ), Yt = (
95
- /** @class */
96
- function() {
97
- function t(e, n) {
98
- this._monotonicClock = n, this._epochMillis = e.now(), this._performanceMillis = n.now();
99
- }
100
- return t.prototype.now = function() {
101
- var e = this._monotonicClock.now() - this._performanceMillis;
102
- return this._epochMillis + e;
103
- }, t;
104
- }()
105
- ), rt = function(t) {
106
- var e = typeof Symbol == "function" && Symbol.iterator, n = e && t[e], r = 0;
107
- if (n) return n.call(t);
108
- if (t && typeof t.length == "number") return {
109
- next: function() {
110
- return t && r >= t.length && (t = void 0), { value: t && t[r++], done: !t };
111
- }
112
- };
113
- throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
114
- }, Wt = function(t, e) {
115
- var n = typeof Symbol == "function" && t[Symbol.iterator];
116
- if (!n) return t;
117
- var r = n.call(t), o, a = [], i;
118
- try {
119
- for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
120
- } catch (_) {
121
- i = { error: _ };
122
- } finally {
123
- try {
124
- o && !o.done && (n = r.return) && n.call(r);
125
- } finally {
126
- if (i) throw i.error;
127
- }
128
- }
129
- return a;
130
- };
131
- function Jt(t) {
132
- var e, n, r = {};
133
- if (typeof t != "object" || t == null)
134
- return r;
135
- try {
136
- for (var o = rt(Object.entries(t)), a = o.next(); !a.done; a = o.next()) {
137
- var i = Wt(a.value, 2), _ = i[0], T = i[1];
138
- if (!nt(_)) {
139
- O.warn("Invalid attribute key: " + _);
140
- continue;
141
- }
142
- if (!ot(T)) {
143
- O.warn("Invalid attribute value set for key: " + _);
144
- continue;
145
- }
146
- Array.isArray(T) ? r[_] = T.slice() : r[_] = T;
147
- }
148
- } catch (E) {
149
- e = { error: E };
150
- } finally {
151
- try {
152
- a && !a.done && (n = o.return) && n.call(o);
153
- } finally {
154
- if (e) throw e.error;
155
- }
156
- }
157
- return r;
158
- }
159
- function nt(t) {
160
- return typeof t == "string" && t.length > 0;
161
- }
162
- function ot(t) {
163
- return t == null ? !0 : Array.isArray(t) ? Qt(t) : at(t);
164
- }
165
- function Qt(t) {
166
- var e, n, r;
167
- try {
168
- for (var o = rt(t), a = o.next(); !a.done; a = o.next()) {
169
- var i = a.value;
170
- if (i != null) {
171
- if (!r) {
172
- if (at(i)) {
173
- r = typeof i;
174
- continue;
175
- }
176
- return !1;
177
- }
178
- if (typeof i !== r)
179
- return !1;
180
- }
181
- }
182
- } catch (_) {
183
- e = { error: _ };
184
- } finally {
185
- try {
186
- a && !a.done && (n = o.return) && n.call(o);
187
- } finally {
188
- if (e) throw e.error;
189
- }
190
- }
191
- return !0;
192
- }
193
- function at(t) {
194
- switch (typeof t) {
195
- case "number":
196
- case "boolean":
197
- case "string":
198
- return !0;
199
- }
200
- return !1;
201
- }
202
- function it() {
203
- return function(t) {
204
- O.error(qt(t));
205
- };
206
- }
207
- function qt(t) {
208
- return typeof t == "string" ? t : JSON.stringify(te(t));
209
- }
210
- function te(t) {
211
- for (var e = {}, n = t; n !== null; )
212
- Object.getOwnPropertyNames(n).forEach(function(r) {
213
- if (!e[r]) {
214
- var o = n[r];
215
- o && (e[r] = String(o));
216
- }
217
- }), n = Object.getPrototypeOf(n);
218
- return e;
219
- }
220
- var _t = it();
221
- function ee(t) {
222
- _t = t;
223
- }
224
- function Tt(t) {
225
- try {
226
- _t(t);
227
- } catch {
228
- }
229
- }
230
- var A;
231
- (function(t) {
232
- t.AlwaysOff = "always_off", t.AlwaysOn = "always_on", t.ParentBasedAlwaysOff = "parentbased_always_off", t.ParentBasedAlwaysOn = "parentbased_always_on", t.ParentBasedTraceIdRatio = "parentbased_traceidratio", t.TraceIdRatio = "traceidratio";
233
- })(A || (A = {}));
234
- var re = ",", ne = ["OTEL_SDK_DISABLED"];
235
- function oe(t) {
236
- return ne.indexOf(t) > -1;
237
- }
238
- var ae = [
239
- "OTEL_BSP_EXPORT_TIMEOUT",
240
- "OTEL_BSP_MAX_EXPORT_BATCH_SIZE",
241
- "OTEL_BSP_MAX_QUEUE_SIZE",
242
- "OTEL_BSP_SCHEDULE_DELAY",
243
- "OTEL_BLRP_EXPORT_TIMEOUT",
244
- "OTEL_BLRP_MAX_EXPORT_BATCH_SIZE",
245
- "OTEL_BLRP_MAX_QUEUE_SIZE",
246
- "OTEL_BLRP_SCHEDULE_DELAY",
247
- "OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT",
248
- "OTEL_ATTRIBUTE_COUNT_LIMIT",
249
- "OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT",
250
- "OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT",
251
- "OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT",
252
- "OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT",
253
- "OTEL_SPAN_EVENT_COUNT_LIMIT",
254
- "OTEL_SPAN_LINK_COUNT_LIMIT",
255
- "OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT",
256
- "OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT",
257
- "OTEL_EXPORTER_OTLP_TIMEOUT",
258
- "OTEL_EXPORTER_OTLP_TRACES_TIMEOUT",
259
- "OTEL_EXPORTER_OTLP_METRICS_TIMEOUT",
260
- "OTEL_EXPORTER_OTLP_LOGS_TIMEOUT",
261
- "OTEL_EXPORTER_JAEGER_AGENT_PORT"
262
- ];
263
- function ie(t) {
264
- return ae.indexOf(t) > -1;
265
- }
266
- var _e = [
267
- "OTEL_NO_PATCH_MODULES",
268
- "OTEL_PROPAGATORS",
269
- "OTEL_SEMCONV_STABILITY_OPT_IN"
270
- ];
271
- function Te(t) {
272
- return _e.indexOf(t) > -1;
273
- }
274
- var R = 1 / 0, L = 128, Et = 128, ut = 128, G = {
275
- OTEL_SDK_DISABLED: !1,
276
- CONTAINER_NAME: "",
277
- ECS_CONTAINER_METADATA_URI_V4: "",
278
- ECS_CONTAINER_METADATA_URI: "",
279
- HOSTNAME: "",
280
- KUBERNETES_SERVICE_HOST: "",
281
- NAMESPACE: "",
282
- OTEL_BSP_EXPORT_TIMEOUT: 3e4,
283
- OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512,
284
- OTEL_BSP_MAX_QUEUE_SIZE: 2048,
285
- OTEL_BSP_SCHEDULE_DELAY: 5e3,
286
- OTEL_BLRP_EXPORT_TIMEOUT: 3e4,
287
- OTEL_BLRP_MAX_EXPORT_BATCH_SIZE: 512,
288
- OTEL_BLRP_MAX_QUEUE_SIZE: 2048,
289
- OTEL_BLRP_SCHEDULE_DELAY: 5e3,
290
- OTEL_EXPORTER_JAEGER_AGENT_HOST: "",
291
- OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832,
292
- OTEL_EXPORTER_JAEGER_ENDPOINT: "",
293
- OTEL_EXPORTER_JAEGER_PASSWORD: "",
294
- OTEL_EXPORTER_JAEGER_USER: "",
295
- OTEL_EXPORTER_OTLP_ENDPOINT: "",
296
- OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "",
297
- OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "",
298
- OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: "",
299
- OTEL_EXPORTER_OTLP_HEADERS: "",
300
- OTEL_EXPORTER_OTLP_TRACES_HEADERS: "",
301
- OTEL_EXPORTER_OTLP_METRICS_HEADERS: "",
302
- OTEL_EXPORTER_OTLP_LOGS_HEADERS: "",
303
- OTEL_EXPORTER_OTLP_TIMEOUT: 1e4,
304
- OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 1e4,
305
- OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 1e4,
306
- OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: 1e4,
307
- OTEL_EXPORTER_ZIPKIN_ENDPOINT: "http://localhost:9411/api/v2/spans",
308
- OTEL_LOG_LEVEL: u.INFO,
309
- OTEL_NO_PATCH_MODULES: [],
310
- OTEL_PROPAGATORS: ["tracecontext", "baggage"],
311
- OTEL_RESOURCE_ATTRIBUTES: "",
312
- OTEL_SERVICE_NAME: "",
313
- OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
314
- OTEL_ATTRIBUTE_COUNT_LIMIT: L,
315
- OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
316
- OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: L,
317
- OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
318
- OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: L,
319
- OTEL_SPAN_EVENT_COUNT_LIMIT: 128,
320
- OTEL_SPAN_LINK_COUNT_LIMIT: 128,
321
- OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Et,
322
- OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ut,
323
- OTEL_TRACES_EXPORTER: "",
324
- OTEL_TRACES_SAMPLER: A.ParentBasedAlwaysOn,
325
- OTEL_TRACES_SAMPLER_ARG: "",
326
- OTEL_LOGS_EXPORTER: "",
327
- OTEL_EXPORTER_OTLP_INSECURE: "",
328
- OTEL_EXPORTER_OTLP_TRACES_INSECURE: "",
329
- OTEL_EXPORTER_OTLP_METRICS_INSECURE: "",
330
- OTEL_EXPORTER_OTLP_LOGS_INSECURE: "",
331
- OTEL_EXPORTER_OTLP_CERTIFICATE: "",
332
- OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: "",
333
- OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: "",
334
- OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE: "",
335
- OTEL_EXPORTER_OTLP_COMPRESSION: "",
336
- OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: "",
337
- OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: "",
338
- OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: "",
339
- OTEL_EXPORTER_OTLP_CLIENT_KEY: "",
340
- OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: "",
341
- OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: "",
342
- OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY: "",
343
- OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: "",
344
- OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: "",
345
- OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: "",
346
- OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE: "",
347
- OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf",
348
- OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "http/protobuf",
349
- OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "http/protobuf",
350
- OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: "http/protobuf",
351
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "cumulative",
352
- OTEL_SEMCONV_STABILITY_OPT_IN: []
353
- };
354
- function Ee(t, e, n) {
355
- if (!(typeof n[t] > "u")) {
356
- var r = String(n[t]);
357
- e[t] = r.toLowerCase() === "true";
358
- }
359
- }
360
- function ue(t, e, n, r, o) {
361
- if (r === void 0 && (r = -1 / 0), o === void 0 && (o = 1 / 0), typeof n[t] < "u") {
362
- var a = Number(n[t]);
363
- isNaN(a) || (a < r ? e[t] = r : a > o ? e[t] = o : e[t] = a);
364
- }
365
- }
366
- function le(t, e, n, r) {
367
- r === void 0 && (r = re);
368
- var o = n[t];
369
- typeof o == "string" && (e[t] = o.split(r).map(function(a) {
370
- return a.trim();
371
- }));
372
- }
373
- var ce = {
374
- ALL: u.ALL,
375
- VERBOSE: u.VERBOSE,
376
- DEBUG: u.DEBUG,
377
- INFO: u.INFO,
378
- WARN: u.WARN,
379
- ERROR: u.ERROR,
380
- NONE: u.NONE
381
- };
382
- function se(t, e, n) {
383
- var r = n[t];
384
- if (typeof r == "string") {
385
- var o = ce[r.toUpperCase()];
386
- o != null && (e[t] = o);
387
- }
388
- }
389
- function x(t) {
390
- var e = {};
391
- for (var n in G) {
392
- var r = n;
393
- switch (r) {
394
- case "OTEL_LOG_LEVEL":
395
- se(r, e, t);
396
- break;
397
- default:
398
- if (oe(r))
399
- Ee(r, e, t);
400
- else if (ie(r))
401
- ue(r, e, t);
402
- else if (Te(r))
403
- le(r, e, t);
404
- else {
405
- var o = t[r];
406
- typeof o < "u" && o !== null && (e[r] = String(o));
407
- }
408
- }
409
- }
410
- return e;
411
- }
412
- function fe() {
413
- var t = x(D);
414
- return Object.assign({}, G, t);
415
- }
416
- function Oe() {
417
- return x(D);
418
- }
419
- var pe = function(t, e) {
420
- var n = typeof Symbol == "function" && t[Symbol.iterator];
421
- if (!n) return t;
422
- var r = n.call(t), o, a = [], i;
423
- try {
424
- for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
425
- } catch (_) {
426
- i = { error: _ };
427
- } finally {
428
- try {
429
- o && !o.done && (n = r.return) && n.call(r);
430
- } finally {
431
- if (i) throw i.error;
432
- }
433
- }
434
- return a;
435
- }, Re = function(t, e, n) {
436
- if (arguments.length === 2) for (var r = 0, o = e.length, a; r < o; r++)
437
- (a || !(r in e)) && (a || (a = Array.prototype.slice.call(e, 0, r)), a[r] = e[r]);
438
- return t.concat(a || Array.prototype.slice.call(e));
439
- };
440
- function Le(t) {
441
- return btoa(String.fromCharCode.apply(String, Re([], pe(Q(t)), !1)));
442
- }
443
- var Pe = 8, Se = 16, de = (
444
- /** @class */
445
- /* @__PURE__ */ function() {
446
- function t() {
447
- this.generateTraceId = k(Se), this.generateSpanId = k(Pe);
448
- }
449
- return t;
450
- }()
451
- ), p = Array(32);
452
- function k(t) {
453
- return function() {
454
- for (var e = 0; e < t * 2; e++)
455
- p[e] = Math.floor(Math.random() * 16) + 48, p[e] >= 58 && (p[e] += 39);
456
- return String.fromCharCode.apply(null, p.slice(0, t * 2));
457
- };
458
- }
459
- function ye(t) {
460
- }
461
- var Ie = function(t) {
462
- var e = typeof Symbol == "function" && Symbol.iterator, n = e && t[e], r = 0;
463
- if (n) return n.call(t);
464
- if (t && typeof t.length == "number") return {
465
- next: function() {
466
- return t && r >= t.length && (t = void 0), { value: t && t[r++], done: !t };
467
- }
468
- };
469
- throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
470
- }, Ae = (
471
- /** @class */
472
- function() {
473
- function t(e) {
474
- e === void 0 && (e = {});
475
- var n;
476
- this._propagators = (n = e.propagators) !== null && n !== void 0 ? n : [], this._fields = Array.from(new Set(this._propagators.map(function(r) {
477
- return typeof r.fields == "function" ? r.fields() : [];
478
- }).reduce(function(r, o) {
479
- return r.concat(o);
480
- }, [])));
481
- }
482
- return t.prototype.inject = function(e, n, r) {
483
- var o, a;
484
- try {
485
- for (var i = Ie(this._propagators), _ = i.next(); !_.done; _ = i.next()) {
486
- var T = _.value;
487
- try {
488
- T.inject(e, n, r);
489
- } catch (E) {
490
- O.warn("Failed to inject with " + T.constructor.name + ". Err: " + E.message);
491
- }
492
- }
493
- } catch (E) {
494
- o = { error: E };
495
- } finally {
496
- try {
497
- _ && !_.done && (a = i.return) && a.call(i);
498
- } finally {
499
- if (o) throw o.error;
500
- }
501
- }
502
- }, t.prototype.extract = function(e, n, r) {
503
- return this._propagators.reduce(function(o, a) {
504
- try {
505
- return a.extract(o, n, r);
506
- } catch (i) {
507
- O.warn("Failed to extract with " + a.constructor.name + ". Err: " + i.message);
508
- }
509
- return o;
510
- }, e);
511
- }, t.prototype.fields = function() {
512
- return this._fields.slice();
513
- }, t;
514
- }()
515
- ), U = "[_0-9a-z-*/]", he = "[a-z]" + U + "{0,255}", me = "[a-z0-9]" + U + "{0,240}@[a-z]" + U + "{0,13}", ve = new RegExp("^(?:" + he + "|" + me + ")$"), ge = /^[ -~]{0,255}[!-~]$/, Ce = /,|=/;
516
- function Ne(t) {
517
- return ve.test(t);
518
- }
519
- function Me(t) {
520
- return ge.test(t) && !Ce.test(t);
521
- }
522
- var $ = 32, be = 512, Z = ",", z = "=", lt = (
523
- /** @class */
524
- function() {
525
- function t(e) {
526
- this._internalState = /* @__PURE__ */ new Map(), e && this._parse(e);
527
- }
528
- return t.prototype.set = function(e, n) {
529
- var r = this._clone();
530
- return r._internalState.has(e) && r._internalState.delete(e), r._internalState.set(e, n), r;
531
- }, t.prototype.unset = function(e) {
532
- var n = this._clone();
533
- return n._internalState.delete(e), n;
534
- }, t.prototype.get = function(e) {
535
- return this._internalState.get(e);
536
- }, t.prototype.serialize = function() {
537
- var e = this;
538
- return this._keys().reduce(function(n, r) {
539
- return n.push(r + z + e.get(r)), n;
540
- }, []).join(Z);
541
- }, t.prototype._parse = function(e) {
542
- e.length > be || (this._internalState = e.split(Z).reverse().reduce(function(n, r) {
543
- var o = r.trim(), a = o.indexOf(z);
544
- if (a !== -1) {
545
- var i = o.slice(0, a), _ = o.slice(a + 1, r.length);
546
- Ne(i) && Me(_) && n.set(i, _);
547
- }
548
- return n;
549
- }, /* @__PURE__ */ new Map()), this._internalState.size > $ && (this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, $))));
550
- }, t.prototype._keys = function() {
551
- return Array.from(this._internalState.keys()).reverse();
552
- }, t.prototype._clone = function() {
553
- var e = new t();
554
- return e._internalState = new Map(this._internalState), e;
555
- }, t;
556
- }()
557
- ), P = "traceparent", S = "tracestate", Ue = "00", we = "(?!ff)[\\da-f]{2}", Be = "(?![0]{32})[\\da-f]{32}", De = "(?![0]{16})[\\da-f]{16}", Xe = "[\\da-f]{2}", je = new RegExp("^\\s?(" + we + ")-(" + Be + ")-(" + De + ")-(" + Xe + ")(-.*)?\\s?$");
558
- function ct(t) {
559
- var e = je.exec(t);
560
- return !e || e[1] === "00" && e[5] ? null : {
561
- traceId: e[2],
562
- spanId: e[3],
563
- traceFlags: parseInt(e[4], 16)
564
- };
565
- }
566
- var Ge = (
567
- /** @class */
568
- function() {
569
- function t() {
570
- }
571
- return t.prototype.inject = function(e, n, r) {
572
- var o = N.getSpanContext(e);
573
- if (!(!o || X(e) || !q(o))) {
574
- var a = Ue + "-" + o.traceId + "-" + o.spanId + "-0" + Number(o.traceFlags || M.NONE).toString(16);
575
- r.set(n, P, a), o.traceState && r.set(n, S, o.traceState.serialize());
576
- }
577
- }, t.prototype.extract = function(e, n, r) {
578
- var o = r.get(n, P);
579
- if (!o)
580
- return e;
581
- var a = Array.isArray(o) ? o[0] : o;
582
- if (typeof a != "string")
583
- return e;
584
- var i = ct(a);
585
- if (!i)
586
- return e;
587
- i.isRemote = !0;
588
- var _ = r.get(n, S);
589
- if (_) {
590
- var T = Array.isArray(_) ? _.join(",") : _;
591
- i.traceState = new lt(typeof T == "string" ? T : void 0);
592
- }
593
- return N.setSpanContext(e, i);
594
- }, t.prototype.fields = function() {
595
- return [P, S];
596
- }, t;
597
- }()
598
- ), H = jt("OpenTelemetry SDK Context Key RPC_METADATA"), w;
599
- (function(t) {
600
- t.HTTP = "http";
601
- })(w || (w = {}));
602
- function xe(t, e) {
603
- return t.setValue(H, e);
604
- }
605
- function He(t) {
606
- return t.deleteValue(H);
607
- }
608
- function Ve(t) {
609
- return t.getValue(H);
610
- }
611
- var B = (
612
- /** @class */
613
- function() {
614
- function t() {
615
- }
616
- return t.prototype.shouldSample = function() {
617
- return {
618
- decision: s.NOT_RECORD
619
- };
620
- }, t.prototype.toString = function() {
621
- return "AlwaysOffSampler";
622
- }, t;
623
- }()
624
- ), d = (
625
- /** @class */
626
- function() {
627
- function t() {
628
- }
629
- return t.prototype.shouldSample = function() {
630
- return {
631
- decision: s.RECORD_AND_SAMPLED
632
- };
633
- }, t.prototype.toString = function() {
634
- return "AlwaysOnSampler";
635
- }, t;
636
- }()
637
- ), Fe = (
638
- /** @class */
639
- function() {
640
- function t(e) {
641
- var n, r, o, a;
642
- this._root = e.root, this._root || (Tt(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new d()), this._remoteParentSampled = (n = e.remoteParentSampled) !== null && n !== void 0 ? n : new d(), this._remoteParentNotSampled = (r = e.remoteParentNotSampled) !== null && r !== void 0 ? r : new B(), this._localParentSampled = (o = e.localParentSampled) !== null && o !== void 0 ? o : new d(), this._localParentNotSampled = (a = e.localParentNotSampled) !== null && a !== void 0 ? a : new B();
643
- }
644
- return t.prototype.shouldSample = function(e, n, r, o, a, i) {
645
- var _ = N.getSpanContext(e);
646
- return !_ || !q(_) ? this._root.shouldSample(e, n, r, o, a, i) : _.isRemote ? _.traceFlags & M.SAMPLED ? this._remoteParentSampled.shouldSample(e, n, r, o, a, i) : this._remoteParentNotSampled.shouldSample(e, n, r, o, a, i) : _.traceFlags & M.SAMPLED ? this._localParentSampled.shouldSample(e, n, r, o, a, i) : this._localParentNotSampled.shouldSample(e, n, r, o, a, i);
647
- }, t.prototype.toString = function() {
648
- return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
649
- }, t;
650
- }()
651
- ), Ke = (
652
- /** @class */
653
- function() {
654
- function t(e) {
655
- e === void 0 && (e = 0), this._ratio = e, this._ratio = this._normalize(e), this._upperBound = Math.floor(this._ratio * 4294967295);
656
- }
657
- return t.prototype.shouldSample = function(e, n) {
658
- return {
659
- decision: Gt(n) && this._accumulate(n) < this._upperBound ? s.RECORD_AND_SAMPLED : s.NOT_RECORD
660
- };
661
- }, t.prototype.toString = function() {
662
- return "TraceIdRatioBased{" + this._ratio + "}";
663
- }, t.prototype._normalize = function(e) {
664
- return typeof e != "number" || isNaN(e) ? 0 : e >= 1 ? 1 : e <= 0 ? 0 : e;
665
- }, t.prototype._accumulate = function(e) {
666
- for (var n = 0, r = 0; r < e.length / 8; r++) {
667
- var o = r * 8, a = parseInt(e.slice(o, o + 8), 16);
668
- n = (n ^ a) >>> 0;
669
- }
670
- return n;
671
- }, t;
672
- }()
673
- ), ke = "[object Object]", $e = "[object Null]", Ze = "[object Undefined]", ze = Function.prototype, st = ze.toString, Ye = st.call(Object), We = Je(Object.getPrototypeOf, Object), ft = Object.prototype, Ot = ft.hasOwnProperty, l = Symbol ? Symbol.toStringTag : void 0, pt = ft.toString;
674
- function Je(t, e) {
675
- return function(n) {
676
- return t(e(n));
677
- };
678
- }
679
- function Y(t) {
680
- if (!Qe(t) || qe(t) !== ke)
681
- return !1;
682
- var e = We(t);
683
- if (e === null)
684
- return !0;
685
- var n = Ot.call(e, "constructor") && e.constructor;
686
- return typeof n == "function" && n instanceof n && st.call(n) === Ye;
687
- }
688
- function Qe(t) {
689
- return t != null && typeof t == "object";
690
- }
691
- function qe(t) {
692
- return t == null ? t === void 0 ? Ze : $e : l && l in Object(t) ? tr(t) : er(t);
693
- }
694
- function tr(t) {
695
- var e = Ot.call(t, l), n = t[l], r = !1;
696
- try {
697
- t[l] = void 0, r = !0;
698
- } catch {
699
- }
700
- var o = pt.call(t);
701
- return r && (e ? t[l] = n : delete t[l]), o;
702
- }
703
- function er(t) {
704
- return pt.call(t);
705
- }
706
- var rr = 20;
707
- function nr() {
708
- for (var t = [], e = 0; e < arguments.length; e++)
709
- t[e] = arguments[e];
710
- for (var n = t.shift(), r = /* @__PURE__ */ new WeakMap(); t.length > 0; )
711
- n = Rt(n, t.shift(), 0, r);
712
- return n;
713
- }
714
- function C(t) {
715
- return h(t) ? t.slice() : t;
716
- }
717
- function Rt(t, e, n, r) {
718
- n === void 0 && (n = 0);
719
- var o;
720
- if (!(n > rr)) {
721
- if (n++, y(t) || y(e) || Lt(e))
722
- o = C(e);
723
- else if (h(t)) {
724
- if (o = t.slice(), h(e))
725
- for (var a = 0, i = e.length; a < i; a++)
726
- o.push(C(e[a]));
727
- else if (f(e))
728
- for (var _ = Object.keys(e), a = 0, i = _.length; a < i; a++) {
729
- var T = _[a];
730
- o[T] = C(e[T]);
731
- }
732
- } else if (f(t))
733
- if (f(e)) {
734
- if (!or(t, e))
735
- return e;
736
- o = Object.assign({}, t);
737
- for (var _ = Object.keys(e), a = 0, i = _.length; a < i; a++) {
738
- var T = _[a], E = e[T];
739
- if (y(E))
740
- typeof E > "u" ? delete o[T] : o[T] = E;
741
- else {
742
- var c = o[T], m = E;
743
- if (W(t, T, r) || W(e, T, r))
744
- delete o[T];
745
- else {
746
- if (f(c) && f(m)) {
747
- var V = r.get(c) || [], F = r.get(m) || [];
748
- V.push({ obj: t, key: T }), F.push({ obj: e, key: T }), r.set(c, V), r.set(m, F);
749
- }
750
- o[T] = Rt(o[T], E, n, r);
751
- }
752
- }
753
- }
754
- } else
755
- o = e;
756
- return o;
757
- }
758
- }
759
- function W(t, e, n) {
760
- for (var r = n.get(t[e]) || [], o = 0, a = r.length; o < a; o++) {
761
- var i = r[o];
762
- if (i.key === e && i.obj === t)
763
- return !0;
764
- }
765
- return !1;
766
- }
767
- function h(t) {
768
- return Array.isArray(t);
769
- }
770
- function Lt(t) {
771
- return typeof t == "function";
772
- }
773
- function f(t) {
774
- return !y(t) && !h(t) && !Lt(t) && typeof t == "object";
775
- }
776
- function y(t) {
777
- return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || typeof t > "u" || t instanceof Date || t instanceof RegExp || t === null;
778
- }
779
- function or(t, e) {
780
- return !(!Y(t) || !Y(e));
781
- }
782
- var ar = /* @__PURE__ */ function() {
783
- var t = function(e, n) {
784
- return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, o) {
785
- r.__proto__ = o;
786
- } || function(r, o) {
787
- for (var a in o) Object.prototype.hasOwnProperty.call(o, a) && (r[a] = o[a]);
788
- }, t(e, n);
789
- };
790
- return function(e, n) {
791
- if (typeof n != "function" && n !== null)
792
- throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");
793
- t(e, n);
794
- function r() {
795
- this.constructor = e;
796
- }
797
- e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r());
798
- };
799
- }(), Pt = (
800
- /** @class */
801
- function(t) {
802
- ar(e, t);
803
- function e(n) {
804
- var r = t.call(this, n) || this;
805
- return Object.setPrototypeOf(r, e.prototype), r;
806
- }
807
- return e;
808
- }(Error)
809
- );
810
- function ir(t, e) {
811
- var n, r = new Promise(function(o, a) {
812
- n = setTimeout(function() {
813
- a(new Pt("Operation timed out."));
814
- }, e);
815
- });
816
- return Promise.race([t, r]).then(function(o) {
817
- return clearTimeout(n), o;
818
- }, function(o) {
819
- throw clearTimeout(n), o;
820
- });
821
- }
822
- function _r(t) {
823
- return typeof t == "function" && typeof t.__original == "function" && typeof t.__unwrap == "function" && t.__wrapped === !0;
824
- }
825
- var Tr = (
826
- /** @class */
827
- function() {
828
- function t() {
829
- var e = this;
830
- this._promise = new Promise(function(n, r) {
831
- e._resolve = n, e._reject = r;
832
- });
833
- }
834
- return Object.defineProperty(t.prototype, "promise", {
835
- get: function() {
836
- return this._promise;
837
- },
838
- enumerable: !1,
839
- configurable: !0
840
- }), t.prototype.resolve = function(e) {
841
- this._resolve(e);
842
- }, t.prototype.reject = function(e) {
843
- this._reject(e);
844
- }, t;
845
- }()
846
- ), Er = function(t, e) {
847
- var n = typeof Symbol == "function" && t[Symbol.iterator];
848
- if (!n) return t;
849
- var r = n.call(t), o, a = [], i;
850
- try {
851
- for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
852
- } catch (_) {
853
- i = { error: _ };
854
- } finally {
855
- try {
856
- o && !o.done && (n = r.return) && n.call(r);
857
- } finally {
858
- if (i) throw i.error;
859
- }
860
- }
861
- return a;
862
- }, ur = function(t, e, n) {
863
- if (arguments.length === 2) for (var r = 0, o = e.length, a; r < o; r++)
864
- (a || !(r in e)) && (a || (a = Array.prototype.slice.call(e, 0, r)), a[r] = e[r]);
865
- return t.concat(a || Array.prototype.slice.call(e));
866
- }, lr = (
867
- /** @class */
868
- function() {
869
- function t(e, n) {
870
- this._callback = e, this._that = n, this._isCalled = !1, this._deferred = new Tr();
871
- }
872
- return Object.defineProperty(t.prototype, "isCalled", {
873
- get: function() {
874
- return this._isCalled;
875
- },
876
- enumerable: !1,
877
- configurable: !0
878
- }), Object.defineProperty(t.prototype, "promise", {
879
- get: function() {
880
- return this._deferred.promise;
881
- },
882
- enumerable: !1,
883
- configurable: !0
884
- }), t.prototype.call = function() {
885
- for (var e, n = this, r = [], o = 0; o < arguments.length; o++)
886
- r[o] = arguments[o];
887
- if (!this._isCalled) {
888
- this._isCalled = !0;
889
- try {
890
- Promise.resolve((e = this._callback).call.apply(e, ur([this._that], Er(r), !1))).then(function(a) {
891
- return n._deferred.resolve(a);
892
- }, function(a) {
893
- return n._deferred.reject(a);
894
- });
895
- } catch (a) {
896
- this._deferred.reject(a);
897
- }
898
- }
899
- return this._deferred.promise;
900
- }, t;
901
- }()
902
- );
903
- function cr(t, e) {
904
- return new Promise(function(n) {
905
- K.with(J(K.active()), function() {
906
- t.export(e, function(r) {
907
- n(r);
908
- });
909
- });
910
- });
911
- }
912
- var sr = {
913
- getKeyPairs: et,
914
- serializeKeyPairs: tt,
915
- parseKeyPairsIntoRecord: Zt,
916
- parsePairKeyValue: j
917
- }, fr = {
918
- _export: cr
919
- };
920
- const dr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
921
- __proto__: null,
922
- AlwaysOffSampler: B,
923
- AlwaysOnSampler: d,
924
- AnchoredClock: Yt,
925
- BindOnceFuture: lr,
926
- CompositePropagator: Ae,
927
- DEFAULT_ATTRIBUTE_COUNT_LIMIT: L,
928
- DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
929
- DEFAULT_ENVIRONMENT: G,
930
- DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Et,
931
- DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ut,
932
- get ExportResultCode() {
933
- return Xt;
934
- },
935
- ParentBasedSampler: Fe,
936
- get RPCType() {
937
- return w;
938
- },
939
- RandomIdGenerator: de,
940
- SDK_INFO: Ht,
941
- TRACE_PARENT_HEADER: P,
942
- TRACE_STATE_HEADER: S,
943
- TimeoutError: Pt,
944
- TraceIdRatioBasedSampler: Ke,
945
- TraceState: lt,
946
- get TracesSamplerValues() {
947
- return A;
948
- },
949
- VERSION: xt,
950
- W3CBaggagePropagator: zt,
951
- W3CTraceContextPropagator: Ge,
952
- _globalThis: D,
953
- addHrTimes: Bt,
954
- baggageUtils: sr,
955
- callWithTimeout: ir,
956
- deleteRPCMetadata: He,
957
- getEnv: fe,
958
- getEnvWithoutDefaults: Oe,
959
- getRPCMetadata: Ve,
960
- getTimeOrigin: wt,
961
- globalErrorHandler: Tt,
962
- hexToBase64: Le,
963
- hexToBinary: Q,
964
- hrTime: Ut,
965
- hrTimeDuration: bt,
966
- hrTimeToMicroseconds: Mt,
967
- hrTimeToMilliseconds: Nt,
968
- hrTimeToNanoseconds: Ct,
969
- hrTimeToTimeStamp: gt,
970
- internal: fr,
971
- isAttributeKey: nt,
972
- isAttributeValue: ot,
973
- isTimeInput: vt,
974
- isTimeInputHrTime: mt,
975
- isTracingSuppressed: X,
976
- isUrlIgnored: ht,
977
- isWrapped: _r,
978
- loggingErrorHandler: it,
979
- merge: nr,
980
- millisToHrTime: At,
981
- otperformance: It,
982
- parseEnvironment: x,
983
- parseTraceParent: ct,
984
- sanitizeAttributes: Jt,
985
- setGlobalErrorHandler: ee,
986
- setRPCMetadata: xe,
987
- suppressTracing: J,
988
- timeInputToHrTime: yt,
989
- unrefTimer: ye,
990
- unsuppressTracing: Dt,
991
- urlMatches: dt
992
- }, Symbol.toStringTag, { value: "Module" }));
993
- export {
994
- Tt as E,
995
- fe as O,
996
- dr as P,
997
- Jt as Q,
998
- ye as S,
999
- Ge as V,
1000
- zt as Z,
1001
- ot as a,
1002
- A as b,
1003
- Oe as c,
1004
- L as d,
1005
- fr as e,
1006
- lr as f,
1007
- s as l,
1008
- nr as n,
1009
- R as p,
1010
- Ae as v
1011
- };
1012
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRElvYXFQNF8tIX57MDBpfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGggYXMgaF8sIGRDIGFzIGZfLCBnIGFzIGdfLCB3IGFzIHdlJDEsIGRHIGFzIFIkMSwgTyBhcyBPJDEsIGEgYXMgWmUkMSwgZEggYXMgTl8sIGRFIGFzIHFlJDEsIGRLIGFzIFFlJDEsIGMgYXMgeGUkMSwgZEwgYXMga2UkMSwgZEQgYXMgamUkMSwgZEYgYXMgWGUkMSwgcCBhcyBwXywgZEogYXMgcl8sIGRJIGFzIGJfIH0gZnJvbSAnLi91cmwtRDIteE5URHMtIX57MDBifX4uanMnO1xuaW1wb3J0IHsgYSwgdSwgcyB9IGZyb20gJy4vc3VwcHJlc3MtdHJhY2luZy1pMTY2WnZBZi0hfnswMG59fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1EYkxRRzZDeS0hfnswMGF9fi5qcyc7XG5pbXBvcnQgeyBBIGFzIEEkMSwgYSBhcyBhJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CYWNzcXdLQS0hfnswMGx9fi5qcyc7XG5pbXBvcnQgeyBjIGFzIFokMSwgTSBhcyBNZSQxLCB5IGFzIHluLCBCIGFzIEJ0LCBUIGFzIFRlJDEsIFogYXMgWmksIGQgYXMgZHMgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGJtIGFzIHRTLCBibCBhcyBUQSB9IGZyb20gJy4vc2RrLWluZm8tQ2h1S3U4elctIX57MDBqfX4uanMnO1xuXG52YXIgbDtcbihmdW5jdGlvbihyKSB7XG4gIHJbci5OT1RfUkVDT1JEID0gMF0gPSBcIk5PVF9SRUNPUkRcIiwgcltyLlJFQ09SRCA9IDFdID0gXCJSRUNPUkRcIiwgcltyLlJFQ09SRF9BTkRfU0FNUExFRCA9IDJdID0gXCJSRUNPUkRfQU5EX1NBTVBMRURcIjtcbn0pKGwgfHwgKGwgPSB7fSkpO1xudmFyIHhyID0gXCI9XCIsIFUgPSBcIjtcIiwgSSA9IFwiLFwiLCBtID0gXCJiYWdnYWdlXCIsIEZyID0gMTgwLCBLciA9IDQwOTYsIFlyID0gODE5MiwgenIgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBycihyKSB7XG4gIHJldHVybiByLnJlZHVjZShmdW5jdGlvbihlLCB0KSB7XG4gICAgdmFyIG4gPSBcIlwiICsgZSArIChlICE9PSBcIlwiID8gSSA6IFwiXCIpICsgdDtcbiAgICByZXR1cm4gbi5sZW5ndGggPiBZciA/IGUgOiBuO1xuICB9LCBcIlwiKTtcbn1cbmZ1bmN0aW9uIGVyKHIpIHtcbiAgcmV0dXJuIHIuZ2V0QWxsRW50cmllcygpLm1hcChmdW5jdGlvbihlKSB7XG4gICAgdmFyIHQgPSB6cihlLCAyKSwgbiA9IHRbMF0sIGEgPSB0WzFdLCBpID0gZW5jb2RlVVJJQ29tcG9uZW50KG4pICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoYS52YWx1ZSk7XG4gICAgcmV0dXJuIGEubWV0YWRhdGEgIT09IHZvaWQgMCAmJiAoaSArPSBVICsgYS5tZXRhZGF0YS50b1N0cmluZygpKSwgaTtcbiAgfSk7XG59XG5mdW5jdGlvbiB3KHIpIHtcbiAgdmFyIGUgPSByLnNwbGl0KFUpO1xuICBpZiAoIShlLmxlbmd0aCA8PSAwKSkge1xuICAgIHZhciB0ID0gZS5zaGlmdCgpO1xuICAgIGlmICh0KSB7XG4gICAgICB2YXIgbiA9IHQuaW5kZXhPZih4cik7XG4gICAgICBpZiAoIShuIDw9IDApKSB7XG4gICAgICAgIHZhciBhID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKDAsIG4pLnRyaW0oKSksIGkgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcobiArIDEpLnRyaW0oKSksIG87XG4gICAgICAgIHJldHVybiBlLmxlbmd0aCA+IDAgJiYgKG8gPSBmXyhlLmpvaW4oVSkpKSwgeyBrZXk6IGEsIHZhbHVlOiBpLCBtZXRhZGF0YTogbyB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gV3Iocikge1xuICByZXR1cm4gdHlwZW9mIHIgIT0gXCJzdHJpbmdcIiB8fCByLmxlbmd0aCA9PT0gMCA/IHt9IDogci5zcGxpdChJKS5tYXAoZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiB3KGUpO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiBlICE9PSB2b2lkIDAgJiYgZS52YWx1ZS5sZW5ndGggPiAwO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24oZSwgdCkge1xuICAgIHJldHVybiBlW3Qua2V5XSA9IHQudmFsdWUsIGU7XG4gIH0sIHt9KTtcbn1cbnZhciBaciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEkMSA9IHlfLmdldEJhZ2dhZ2UoZSk7XG4gICAgICBpZiAoISghYSQxIHx8IGEoZSkpKSB7XG4gICAgICAgIHZhciBpID0gZXIoYSQxKS5maWx0ZXIoZnVuY3Rpb24oXykge1xuICAgICAgICAgIHJldHVybiBfLmxlbmd0aCA8PSBLcjtcbiAgICAgICAgfSkuc2xpY2UoMCwgRnIpLCBvID0gcnIoaSk7XG4gICAgICAgIG8ubGVuZ3RoID4gMCAmJiBuLnNldCh0LCBtLCBvKTtcbiAgICAgIH1cbiAgICB9LCByLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBtKSwgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhLmpvaW4oSSkgOiBhO1xuICAgICAgaWYgKCFpKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBvID0ge307XG4gICAgICBpZiAoaS5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgdmFyIF8gPSBpLnNwbGl0KEkpO1xuICAgICAgcmV0dXJuIF8uZm9yRWFjaChmdW5jdGlvbihFKSB7XG4gICAgICAgIHZhciBUID0gdyhFKTtcbiAgICAgICAgaWYgKFQpIHtcbiAgICAgICAgICB2YXIgcyA9IHsgdmFsdWU6IFQudmFsdWUgfTtcbiAgICAgICAgICBULm1ldGFkYXRhICYmIChzLm1ldGFkYXRhID0gVC5tZXRhZGF0YSksIG9bVC5rZXldID0gcztcbiAgICAgICAgfVxuICAgICAgfSksIE9iamVjdC5lbnRyaWVzKG8pLmxlbmd0aCA9PT0gMCA/IGUgOiB5Xy5zZXRCYWdnYWdlKGUsIHlfLmNyZWF0ZUJhZ2dhZ2UobykpO1xuICAgIH0sIHIucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFttXTtcbiAgICB9LCByO1xuICB9KClcbiksICRyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSwgdCkge1xuICAgICAgdGhpcy5fbW9ub3RvbmljQ2xvY2sgPSB0LCB0aGlzLl9lcG9jaE1pbGxpcyA9IGUubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gdC5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSB0aGlzLl9tb25vdG9uaWNDbG9jay5ub3coKSAtIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgZTtcbiAgICB9LCByO1xuICB9KClcbiksIHRyID0gZnVuY3Rpb24ocikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgdCA9IGUgJiYgcltlXSwgbiA9IDA7XG4gIGlmICh0KSByZXR1cm4gdC5jYWxsKHIpO1xuICBpZiAociAmJiB0eXBlb2Ygci5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByICYmIG4gPj0gci5sZW5ndGggJiYgKHIgPSB2b2lkIDApLCB7IHZhbHVlOiByICYmIHJbbisrXSwgZG9uZTogIXIgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoZSA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIEpyID0gZnVuY3Rpb24ociwgZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHJbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gcjtcbiAgdmFyIG4gPSB0LmNhbGwociksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKGUgPT09IHZvaWQgMCB8fCBlLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBvID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59O1xuZnVuY3Rpb24gUXIociQxKSB7XG4gIHZhciBlLCB0LCBuID0ge307XG4gIGlmICh0eXBlb2YgciQxICE9IFwib2JqZWN0XCIgfHwgciQxID09IG51bGwpXG4gICAgcmV0dXJuIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHRyKE9iamVjdC5lbnRyaWVzKHIkMSkpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBKcihpLnZhbHVlLCAyKSwgXyA9IG9bMF0sIEUgPSBvWzFdO1xuICAgICAgaWYgKCFucihfKSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgXyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFhcihFKSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSB2YWx1ZSBzZXQgZm9yIGtleTogXCIgKyBfKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBBcnJheS5pc0FycmF5KEUpID8gbltfXSA9IEUuc2xpY2UoKSA6IG5bX10gPSBFO1xuICAgIH1cbiAgfSBjYXRjaCAoVCkge1xuICAgIGUgPSB7IGVycm9yOiBUIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChlKSB0aHJvdyBlLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbjtcbn1cbmZ1bmN0aW9uIG5yKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwic3RyaW5nXCIgJiYgci5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gYXIocikge1xuICByZXR1cm4gciA9PSBudWxsID8gdHJ1ZSA6IEFycmF5LmlzQXJyYXkocikgPyBxcihyKSA6IGlyKHIpO1xufVxuZnVuY3Rpb24gcXIocikge1xuICB2YXIgZSwgdCwgbjtcbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBhID0gdHIociksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICB2YXIgbyA9IGkudmFsdWU7XG4gICAgICBpZiAobyAhPSBudWxsKSB7XG4gICAgICAgIGlmICghbikge1xuICAgICAgICAgIGlmIChpcihvKSkge1xuICAgICAgICAgICAgbiA9IHR5cGVvZiBvO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG8gIT09IG4pXG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoXykge1xuICAgIGUgPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChlKSB0aHJvdyBlLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGlyKHIpIHtcbiAgc3dpdGNoICh0eXBlb2Ygcikge1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIG9yKCkge1xuICByZXR1cm4gZnVuY3Rpb24ociQxKSB7XG4gICAgci5lcnJvcihrcihyJDEpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGtyKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwic3RyaW5nXCIgPyByIDogSlNPTi5zdHJpbmdpZnkocmUocikpO1xufVxuZnVuY3Rpb24gcmUocikge1xuICBmb3IgKHZhciBlID0ge30sIHQgPSByOyB0ICE9PSBudWxsOyApXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaChmdW5jdGlvbihuKSB7XG4gICAgICBpZiAoIWVbbl0pIHtcbiAgICAgICAgdmFyIGEgPSB0W25dO1xuICAgICAgICBhICYmIChlW25dID0gU3RyaW5nKGEpKTtcbiAgICAgIH1cbiAgICB9KSwgdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgcmV0dXJuIGU7XG59XG52YXIgX3IgPSBvcigpO1xuZnVuY3Rpb24gZWUocikge1xuICBfciA9IHI7XG59XG5mdW5jdGlvbiBFcihyKSB7XG4gIHRyeSB7XG4gICAgX3Iocik7XG4gIH0gY2F0Y2gge1xuICB9XG59XG52YXIgdjtcbihmdW5jdGlvbihyKSB7XG4gIHIuQWx3YXlzT2ZmID0gXCJhbHdheXNfb2ZmXCIsIHIuQWx3YXlzT24gPSBcImFsd2F5c19vblwiLCByLlBhcmVudEJhc2VkQWx3YXlzT2ZmID0gXCJwYXJlbnRiYXNlZF9hbHdheXNfb2ZmXCIsIHIuUGFyZW50QmFzZWRBbHdheXNPbiA9IFwicGFyZW50YmFzZWRfYWx3YXlzX29uXCIsIHIuUGFyZW50QmFzZWRUcmFjZUlkUmF0aW8gPSBcInBhcmVudGJhc2VkX3RyYWNlaWRyYXRpb1wiLCByLlRyYWNlSWRSYXRpbyA9IFwidHJhY2VpZHJhdGlvXCI7XG59KSh2IHx8ICh2ID0ge30pKTtcbnZhciB0ZSA9IFwiLFwiLCBuZSA9IFtcIk9URUxfU0RLX0RJU0FCTEVEXCJdO1xuZnVuY3Rpb24gYWUocikge1xuICByZXR1cm4gbmUuaW5kZXhPZihyKSA+IC0xO1xufVxudmFyIGllID0gW1xuICBcIk9URUxfQlNQX0VYUE9SVF9USU1FT1VUXCIsXG4gIFwiT1RFTF9CU1BfTUFYX0VYUE9SVF9CQVRDSF9TSVpFXCIsXG4gIFwiT1RFTF9CU1BfTUFYX1FVRVVFX1NJWkVcIixcbiAgXCJPVEVMX0JTUF9TQ0hFRFVMRV9ERUxBWVwiLFxuICBcIk9URUxfQkxSUF9FWFBPUlRfVElNRU9VVFwiLFxuICBcIk9URUxfQkxSUF9NQVhfRVhQT1JUX0JBVENIX1NJWkVcIixcbiAgXCJPVEVMX0JMUlBfTUFYX1FVRVVFX1NJWkVcIixcbiAgXCJPVEVMX0JMUlBfU0NIRURVTEVfREVMQVlcIixcbiAgXCJPVEVMX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVRcIixcbiAgXCJPVEVMX0FUVFJJQlVURV9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0FUVFJJQlVURV9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfTE9HUkVDT1JEX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVRcIixcbiAgXCJPVEVMX0xPR1JFQ09SRF9BVFRSSUJVVEVfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fRVZFTlRfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fTElOS19DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9USU1FT1VUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19USU1FT1VUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfVElNRU9VVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX1RJTUVPVVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX0pBRUdFUl9BR0VOVF9QT1JUXCJcbl07XG5mdW5jdGlvbiBvZShyKSB7XG4gIHJldHVybiBpZS5pbmRleE9mKHIpID4gLTE7XG59XG52YXIgX2UgPSBbXG4gIFwiT1RFTF9OT19QQVRDSF9NT0RVTEVTXCIsXG4gIFwiT1RFTF9QUk9QQUdBVE9SU1wiLFxuICBcIk9URUxfU0VNQ09OVl9TVEFCSUxJVFlfT1BUX0lOXCJcbl07XG5mdW5jdGlvbiBFZShyKSB7XG4gIHJldHVybiBfZS5pbmRleE9mKHIpID4gLTE7XG59XG52YXIgcCA9IDEgLyAwLCBkID0gMTI4LCBUciA9IDEyOCwgdXIgPSAxMjgsIFYgPSB7XG4gIE9URUxfU0RLX0RJU0FCTEVEOiBmYWxzZSxcbiAgQ09OVEFJTkVSX05BTUU6IFwiXCIsXG4gIEVDU19DT05UQUlORVJfTUVUQURBVEFfVVJJX1Y0OiBcIlwiLFxuICBFQ1NfQ09OVEFJTkVSX01FVEFEQVRBX1VSSTogXCJcIixcbiAgSE9TVE5BTUU6IFwiXCIsXG4gIEtVQkVSTkVURVNfU0VSVklDRV9IT1NUOiBcIlwiLFxuICBOQU1FU1BBQ0U6IFwiXCIsXG4gIE9URUxfQlNQX0VYUE9SVF9USU1FT1VUOiAzZTQsXG4gIE9URUxfQlNQX01BWF9FWFBPUlRfQkFUQ0hfU0laRTogNTEyLFxuICBPVEVMX0JTUF9NQVhfUVVFVUVfU0laRTogMjA0OCxcbiAgT1RFTF9CU1BfU0NIRURVTEVfREVMQVk6IDVlMyxcbiAgT1RFTF9CTFJQX0VYUE9SVF9USU1FT1VUOiAzZTQsXG4gIE9URUxfQkxSUF9NQVhfRVhQT1JUX0JBVENIX1NJWkU6IDUxMixcbiAgT1RFTF9CTFJQX01BWF9RVUVVRV9TSVpFOiAyMDQ4LFxuICBPVEVMX0JMUlBfU0NIRURVTEVfREVMQVk6IDVlMyxcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfQUdFTlRfSE9TVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfQUdFTlRfUE9SVDogNjgzMixcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX1BBU1NXT1JEOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX0pBRUdFUl9VU0VSOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19FTkRQT0lOVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfSEVBREVSUzogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfSEVBREVSUzogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfSEVBREVSUzogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RJTUVPVVQ6IDFlNCxcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19USU1FT1VUOiAxZTQsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1RJTUVPVVQ6IDFlNCxcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfVElNRU9VVDogMWU0LFxuICBPVEVMX0VYUE9SVEVSX1pJUEtJTl9FTkRQT0lOVDogXCJodHRwOi8vbG9jYWxob3N0Ojk0MTEvYXBpL3YyL3NwYW5zXCIsXG4gIE9URUxfTE9HX0xFVkVMOiBaJDEuSU5GTyxcbiAgT1RFTF9OT19QQVRDSF9NT0RVTEVTOiBbXSxcbiAgT1RFTF9QUk9QQUdBVE9SUzogW1widHJhY2Vjb250ZXh0XCIsIFwiYmFnZ2FnZVwiXSxcbiAgT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTOiBcIlwiLFxuICBPVEVMX1NFUlZJQ0VfTkFNRTogXCJcIixcbiAgT1RFTF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUOiBwLFxuICBPVEVMX0FUVFJJQlVURV9DT1VOVF9MSU1JVDogZCxcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIE9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVQ6IGQsXG4gIE9URUxfTE9HUkVDT1JEX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIE9URUxfTE9HUkVDT1JEX0FUVFJJQlVURV9DT1VOVF9MSU1JVDogZCxcbiAgT1RFTF9TUEFOX0VWRU5UX0NPVU5UX0xJTUlUOiAxMjgsXG4gIE9URUxfU1BBTl9MSU5LX0NPVU5UX0xJTUlUOiAxMjgsXG4gIE9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBUcixcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogdXIsXG4gIE9URUxfVFJBQ0VTX0VYUE9SVEVSOiBcIlwiLFxuICBPVEVMX1RSQUNFU19TQU1QTEVSOiB2LlBhcmVudEJhc2VkQWx3YXlzT24sXG4gIE9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHOiBcIlwiLFxuICBPVEVMX0xPR1NfRVhQT1JURVI6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9JTlNFQ1VSRTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19JTlNFQ1VSRTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfSU5TRUNVUkU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0lOU0VDVVJFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0NPTVBSRVNTSU9OOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0NPTVBSRVNTSU9OOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19DT01QUkVTU0lPTjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfQ09NUFJFU1NJT046IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9DTElFTlRfS0VZOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9DTElFTlRfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ0xJRU5UX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19DTElFTlRfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0NMSUVOVF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1BST1RPQ09MOiBcImh0dHAvcHJvdG9idWZcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19QUk9UT0NPTDogXCJodHRwL3Byb3RvYnVmXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1BST1RPQ09MOiBcImh0dHAvcHJvdG9idWZcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfUFJPVE9DT0w6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19URU1QT1JBTElUWV9QUkVGRVJFTkNFOiBcImN1bXVsYXRpdmVcIixcbiAgT1RFTF9TRU1DT05WX1NUQUJJTElUWV9PUFRfSU46IFtdXG59O1xuZnVuY3Rpb24gVGUociwgZSwgdCkge1xuICBpZiAoISh0eXBlb2YgdFtyXSA+IFwidVwiKSkge1xuICAgIHZhciBuID0gU3RyaW5nKHRbcl0pO1xuICAgIGVbcl0gPSBuLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiO1xuICB9XG59XG5mdW5jdGlvbiB1ZShyLCBlLCB0LCBuLCBhKSB7XG4gIGlmIChuID09PSB2b2lkIDAgJiYgKG4gPSAtMSAvIDApLCBhID09PSB2b2lkIDAgJiYgKGEgPSAxIC8gMCksIHR5cGVvZiB0W3JdIDwgXCJ1XCIpIHtcbiAgICB2YXIgaSA9IE51bWJlcih0W3JdKTtcbiAgICBpc05hTihpKSB8fCAoaSA8IG4gPyBlW3JdID0gbiA6IGkgPiBhID8gZVtyXSA9IGEgOiBlW3JdID0gaSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGZlKHIsIGUsIHQsIG4pIHtcbiAgbiA9PT0gdm9pZCAwICYmIChuID0gdGUpO1xuICB2YXIgYSA9IHRbcl07XG4gIHR5cGVvZiBhID09IFwic3RyaW5nXCIgJiYgKGVbcl0gPSBhLnNwbGl0KG4pLm1hcChmdW5jdGlvbihpKSB7XG4gICAgcmV0dXJuIGkudHJpbSgpO1xuICB9KSk7XG59XG52YXIgc2UgPSB7XG4gIEFMTDogWiQxLkFMTCxcbiAgVkVSQk9TRTogWiQxLlZFUkJPU0UsXG4gIERFQlVHOiBaJDEuREVCVUcsXG4gIElORk86IFokMS5JTkZPLFxuICBXQVJOOiBaJDEuV0FSTixcbiAgRVJST1I6IFokMS5FUlJPUixcbiAgTk9ORTogWiQxLk5PTkVcbn07XG5mdW5jdGlvbiBsZShyLCBlLCB0KSB7XG4gIHZhciBuID0gdFtyXTtcbiAgaWYgKHR5cGVvZiBuID09IFwic3RyaW5nXCIpIHtcbiAgICB2YXIgYSA9IHNlW24udG9VcHBlckNhc2UoKV07XG4gICAgYSAhPSBudWxsICYmIChlW3JdID0gYSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGoocikge1xuICB2YXIgZSA9IHt9O1xuICBmb3IgKHZhciB0IGluIFYpIHtcbiAgICB2YXIgbiA9IHQ7XG4gICAgc3dpdGNoIChuKSB7XG4gICAgICBjYXNlIFwiT1RFTF9MT0dfTEVWRUxcIjpcbiAgICAgICAgbGUobiwgZSwgcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGFlKG4pKVxuICAgICAgICAgIFRlKG4sIGUsIHIpO1xuICAgICAgICBlbHNlIGlmIChvZShuKSlcbiAgICAgICAgICB1ZShuLCBlLCByKTtcbiAgICAgICAgZWxzZSBpZiAoRWUobikpXG4gICAgICAgICAgZmUobiwgZSwgcik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBhID0gcltuXTtcbiAgICAgICAgICB0eXBlb2YgYSA8IFwidVwiICYmIGEgIT09IG51bGwgJiYgKGVbbl0gPSBTdHJpbmcoYSkpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlO1xufVxuZnVuY3Rpb24gT2UoKSB7XG4gIHZhciByID0gaihoXyk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBWLCByKTtcbn1cbmZ1bmN0aW9uIGNlKCkge1xuICByZXR1cm4gaihoXyk7XG59XG52YXIgUmUgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIHBlID0gZnVuY3Rpb24ociwgZSwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSBlLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gZSkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwgMCwgbikpLCBpW25dID0gZVtuXSk7XG4gIHJldHVybiByLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTtcbn07XG5mdW5jdGlvbiBkZShyKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBwZShbXSwgUmUoQSQxKHIpKSwgZmFsc2UpKSk7XG59XG52YXIgTGUgPSA4LCBBZSA9IDE2LCBQZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVUcmFjZUlkID0gWShBZSksIHRoaXMuZ2VuZXJhdGVTcGFuSWQgPSBZKExlKTtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oKVxuKSwgUiA9IEFycmF5KDMyKTtcbmZ1bmN0aW9uIFkocikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCByICogMjsgdCsrKVxuICAgICAgUlt0XSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KSArIDQ4LCBSW3RdID49IDU4ICYmIChSW3RdICs9IDM5KTtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBSLnNsaWNlKDAsIHIgKiAyKSk7XG4gIH07XG59XG5mdW5jdGlvbiBTZShyKSB7XG59XG52YXIgSWUgPSBmdW5jdGlvbihyKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gZSAmJiByW2VdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwocik7XG4gIGlmIChyICYmIHR5cGVvZiByLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHIgJiYgbiA+PSByLmxlbmd0aCAmJiAociA9IHZvaWQgMCksIHsgdmFsdWU6IHIgJiYgcltuKytdLCBkb25lOiAhciB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihlID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgdmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gciQxKGUpIHtcbiAgICAgIGUgPT09IHZvaWQgMCAmJiAoZSA9IHt9KTtcbiAgICAgIHZhciB0O1xuICAgICAgdGhpcy5fcHJvcGFnYXRvcnMgPSAodCA9IGUucHJvcGFnYXRvcnMpICE9PSBudWxsICYmIHQgIT09IHZvaWQgMCA/IHQgOiBbXSwgdGhpcy5fZmllbGRzID0gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuX3Byb3BhZ2F0b3JzLm1hcChmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygbi5maWVsZHMgPT0gXCJmdW5jdGlvblwiID8gbi5maWVsZHMoKSA6IFtdO1xuICAgICAgfSkucmVkdWNlKGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgICAgcmV0dXJuIG4uY29uY2F0KGEpO1xuICAgICAgfSwgW10pKSk7XG4gICAgfVxuICAgIHJldHVybiByJDEucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhLCBpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IEllKHRoaXMuX3Byb3BhZ2F0b3JzKSwgXyA9IG8ubmV4dCgpOyAhXy5kb25lOyBfID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgRSA9IF8udmFsdWU7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIEUuaW5qZWN0KGUsIHQsIG4pO1xuICAgICAgICAgIH0gY2F0Y2ggKFQpIHtcbiAgICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBpbmplY3Qgd2l0aCBcIiArIEUuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgVC5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKFQpIHtcbiAgICAgICAgYSA9IHsgZXJyb3I6IFQgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgXyAmJiAhXy5kb25lICYmIChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHIkMS5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wYWdhdG9ycy5yZWR1Y2UoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpLmV4dHJhY3QoYSwgdCwgbik7XG4gICAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gZXh0cmFjdCB3aXRoIFwiICsgaS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBvLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgZSk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHMuc2xpY2UoKTtcbiAgICB9LCByJDE7XG4gIH0oKVxuKSwgQiA9IFwiW18wLTlhLXotKi9dXCIsIHllID0gXCJbYS16XVwiICsgQiArIFwiezAsMjU1fVwiLCBoZSA9IFwiW2EtejAtOV1cIiArIEIgKyBcInswLDI0MH1AW2Etel1cIiArIEIgKyBcInswLDEzfVwiLCBnZSA9IG5ldyBSZWdFeHAoXCJeKD86XCIgKyB5ZSArIFwifFwiICsgaGUgKyBcIikkXCIpLCBtZSA9IC9eWyAtfl17MCwyNTV9WyEtfl0kLywgQ2UgPSAvLHw9LztcbmZ1bmN0aW9uIE5lKHIpIHtcbiAgcmV0dXJuIGdlLnRlc3Qocik7XG59XG5mdW5jdGlvbiBNZShyKSB7XG4gIHJldHVybiBtZS50ZXN0KHIpICYmICFDZS50ZXN0KHIpO1xufVxudmFyIHogPSAzMiwgVWUgPSA1MTIsIFcgPSBcIixcIiwgWiA9IFwiPVwiLCBmciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKGUpIHtcbiAgICAgIHRoaXMuX2ludGVybmFsU3RhdGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLCBlICYmIHRoaXMuX3BhcnNlKGUpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oZSwgdCkge1xuICAgICAgdmFyIG4gPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIG4uX2ludGVybmFsU3RhdGUuaGFzKGUpICYmIG4uX2ludGVybmFsU3RhdGUuZGVsZXRlKGUpLCBuLl9pbnRlcm5hbFN0YXRlLnNldChlLCB0KSwgbjtcbiAgICB9LCByLnByb3RvdHlwZS51bnNldCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciB0ID0gdGhpcy5fY2xvbmUoKTtcbiAgICAgIHJldHVybiB0Ll9pbnRlcm5hbFN0YXRlLmRlbGV0ZShlKSwgdDtcbiAgICB9LCByLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxTdGF0ZS5nZXQoZSk7XG4gICAgfSwgci5wcm90b3R5cGUuc2VyaWFsaXplID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICByZXR1cm4gdGhpcy5fa2V5cygpLnJlZHVjZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHJldHVybiB0LnB1c2gobiArIFogKyBlLmdldChuKSksIHQ7XG4gICAgICB9LCBbXSkuam9pbihXKTtcbiAgICB9LCByLnByb3RvdHlwZS5fcGFyc2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICBlLmxlbmd0aCA+IFVlIHx8ICh0aGlzLl9pbnRlcm5hbFN0YXRlID0gZS5zcGxpdChXKS5yZXZlcnNlKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgdmFyIGEgPSBuLnRyaW0oKSwgaSA9IGEuaW5kZXhPZihaKTtcbiAgICAgICAgaWYgKGkgIT09IC0xKSB7XG4gICAgICAgICAgdmFyIG8gPSBhLnNsaWNlKDAsIGkpLCBfID0gYS5zbGljZShpICsgMSwgbi5sZW5ndGgpO1xuICAgICAgICAgIE5lKG8pICYmIE1lKF8pICYmIHQuc2V0KG8sIF8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfSwgLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSksIHRoaXMuX2ludGVybmFsU3RhdGUuc2l6ZSA+IHogJiYgKHRoaXMuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5lbnRyaWVzKCkpLnJldmVyc2UoKS5zbGljZSgwLCB6KSkpKTtcbiAgICB9LCByLnByb3RvdHlwZS5fa2V5cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5rZXlzKCkpLnJldmVyc2UoKTtcbiAgICB9LCByLnByb3RvdHlwZS5fY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gbmV3IHIoKTtcbiAgICAgIHJldHVybiBlLl9pbnRlcm5hbFN0YXRlID0gbmV3IE1hcCh0aGlzLl9pbnRlcm5hbFN0YXRlKSwgZTtcbiAgICB9LCByO1xuICB9KClcbiksIEwgPSBcInRyYWNlcGFyZW50XCIsIEEgPSBcInRyYWNlc3RhdGVcIiwgQmUgPSBcIjAwXCIsIGJlID0gXCIoPyFmZilbXFxcXGRhLWZdezJ9XCIsIERlID0gXCIoPyFbMF17MzJ9KVtcXFxcZGEtZl17MzJ9XCIsIFhlID0gXCIoPyFbMF17MTZ9KVtcXFxcZGEtZl17MTZ9XCIsIEdlID0gXCJbXFxcXGRhLWZdezJ9XCIsIHdlID0gbmV3IFJlZ0V4cChcIl5cXFxccz8oXCIgKyBiZSArIFwiKS0oXCIgKyBEZSArIFwiKS0oXCIgKyBYZSArIFwiKS0oXCIgKyBHZSArIFwiKSgtLiopP1xcXFxzPyRcIik7XG5mdW5jdGlvbiBzcihyKSB7XG4gIHZhciBlID0gd2UuZXhlYyhyKTtcbiAgcmV0dXJuICFlIHx8IGVbMV0gPT09IFwiMDBcIiAmJiBlWzVdID8gbnVsbCA6IHtcbiAgICB0cmFjZUlkOiBlWzJdLFxuICAgIHNwYW5JZDogZVszXSxcbiAgICB0cmFjZUZsYWdzOiBwYXJzZUludChlWzRdLCAxNilcbiAgfTtcbn1cbnZhciBWZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEkMSA9IE1lJDEuZ2V0U3BhbkNvbnRleHQoZSk7XG4gICAgICBpZiAoISghYSQxIHx8IGEoZSkgfHwgIXluKGEkMSkpKSB7XG4gICAgICAgIHZhciBpID0gQmUgKyBcIi1cIiArIGEkMS50cmFjZUlkICsgXCItXCIgKyBhJDEuc3BhbklkICsgXCItMFwiICsgTnVtYmVyKGEkMS50cmFjZUZsYWdzIHx8IEJ0Lk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgTCwgaSksIGEkMS50cmFjZVN0YXRlICYmIG4uc2V0KHQsIEEsIGEkMS50cmFjZVN0YXRlLnNlcmlhbGl6ZSgpKTtcbiAgICAgIH1cbiAgICB9LCByLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBMKTtcbiAgICAgIGlmICghYSlcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhWzBdIDogYTtcbiAgICAgIGlmICh0eXBlb2YgaSAhPSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBvID0gc3IoaSk7XG4gICAgICBpZiAoIW8pXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgby5pc1JlbW90ZSA9IHRydWU7XG4gICAgICB2YXIgXyA9IG4uZ2V0KHQsIEEpO1xuICAgICAgaWYgKF8pIHtcbiAgICAgICAgdmFyIEUgPSBBcnJheS5pc0FycmF5KF8pID8gXy5qb2luKFwiLFwiKSA6IF87XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBmcih0eXBlb2YgRSA9PSBcInN0cmluZ1wiID8gRSA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gTWUkMS5zZXRTcGFuQ29udGV4dChlLCBvKTtcbiAgICB9LCByLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBbTCwgQV07XG4gICAgfSwgcjtcbiAgfSgpXG4pLCBIID0gWmkoXCJPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBSUENfTUVUQURBVEFcIiksIGI7XG4oZnVuY3Rpb24ocikge1xuICByLkhUVFAgPSBcImh0dHBcIjtcbn0pKGIgfHwgKGIgPSB7fSkpO1xuZnVuY3Rpb24gamUociwgZSkge1xuICByZXR1cm4gci5zZXRWYWx1ZShILCBlKTtcbn1cbmZ1bmN0aW9uIEhlKHIpIHtcbiAgcmV0dXJuIHIuZGVsZXRlVmFsdWUoSCk7XG59XG5mdW5jdGlvbiB4ZShyKSB7XG4gIHJldHVybiByLmdldFZhbHVlKEgpO1xufVxudmFyIEQgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IGwuTk9UX1JFQ09SRFxuICAgICAgfTtcbiAgICB9LCByLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT2ZmU2FtcGxlclwiO1xuICAgIH0sIHI7XG4gIH0oKVxuKSwgUCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogbC5SRUNPUkRfQU5EX1NBTVBMRURcbiAgICAgIH07XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09uU2FtcGxlclwiO1xuICAgIH0sIHI7XG4gIH0oKVxuKSwgRmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICB2YXIgdCwgbiwgYSwgaTtcbiAgICAgIHRoaXMuX3Jvb3QgPSBlLnJvb3QsIHRoaXMuX3Jvb3QgfHwgKEVyKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgUCgpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9ICh0ID0gZS5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogbmV3IFAoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gZS5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEQoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKGEgPSBlLmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IG5ldyBQKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gZS5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgRCgpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oZSwgdCwgbiwgYSwgaSwgbykge1xuICAgICAgdmFyIF8gPSBNZSQxLmdldFNwYW5Db250ZXh0KGUpO1xuICAgICAgcmV0dXJuICFfIHx8ICF5bihfKSA/IHRoaXMuX3Jvb3Quc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogXy5pc1JlbW90ZSA/IF8udHJhY2VGbGFncyAmIEJ0LlNBTVBMRUQgPyB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShlLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogXy50cmFjZUZsYWdzICYgQnQuU0FNUExFRCA/IHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC5zaG91bGRTYW1wbGUoZSwgdCwgbiwgYSwgaSwgbykgOiB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pO1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJQYXJlbnRCYXNlZHtyb290PVwiICsgdGhpcy5fcm9vdC50b1N0cmluZygpICsgXCIsIHJlbW90ZVBhcmVudFNhbXBsZWQ9XCIgKyB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCBsb2NhbFBhcmVudFNhbXBsZWQ9XCIgKyB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCBsb2NhbFBhcmVudE5vdFNhbXBsZWQ9XCIgKyB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQudG9TdHJpbmcoKSArIFwifVwiO1xuICAgIH0sIHI7XG4gIH0oKVxuKSwgS2UgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICBlID09PSB2b2lkIDAgJiYgKGUgPSAwKSwgdGhpcy5fcmF0aW8gPSBlLCB0aGlzLl9yYXRpbyA9IHRoaXMuX25vcm1hbGl6ZShlKSwgdGhpcy5fdXBwZXJCb3VuZCA9IE1hdGguZmxvb3IodGhpcy5fcmF0aW8gKiA0Mjk0OTY3Mjk1KTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBkcyh0KSAmJiB0aGlzLl9hY2N1bXVsYXRlKHQpIDwgdGhpcy5fdXBwZXJCb3VuZCA/IGwuUkVDT1JEX0FORF9TQU1QTEVEIDogbC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJUcmFjZUlkUmF0aW9CYXNlZHtcIiArIHRoaXMuX3JhdGlvICsgXCJ9XCI7XG4gICAgfSwgci5wcm90b3R5cGUuX25vcm1hbGl6ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgZSAhPSBcIm51bWJlclwiIHx8IGlzTmFOKGUpID8gMCA6IGUgPj0gMSA/IDEgOiBlIDw9IDAgPyAwIDogZTtcbiAgICB9LCByLnByb3RvdHlwZS5fYWNjdW11bGF0ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGZvciAodmFyIHQgPSAwLCBuID0gMDsgbiA8IGUubGVuZ3RoIC8gODsgbisrKSB7XG4gICAgICAgIHZhciBhID0gbiAqIDgsIGkgPSBwYXJzZUludChlLnNsaWNlKGEsIGEgKyA4KSwgMTYpO1xuICAgICAgICB0ID0gKHQgXiBpKSA+Pj4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICAgIH0sIHI7XG4gIH0oKVxuKSwgWWUgPSBcIltvYmplY3QgT2JqZWN0XVwiLCB6ZSA9IFwiW29iamVjdCBOdWxsXVwiLCBXZSA9IFwiW29iamVjdCBVbmRlZmluZWRdXCIsIFplID0gRnVuY3Rpb24ucHJvdG90eXBlLCBsciA9IFplLnRvU3RyaW5nLCAkZSA9IGxyLmNhbGwoT2JqZWN0KSwgSmUgPSBRZShPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksIE9yID0gT2JqZWN0LnByb3RvdHlwZSwgY3IgPSBPci5oYXNPd25Qcm9wZXJ0eSwgZiA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHZvaWQgMCwgUnIgPSBPci50b1N0cmluZztcbmZ1bmN0aW9uIFFlKHIsIGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gcihlKHQpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uICQocikge1xuICBpZiAoIXFlKHIpIHx8IGtlKHIpICE9PSBZZSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIHZhciBlID0gSmUocik7XG4gIGlmIChlID09PSBudWxsKVxuICAgIHJldHVybiB0cnVlO1xuICB2YXIgdCA9IGNyLmNhbGwoZSwgXCJjb25zdHJ1Y3RvclwiKSAmJiBlLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIGxyLmNhbGwodCkgPT09ICRlO1xufVxuZnVuY3Rpb24gcWUocikge1xuICByZXR1cm4gciAhPSBudWxsICYmIHR5cGVvZiByID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBrZShyKSB7XG4gIHJldHVybiByID09IG51bGwgPyByID09PSB2b2lkIDAgPyBXZSA6IHplIDogZiAmJiBmIGluIE9iamVjdChyKSA/IHJ0KHIpIDogZXQocik7XG59XG5mdW5jdGlvbiBydChyKSB7XG4gIHZhciBlID0gY3IuY2FsbChyLCBmKSwgdCA9IHJbZl0sIG4gPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICByW2ZdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gUnIuY2FsbChyKTtcbiAgcmV0dXJuIG4gJiYgKGUgPyByW2ZdID0gdCA6IGRlbGV0ZSByW2ZdKSwgYTtcbn1cbmZ1bmN0aW9uIGV0KHIpIHtcbiAgcmV0dXJuIFJyLmNhbGwocik7XG59XG52YXIgdHQgPSAyMDtcbmZ1bmN0aW9uIG50KCkge1xuICBmb3IgKHZhciByID0gW10sIGUgPSAwOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKVxuICAgIHJbZV0gPSBhcmd1bWVudHNbZV07XG4gIGZvciAodmFyIHQgPSByLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgci5sZW5ndGggPiAwOyApXG4gICAgdCA9IHByKHQsIHIuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gQyhyKSB7XG4gIHJldHVybiB5KHIpID8gci5zbGljZSgpIDogcjtcbn1cbmZ1bmN0aW9uIHByKHIsIGUsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4gdHQpKSB7XG4gICAgaWYgKHQrKywgUyhyKSB8fCBTKGUpIHx8IGRyKGUpKVxuICAgICAgYSA9IEMoZSk7XG4gICAgZWxzZSBpZiAoeShyKSkge1xuICAgICAgaWYgKGEgPSByLnNsaWNlKCksIHkoZSkpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gZS5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKEMoZVtpXSkpO1xuICAgICAgZWxzZSBpZiAoTyhlKSlcbiAgICAgICAgZm9yICh2YXIgXyA9IE9iamVjdC5rZXlzKGUpLCBpID0gMCwgbyA9IF8ubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIEUgPSBfW2ldO1xuICAgICAgICAgIGFbRV0gPSBDKGVbRV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChPKHIpKVxuICAgICAgaWYgKE8oZSkpIHtcbiAgICAgICAgaWYgKCFhdChyLCBlKSlcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIHIpO1xuICAgICAgICBmb3IgKHZhciBfID0gT2JqZWN0LmtleXMoZSksIGkgPSAwLCBvID0gXy5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgRSA9IF9baV0sIFQgPSBlW0VdO1xuICAgICAgICAgIGlmIChTKFQpKVxuICAgICAgICAgICAgdHlwZW9mIFQgPiBcInVcIiA/IGRlbGV0ZSBhW0VdIDogYVtFXSA9IFQ7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcyA9IGFbRV0sIGggPSBUO1xuICAgICAgICAgICAgaWYgKEoociwgRSwgbikgfHwgSihlLCBFLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbRV07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKE8ocykgJiYgTyhoKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQocykgfHwgW10sIEYgPSBuLmdldChoKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IHIsIGtleTogRSB9KSwgRi5wdXNoKHsgb2JqOiBlLCBrZXk6IEUgfSksIG4uc2V0KHMsIHgpLCBuLnNldChoLCBGKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW0VdID0gcHIoYVtFXSwgVCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IGU7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIEoociwgZSwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQocltlXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSBlICYmIG8ub2JqID09PSByKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24geShyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHIpO1xufVxuZnVuY3Rpb24gZHIocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gTyhyKSB7XG4gIHJldHVybiAhUyhyKSAmJiAheShyKSAmJiAhZHIocikgJiYgdHlwZW9mIHIgPT0gXCJvYmplY3RcIjtcbn1cbmZ1bmN0aW9uIFMocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgciA9PSBcIm51bWJlclwiIHx8IHR5cGVvZiByID09IFwiYm9vbGVhblwiIHx8IHR5cGVvZiByID4gXCJ1XCIgfHwgciBpbnN0YW5jZW9mIERhdGUgfHwgciBpbnN0YW5jZW9mIFJlZ0V4cCB8fCByID09PSBudWxsO1xufVxuZnVuY3Rpb24gYXQociwgZSkge1xuICByZXR1cm4gISghJChyKSB8fCAhJChlKSk7XG59XG52YXIgaXQgPSAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gIHZhciByID0gZnVuY3Rpb24oZSwgdCkge1xuICAgIHJldHVybiByID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24obiwgYSkge1xuICAgICAgbi5fX3Byb3RvX18gPSBhO1xuICAgIH0gfHwgZnVuY3Rpb24obiwgYSkge1xuICAgICAgZm9yICh2YXIgaSBpbiBhKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgaSkgJiYgKG5baV0gPSBhW2ldKTtcbiAgICB9LCByKGUsIHQpO1xuICB9O1xuICByZXR1cm4gZnVuY3Rpb24oZSwgdCkge1xuICAgIGlmICh0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCIgJiYgdCAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKHQpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICByKGUsIHQpO1xuICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZTtcbiAgICB9XG4gICAgZS5wcm90b3R5cGUgPSB0ID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZSh0KSA6IChuLnByb3RvdHlwZSA9IHQucHJvdG90eXBlLCBuZXcgbigpKTtcbiAgfTtcbn0oKSwgTHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24ocikge1xuICAgIGl0KGUsIHIpO1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIG4gPSByLmNhbGwodGhpcywgdCkgfHwgdGhpcztcbiAgICAgIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YobiwgZS5wcm90b3R5cGUpLCBuO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfShFcnJvcilcbik7XG5mdW5jdGlvbiBvdChyLCBlKSB7XG4gIHZhciB0LCBuID0gbmV3IFByb21pc2UoZnVuY3Rpb24oaSwgbykge1xuICAgIHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgbyhuZXcgTHIoXCJPcGVyYXRpb24gdGltZWQgb3V0LlwiKSk7XG4gICAgfSwgZSk7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtyLCBuXSkudGhlbihmdW5jdGlvbihhKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dCh0KSwgYTtcbiAgfSwgZnVuY3Rpb24oYSkge1xuICAgIHRocm93IGNsZWFyVGltZW91dCh0KSwgYTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfdChyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHIuX19vcmlnaW5hbCA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHIuX191bndyYXAgPT0gXCJmdW5jdGlvblwiICYmIHIuX193cmFwcGVkID09PSB0cnVlO1xufVxudmFyIEV0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICB0aGlzLl9wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICBlLl9yZXNvbHZlID0gdCwgZS5fcmVqZWN0ID0gbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCBcInByb21pc2VcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21pc2U7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgci5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUoZSk7XG4gICAgfSwgci5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgdGhpcy5fcmVqZWN0KGUpO1xuICAgIH0sIHI7XG4gIH0oKVxuKSwgVHQgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIHV0ID0gZnVuY3Rpb24ociwgZSwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSBlLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gZSkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwgMCwgbikpLCBpW25dID0gZVtuXSk7XG4gIHJldHVybiByLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTtcbn0sIGZ0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSBlLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSBmYWxzZSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgRXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCBcInByb21pc2VcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkLnByb21pc2U7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgci5wcm90b3R5cGUuY2FsbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgZSwgdCA9IHRoaXMsIG4gPSBbXSwgYSA9IDA7IGEgPCBhcmd1bWVudHMubGVuZ3RoOyBhKyspXG4gICAgICAgIG5bYV0gPSBhcmd1bWVudHNbYV07XG4gICAgICBpZiAoIXRoaXMuX2lzQ2FsbGVkKSB7XG4gICAgICAgIHRoaXMuX2lzQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKGUgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShlLCB1dChbdGhpcy5fdGhhdF0sIFR0KG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIHI7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIHN0KHIsIGUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBUZSQxLndpdGgodShUZSQxLmFjdGl2ZSgpKSwgZnVuY3Rpb24oKSB7XG4gICAgICByLmV4cG9ydChlLCBmdW5jdGlvbihuKSB7XG4gICAgICAgIHQobik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG52YXIgbHQgPSB7XG4gIGdldEtleVBhaXJzOiBlcixcbiAgc2VyaWFsaXplS2V5UGFpcnM6IHJyLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogV3IsXG4gIHBhcnNlUGFpcktleVZhbHVlOiB3XG59LCBPdCA9IHtcbiAgX2V4cG9ydDogc3Rcbn07XG5jb25zdCBQdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IEQsXG4gIEFsd2F5c09uU2FtcGxlcjogUCxcbiAgQW5jaG9yZWRDbG9jazogJHIsXG4gIEJpbmRPbmNlRnV0dXJlOiBmdCxcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogdmUsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBERUZBVUxUX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIERFRkFVTFRfRU5WSVJPTk1FTlQ6IFYsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBUcixcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogdXIsXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhJDE7XG4gIH0sXG4gIFBhcmVudEJhc2VkU2FtcGxlcjogRmUsXG4gIGdldCBSUENUeXBlKCkge1xuICAgIHJldHVybiBiO1xuICB9LFxuICBSYW5kb21JZEdlbmVyYXRvcjogUGUsXG4gIFNES19JTkZPOiBUQSxcbiAgVFJBQ0VfUEFSRU5UX0hFQURFUjogTCxcbiAgVFJBQ0VfU1RBVEVfSEVBREVSOiBBLFxuICBUaW1lb3V0RXJyb3I6IExyLFxuICBUcmFjZUlkUmF0aW9CYXNlZFNhbXBsZXI6IEtlLFxuICBUcmFjZVN0YXRlOiBmcixcbiAgZ2V0IFRyYWNlc1NhbXBsZXJWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHY7XG4gIH0sXG4gIFZFUlNJT046IHRTLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogWnIsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IFZlLFxuICBfZ2xvYmFsVGhpczogaF8sXG4gIGFkZEhyVGltZXM6IGJfLFxuICBiYWdnYWdlVXRpbHM6IGx0LFxuICBjYWxsV2l0aFRpbWVvdXQ6IG90LFxuICBkZWxldGVSUENNZXRhZGF0YTogSGUsXG4gIGdldEVudjogT2UsXG4gIGdldEVudldpdGhvdXREZWZhdWx0czogY2UsXG4gIGdldFJQQ01ldGFkYXRhOiB4ZSxcbiAgZ2V0VGltZU9yaWdpbjogcl8sXG4gIGdsb2JhbEVycm9ySGFuZGxlcjogRXIsXG4gIGhleFRvQmFzZTY0OiBkZSxcbiAgaGV4VG9CaW5hcnk6IEEkMSxcbiAgaHJUaW1lOiBwXyxcbiAgaHJUaW1lRHVyYXRpb246IFhlJDEsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBqZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczoga2UkMSxcbiAgaHJUaW1lVG9OYW5vc2Vjb25kczogeGUkMSxcbiAgaHJUaW1lVG9UaW1lU3RhbXA6IFFlJDEsXG4gIGludGVybmFsOiBPdCxcbiAgaXNBdHRyaWJ1dGVLZXk6IG5yLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBhcixcbiAgaXNUaW1lSW5wdXQ6IHFlJDEsXG4gIGlzVGltZUlucHV0SHJUaW1lOiBOXyxcbiAgaXNUcmFjaW5nU3VwcHJlc3NlZDogYSxcbiAgaXNVcmxJZ25vcmVkOiBaZSQxLFxuICBpc1dyYXBwZWQ6IF90LFxuICBsb2dnaW5nRXJyb3JIYW5kbGVyOiBvcixcbiAgbWVyZ2U6IG50LFxuICBtaWxsaXNUb0hyVGltZTogTyQxLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IGosXG4gIHBhcnNlVHJhY2VQYXJlbnQ6IHNyLFxuICBzYW5pdGl6ZUF0dHJpYnV0ZXM6IFFyLFxuICBzZXRHbG9iYWxFcnJvckhhbmRsZXI6IGVlLFxuICBzZXRSUENNZXRhZGF0YTogamUsXG4gIHN1cHByZXNzVHJhY2luZzogdSxcbiAgdGltZUlucHV0VG9IclRpbWU6IHdlJDEsXG4gIHVucmVmVGltZXI6IFNlLFxuICB1bnN1cHByZXNzVHJhY2luZzogcyxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEVyIGFzIEUsIE9lIGFzIE8sIFB0IGFzIFAsIFFyIGFzIFEsIFNlIGFzIFMsIFZlIGFzIFYsIFpyIGFzIFosIGFyIGFzIGEsIHYgYXMgYiwgY2UgYXMgYywgZCwgT3QgYXMgZSwgZnQgYXMgZiwgbCwgbnQgYXMgbiwgcCwgdmUgYXMgdiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBSSxLQUFLQyxHQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQUssS0FBS0MsSUFBSyxLQUFLQyxJQUFNLE1BQU1DLElBQUksTUFBTUMsSUFBTSxNQUFNQyxJQUFNLEtBQUtDLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFNLE1BQU1DLElBQU0sS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFDN00sU0FBUyxLQUFBQyxHQUFHLEtBQUFDLEdBQUcsS0FBQUMsVUFBUztBQUN4QixTQUFTLEtBQUFDLFNBQVM7QUFDbEIsU0FBUyxLQUFLQyxHQUFLLEtBQUtDLFVBQVc7QUFDbkMsU0FBUyxLQUFLQyxHQUFLLEtBQUtDLEdBQU0sS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQU0sS0FBS0MsSUFBSSxLQUFLQyxVQUFVO0FBQ25GLFNBQVMsTUFBTUMsSUFBSSxNQUFNQyxVQUFVO0FBRW5DLElBQUlDO0FBQUEsQ0FDSCxTQUFTWixHQUFHO0FBQ1gsRUFBQUEsRUFBRUEsRUFBRSxhQUFhLENBQUMsSUFBSSxjQUFjQSxFQUFFQSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFVBQVVBLEVBQUVBLEVBQUUscUJBQXFCLENBQUMsSUFBSTtBQUNoRyxHQUFHWSxNQUFNQSxJQUFJLENBQUMsRUFBRTtBQUNoQixJQUFJQyxLQUFLLEtBQUtDLElBQUksS0FBSyxJQUFJLEtBQUtDLElBQUksV0FBV0MsS0FBSyxLQUFLQyxLQUFLLE1BQU1DLEtBQUssTUFBTUMsS0FBSyxTQUFTbkIsR0FBRyxHQUFHO0FBQ2pHLE1BQUlvQixJQUFJLE9BQU8sVUFBVSxjQUFjcEIsRUFBRSxPQUFPLFFBQVE7QUFDeEQsTUFBSSxDQUFDb0IsRUFBRyxRQUFPcEI7QUFDZixNQUFJcUIsSUFBSUQsRUFBRSxLQUFLcEIsQ0FBQyxHQUFHSCxHQUFHeUIsSUFBSSxDQUFDLEdBQUdDO0FBQzlCLE1BQUk7QUFDRixZQUFRLE1BQU0sVUFBVSxNQUFNLE1BQU0sRUFBRTFCLElBQUl3QixFQUFFLEtBQUssR0FBRyxPQUFRLENBQUFDLEVBQUUsS0FBS3pCLEVBQUUsS0FBSztBQUFBLEVBQzVFLFNBQVMsR0FBRztBQUNWLElBQUEwQixJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQUEsRUFDakIsVUFBRTtBQUNBLFFBQUk7QUFDRixNQUFBMUIsS0FBSyxDQUFDQSxFQUFFLFNBQVN1QixJQUFJQyxFQUFFLFdBQVdELEVBQUUsS0FBS0MsQ0FBQztBQUFBLElBQzVDLFVBQUU7QUFDQSxVQUFJRSxFQUFHLE9BQU1BLEVBQUU7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFDQSxTQUFPRDtBQUNUO0FBQ0EsU0FBU0UsR0FBR3hCLEdBQUc7QUFDYixTQUFPQSxFQUFFLE9BQU8sU0FBUyxHQUFHb0IsR0FBRztBQUM3QixRQUFJQyxJQUFJLEtBQUssS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNRDtBQUN2QyxXQUFPQyxFQUFFLFNBQVNILEtBQUssSUFBSUc7QUFBQSxFQUM3QixHQUFHLEVBQUU7QUFDUDtBQUNBLFNBQVNJLEdBQUd6QixHQUFHO0FBQ2IsU0FBT0EsRUFBRSxjQUFjLEVBQUUsSUFBSSxTQUFTLEdBQUc7QUFDdkMsUUFBSW9CLElBQUlELEdBQUcsR0FBRyxDQUFDLEdBQUdFLElBQUlELEVBQUUsQ0FBQyxHQUFHdkIsSUFBSXVCLEVBQUUsQ0FBQyxHQUFHRSxJQUFJLG1CQUFtQkQsQ0FBQyxJQUFJLE1BQU0sbUJBQW1CeEIsRUFBRSxLQUFLO0FBQ2xHLFdBQU9BLEVBQUUsYUFBYSxXQUFXeUIsS0FBS1IsSUFBSWpCLEVBQUUsU0FBUyxTQUFTLElBQUl5QjtBQUFBLEVBQ3BFLENBQUM7QUFDSDtBQUNBLFNBQVNJLEVBQUUxQixHQUFHO0FBQ1osTUFBSSxJQUFJQSxFQUFFLE1BQU1jLENBQUM7QUFDakIsTUFBSSxFQUFFLEVBQUUsVUFBVSxJQUFJO0FBQ3BCLFFBQUlNLElBQUksRUFBRSxNQUFNO0FBQ2hCLFFBQUlBLEdBQUc7QUFDTCxVQUFJQyxJQUFJRCxFQUFFLFFBQVFQLEVBQUU7QUFDcEIsVUFBSSxFQUFFUSxLQUFLLElBQUk7QUFDYixZQUFJeEIsSUFBSSxtQkFBbUJ1QixFQUFFLFVBQVUsR0FBR0MsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHQyxJQUFJLG1CQUFtQkYsRUFBRSxVQUFVQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBR0U7QUFDekcsZUFBTyxFQUFFLFNBQVMsTUFBTUEsSUFBSTFDLEdBQUcsRUFBRSxLQUFLaUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLakIsR0FBRyxPQUFPeUIsR0FBRyxVQUFVQyxFQUFFO0FBQUEsTUFDOUU7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBQ0EsU0FBU0ksR0FBRzNCLEdBQUc7QUFDYixTQUFPLE9BQU9BLEtBQUssWUFBWUEsRUFBRSxXQUFXLElBQUksQ0FBQyxJQUFJQSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksU0FBUyxHQUFHO0FBQzlFLFdBQU8wQixFQUFFLENBQUM7QUFBQSxFQUNaLENBQUMsRUFBRSxPQUFPLFNBQVMsR0FBRztBQUNwQixXQUFPLE1BQU0sVUFBVSxFQUFFLE1BQU0sU0FBUztBQUFBLEVBQzFDLENBQUMsRUFBRSxPQUFPLFNBQVMsR0FBR04sR0FBRztBQUN2QixXQUFPLEVBQUVBLEVBQUUsR0FBRyxJQUFJQSxFQUFFLE9BQU87QUFBQSxFQUM3QixHQUFHLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSVE7QUFBQTtBQUFBLEVBRUYsV0FBVztBQUNULGFBQVM1QixJQUFJO0FBQUEsSUFDYjtBQUNBLFdBQU9BLEVBQUUsVUFBVSxTQUFTLFNBQVMsR0FBR29CLEdBQUdDLEdBQUc7QUFDNUMsVUFBSW5CLElBQU12QixFQUFHLFdBQVcsQ0FBQztBQUN6QixVQUFJLEVBQUUsQ0FBQ3VCLEtBQU9MLEVBQUUsQ0FBQyxJQUFJO0FBQ25CLFlBQUl5QixJQUFJRyxHQUFHdkIsQ0FBRyxFQUFFLE9BQU8sU0FBUyxHQUFHO0FBQ2pDLGlCQUFPLEVBQUUsVUFBVWU7QUFBQSxRQUNyQixDQUFDLEVBQUUsTUFBTSxHQUFHRCxFQUFFLEdBQUdPLElBQUlDLEdBQUdGLENBQUM7QUFDekIsUUFBQUMsRUFBRSxTQUFTLEtBQUtGLEVBQUUsSUFBSUQsR0FBR0wsR0FBR1EsQ0FBQztBQUFBLE1BQy9CO0FBQUEsSUFDRixHQUFHdkIsRUFBRSxVQUFVLFVBQVUsU0FBUyxHQUFHb0IsR0FBR0MsR0FBRztBQUN6QyxVQUFJeEIsSUFBSXdCLEVBQUUsSUFBSUQsR0FBR0wsQ0FBQyxHQUFHTyxJQUFJLE1BQU0sUUFBUXpCLENBQUMsSUFBSUEsRUFBRSxLQUFLLENBQUMsSUFBSUE7QUFDeEQsVUFBSSxDQUFDeUI7QUFDSCxlQUFPO0FBQ1QsVUFBSUMsSUFBSSxDQUFDO0FBQ1QsVUFBSUQsRUFBRSxXQUFXO0FBQ2YsZUFBTztBQUNULFVBQUksSUFBSUEsRUFBRSxNQUFNLENBQUM7QUFDakIsYUFBTyxFQUFFLFFBQVEsU0FBU08sR0FBRztBQUMzQixZQUFJQyxJQUFJSixFQUFFRyxDQUFDO0FBQ1gsWUFBSUMsR0FBRztBQUNMLGNBQUkvQixJQUFJLEVBQUUsT0FBTytCLEVBQUUsTUFBTTtBQUN6QixVQUFBQSxFQUFFLGFBQWEvQixFQUFFLFdBQVcrQixFQUFFLFdBQVdQLEVBQUVPLEVBQUUsR0FBRyxJQUFJL0I7QUFBQSxRQUN0RDtBQUFBLE1BQ0YsQ0FBQyxHQUFHLE9BQU8sUUFBUXdCLENBQUMsRUFBRSxXQUFXLElBQUksSUFBSTVDLEVBQUcsV0FBVyxHQUFHQSxFQUFHLGNBQWM0QyxDQUFDLENBQUM7QUFBQSxJQUMvRSxHQUFHdkIsRUFBRSxVQUFVLFNBQVMsV0FBVztBQUNqQyxhQUFPLENBQUNlLENBQUM7QUFBQSxJQUNYLEdBQUdmO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRCtCO0FBQUE7QUFBQSxFQUVELFdBQVc7QUFDVCxhQUFTL0IsRUFBRSxHQUFHb0IsR0FBRztBQUNmLFdBQUssa0JBQWtCQSxHQUFHLEtBQUssZUFBZSxFQUFFLElBQUksR0FBRyxLQUFLLHFCQUFxQkEsRUFBRSxJQUFJO0FBQUEsSUFDekY7QUFDQSxXQUFPcEIsRUFBRSxVQUFVLE1BQU0sV0FBVztBQUNsQyxVQUFJLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLEtBQUs7QUFDMUMsYUFBTyxLQUFLLGVBQWU7QUFBQSxJQUM3QixHQUFHQTtBQUFBLEVBQ0wsRUFBRTtBQUFBLEdBQ0RnQyxLQUFLLFNBQVNoQyxHQUFHO0FBQ2xCLE1BQUksSUFBSSxPQUFPLFVBQVUsY0FBYyxPQUFPLFVBQVVvQixJQUFJLEtBQUtwQixFQUFFLENBQUMsR0FBR3FCLElBQUk7QUFDM0UsTUFBSUQsRUFBRyxRQUFPQSxFQUFFLEtBQUtwQixDQUFDO0FBQ3RCLE1BQUlBLEtBQUssT0FBT0EsRUFBRSxVQUFVLFNBQVUsUUFBTztBQUFBLElBQzNDLE1BQU0sV0FBVztBQUNmLGFBQU9BLEtBQUtxQixLQUFLckIsRUFBRSxXQUFXQSxJQUFJLFNBQVMsRUFBRSxPQUFPQSxLQUFLQSxFQUFFcUIsR0FBRyxHQUFHLE1BQU0sQ0FBQ3JCLEVBQUU7QUFBQSxJQUM1RTtBQUFBLEVBQ0Y7QUFDQSxRQUFNLElBQUksVUFBVSxJQUFJLDRCQUE0QixpQ0FBaUM7QUFDdkYsR0FBR2lDLEtBQUssU0FBU2pDLEdBQUcsR0FBRztBQUNyQixNQUFJb0IsSUFBSSxPQUFPLFVBQVUsY0FBY3BCLEVBQUUsT0FBTyxRQUFRO0FBQ3hELE1BQUksQ0FBQ29CLEVBQUcsUUFBT3BCO0FBQ2YsTUFBSXFCLElBQUlELEVBQUUsS0FBS3BCLENBQUMsR0FBR0gsR0FBR3lCLElBQUksQ0FBQyxHQUFHQztBQUM5QixNQUFJO0FBQ0YsWUFBUSxNQUFNLFVBQVUsTUFBTSxNQUFNLEVBQUUxQixJQUFJd0IsRUFBRSxLQUFLLEdBQUcsT0FBUSxDQUFBQyxFQUFFLEtBQUt6QixFQUFFLEtBQUs7QUFBQSxFQUM1RSxTQUFTLEdBQUc7QUFDVixJQUFBMEIsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUFBLEVBQ2pCLFVBQUU7QUFDQSxRQUFJO0FBQ0YsTUFBQTFCLEtBQUssQ0FBQ0EsRUFBRSxTQUFTdUIsSUFBSUMsRUFBRSxXQUFXRCxFQUFFLEtBQUtDLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSUUsRUFBRyxPQUFNQSxFQUFFO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsU0FBT0Q7QUFDVDtBQUNBLFNBQVNZLEdBQUdDLEdBQUs7QUFDZixNQUFJLEdBQUdmLEdBQUdDLElBQUksQ0FBQztBQUNmLE1BQUksT0FBT2MsS0FBTyxZQUFZQSxLQUFPO0FBQ25DLFdBQU9kO0FBQ1QsTUFBSTtBQUNGLGFBQVN4QixJQUFJbUMsR0FBRyxPQUFPLFFBQVFHLENBQUcsQ0FBQyxHQUFHYixJQUFJekIsRUFBRSxLQUFLLEdBQUcsQ0FBQ3lCLEVBQUUsTUFBTUEsSUFBSXpCLEVBQUUsS0FBSyxHQUFHO0FBQ3pFLFVBQUkwQixJQUFJVSxHQUFHWCxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUlDLEVBQUUsQ0FBQyxHQUFHTSxJQUFJTixFQUFFLENBQUM7QUFDekMsVUFBSSxDQUFDYSxHQUFHLENBQUMsR0FBRztBQUNWLFFBQUFwQyxFQUFFLEtBQUssNEJBQTRCLENBQUM7QUFDcEM7QUFBQSxNQUNGO0FBQ0EsVUFBSSxDQUFDcUMsR0FBR1IsQ0FBQyxHQUFHO0FBQ1YsUUFBQTdCLEVBQUUsS0FBSywwQ0FBMEMsQ0FBQztBQUNsRDtBQUFBLE1BQ0Y7QUFDQSxZQUFNLFFBQVE2QixDQUFDLElBQUlSLEVBQUUsQ0FBQyxJQUFJUSxFQUFFLE1BQU0sSUFBSVIsRUFBRSxDQUFDLElBQUlRO0FBQUEsSUFDL0M7QUFBQSxFQUNGLFNBQVNDLEdBQUc7QUFDVixRQUFJLEVBQUUsT0FBT0EsRUFBRTtBQUFBLEVBQ2pCLFVBQUU7QUFDQSxRQUFJO0FBQ0YsTUFBQVIsS0FBSyxDQUFDQSxFQUFFLFNBQVNGLElBQUl2QixFQUFFLFdBQVd1QixFQUFFLEtBQUt2QixDQUFDO0FBQUEsSUFDNUMsVUFBRTtBQUNBLFVBQUksRUFBRyxPQUFNLEVBQUU7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFDQSxTQUFPd0I7QUFDVDtBQUNBLFNBQVNlLEdBQUdwQyxHQUFHO0FBQ2IsU0FBTyxPQUFPQSxLQUFLLFlBQVlBLEVBQUUsU0FBUztBQUM1QztBQUNBLFNBQVNxQyxHQUFHckMsR0FBRztBQUNiLFNBQU9BLEtBQUssT0FBTyxLQUFPLE1BQU0sUUFBUUEsQ0FBQyxJQUFJc0MsR0FBR3RDLENBQUMsSUFBSXVDLEdBQUd2QyxDQUFDO0FBQzNEO0FBQ0EsU0FBU3NDLEdBQUd0QyxHQUFHO0FBQ2IsTUFBSSxHQUFHb0IsR0FBR0M7QUFDVixNQUFJO0FBQ0YsYUFBU3hCLElBQUltQyxHQUFHaEMsQ0FBQyxHQUFHc0IsSUFBSXpCLEVBQUUsS0FBSyxHQUFHLENBQUN5QixFQUFFLE1BQU1BLElBQUl6QixFQUFFLEtBQUssR0FBRztBQUN2RCxVQUFJMEIsSUFBSUQsRUFBRTtBQUNWLFVBQUlDLEtBQUssTUFBTTtBQUNiLFlBQUksQ0FBQ0YsR0FBRztBQUNOLGNBQUlrQixHQUFHaEIsQ0FBQyxHQUFHO0FBQ1QsWUFBQUYsSUFBSSxPQUFPRTtBQUNYO0FBQUEsVUFDRjtBQUNBLGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUksT0FBT0EsTUFBTUY7QUFDZixpQkFBTztBQUFBLE1BQ1g7QUFBQSxJQUNGO0FBQUEsRUFDRixTQUFTLEdBQUc7QUFDVixRQUFJLEVBQUUsT0FBTyxFQUFFO0FBQUEsRUFDakIsVUFBRTtBQUNBLFFBQUk7QUFDRixNQUFBQyxLQUFLLENBQUNBLEVBQUUsU0FBU0YsSUFBSXZCLEVBQUUsV0FBV3VCLEVBQUUsS0FBS3ZCLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSSxFQUFHLE9BQU0sRUFBRTtBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQUNBLFNBQVMwQyxHQUFHdkMsR0FBRztBQUNiLFVBQVEsT0FBT0EsR0FBRztBQUFBLElBQ2hCLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFDSCxhQUFPO0FBQUEsRUFDWDtBQUNBLFNBQU87QUFDVDtBQUNBLFNBQVN3QyxLQUFLO0FBQ1osU0FBTyxTQUFTTCxHQUFLO0FBQ25CLElBQUFuQyxFQUFFLE1BQU15QyxHQUFHTixDQUFHLENBQUM7QUFBQSxFQUNqQjtBQUNGO0FBQ0EsU0FBU00sR0FBR3pDLEdBQUc7QUFDYixTQUFPLE9BQU9BLEtBQUssV0FBV0EsSUFBSSxLQUFLLFVBQVUwQyxHQUFHMUMsQ0FBQyxDQUFDO0FBQ3hEO0FBQ0EsU0FBUzBDLEdBQUcxQyxHQUFHO0FBQ2IsV0FBUyxJQUFJLENBQUMsR0FBR29CLElBQUlwQixHQUFHb0IsTUFBTTtBQUM1QixXQUFPLG9CQUFvQkEsQ0FBQyxFQUFFLFFBQVEsU0FBU0MsR0FBRztBQUNoRCxVQUFJLENBQUMsRUFBRUEsQ0FBQyxHQUFHO0FBQ1QsWUFBSXhCLElBQUl1QixFQUFFQyxDQUFDO0FBQ1gsUUFBQXhCLE1BQU0sRUFBRXdCLENBQUMsSUFBSSxPQUFPeEIsQ0FBQztBQUFBLE1BQ3ZCO0FBQUEsSUFDRixDQUFDLEdBQUd1QixJQUFJLE9BQU8sZUFBZUEsQ0FBQztBQUNqQyxTQUFPO0FBQ1Q7QUFDQSxJQUFJdUIsS0FBS0gsR0FBRztBQUNaLFNBQVMsR0FBR3hDLEdBQUc7QUFDYixFQUFBMkMsS0FBSzNDO0FBQ1A7QUFDQSxTQUFTNEMsR0FBRzVDLEdBQUc7QUFDYixNQUFJO0FBQ0YsSUFBQTJDLEdBQUczQyxDQUFDO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUjtBQUNGO0FBQ0EsSUFBSTZDO0FBQUEsQ0FDSCxTQUFTN0MsR0FBRztBQUNYLEVBQUFBLEVBQUUsWUFBWSxjQUFjQSxFQUFFLFdBQVcsYUFBYUEsRUFBRSx1QkFBdUIsMEJBQTBCQSxFQUFFLHNCQUFzQix5QkFBeUJBLEVBQUUsMEJBQTBCLDRCQUE0QkEsRUFBRSxlQUFlO0FBQ3JPLEdBQUc2QyxNQUFNQSxJQUFJLENBQUMsRUFBRTtBQUNoQixJQUFJQyxLQUFLLEtBQUssS0FBSyxDQUFDLG1CQUFtQjtBQUN2QyxTQUFTQyxHQUFHL0MsR0FBRztBQUNiLFNBQU8sR0FBRyxRQUFRQSxDQUFDLElBQUk7QUFDekI7QUFDQSxJQUFJZ0QsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFDQSxTQUFTQyxHQUFHakQsR0FBRztBQUNiLFNBQU9nRCxHQUFHLFFBQVFoRCxDQUFDLElBQUk7QUFDekI7QUFDQSxJQUFJLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQUNBLFNBQVNrRCxHQUFHbEQsR0FBRztBQUNiLFNBQU8sR0FBRyxRQUFRQSxDQUFDLElBQUk7QUFDekI7QUFDQSxJQUFJbUQsSUFBSSxPQUFPQyxJQUFJLEtBQUtDLEtBQUssS0FBS0MsS0FBSyxLQUFLQyxJQUFJO0FBQUEsRUFDOUMsbUJBQW1CO0FBQUEsRUFDbkIsZ0JBQWdCO0FBQUEsRUFDaEIsK0JBQStCO0FBQUEsRUFDL0IsNEJBQTRCO0FBQUEsRUFDNUIsVUFBVTtBQUFBLEVBQ1YseUJBQXlCO0FBQUEsRUFDekIsV0FBVztBQUFBLEVBQ1gseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsMkJBQTJCO0FBQUEsRUFDM0IsNkJBQTZCO0FBQUEsRUFDN0Isb0NBQW9DO0FBQUEsRUFDcEMscUNBQXFDO0FBQUEsRUFDckMsa0NBQWtDO0FBQUEsRUFDbEMsNEJBQTRCO0FBQUEsRUFDNUIsbUNBQW1DO0FBQUEsRUFDbkMsb0NBQW9DO0FBQUEsRUFDcEMsaUNBQWlDO0FBQUEsRUFDakMsNEJBQTRCO0FBQUEsRUFDNUIsbUNBQW1DO0FBQUEsRUFDbkMsb0NBQW9DO0FBQUEsRUFDcEMsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsZ0JBQWdCcEQsRUFBSTtBQUFBLEVBQ3BCLHVCQUF1QixDQUFDO0FBQUEsRUFDeEIsa0JBQWtCLENBQUMsZ0JBQWdCLFNBQVM7QUFBQSxFQUM1QywwQkFBMEI7QUFBQSxFQUMxQixtQkFBbUI7QUFBQSxFQUNuQixtQ0FBbUNnRDtBQUFBLEVBQ25DLDRCQUE0QkM7QUFBQSxFQUM1Qix3Q0FBd0NEO0FBQUEsRUFDeEMsaUNBQWlDQztBQUFBLEVBQ2pDLDZDQUE2Q0Q7QUFBQSxFQUM3QyxzQ0FBc0NDO0FBQUEsRUFDdEMsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsMkNBQTJDQztBQUFBLEVBQzNDLDBDQUEwQ0M7QUFBQSxFQUMxQyxzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUJULEVBQUU7QUFBQSxFQUN2Qix5QkFBeUI7QUFBQSxFQUN6QixvQkFBb0I7QUFBQSxFQUNwQiw2QkFBNkI7QUFBQSxFQUM3QixvQ0FBb0M7QUFBQSxFQUNwQyxxQ0FBcUM7QUFBQSxFQUNyQyxrQ0FBa0M7QUFBQSxFQUNsQyxnQ0FBZ0M7QUFBQSxFQUNoQyx1Q0FBdUM7QUFBQSxFQUN2Qyx3Q0FBd0M7QUFBQSxFQUN4QyxxQ0FBcUM7QUFBQSxFQUNyQyxnQ0FBZ0M7QUFBQSxFQUNoQyx1Q0FBdUM7QUFBQSxFQUN2Qyx3Q0FBd0M7QUFBQSxFQUN4QyxxQ0FBcUM7QUFBQSxFQUNyQywrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0Qyx1Q0FBdUM7QUFBQSxFQUN2QyxvQ0FBb0M7QUFBQSxFQUNwQyx1Q0FBdUM7QUFBQSxFQUN2Qyw4Q0FBOEM7QUFBQSxFQUM5QywrQ0FBK0M7QUFBQSxFQUMvQyw0Q0FBNEM7QUFBQSxFQUM1Qyw2QkFBNkI7QUFBQSxFQUM3QixvQ0FBb0M7QUFBQSxFQUNwQyxxQ0FBcUM7QUFBQSxFQUNyQyxrQ0FBa0M7QUFBQSxFQUNsQyxtREFBbUQ7QUFBQSxFQUNuRCwrQkFBK0IsQ0FBQztBQUNsQztBQUNBLFNBQVNXLEdBQUd4RCxHQUFHLEdBQUdvQixHQUFHO0FBQ25CLE1BQUksRUFBRSxPQUFPQSxFQUFFcEIsQ0FBQyxJQUFJLE1BQU07QUFDeEIsUUFBSXFCLElBQUksT0FBT0QsRUFBRXBCLENBQUMsQ0FBQztBQUNuQixNQUFFQSxDQUFDLElBQUlxQixFQUFFLFlBQVksTUFBTTtBQUFBLEVBQzdCO0FBQ0Y7QUFDQSxTQUFTLEdBQUdyQixHQUFHLEdBQUdvQixHQUFHQyxHQUFHeEIsR0FBRztBQUN6QixNQUFJd0IsTUFBTSxXQUFXQSxJQUFJLFNBQVN4QixNQUFNLFdBQVdBLElBQUksUUFBUSxPQUFPdUIsRUFBRXBCLENBQUMsSUFBSSxLQUFLO0FBQ2hGLFFBQUlzQixJQUFJLE9BQU9GLEVBQUVwQixDQUFDLENBQUM7QUFDbkIsVUFBTXNCLENBQUMsTUFBTUEsSUFBSUQsSUFBSSxFQUFFckIsQ0FBQyxJQUFJcUIsSUFBSUMsSUFBSXpCLElBQUksRUFBRUcsQ0FBQyxJQUFJSCxJQUFJLEVBQUVHLENBQUMsSUFBSXNCO0FBQUEsRUFDNUQ7QUFDRjtBQUNBLFNBQVNtQyxHQUFHekQsR0FBRyxHQUFHb0IsR0FBR0MsR0FBRztBQUN0QixFQUFBQSxNQUFNLFdBQVdBLElBQUl5QjtBQUNyQixNQUFJakQsSUFBSXVCLEVBQUVwQixDQUFDO0FBQ1gsU0FBT0gsS0FBSyxhQUFhLEVBQUVHLENBQUMsSUFBSUgsRUFBRSxNQUFNd0IsQ0FBQyxFQUFFLElBQUksU0FBU0MsR0FBRztBQUN6RCxXQUFPQSxFQUFFLEtBQUs7QUFBQSxFQUNoQixDQUFDO0FBQ0g7QUFDQSxJQUFJb0MsS0FBSztBQUFBLEVBQ1AsS0FBS3ZELEVBQUk7QUFBQSxFQUNULFNBQVNBLEVBQUk7QUFBQSxFQUNiLE9BQU9BLEVBQUk7QUFBQSxFQUNYLE1BQU1BLEVBQUk7QUFBQSxFQUNWLE1BQU1BLEVBQUk7QUFBQSxFQUNWLE9BQU9BLEVBQUk7QUFBQSxFQUNYLE1BQU1BLEVBQUk7QUFDWjtBQUNBLFNBQVN3RCxHQUFHM0QsR0FBRyxHQUFHb0IsR0FBRztBQUNuQixNQUFJQyxJQUFJRCxFQUFFcEIsQ0FBQztBQUNYLE1BQUksT0FBT3FCLEtBQUssVUFBVTtBQUN4QixRQUFJeEIsSUFBSTZELEdBQUdyQyxFQUFFLFlBQVksQ0FBQztBQUMxQixJQUFBeEIsS0FBSyxTQUFTLEVBQUVHLENBQUMsSUFBSUg7QUFBQSxFQUN2QjtBQUNGO0FBQ0EsU0FBUytELEVBQUU1RCxHQUFHO0FBQ1osTUFBSSxJQUFJLENBQUM7QUFDVCxXQUFTb0IsS0FBS21DLEdBQUc7QUFDZixRQUFJbEMsSUFBSUQ7QUFDUixZQUFRQyxHQUFHO0FBQUEsTUFDVCxLQUFLO0FBQ0gsUUFBQXNDLEdBQUd0QyxHQUFHLEdBQUdyQixDQUFDO0FBQ1Y7QUFBQSxNQUNGO0FBQ0UsWUFBSStDLEdBQUcxQixDQUFDO0FBQ04sVUFBQW1DLEdBQUduQyxHQUFHLEdBQUdyQixDQUFDO0FBQUEsaUJBQ0hpRCxHQUFHNUIsQ0FBQztBQUNYLGFBQUdBLEdBQUcsR0FBR3JCLENBQUM7QUFBQSxpQkFDSGtELEdBQUc3QixDQUFDO0FBQ1gsVUFBQW9DLEdBQUdwQyxHQUFHLEdBQUdyQixDQUFDO0FBQUEsYUFDUDtBQUNILGNBQUlILElBQUlHLEVBQUVxQixDQUFDO0FBQ1gsaUJBQU94QixJQUFJLE9BQU9BLE1BQU0sU0FBUyxFQUFFd0IsQ0FBQyxJQUFJLE9BQU94QixDQUFDO0FBQUEsUUFDbEQ7QUFBQSxJQUNKO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQUNBLFNBQVNnRSxLQUFLO0FBQ1osTUFBSTdELElBQUk0RCxFQUFFaEYsQ0FBRTtBQUNaLFNBQU8sT0FBTyxPQUFPLENBQUMsR0FBRzJFLEdBQUd2RCxDQUFDO0FBQy9CO0FBQ0EsU0FBUzhELEtBQUs7QUFDWixTQUFPRixFQUFFaEYsQ0FBRTtBQUNiO0FBQ0EsSUFBSW1GLEtBQUssU0FBUy9ELEdBQUcsR0FBRztBQUN0QixNQUFJb0IsSUFBSSxPQUFPLFVBQVUsY0FBY3BCLEVBQUUsT0FBTyxRQUFRO0FBQ3hELE1BQUksQ0FBQ29CLEVBQUcsUUFBT3BCO0FBQ2YsTUFBSXFCLElBQUlELEVBQUUsS0FBS3BCLENBQUMsR0FBR0gsR0FBR3lCLElBQUksQ0FBQyxHQUFHQztBQUM5QixNQUFJO0FBQ0YsWUFBUSxNQUFNLFVBQVUsTUFBTSxNQUFNLEVBQUUxQixJQUFJd0IsRUFBRSxLQUFLLEdBQUcsT0FBUSxDQUFBQyxFQUFFLEtBQUt6QixFQUFFLEtBQUs7QUFBQSxFQUM1RSxTQUFTLEdBQUc7QUFDVixJQUFBMEIsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUFBLEVBQ2pCLFVBQUU7QUFDQSxRQUFJO0FBQ0YsTUFBQTFCLEtBQUssQ0FBQ0EsRUFBRSxTQUFTdUIsSUFBSUMsRUFBRSxXQUFXRCxFQUFFLEtBQUtDLENBQUM7QUFBQSxJQUM1QyxVQUFFO0FBQ0EsVUFBSUUsRUFBRyxPQUFNQSxFQUFFO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsU0FBT0Q7QUFDVCxHQUFHMEMsS0FBSyxTQUFTaEUsR0FBRyxHQUFHb0IsR0FBRztBQUN4QixNQUFJLFVBQVUsV0FBVyxFQUFHLFVBQVNDLElBQUksR0FBR3hCLElBQUksRUFBRSxRQUFReUIsR0FBR0QsSUFBSXhCLEdBQUd3QjtBQUNsRSxLQUFDQyxLQUFLLEVBQUVELEtBQUssUUFBUUMsTUFBTUEsSUFBSSxNQUFNLFVBQVUsTUFBTSxLQUFLLEdBQUcsR0FBR0QsQ0FBQyxJQUFJQyxFQUFFRCxDQUFDLElBQUksRUFBRUEsQ0FBQztBQUNqRixTQUFPckIsRUFBRSxPQUFPc0IsS0FBSyxNQUFNLFVBQVUsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUNwRDtBQUNBLFNBQVMyQyxHQUFHakUsR0FBRztBQUNiLFNBQU8sS0FBSyxPQUFPLGFBQWEsTUFBTSxRQUFRZ0UsR0FBRyxDQUFDLEdBQUdELEdBQUc5RCxFQUFJRCxDQUFDLENBQUMsR0FBRyxFQUFLLENBQUMsQ0FBQztBQUMxRTtBQUNBLElBQUlrRSxLQUFLLEdBQUdDLEtBQUssSUFBSUM7QUFBQTtBQUFBLEVBRUgsMkJBQVc7QUFDekIsYUFBU3BFLElBQUk7QUFDWCxXQUFLLGtCQUFrQnFFLEVBQUVGLEVBQUUsR0FBRyxLQUFLLGlCQUFpQkUsRUFBRUgsRUFBRTtBQUFBLElBQzFEO0FBQ0EsV0FBT2xFO0FBQUEsRUFDVCxFQUFFO0FBQUEsR0FDRHNFLElBQUksTUFBTSxFQUFFO0FBQ2YsU0FBU0QsRUFBRXJFLEdBQUc7QUFDWixTQUFPLFdBQVc7QUFDaEIsYUFBU29CLElBQUksR0FBR0EsSUFBSXBCLElBQUksR0FBR29CO0FBQ3pCLE1BQUFrRCxFQUFFbEQsQ0FBQyxJQUFJLEtBQUssTUFBTSxLQUFLLE9BQU8sSUFBSSxFQUFFLElBQUksSUFBSWtELEVBQUVsRCxDQUFDLEtBQUssT0FBT2tELEVBQUVsRCxDQUFDLEtBQUs7QUFDckUsV0FBTyxPQUFPLGFBQWEsTUFBTSxNQUFNa0QsRUFBRSxNQUFNLEdBQUd0RSxJQUFJLENBQUMsQ0FBQztBQUFBLEVBQzFEO0FBQ0Y7QUFDQSxTQUFTdUUsR0FBR3ZFLEdBQUc7QUFDZjtBQUNBLElBQUksS0FBSyxTQUFTQSxHQUFHO0FBQ25CLE1BQUksSUFBSSxPQUFPLFVBQVUsY0FBYyxPQUFPLFVBQVVvQixJQUFJLEtBQUtwQixFQUFFLENBQUMsR0FBR3FCLElBQUk7QUFDM0UsTUFBSUQsRUFBRyxRQUFPQSxFQUFFLEtBQUtwQixDQUFDO0FBQ3RCLE1BQUlBLEtBQUssT0FBT0EsRUFBRSxVQUFVLFNBQVUsUUFBTztBQUFBLElBQzNDLE1BQU0sV0FBVztBQUNmLGFBQU9BLEtBQUtxQixLQUFLckIsRUFBRSxXQUFXQSxJQUFJLFNBQVMsRUFBRSxPQUFPQSxLQUFLQSxFQUFFcUIsR0FBRyxHQUFHLE1BQU0sQ0FBQ3JCLEVBQUU7QUFBQSxJQUM1RTtBQUFBLEVBQ0Y7QUFDQSxRQUFNLElBQUksVUFBVSxJQUFJLDRCQUE0QixpQ0FBaUM7QUFDdkYsR0FBR3dFO0FBQUE7QUFBQSxFQUVELFdBQVc7QUFDVCxhQUFTckMsRUFBSSxHQUFHO0FBQ2QsWUFBTSxXQUFXLElBQUksQ0FBQztBQUN0QixVQUFJZjtBQUNKLFdBQUssZ0JBQWdCQSxJQUFJLEVBQUUsaUJBQWlCLFFBQVFBLE1BQU0sU0FBU0EsSUFBSSxDQUFDLEdBQUcsS0FBSyxVQUFVLE1BQU0sS0FBSyxJQUFJLElBQUksS0FBSyxhQUFhLElBQUksU0FBU0MsR0FBRztBQUM3SSxlQUFPLE9BQU9BLEVBQUUsVUFBVSxhQUFhQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQUEsTUFDdkQsQ0FBQyxFQUFFLE9BQU8sU0FBU0EsR0FBR3hCLEdBQUc7QUFDdkIsZUFBT3dCLEVBQUUsT0FBT3hCLENBQUM7QUFBQSxNQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUNUO0FBQ0EsV0FBT3NDLEVBQUksVUFBVSxTQUFTLFNBQVMsR0FBR2YsR0FBR0MsR0FBRztBQUM5QyxVQUFJeEIsR0FBR3lCO0FBQ1AsVUFBSTtBQUNGLGlCQUFTQyxJQUFJLEdBQUcsS0FBSyxZQUFZLEdBQUcsSUFBSUEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sSUFBSUEsRUFBRSxLQUFLLEdBQUc7QUFDdkUsY0FBSU0sSUFBSSxFQUFFO0FBQ1YsY0FBSTtBQUNGLFlBQUFBLEVBQUUsT0FBTyxHQUFHVCxHQUFHQyxDQUFDO0FBQUEsVUFDbEIsU0FBU1MsR0FBRztBQUNWLFlBQUE5QixFQUFFLEtBQUssMkJBQTJCNkIsRUFBRSxZQUFZLE9BQU8sWUFBWUMsRUFBRSxPQUFPO0FBQUEsVUFDOUU7QUFBQSxRQUNGO0FBQUEsTUFDRixTQUFTQSxHQUFHO0FBQ1YsUUFBQWpDLElBQUksRUFBRSxPQUFPaUMsRUFBRTtBQUFBLE1BQ2pCLFVBQUU7QUFDQSxZQUFJO0FBQ0YsZUFBSyxDQUFDLEVBQUUsU0FBU1IsSUFBSUMsRUFBRSxXQUFXRCxFQUFFLEtBQUtDLENBQUM7QUFBQSxRQUM1QyxVQUFFO0FBQ0EsY0FBSTFCLEVBQUcsT0FBTUEsRUFBRTtBQUFBLFFBQ2pCO0FBQUEsTUFDRjtBQUFBLElBQ0YsR0FBR3NDLEVBQUksVUFBVSxVQUFVLFNBQVMsR0FBR2YsR0FBR0MsR0FBRztBQUMzQyxhQUFPLEtBQUssYUFBYSxPQUFPLFNBQVN4QixHQUFHeUIsR0FBRztBQUM3QyxZQUFJO0FBQ0YsaUJBQU9BLEVBQUUsUUFBUXpCLEdBQUd1QixHQUFHQyxDQUFDO0FBQUEsUUFDMUIsU0FBU0UsR0FBRztBQUNWLFVBQUF2QixFQUFFLEtBQUssNEJBQTRCc0IsRUFBRSxZQUFZLE9BQU8sWUFBWUMsRUFBRSxPQUFPO0FBQUEsUUFDL0U7QUFDQSxlQUFPMUI7QUFBQSxNQUNULEdBQUcsQ0FBQztBQUFBLElBQ04sR0FBR3NDLEVBQUksVUFBVSxTQUFTLFdBQVc7QUFDbkMsYUFBTyxLQUFLLFFBQVEsTUFBTTtBQUFBLElBQzVCLEdBQUdBO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRHNDLElBQUksZ0JBQWdCQyxLQUFLLFVBQVVELElBQUksV0FBV0UsS0FBSyxhQUFhRixJQUFJLGtCQUFrQkEsSUFBSSxVQUFVRyxLQUFLLElBQUksT0FBTyxTQUFTRixLQUFLLE1BQU1DLEtBQUssSUFBSSxHQUFHRSxLQUFLLHVCQUF1QixLQUFLO0FBQzVMLFNBQVMsR0FBRzdFLEdBQUc7QUFDYixTQUFPNEUsR0FBRyxLQUFLNUUsQ0FBQztBQUNsQjtBQUNBLFNBQVMsR0FBR0EsR0FBRztBQUNiLFNBQU82RSxHQUFHLEtBQUs3RSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUtBLENBQUM7QUFDakM7QUFDQSxJQUFJOEUsSUFBSSxJQUFJQyxLQUFLLEtBQUtDLElBQUksS0FBS0MsSUFBSSxLQUFLQztBQUFBO0FBQUEsRUFFdEMsV0FBVztBQUNULGFBQVNsRixFQUFFLEdBQUc7QUFDWixXQUFLLGlCQUFpQyxvQkFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLE9BQU8sQ0FBQztBQUFBLElBQ3JFO0FBQ0EsV0FBT0EsRUFBRSxVQUFVLE1BQU0sU0FBUyxHQUFHb0IsR0FBRztBQUN0QyxVQUFJQyxJQUFJLEtBQUssT0FBTztBQUNwQixhQUFPQSxFQUFFLGVBQWUsSUFBSSxDQUFDLEtBQUtBLEVBQUUsZUFBZSxPQUFPLENBQUMsR0FBR0EsRUFBRSxlQUFlLElBQUksR0FBR0QsQ0FBQyxHQUFHQztBQUFBLElBQzVGLEdBQUdyQixFQUFFLFVBQVUsUUFBUSxTQUFTLEdBQUc7QUFDakMsVUFBSW9CLElBQUksS0FBSyxPQUFPO0FBQ3BCLGFBQU9BLEVBQUUsZUFBZSxPQUFPLENBQUMsR0FBR0E7QUFBQSxJQUNyQyxHQUFHcEIsRUFBRSxVQUFVLE1BQU0sU0FBUyxHQUFHO0FBQy9CLGFBQU8sS0FBSyxlQUFlLElBQUksQ0FBQztBQUFBLElBQ2xDLEdBQUdBLEVBQUUsVUFBVSxZQUFZLFdBQVc7QUFDcEMsVUFBSSxJQUFJO0FBQ1IsYUFBTyxLQUFLLE1BQU0sRUFBRSxPQUFPLFNBQVNvQixHQUFHQyxHQUFHO0FBQ3hDLGVBQU9ELEVBQUUsS0FBS0MsSUFBSTRELElBQUksRUFBRSxJQUFJNUQsQ0FBQyxDQUFDLEdBQUdEO0FBQUEsTUFDbkMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLNEQsQ0FBQztBQUFBLElBQ2YsR0FBR2hGLEVBQUUsVUFBVSxTQUFTLFNBQVMsR0FBRztBQUNsQyxRQUFFLFNBQVMrRSxPQUFPLEtBQUssaUJBQWlCLEVBQUUsTUFBTUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLFNBQVM1RCxHQUFHQyxHQUFHO0FBQ2pGLFlBQUl4QixJQUFJd0IsRUFBRSxLQUFLLEdBQUdDLElBQUl6QixFQUFFLFFBQVFvRixDQUFDO0FBQ2pDLFlBQUkzRCxNQUFNLElBQUk7QUFDWixjQUFJQyxJQUFJMUIsRUFBRSxNQUFNLEdBQUd5QixDQUFDLEdBQUcsSUFBSXpCLEVBQUUsTUFBTXlCLElBQUksR0FBR0QsRUFBRSxNQUFNO0FBQ2xELGFBQUdFLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBS0gsRUFBRSxJQUFJRyxHQUFHLENBQUM7QUFBQSxRQUM5QjtBQUNBLGVBQU9IO0FBQUEsTUFDVCxHQUFtQixvQkFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLGVBQWUsT0FBTzBELE1BQU0sS0FBSyxpQkFBaUIsSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFLLGVBQWUsUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBR0EsQ0FBQyxDQUFDO0FBQUEsSUFDL0osR0FBRzlFLEVBQUUsVUFBVSxRQUFRLFdBQVc7QUFDaEMsYUFBTyxNQUFNLEtBQUssS0FBSyxlQUFlLEtBQUssQ0FBQyxFQUFFLFFBQVE7QUFBQSxJQUN4RCxHQUFHQSxFQUFFLFVBQVUsU0FBUyxXQUFXO0FBQ2pDLFVBQUksSUFBSSxJQUFJQSxFQUFFO0FBQ2QsYUFBTyxFQUFFLGlCQUFpQixJQUFJLElBQUksS0FBSyxjQUFjLEdBQUc7QUFBQSxJQUMxRCxHQUFHQTtBQUFBLEVBQ0wsRUFBRTtBQUFBLEdBQ0RtRixJQUFJLGVBQWVDLElBQUksY0FBY0MsS0FBSyxNQUFNQyxLQUFLLHFCQUFxQkMsS0FBSywyQkFBMkJDLEtBQUssMkJBQTJCQyxLQUFLLGVBQWVDLEtBQUssSUFBSSxPQUFPLFdBQVdKLEtBQUssUUFBUUMsS0FBSyxRQUFRQyxLQUFLLFFBQVFDLEtBQUssY0FBYztBQUN0UCxTQUFTRSxHQUFHM0YsR0FBRztBQUNiLE1BQUksSUFBSTBGLEdBQUcsS0FBSzFGLENBQUM7QUFDakIsU0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sUUFBUSxFQUFFLENBQUMsSUFBSSxPQUFPO0FBQUEsSUFDMUMsU0FBUyxFQUFFLENBQUM7QUFBQSxJQUNaLFFBQVEsRUFBRSxDQUFDO0FBQUEsSUFDWCxZQUFZLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRTtBQUFBLEVBQy9CO0FBQ0Y7QUFDQSxJQUFJNEY7QUFBQTtBQUFBLEVBRUYsV0FBVztBQUNULGFBQVM1RixJQUFJO0FBQUEsSUFDYjtBQUNBLFdBQU9BLEVBQUUsVUFBVSxTQUFTLFNBQVMsR0FBR29CLEdBQUdDLEdBQUc7QUFDNUMsVUFBSW5CLElBQU1FLEVBQUssZUFBZSxDQUFDO0FBQy9CLFVBQUksRUFBRSxDQUFDRixLQUFPTCxFQUFFLENBQUMsS0FBSyxDQUFDUSxFQUFHSCxDQUFHLElBQUk7QUFDL0IsWUFBSW9CLElBQUkrRCxLQUFLLE1BQU1uRixFQUFJLFVBQVUsTUFBTUEsRUFBSSxTQUFTLE9BQU8sT0FBT0EsRUFBSSxjQUFjSSxFQUFHLElBQUksRUFBRSxTQUFTLEVBQUU7QUFDeEcsUUFBQWUsRUFBRSxJQUFJRCxHQUFHK0QsR0FBRzdELENBQUMsR0FBR3BCLEVBQUksY0FBY21CLEVBQUUsSUFBSUQsR0FBR2dFLEdBQUdsRixFQUFJLFdBQVcsVUFBVSxDQUFDO0FBQUEsTUFDMUU7QUFBQSxJQUNGLEdBQUdGLEVBQUUsVUFBVSxVQUFVLFNBQVMsR0FBR29CLEdBQUdDLEdBQUc7QUFDekMsVUFBSXhCLElBQUl3QixFQUFFLElBQUlELEdBQUcrRCxDQUFDO0FBQ2xCLFVBQUksQ0FBQ3RGO0FBQ0gsZUFBTztBQUNULFVBQUl5QixJQUFJLE1BQU0sUUFBUXpCLENBQUMsSUFBSUEsRUFBRSxDQUFDLElBQUlBO0FBQ2xDLFVBQUksT0FBT3lCLEtBQUs7QUFDZCxlQUFPO0FBQ1QsVUFBSUMsSUFBSW9FLEdBQUdyRSxDQUFDO0FBQ1osVUFBSSxDQUFDQztBQUNILGVBQU87QUFDVCxNQUFBQSxFQUFFLFdBQVc7QUFDYixVQUFJLElBQUlGLEVBQUUsSUFBSUQsR0FBR2dFLENBQUM7QUFDbEIsVUFBSSxHQUFHO0FBQ0wsWUFBSXZELElBQUksTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxJQUFJO0FBQ3pDLFFBQUFOLEVBQUUsYUFBYSxJQUFJMkQsR0FBRyxPQUFPckQsS0FBSyxXQUFXQSxJQUFJLE1BQU07QUFBQSxNQUN6RDtBQUNBLGFBQU96QixFQUFLLGVBQWUsR0FBR21CLENBQUM7QUFBQSxJQUNqQyxHQUFHdkIsRUFBRSxVQUFVLFNBQVMsV0FBVztBQUNqQyxhQUFPLENBQUNtRixHQUFHQyxDQUFDO0FBQUEsSUFDZCxHQUFHcEY7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNELElBQUlRLEdBQUcsNENBQTRDLEdBQUdxRjtBQUFBLENBQ3hELFNBQVM3RixHQUFHO0FBQ1gsRUFBQUEsRUFBRSxPQUFPO0FBQ1gsR0FBRzZGLE1BQU1BLElBQUksQ0FBQyxFQUFFO0FBQ2hCLFNBQVNDLEdBQUc5RixHQUFHLEdBQUc7QUFDaEIsU0FBT0EsRUFBRSxTQUFTLEdBQUcsQ0FBQztBQUN4QjtBQUNBLFNBQVMsR0FBR0EsR0FBRztBQUNiLFNBQU9BLEVBQUUsWUFBWSxDQUFDO0FBQ3hCO0FBQ0EsU0FBUytGLEdBQUcvRixHQUFHO0FBQ2IsU0FBT0EsRUFBRSxTQUFTLENBQUM7QUFDckI7QUFDQSxJQUFJZ0c7QUFBQTtBQUFBLEVBRUYsV0FBVztBQUNULGFBQVNoRyxJQUFJO0FBQUEsSUFDYjtBQUNBLFdBQU9BLEVBQUUsVUFBVSxlQUFlLFdBQVc7QUFDM0MsYUFBTztBQUFBLFFBQ0wsVUFBVVksRUFBRTtBQUFBLE1BQ2Q7QUFBQSxJQUNGLEdBQUdaLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsYUFBTztBQUFBLElBQ1QsR0FBR0E7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNEaUc7QUFBQTtBQUFBLEVBRUQsV0FBVztBQUNULGFBQVNqRyxJQUFJO0FBQUEsSUFDYjtBQUNBLFdBQU9BLEVBQUUsVUFBVSxlQUFlLFdBQVc7QUFDM0MsYUFBTztBQUFBLFFBQ0wsVUFBVVksRUFBRTtBQUFBLE1BQ2Q7QUFBQSxJQUNGLEdBQUdaLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsYUFBTztBQUFBLElBQ1QsR0FBR0E7QUFBQSxFQUNMLEVBQUU7QUFBQSxHQUNEO0FBQUE7QUFBQSxFQUVELFdBQVc7QUFDVCxhQUFTQSxFQUFFLEdBQUc7QUFDWixVQUFJb0IsR0FBR0MsR0FBR3hCLEdBQUd5QjtBQUNiLFdBQUssUUFBUSxFQUFFLE1BQU0sS0FBSyxVQUFVc0IsR0FBRyxJQUFJLE1BQU0sd0RBQXdELENBQUMsR0FBRyxLQUFLLFFBQVEsSUFBSXFELEVBQUUsSUFBSSxLQUFLLHdCQUF3QjdFLElBQUksRUFBRSx5QkFBeUIsUUFBUUEsTUFBTSxTQUFTQSxJQUFJLElBQUk2RSxFQUFFLEdBQUcsS0FBSywyQkFBMkI1RSxJQUFJLEVBQUUsNEJBQTRCLFFBQVFBLE1BQU0sU0FBU0EsSUFBSSxJQUFJMkUsRUFBRSxHQUFHLEtBQUssdUJBQXVCbkcsSUFBSSxFQUFFLHdCQUF3QixRQUFRQSxNQUFNLFNBQVNBLElBQUksSUFBSW9HLEVBQUUsR0FBRyxLQUFLLDBCQUEwQjNFLElBQUksRUFBRSwyQkFBMkIsUUFBUUEsTUFBTSxTQUFTQSxJQUFJLElBQUkwRSxFQUFFO0FBQUEsSUFDM2dCO0FBQ0EsV0FBT2hHLEVBQUUsVUFBVSxlQUFlLFNBQVMsR0FBR29CLEdBQUdDLEdBQUd4QixHQUFHeUIsR0FBR0MsR0FBRztBQUMzRCxVQUFJLElBQUluQixFQUFLLGVBQWUsQ0FBQztBQUM3QixhQUFPLENBQUMsS0FBSyxDQUFDQyxFQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sYUFBYSxHQUFHZSxHQUFHQyxHQUFHeEIsR0FBR3lCLEdBQUdDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxhQUFhakIsRUFBRyxVQUFVLEtBQUsscUJBQXFCLGFBQWEsR0FBR2MsR0FBR0MsR0FBR3hCLEdBQUd5QixHQUFHQyxDQUFDLElBQUksS0FBSyx3QkFBd0IsYUFBYSxHQUFHSCxHQUFHQyxHQUFHeEIsR0FBR3lCLEdBQUdDLENBQUMsSUFBSSxFQUFFLGFBQWFqQixFQUFHLFVBQVUsS0FBSyxvQkFBb0IsYUFBYSxHQUFHYyxHQUFHQyxHQUFHeEIsR0FBR3lCLEdBQUdDLENBQUMsSUFBSSxLQUFLLHVCQUF1QixhQUFhLEdBQUdILEdBQUdDLEdBQUd4QixHQUFHeUIsR0FBR0MsQ0FBQztBQUFBLElBQ3JYLEdBQUd2QixFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLGFBQU8sc0JBQXNCLEtBQUssTUFBTSxTQUFTLElBQUksMkJBQTJCLEtBQUsscUJBQXFCLFNBQVMsSUFBSSw4QkFBOEIsS0FBSyx3QkFBd0IsU0FBUyxJQUFJLDBCQUEwQixLQUFLLG9CQUFvQixTQUFTLElBQUksNkJBQTZCLEtBQUssdUJBQXVCLFNBQVMsSUFBSTtBQUFBLElBQ3ZVLEdBQUdBO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRDtBQUFBO0FBQUEsRUFFRCxXQUFXO0FBQ1QsYUFBU0EsRUFBRSxHQUFHO0FBQ1osWUFBTSxXQUFXLElBQUksSUFBSSxLQUFLLFNBQVMsR0FBRyxLQUFLLFNBQVMsS0FBSyxXQUFXLENBQUMsR0FBRyxLQUFLLGNBQWMsS0FBSyxNQUFNLEtBQUssU0FBUyxVQUFVO0FBQUEsSUFDcEk7QUFDQSxXQUFPQSxFQUFFLFVBQVUsZUFBZSxTQUFTLEdBQUdvQixHQUFHO0FBQy9DLGFBQU87QUFBQSxRQUNMLFVBQVVYLEdBQUdXLENBQUMsS0FBSyxLQUFLLFlBQVlBLENBQUMsSUFBSSxLQUFLLGNBQWNSLEVBQUUscUJBQXFCQSxFQUFFO0FBQUEsTUFDdkY7QUFBQSxJQUNGLEdBQUdaLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsYUFBTyx1QkFBdUIsS0FBSyxTQUFTO0FBQUEsSUFDOUMsR0FBR0EsRUFBRSxVQUFVLGFBQWEsU0FBUyxHQUFHO0FBQ3RDLGFBQU8sT0FBTyxLQUFLLFlBQVksTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxLQUFLLElBQUksSUFBSTtBQUFBLElBQzFFLEdBQUdBLEVBQUUsVUFBVSxjQUFjLFNBQVMsR0FBRztBQUN2QyxlQUFTb0IsSUFBSSxHQUFHQyxJQUFJLEdBQUdBLElBQUksRUFBRSxTQUFTLEdBQUdBLEtBQUs7QUFDNUMsWUFBSXhCLElBQUl3QixJQUFJLEdBQUdDLElBQUksU0FBUyxFQUFFLE1BQU16QixHQUFHQSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ2pELFFBQUF1QixLQUFLQSxJQUFJRSxPQUFPO0FBQUEsTUFDbEI7QUFDQSxhQUFPRjtBQUFBLElBQ1QsR0FBR3BCO0FBQUEsRUFDTCxFQUFFO0FBQUEsR0FDRGtHLEtBQUssbUJBQW1CQyxLQUFLLGlCQUFpQkMsS0FBSyxzQkFBc0JDLEtBQUssU0FBUyxXQUFXQyxLQUFLRCxHQUFHLFVBQVVFLEtBQUtELEdBQUcsS0FBSyxNQUFNLEdBQUdFLEtBQUtDLEdBQUcsT0FBTyxnQkFBZ0IsTUFBTSxHQUFHQyxLQUFLLE9BQU8sV0FBV0MsS0FBS0QsR0FBRyxnQkFBZ0JFLElBQUksU0FBUyxPQUFPLGNBQWMsUUFBUUMsS0FBS0gsR0FBRztBQUN0UixTQUFTRCxHQUFHekcsR0FBRyxHQUFHO0FBQ2hCLFNBQU8sU0FBU29CLEdBQUc7QUFDakIsV0FBT3BCLEVBQUUsRUFBRW9CLENBQUMsQ0FBQztBQUFBLEVBQ2Y7QUFDRjtBQUNBLFNBQVMwRixFQUFFOUcsR0FBRztBQUNaLE1BQUksQ0FBQytHLEdBQUcvRyxDQUFDLEtBQUtnSCxHQUFHaEgsQ0FBQyxNQUFNa0c7QUFDdEIsV0FBTztBQUNULE1BQUksSUFBSU0sR0FBR3hHLENBQUM7QUFDWixNQUFJLE1BQU07QUFDUixXQUFPO0FBQ1QsTUFBSW9CLElBQUl1RixHQUFHLEtBQUssR0FBRyxhQUFhLEtBQUssRUFBRTtBQUN2QyxTQUFPLE9BQU92RixLQUFLLGNBQWNBLGFBQWFBLEtBQUtrRixHQUFHLEtBQUtsRixDQUFDLE1BQU1tRjtBQUNwRTtBQUNBLFNBQVNRLEdBQUcvRyxHQUFHO0FBQ2IsU0FBT0EsS0FBSyxRQUFRLE9BQU9BLEtBQUs7QUFDbEM7QUFDQSxTQUFTZ0gsR0FBR2hILEdBQUc7QUFDYixTQUFPQSxLQUFLLE9BQU9BLE1BQU0sU0FBU29HLEtBQUtELEtBQUtTLEtBQUtBLEtBQUssT0FBTzVHLENBQUMsSUFBSWlILEdBQUdqSCxDQUFDLElBQUlrSCxHQUFHbEgsQ0FBQztBQUNoRjtBQUNBLFNBQVNpSCxHQUFHakgsR0FBRztBQUNiLE1BQUksSUFBSTJHLEdBQUcsS0FBSzNHLEdBQUc0RyxDQUFDLEdBQUd4RixJQUFJcEIsRUFBRTRHLENBQUMsR0FBR3ZGLElBQUk7QUFDckMsTUFBSTtBQUNGLElBQUFyQixFQUFFNEcsQ0FBQyxJQUFJLFFBQVF2RixJQUFJO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1I7QUFDQSxNQUFJeEIsSUFBSWdILEdBQUcsS0FBSzdHLENBQUM7QUFDakIsU0FBT3FCLE1BQU0sSUFBSXJCLEVBQUU0RyxDQUFDLElBQUl4RixJQUFJLE9BQU9wQixFQUFFNEcsQ0FBQyxJQUFJL0c7QUFDNUM7QUFDQSxTQUFTcUgsR0FBR2xILEdBQUc7QUFDYixTQUFPNkcsR0FBRyxLQUFLN0csQ0FBQztBQUNsQjtBQUNBLElBQUltSCxLQUFLO0FBQ1QsU0FBU0MsS0FBSztBQUNaLFdBQVNwSCxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxVQUFVLFFBQVE7QUFDNUMsSUFBQUEsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDO0FBQ3BCLFdBQVNvQixJQUFJcEIsRUFBRSxNQUFNLEdBQUdxQixJQUFvQixvQkFBSSxRQUFRLEdBQUdyQixFQUFFLFNBQVM7QUFDcEUsSUFBQW9CLElBQUlpRyxHQUFHakcsR0FBR3BCLEVBQUUsTUFBTSxHQUFHLEdBQUdxQixDQUFDO0FBQzNCLFNBQU9EO0FBQ1Q7QUFDQSxTQUFTLEVBQUVwQixHQUFHO0FBQ1osU0FBT3NILEVBQUV0SCxDQUFDLElBQUlBLEVBQUUsTUFBTSxJQUFJQTtBQUM1QjtBQUNBLFNBQVNxSCxHQUFHckgsR0FBRyxHQUFHb0IsR0FBR0MsR0FBRztBQUN0QixFQUFBRCxNQUFNLFdBQVdBLElBQUk7QUFDckIsTUFBSXZCO0FBQ0osTUFBSSxFQUFFdUIsSUFBSStGLEtBQUs7QUFDYixRQUFJL0YsS0FBS21HLEVBQUV2SCxDQUFDLEtBQUt1SCxFQUFFLENBQUMsS0FBS0MsR0FBRyxDQUFDO0FBQzNCLE1BQUEzSCxJQUFJLEVBQUUsQ0FBQztBQUFBLGFBQ0F5SCxFQUFFdEgsQ0FBQztBQUNWLFVBQUlILElBQUlHLEVBQUUsTUFBTSxHQUFHc0gsRUFBRSxDQUFDO0FBQ3BCLGlCQUFTaEcsSUFBSSxHQUFHQyxJQUFJLEVBQUUsUUFBUUQsSUFBSUMsR0FBR0Q7QUFDbkMsVUFBQXpCLEVBQUUsS0FBSyxFQUFFLEVBQUV5QixDQUFDLENBQUMsQ0FBQztBQUFBLGVBQ1RtRyxFQUFFLENBQUM7QUFDVixpQkFBUyxJQUFJLE9BQU8sS0FBSyxDQUFDLEdBQUduRyxJQUFJLEdBQUdDLElBQUksRUFBRSxRQUFRRCxJQUFJQyxHQUFHRCxLQUFLO0FBQzVELGNBQUlPLElBQUksRUFBRVAsQ0FBQztBQUNYLFVBQUF6QixFQUFFZ0MsQ0FBQyxJQUFJLEVBQUUsRUFBRUEsQ0FBQyxDQUFDO0FBQUEsUUFDZjtBQUFBLGVBQ080RixFQUFFekgsQ0FBQztBQUNaLFVBQUl5SCxFQUFFLENBQUMsR0FBRztBQUNSLFlBQUksQ0FBQ0MsR0FBRzFILEdBQUcsQ0FBQztBQUNWLGlCQUFPO0FBQ1QsUUFBQUgsSUFBSSxPQUFPLE9BQU8sQ0FBQyxHQUFHRyxDQUFDO0FBQ3ZCLGlCQUFTLElBQUksT0FBTyxLQUFLLENBQUMsR0FBR3NCLElBQUksR0FBR0MsSUFBSSxFQUFFLFFBQVFELElBQUlDLEdBQUdELEtBQUs7QUFDNUQsY0FBSU8sSUFBSSxFQUFFUCxDQUFDLEdBQUdRLElBQUksRUFBRUQsQ0FBQztBQUNyQixjQUFJMEYsRUFBRXpGLENBQUM7QUFDTCxtQkFBT0EsSUFBSSxNQUFNLE9BQU9qQyxFQUFFZ0MsQ0FBQyxJQUFJaEMsRUFBRWdDLENBQUMsSUFBSUM7QUFBQSxlQUNuQztBQUNILGdCQUFJL0IsSUFBSUYsRUFBRWdDLENBQUMsR0FBRzhGLElBQUk3RjtBQUNsQixnQkFBSThGLEVBQUU1SCxHQUFHNkIsR0FBR1IsQ0FBQyxLQUFLdUcsRUFBRSxHQUFHL0YsR0FBR1IsQ0FBQztBQUN6QixxQkFBT3hCLEVBQUVnQyxDQUFDO0FBQUEsaUJBQ1A7QUFDSCxrQkFBSTRGLEVBQUUxSCxDQUFDLEtBQUswSCxFQUFFRSxDQUFDLEdBQUc7QUFDaEIsb0JBQUlFLElBQUl4RyxFQUFFLElBQUl0QixDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUlzQixFQUFFLElBQUlzRyxDQUFDLEtBQUssQ0FBQztBQUN6QyxnQkFBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSzdILEdBQUcsS0FBSzZCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxLQUFLQSxFQUFFLENBQUMsR0FBR1IsRUFBRSxJQUFJdEIsR0FBRzhILENBQUMsR0FBR3hHLEVBQUUsSUFBSXNHLEdBQUcsQ0FBQztBQUFBLGNBQ2pGO0FBQ0EsY0FBQTlILEVBQUVnQyxDQUFDLElBQUl3RixHQUFHeEgsRUFBRWdDLENBQUMsR0FBR0MsR0FBR1YsR0FBR0MsQ0FBQztBQUFBLFlBQ3pCO0FBQUEsVUFDRjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0UsUUFBQXhCLElBQUk7QUFDUixXQUFPQTtBQUFBLEVBQ1Q7QUFDRjtBQUNBLFNBQVMrSCxFQUFFNUgsR0FBRyxHQUFHb0IsR0FBRztBQUNsQixXQUFTQyxJQUFJRCxFQUFFLElBQUlwQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBR0gsSUFBSSxHQUFHeUIsSUFBSUQsRUFBRSxRQUFReEIsSUFBSXlCLEdBQUd6QixLQUFLO0FBQy9ELFFBQUkwQixJQUFJRixFQUFFeEIsQ0FBQztBQUNYLFFBQUkwQixFQUFFLFFBQVEsS0FBS0EsRUFBRSxRQUFRdkI7QUFDM0IsYUFBTztBQUFBLEVBQ1g7QUFDQSxTQUFPO0FBQ1Q7QUFDQSxTQUFTc0gsRUFBRXRILEdBQUc7QUFDWixTQUFPLE1BQU0sUUFBUUEsQ0FBQztBQUN4QjtBQUNBLFNBQVN3SCxHQUFHeEgsR0FBRztBQUNiLFNBQU8sT0FBT0EsS0FBSztBQUNyQjtBQUNBLFNBQVN5SCxFQUFFekgsR0FBRztBQUNaLFNBQU8sQ0FBQ3VILEVBQUV2SCxDQUFDLEtBQUssQ0FBQ3NILEVBQUV0SCxDQUFDLEtBQUssQ0FBQ3dILEdBQUd4SCxDQUFDLEtBQUssT0FBT0EsS0FBSztBQUNqRDtBQUNBLFNBQVN1SCxFQUFFdkgsR0FBRztBQUNaLFNBQU8sT0FBT0EsS0FBSyxZQUFZLE9BQU9BLEtBQUssWUFBWSxPQUFPQSxLQUFLLGFBQWEsT0FBT0EsSUFBSSxPQUFPQSxhQUFhLFFBQVFBLGFBQWEsVUFBVUEsTUFBTTtBQUN0SjtBQUNBLFNBQVMwSCxHQUFHMUgsR0FBRyxHQUFHO0FBQ2hCLFNBQU8sRUFBRSxDQUFDOEcsRUFBRTlHLENBQUMsS0FBSyxDQUFDOEcsRUFBRSxDQUFDO0FBQ3hCO0FBQ0EsSUFBSWdCLEtBQXFCLDJCQUFXO0FBQ2xDLE1BQUk5SCxJQUFJLFNBQVMsR0FBR29CLEdBQUc7QUFDckIsV0FBT3BCLElBQUksT0FBTyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsRUFBRSxhQUFhLFNBQVMsU0FBU3FCLEdBQUd4QixHQUFHO0FBQ3ZGLE1BQUF3QixFQUFFLFlBQVl4QjtBQUFBLElBQ2hCLEtBQUssU0FBU3dCLEdBQUd4QixHQUFHO0FBQ2xCLGVBQVN5QixLQUFLekIsRUFBRyxRQUFPLFVBQVUsZUFBZSxLQUFLQSxHQUFHeUIsQ0FBQyxNQUFNRCxFQUFFQyxDQUFDLElBQUl6QixFQUFFeUIsQ0FBQztBQUFBLElBQzVFLEdBQUd0QixFQUFFLEdBQUdvQixDQUFDO0FBQUEsRUFDWDtBQUNBLFNBQU8sU0FBUyxHQUFHQSxHQUFHO0FBQ3BCLFFBQUksT0FBT0EsS0FBSyxjQUFjQSxNQUFNO0FBQ2xDLFlBQU0sSUFBSSxVQUFVLHlCQUF5QixPQUFPQSxDQUFDLElBQUksK0JBQStCO0FBQzFGLElBQUFwQixFQUFFLEdBQUdvQixDQUFDO0FBQ04sYUFBU0MsSUFBSTtBQUNYLFdBQUssY0FBYztBQUFBLElBQ3JCO0FBQ0EsTUFBRSxZQUFZRCxNQUFNLE9BQU8sT0FBTyxPQUFPQSxDQUFDLEtBQUtDLEVBQUUsWUFBWUQsRUFBRSxXQUFXLElBQUlDLEVBQUU7QUFBQSxFQUNsRjtBQUNGLEVBQUUsR0FBRzBHO0FBQUE7QUFBQSxFQUVILFNBQVMvSCxHQUFHO0FBQ1YsSUFBQThILEdBQUcsR0FBRzlILENBQUM7QUFDUCxhQUFTLEVBQUVvQixHQUFHO0FBQ1osVUFBSUMsSUFBSXJCLEVBQUUsS0FBSyxNQUFNb0IsQ0FBQyxLQUFLO0FBQzNCLGFBQU8sT0FBTyxlQUFlQyxHQUFHLEVBQUUsU0FBUyxHQUFHQTtBQUFBLElBQ2hEO0FBQ0EsV0FBTztBQUFBLEVBQ1QsRUFBRSxLQUFLO0FBQUE7QUFFVCxTQUFTMkcsR0FBR2hJLEdBQUcsR0FBRztBQUNoQixNQUFJb0IsR0FBR0MsSUFBSSxJQUFJLFFBQVEsU0FBU0MsR0FBR0MsR0FBRztBQUNwQyxJQUFBSCxJQUFJLFdBQVcsV0FBVztBQUN4QixNQUFBRyxFQUFFLElBQUl3RyxHQUFHLHNCQUFzQixDQUFDO0FBQUEsSUFDbEMsR0FBRyxDQUFDO0FBQUEsRUFDTixDQUFDO0FBQ0QsU0FBTyxRQUFRLEtBQUssQ0FBQy9ILEdBQUdxQixDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVN4QixHQUFHO0FBQzNDLFdBQU8sYUFBYXVCLENBQUMsR0FBR3ZCO0FBQUEsRUFDMUIsR0FBRyxTQUFTQSxHQUFHO0FBQ2IsVUFBTSxhQUFhdUIsQ0FBQyxHQUFHdkI7QUFBQSxFQUN6QixDQUFDO0FBQ0g7QUFDQSxTQUFTb0ksR0FBR2pJLEdBQUc7QUFDYixTQUFPLE9BQU9BLEtBQUssY0FBYyxPQUFPQSxFQUFFLGNBQWMsY0FBYyxPQUFPQSxFQUFFLFlBQVksY0FBY0EsRUFBRSxjQUFjO0FBQzNIO0FBQ0EsSUFBSWtJO0FBQUE7QUFBQSxFQUVGLFdBQVc7QUFDVCxhQUFTbEksSUFBSTtBQUNYLFVBQUksSUFBSTtBQUNSLFdBQUssV0FBVyxJQUFJLFFBQVEsU0FBU29CLEdBQUdDLEdBQUc7QUFDekMsVUFBRSxXQUFXRCxHQUFHLEVBQUUsVUFBVUM7QUFBQSxNQUM5QixDQUFDO0FBQUEsSUFDSDtBQUNBLFdBQU8sT0FBTyxlQUFlckIsRUFBRSxXQUFXLFdBQVc7QUFBQSxNQUNuRCxLQUFLLFdBQVc7QUFDZCxlQUFPLEtBQUs7QUFBQSxNQUNkO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixjQUFjO0FBQUEsSUFDaEIsQ0FBQyxHQUFHQSxFQUFFLFVBQVUsVUFBVSxTQUFTLEdBQUc7QUFDcEMsV0FBSyxTQUFTLENBQUM7QUFBQSxJQUNqQixHQUFHQSxFQUFFLFVBQVUsU0FBUyxTQUFTLEdBQUc7QUFDbEMsV0FBSyxRQUFRLENBQUM7QUFBQSxJQUNoQixHQUFHQTtBQUFBLEVBQ0wsRUFBRTtBQUFBLEdBQ0RtSSxLQUFLLFNBQVNuSSxHQUFHLEdBQUc7QUFDckIsTUFBSW9CLElBQUksT0FBTyxVQUFVLGNBQWNwQixFQUFFLE9BQU8sUUFBUTtBQUN4RCxNQUFJLENBQUNvQixFQUFHLFFBQU9wQjtBQUNmLE1BQUlxQixJQUFJRCxFQUFFLEtBQUtwQixDQUFDLEdBQUdILEdBQUd5QixJQUFJLENBQUMsR0FBR0M7QUFDOUIsTUFBSTtBQUNGLFlBQVEsTUFBTSxVQUFVLE1BQU0sTUFBTSxFQUFFMUIsSUFBSXdCLEVBQUUsS0FBSyxHQUFHLE9BQVEsQ0FBQUMsRUFBRSxLQUFLekIsRUFBRSxLQUFLO0FBQUEsRUFDNUUsU0FBUyxHQUFHO0FBQ1YsSUFBQTBCLElBQUksRUFBRSxPQUFPLEVBQUU7QUFBQSxFQUNqQixVQUFFO0FBQ0EsUUFBSTtBQUNGLE1BQUExQixLQUFLLENBQUNBLEVBQUUsU0FBU3VCLElBQUlDLEVBQUUsV0FBV0QsRUFBRSxLQUFLQyxDQUFDO0FBQUEsSUFDNUMsVUFBRTtBQUNBLFVBQUlFLEVBQUcsT0FBTUEsRUFBRTtBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUNBLFNBQU9EO0FBQ1QsR0FBRzhHLEtBQUssU0FBU3BJLEdBQUcsR0FBR29CLEdBQUc7QUFDeEIsTUFBSSxVQUFVLFdBQVcsRUFBRyxVQUFTQyxJQUFJLEdBQUd4QixJQUFJLEVBQUUsUUFBUXlCLEdBQUdELElBQUl4QixHQUFHd0I7QUFDbEUsS0FBQ0MsS0FBSyxFQUFFRCxLQUFLLFFBQVFDLE1BQU1BLElBQUksTUFBTSxVQUFVLE1BQU0sS0FBSyxHQUFHLEdBQUdELENBQUMsSUFBSUMsRUFBRUQsQ0FBQyxJQUFJLEVBQUVBLENBQUM7QUFDakYsU0FBT3JCLEVBQUUsT0FBT3NCLEtBQUssTUFBTSxVQUFVLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDcEQsR0FBRytHO0FBQUE7QUFBQSxFQUVELFdBQVc7QUFDVCxhQUFTckksRUFBRSxHQUFHb0IsR0FBRztBQUNmLFdBQUssWUFBWSxHQUFHLEtBQUssUUFBUUEsR0FBRyxLQUFLLFlBQVksSUFBTyxLQUFLLFlBQVksSUFBSThHLEdBQUc7QUFBQSxJQUN0RjtBQUNBLFdBQU8sT0FBTyxlQUFlbEksRUFBRSxXQUFXLFlBQVk7QUFBQSxNQUNwRCxLQUFLLFdBQVc7QUFDZCxlQUFPLEtBQUs7QUFBQSxNQUNkO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixjQUFjO0FBQUEsSUFDaEIsQ0FBQyxHQUFHLE9BQU8sZUFBZUEsRUFBRSxXQUFXLFdBQVc7QUFBQSxNQUNoRCxLQUFLLFdBQVc7QUFDZCxlQUFPLEtBQUssVUFBVTtBQUFBLE1BQ3hCO0FBQUEsTUFDQSxZQUFZO0FBQUEsTUFDWixjQUFjO0FBQUEsSUFDaEIsQ0FBQyxHQUFHQSxFQUFFLFVBQVUsT0FBTyxXQUFXO0FBQ2hDLGVBQVMsR0FBR29CLElBQUksTUFBTUMsSUFBSSxDQUFDLEdBQUd4QixJQUFJLEdBQUdBLElBQUksVUFBVSxRQUFRQTtBQUN6RCxRQUFBd0IsRUFBRXhCLENBQUMsSUFBSSxVQUFVQSxDQUFDO0FBQ3BCLFVBQUksQ0FBQyxLQUFLLFdBQVc7QUFDbkIsYUFBSyxZQUFZO0FBQ2pCLFlBQUk7QUFDRixrQkFBUSxTQUFTLElBQUksS0FBSyxXQUFXLEtBQUssTUFBTSxHQUFHdUksR0FBRyxDQUFDLEtBQUssS0FBSyxHQUFHRCxHQUFHOUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTQyxHQUFHO0FBQ2hHLG1CQUFPRixFQUFFLFVBQVUsUUFBUUUsQ0FBQztBQUFBLFVBQzlCLEdBQUcsU0FBU0EsR0FBRztBQUNiLG1CQUFPRixFQUFFLFVBQVUsT0FBT0UsQ0FBQztBQUFBLFVBQzdCLENBQUM7QUFBQSxRQUNILFNBQVNBLEdBQUc7QUFDVixlQUFLLFVBQVUsT0FBT0EsQ0FBQztBQUFBLFFBQ3pCO0FBQUEsTUFDRjtBQUNBLGFBQU8sS0FBSyxVQUFVO0FBQUEsSUFDeEIsR0FBR3RCO0FBQUEsRUFDTCxFQUFFO0FBQUE7QUFFSixTQUFTc0ksR0FBR3RJLEdBQUcsR0FBRztBQUNoQixTQUFPLElBQUksUUFBUSxTQUFTb0IsR0FBRztBQUM3QixJQUFBYixFQUFLLEtBQUtULEVBQUVTLEVBQUssT0FBTyxDQUFDLEdBQUcsV0FBVztBQUNyQyxNQUFBUCxFQUFFLE9BQU8sR0FBRyxTQUFTcUIsR0FBRztBQUN0QixRQUFBRCxFQUFFQyxDQUFDO0FBQUEsTUFDTCxDQUFDO0FBQUEsSUFDSCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFDQSxJQUFJa0gsS0FBSztBQUFBLEVBQ1AsYUFBYTlHO0FBQUEsRUFDYixtQkFBbUJEO0FBQUEsRUFDbkIseUJBQXlCRztBQUFBLEVBQ3pCLG1CQUFtQkQ7QUFDckIsR0FBRzhHLEtBQUs7QUFBQSxFQUNOLFNBQVNGO0FBQ1g7QUFDQSxNQUFNRyxLQUFxQix1QkFBTyxPQUF1Qix1QkFBTyxlQUFlO0FBQUEsRUFDN0UsV0FBVztBQUFBLEVBQ1gsa0JBQWtCekM7QUFBQSxFQUNsQixpQkFBaUJDO0FBQUEsRUFDakIsZUFBZWxFO0FBQUEsRUFDZixnQkFBZ0JzRztBQUFBLEVBQ2hCLHFCQUFxQjdEO0FBQUEsRUFDckIsK0JBQStCcEI7QUFBQSxFQUMvQixzQ0FBc0NEO0FBQUEsRUFDdEMscUJBQXFCSTtBQUFBLEVBQ3JCLDhDQUE4Q0Y7QUFBQSxFQUM5Qyw2Q0FBNkNDO0FBQUEsRUFDN0MsSUFBSSxtQkFBbUI7QUFDckIsV0FBT3BEO0FBQUEsRUFDVDtBQUFBLEVBQ0Esb0JBQW9CO0FBQUEsRUFDcEIsSUFBSSxVQUFVO0FBQ1osV0FBTzJGO0FBQUEsRUFDVDtBQUFBLEVBQ0EsbUJBQW1CekI7QUFBQSxFQUNuQixVQUFVekQ7QUFBQSxFQUNWLHFCQUFxQndFO0FBQUEsRUFDckIsb0JBQW9CQztBQUFBLEVBQ3BCLGNBQWMyQztBQUFBLEVBQ2QsMEJBQTBCO0FBQUEsRUFDMUIsWUFBWTdDO0FBQUEsRUFDWixJQUFJLHNCQUFzQjtBQUN4QixXQUFPckM7QUFBQSxFQUNUO0FBQUEsRUFDQSxTQUFTbkM7QUFBQSxFQUNULHNCQUFzQmtCO0FBQUEsRUFDdEIsMkJBQTJCZ0U7QUFBQSxFQUMzQixhQUFhaEg7QUFBQSxFQUNiLFlBQVlnQjtBQUFBLEVBQ1osY0FBYzJJO0FBQUEsRUFDZCxpQkFBaUJQO0FBQUEsRUFDakIsbUJBQW1CO0FBQUEsRUFDbkIsUUFBUW5FO0FBQUEsRUFDUix1QkFBdUJDO0FBQUEsRUFDdkIsZ0JBQWdCaUM7QUFBQSxFQUNoQixlQUFlcEc7QUFBQSxFQUNmLG9CQUFvQmlEO0FBQUEsRUFDcEIsYUFBYXFCO0FBQUEsRUFDYixhQUFhaEU7QUFBQSxFQUNiLFFBQVFQO0FBQUEsRUFDUixnQkFBZ0JEO0FBQUEsRUFDaEIsc0JBQXNCRDtBQUFBLEVBQ3RCLHNCQUFzQkQ7QUFBQSxFQUN0QixxQkFBcUJEO0FBQUEsRUFDckIsbUJBQW1CRDtBQUFBLEVBQ25CLFVBQVVtSjtBQUFBLEVBQ1YsZ0JBQWdCcEc7QUFBQSxFQUNoQixrQkFBa0JDO0FBQUEsRUFDbEIsYUFBYWpEO0FBQUEsRUFDYixtQkFBbUJEO0FBQUEsRUFDbkIscUJBQXFCVTtBQUFBLEVBQ3JCLGNBQWNYO0FBQUEsRUFDZCxXQUFXK0k7QUFBQSxFQUNYLHFCQUFxQnpGO0FBQUEsRUFDckIsT0FBTzRFO0FBQUEsRUFDUCxnQkFBZ0JuSTtBQUFBLEVBQ2hCLGVBQWVEO0FBQUEsRUFDZixrQkFBa0I0RTtBQUFBLEVBQ2xCLGtCQUFrQitCO0FBQUEsRUFDbEIsb0JBQW9CekQ7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixnQkFBZ0I0RDtBQUFBLEVBQ2hCLGlCQUFpQmhHO0FBQUEsRUFDakIsbUJBQW1CZjtBQUFBLEVBQ25CLFlBQVl3RjtBQUFBLEVBQ1osbUJBQW1CeEU7QUFBQSxFQUNuQixZQUFZakI7QUFDZCxHQUFHLE9BQU8sYUFBYSxFQUFFLE9BQU8sU0FBUyxDQUFDLENBQUM7IiwKICAibmFtZXMiOiBbInlfIiwgImhfIiwgImZfIiwgImdfIiwgIndlJDEiLCAiUiQxIiwgIk8kMSIsICJaZSQxIiwgIk5fIiwgInFlJDEiLCAiUWUkMSIsICJ4ZSQxIiwgImtlJDEiLCAiamUkMSIsICJYZSQxIiwgInBfIiwgInJfIiwgImJfIiwgImEiLCAidSIsICJzIiwgInIiLCAiQSQxIiwgImEkMSIsICJaJDEiLCAiTWUkMSIsICJ5biIsICJCdCIsICJUZSQxIiwgIlppIiwgImRzIiwgInRTIiwgIlRBIiwgImwiLCAieHIiLCAiVSIsICJtIiwgIkZyIiwgIktyIiwgIllyIiwgInpyIiwgInQiLCAibiIsICJpIiwgIm8iLCAicnIiLCAiZXIiLCAidyIsICJXciIsICJaciIsICJFIiwgIlQiLCAiJHIiLCAidHIiLCAiSnIiLCAiUXIiLCAiciQxIiwgIm5yIiwgImFyIiwgInFyIiwgImlyIiwgIm9yIiwgImtyIiwgInJlIiwgIl9yIiwgIkVyIiwgInYiLCAidGUiLCAiYWUiLCAiaWUiLCAib2UiLCAiRWUiLCAicCIsICJkIiwgIlRyIiwgInVyIiwgIlYiLCAiVGUiLCAiZmUiLCAic2UiLCAibGUiLCAiaiIsICJPZSIsICJjZSIsICJSZSIsICJwZSIsICJkZSIsICJMZSIsICJBZSIsICJQZSIsICJZIiwgIlIiLCAiU2UiLCAidmUiLCAiQiIsICJ5ZSIsICJoZSIsICJnZSIsICJtZSIsICJ6IiwgIlVlIiwgIlciLCAiWiIsICJmciIsICJMIiwgIkEiLCAiQmUiLCAiYmUiLCAiRGUiLCAiWGUiLCAiR2UiLCAid2UiLCAic3IiLCAiVmUiLCAiYiIsICJqZSIsICJ4ZSIsICJEIiwgIlAiLCAiWWUiLCAiemUiLCAiV2UiLCAiWmUiLCAibHIiLCAiJGUiLCAiSmUiLCAiUWUiLCAiT3IiLCAiY3IiLCAiZiIsICJSciIsICIkIiwgInFlIiwgImtlIiwgInJ0IiwgImV0IiwgInR0IiwgIm50IiwgInByIiwgInkiLCAiUyIsICJkciIsICJPIiwgImF0IiwgImgiLCAiSiIsICJ4IiwgIml0IiwgIkxyIiwgIm90IiwgIl90IiwgIkV0IiwgIlR0IiwgInV0IiwgImZ0IiwgInN0IiwgImx0IiwgIk90IiwgIlB0Il0KfQo=