bry-biometric-collector 2.2.21-RC03 → 2.2.21-RC05

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.
@@ -0,0 +1,2598 @@
1
+ import { S as Mn, q as Un, r as $i, t as Wn, w as U, x as N, y as L, z as je, B as F, $ as Et, C as Vn, D as De, E as _, G as K, H as ce, I as m, J as v, K as f, L as Re, M as q, N as W, O as h, P as be, Q as J, R as Mt, T as mt, U as yi, V as ht, W as Le, X as Ei, Y as Fe, Z as $e, _ as Ut, a0 as ni, a1 as Ne, a2 as ki, a3 as Wt, a4 as Vt, a5 as Be, a6 as ge, a7 as Me, a8 as et, a9 as Ri, aa as Ti, ab as Si, ac as oi, ad as bt, ae as gt, af as Kt, ag as Oi, ah as _t, ai, aj as si, ak as vt, al as Ai, am as Ii, an as Bi, ao as wn, ap as pn, aq as Cn, ar as yn, as as li, at as Y, j as Qt, au as ri, av as jt, aw as Ht, A as ci, ax as wt, ay as qt, az as En, aA as Di, aB as ui, d as Jt, aC as zt, aD as kn, aE as fi, aF as Rn, aG as Tn, aH as Sn, aI as tt, aJ as On, aK as Pi, aL as Li, aM as Mo, aN as Kn, aO as Fi, aP as jn, aQ as Hn, aR as qn, aS as An, aT as In, aU as Bn, aV as Dn, aW as mi, aX as Uo, aY as V, aZ as Z, a_ as Ct, a$ as ae, b0 as yt, b1 as hi, b2 as pt, b3 as Xt, b4 as bi, b5 as kt, b6 as Rt, b7 as Tt, b8 as Yt, b9 as Pn, ba as Ln, bb as Wo, bc as di } from "./main_18eed798_2.2.21-RC05.js";
2
+ import { C as Q, c as re, a as Jn, b as zn, T as Xn } from "./TakePictureBtn_b8d24d02_2.2.21-RC05.js";
3
+ const Fn = "src/lib/faceTab/buttons/capture/autoCaptureBtn/AutoCaptureBtn.svelte";
4
+ function Qn(n) {
5
+ let e, i, s = (
6
+ /*$_*/
7
+ n[0]("buttons.startCapture") + ""
8
+ ), a, l, o;
9
+ const r = {
10
+ c: function() {
11
+ e = _("div"), i = _("button"), a = K(s), this.c = ce, m(i, "class", De() ? "ce-dui-btn ce-dui-btn-primary text-base text-xl pb-[2px] absolute z-20 bottom-10" : "ce-dui-btn ce-dui-btn-primary text-base text-xl pb-[2px] absolute z-20 bottom-2"), v(i, Fn, 11, 2, 328), m(e, "class", "flex justify-center items-center"), v(e, Fn, 10, 0, 279);
12
+ },
13
+ l: function(b) {
14
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
15
+ },
16
+ m: function(b, d) {
17
+ U(b, e, d), f(e, i), f(i, a), l || (o = Re(
18
+ i,
19
+ "click",
20
+ /*click_handler*/
21
+ n[2],
22
+ !1,
23
+ !1,
24
+ !1,
25
+ !1
26
+ ), l = !0);
27
+ },
28
+ p: function(b, [d]) {
29
+ d & /*$_*/
30
+ 1 && s !== (s = /*$_*/
31
+ b[0]("buttons.startCapture") + "") && q(a, s);
32
+ },
33
+ i: ce,
34
+ o: ce,
35
+ d: function(b) {
36
+ b && W(e), l = !1, o();
37
+ }
38
+ };
39
+ return N("SvelteRegisterBlock", {
40
+ block: r,
41
+ id: Qn.name,
42
+ type: "component",
43
+ source: "",
44
+ ctx: n
45
+ }), r;
46
+ }
47
+ function Vo(n, e, i) {
48
+ let s, a;
49
+ L(je, "automaticCapture"), F(n, je, (d) => i(3, s = d)), L(Et, "_"), F(n, Et, (d) => i(0, a = d));
50
+ let { $$slots: l = {}, $$scope: o } = e;
51
+ Vn("start-auto-capture-btn", l, []);
52
+ function r() {
53
+ h(je, s = !0, s);
54
+ }
55
+ const u = [];
56
+ Object.keys(e).forEach((d) => {
57
+ !~u.indexOf(d) && d.slice(0, 2) !== "$$" && d !== "slot" && console.warn(`<start-auto-capture-btn> was created with unknown prop '${d}'`);
58
+ });
59
+ const b = () => r();
60
+ return n.$capture_state = () => ({
61
+ automaticCapture: je,
62
+ _: Et,
63
+ isMobile: De,
64
+ handleAutoCapture: r,
65
+ $automaticCapture: s,
66
+ $_: a
67
+ }), [a, r, b];
68
+ }
69
+ class en extends Mn {
70
+ constructor(e) {
71
+ super(), Un(
72
+ this,
73
+ {
74
+ target: this.shadowRoot,
75
+ props: Wn(this.attributes),
76
+ customElement: !0
77
+ },
78
+ Vo,
79
+ Qn,
80
+ $i,
81
+ {},
82
+ null
83
+ ), e && e.target && U(e.target, this, e.anchor);
84
+ }
85
+ }
86
+ customElements.define("start-auto-capture-btn", en);
87
+ const { console: _e } = Uo, w = "src/lib/faceTab/FaceCollector.svelte";
88
+ function Nn(n, e, i) {
89
+ const s = n.slice();
90
+ return s[123] = e[i], s;
91
+ }
92
+ function Yn(n) {
93
+ let e;
94
+ const i = {
95
+ c: function() {
96
+ e = _("idlive-face-capture"), e.hidden = !0, Xt(e, "mask_hidden", ""), Xt(e, "auto_capture_disabled", ""), Xt(e, "auto_close_disabled", ""), Xt(
97
+ e,
98
+ "device_id",
99
+ /*$selectedVideoDeviceId*/
100
+ n[22]
101
+ ), v(e, w, 974, 10, 39246);
102
+ },
103
+ m: function(a, l) {
104
+ U(a, e, l), n[52](e);
105
+ },
106
+ p: function(a, l) {
107
+ l[0] & /*$selectedVideoDeviceId*/
108
+ 4194304 && Xt(
109
+ e,
110
+ "device_id",
111
+ /*$selectedVideoDeviceId*/
112
+ a[22]
113
+ );
114
+ },
115
+ d: function(a) {
116
+ a && W(e), n[52](null);
117
+ }
118
+ };
119
+ return N("SvelteRegisterBlock", {
120
+ block: i,
121
+ id: Yn.name,
122
+ type: "if",
123
+ source: "(974:8) {#if isLivenessEnabled()}",
124
+ ctx: n
125
+ }), i;
126
+ }
127
+ function Mi(n) {
128
+ let e, i, s;
129
+ const a = {
130
+ c: function() {
131
+ e = _("video"), m(e, "id", "bry-cc-camera-video-tag"), m(e, "class", "absolute -z-10"), e.playsInline = !0, e.muted = !0, e.autoplay = !0, v(e, w, 985, 10, 39634);
132
+ },
133
+ m: function(o, r) {
134
+ U(o, e, r), n[53](e), i || (s = [
135
+ Re(
136
+ e,
137
+ "canplay",
138
+ /*canplay_handler*/
139
+ n[54],
140
+ !1,
141
+ !1,
142
+ !1,
143
+ !1
144
+ ),
145
+ Re(
146
+ e,
147
+ "play",
148
+ /*play*/
149
+ n[8],
150
+ { once: !0 },
151
+ !1,
152
+ !1,
153
+ !1
154
+ )
155
+ ], i = !0);
156
+ },
157
+ p: ce,
158
+ d: function(o) {
159
+ o && W(e), n[53](null), i = !1, bi(s);
160
+ }
161
+ };
162
+ return N("SvelteRegisterBlock", {
163
+ block: a,
164
+ id: Mi.name,
165
+ type: "key",
166
+ source: "(985:8) {#key unique}",
167
+ ctx: n
168
+ }), a;
169
+ }
170
+ function Ui(n) {
171
+ let e, i;
172
+ e = new jn({ $$inline: !0 });
173
+ const s = {
174
+ c: function() {
175
+ kt(e.$$.fragment);
176
+ },
177
+ m: function(l, o) {
178
+ Rt(e, l, o), i = !0;
179
+ },
180
+ i: function(l) {
181
+ i || (Z(e.$$.fragment, l), i = !0);
182
+ },
183
+ o: function(l) {
184
+ ae(e.$$.fragment, l), i = !1;
185
+ },
186
+ d: function(l) {
187
+ Tt(e, l);
188
+ }
189
+ };
190
+ return N("SvelteRegisterBlock", {
191
+ block: s,
192
+ id: Ui.name,
193
+ type: "if",
194
+ source: "(1000:8) {#if showConfigButton && $ready}",
195
+ ctx: n
196
+ }), s;
197
+ }
198
+ function Wi(n) {
199
+ let e, i;
200
+ e = new zn({ $$inline: !0 });
201
+ const s = {
202
+ c: function() {
203
+ kt(e.$$.fragment);
204
+ },
205
+ m: function(l, o) {
206
+ Rt(e, l, o), i = !0;
207
+ },
208
+ i: function(l) {
209
+ i || (Z(e.$$.fragment, l), i = !0);
210
+ },
211
+ o: function(l) {
212
+ ae(e.$$.fragment, l), i = !1;
213
+ },
214
+ d: function(l) {
215
+ Tt(e, l);
216
+ }
217
+ };
218
+ return N("SvelteRegisterBlock", {
219
+ block: s,
220
+ id: Wi.name,
221
+ type: "if",
222
+ source: "(1003:8) {#if showCameraButton && $ready}",
223
+ ctx: n
224
+ }), s;
225
+ }
226
+ function Vi(n) {
227
+ let e, i;
228
+ e = new en({ $$inline: !0 });
229
+ const s = {
230
+ c: function() {
231
+ kt(e.$$.fragment);
232
+ },
233
+ m: function(l, o) {
234
+ Rt(e, l, o), i = !0;
235
+ },
236
+ i: function(l) {
237
+ i || (Z(e.$$.fragment, l), i = !0);
238
+ },
239
+ o: function(l) {
240
+ ae(e.$$.fragment, l), i = !1;
241
+ },
242
+ d: function(l) {
243
+ Tt(e, l);
244
+ }
245
+ };
246
+ return N("SvelteRegisterBlock", {
247
+ block: s,
248
+ id: Vi.name,
249
+ type: "if",
250
+ source: "(1006:8) {#if showAutoCaptureButton && !$automaticCapture && !showCaptureButton && $ready}",
251
+ ctx: n
252
+ }), s;
253
+ }
254
+ function Ki(n) {
255
+ let e, i;
256
+ e = new Xn({
257
+ props: {
258
+ disabled: !/*enableCaptureButton*/
259
+ n[14] && /*$enableFaceApi*/
260
+ n[34] || !/*$ready*/
261
+ n[35] && !/*$enableFaceApi*/
262
+ n[34],
263
+ hidden: (
264
+ /*$cameraStatusStore*/
265
+ n[21] !== Q.OK || J() && /*idrndLoading*/
266
+ (n[17] || /*idrndClosed*/
267
+ n[18] || /*waitingIdrndCaptureEvent*/
268
+ n[19])
269
+ ),
270
+ handler: (
271
+ /*capture*/
272
+ n[41]
273
+ )
274
+ },
275
+ $$inline: !0
276
+ });
277
+ const s = {
278
+ c: function() {
279
+ kt(e.$$.fragment);
280
+ },
281
+ m: function(l, o) {
282
+ Rt(e, l, o), i = !0;
283
+ },
284
+ p: function(l, o) {
285
+ const r = {};
286
+ o[0] & /*enableCaptureButton*/
287
+ 16384 | o[1] & /*$enableFaceApi, $ready*/
288
+ 24 && (r.disabled = !/*enableCaptureButton*/
289
+ l[14] && /*$enableFaceApi*/
290
+ l[34] || !/*$ready*/
291
+ l[35] && !/*$enableFaceApi*/
292
+ l[34]), o[0] & /*$cameraStatusStore, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
293
+ 3014656 && (r.hidden = /*$cameraStatusStore*/
294
+ l[21] !== Q.OK || J() && /*idrndLoading*/
295
+ (l[17] || /*idrndClosed*/
296
+ l[18] || /*waitingIdrndCaptureEvent*/
297
+ l[19])), e.$set(r);
298
+ },
299
+ i: function(l) {
300
+ i || (Z(e.$$.fragment, l), i = !0);
301
+ },
302
+ o: function(l) {
303
+ ae(e.$$.fragment, l), i = !1;
304
+ },
305
+ d: function(l) {
306
+ Tt(e, l);
307
+ }
308
+ };
309
+ return N("SvelteRegisterBlock", {
310
+ block: s,
311
+ id: Ki.name,
312
+ type: "if",
313
+ source: "(1009:8) {#if showCaptureButton && $ready}",
314
+ ctx: n
315
+ }), s;
316
+ }
317
+ function ji(n) {
318
+ let e, i = (
319
+ /*$_*/
320
+ n[31]("faceCollector.stayStill") + ""
321
+ ), s;
322
+ const a = {
323
+ c: function() {
324
+ e = _("span"), s = K(i), m(e, "class", "absolute left-1/2 -translate-x-1/2 ce-dui-badge ce-dui-badge-lg h-[2em] text-2xl xl:text-base w-[12.1em] " + (De() ? "top-[10%]" : "top-[3%]")), v(e, w, 1027, 10, 41338);
325
+ },
326
+ m: function(o, r) {
327
+ U(o, e, r), f(e, s);
328
+ },
329
+ p: function(o, r) {
330
+ r[1] & /*$_*/
331
+ 1 && i !== (i = /*$_*/
332
+ o[31]("faceCollector.stayStill") + "") && q(s, i);
333
+ },
334
+ d: function(o) {
335
+ o && W(e);
336
+ }
337
+ };
338
+ return N("SvelteRegisterBlock", {
339
+ block: a,
340
+ id: ji.name,
341
+ type: "if",
342
+ source: "(1027:8) {#if isCountingDown}",
343
+ ctx: n
344
+ }), a;
345
+ }
346
+ function Hi(n) {
347
+ let e, i = (
348
+ /*$_*/
349
+ n[31](`${/*$faceValidationAlert*/
350
+ n[26]}`) + ""
351
+ ), s;
352
+ const a = {
353
+ c: function() {
354
+ e = _("span"), s = K(i), m(e, "class", "absolute left-1/2 -translate-x-1/2 ce-dui-badge ce-dui-badge-lg h-[2em] text-2xl xl:text-base w-[12.1em] " + (De() ? "top-[10%]" : "top-[3%]")), v(e, w, 1034, 10, 41681);
355
+ },
356
+ m: function(o, r) {
357
+ U(o, e, r), f(e, s);
358
+ },
359
+ p: function(o, r) {
360
+ r[0] & /*$faceValidationAlert*/
361
+ 67108864 | r[1] & /*$_*/
362
+ 1 && i !== (i = /*$_*/
363
+ o[31](`${/*$faceValidationAlert*/
364
+ o[26]}`) + "") && q(s, i);
365
+ },
366
+ d: function(o) {
367
+ o && W(e);
368
+ }
369
+ };
370
+ return N("SvelteRegisterBlock", {
371
+ block: a,
372
+ id: Hi.name,
373
+ type: "if",
374
+ source: "(1034:8) {#if $enableFaceApi && !isCountingDown && $faceValidationAlert}",
375
+ ctx: n
376
+ }), a;
377
+ }
378
+ function qi(n) {
379
+ let e, i, s, a, l;
380
+ function o(d, c) {
381
+ return (
382
+ /*$isLoading*/
383
+ d[36] ? Zn : Gn
384
+ );
385
+ }
386
+ let r = o(n), u = r(n);
387
+ const b = {
388
+ c: function() {
389
+ e = _("slot"), i = _("div"), s = _("img"), l = V(), u.c(), Yt(s.src, a = mi) || m(s, "src", a), m(s, "alt", "loading gif"), m(s, "class", "m-auto h-[10em] lg:h-[12em]"), v(s, w, 1044, 12, 42179), m(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 1043, 10, 42099), m(e, "name", "loading-camera-gif"), m(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 1042, 8, 42007);
390
+ },
391
+ m: function(c, g) {
392
+ U(c, e, g), f(e, i), f(i, s), f(i, l), u.m(i, null);
393
+ },
394
+ p: function(c, g) {
395
+ r === (r = o(c)) && u ? u.p(c, g) : (u.d(1), u = r(c), u && (u.c(), u.m(i, null)));
396
+ },
397
+ d: function(c) {
398
+ c && W(e), u.d();
399
+ }
400
+ };
401
+ return N("SvelteRegisterBlock", {
402
+ block: b,
403
+ id: qi.name,
404
+ type: "if",
405
+ source: "(1042:6) {#if !isLivenessEnabled() && !$ready}",
406
+ ctx: n
407
+ }), b;
408
+ }
409
+ function Gn(n) {
410
+ let e, i = (
411
+ /*$_*/
412
+ n[31]("faceCollector.initiatingCamera") + ""
413
+ ), s;
414
+ const a = {
415
+ c: function() {
416
+ e = _("span"), s = K(i), m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1048, 14, 42436);
417
+ },
418
+ m: function(o, r) {
419
+ U(o, e, r), f(e, s);
420
+ },
421
+ p: function(o, r) {
422
+ r[1] & /*$_*/
423
+ 1 && i !== (i = /*$_*/
424
+ o[31]("faceCollector.initiatingCamera") + "") && q(s, i);
425
+ },
426
+ d: function(o) {
427
+ o && W(e);
428
+ }
429
+ };
430
+ return N("SvelteRegisterBlock", {
431
+ block: a,
432
+ id: Gn.name,
433
+ type: "else",
434
+ source: "(1048:12) {:else}",
435
+ ctx: n
436
+ }), a;
437
+ }
438
+ function Zn(n) {
439
+ let e;
440
+ const i = {
441
+ c: function() {
442
+ e = _("span"), e.textContent = "Loading camera...", m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1046, 14, 42301);
443
+ },
444
+ m: function(a, l) {
445
+ U(a, e, l);
446
+ },
447
+ p: ce,
448
+ d: function(a) {
449
+ a && W(e);
450
+ }
451
+ };
452
+ return N("SvelteRegisterBlock", {
453
+ block: i,
454
+ id: Zn.name,
455
+ type: "if",
456
+ source: "(1046:12) {#if $isLoading}",
457
+ ctx: n
458
+ }), i;
459
+ }
460
+ function Ji(n) {
461
+ let e, i, s, a, l;
462
+ function o(d, c) {
463
+ return (
464
+ /*$isLoading*/
465
+ d[36] ? $n : xn
466
+ );
467
+ }
468
+ let r = o(n), u = r(n);
469
+ const b = {
470
+ c: function() {
471
+ e = _("slot"), i = _("div"), s = _("img"), l = V(), u.c(), Yt(s.src, a = mi) || m(s, "src", a), m(s, "alt", "loading gif"), m(s, "class", "m-auto h-[10em] lg:h-[12em]"), v(s, w, 1058, 12, 42894), m(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 1057, 10, 42814), m(e, "name", "obtaining-photo-gif"), m(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 1056, 8, 42721);
472
+ },
473
+ m: function(c, g) {
474
+ U(c, e, g), f(e, i), f(i, s), f(i, l), u.m(i, null);
475
+ },
476
+ p: function(c, g) {
477
+ r === (r = o(c)) && u ? u.p(c, g) : (u.d(1), u = r(c), u && (u.c(), u.m(i, null)));
478
+ },
479
+ d: function(c) {
480
+ c && W(e), u.d();
481
+ }
482
+ };
483
+ return N("SvelteRegisterBlock", {
484
+ block: b,
485
+ id: Ji.name,
486
+ type: "if",
487
+ source: "(1056:6) {#if isLivenessEnabled() && waitingIdrndCaptureEvent}",
488
+ ctx: n
489
+ }), b;
490
+ }
491
+ function xn(n) {
492
+ let e, i = (
493
+ /*$_*/
494
+ n[31]("faceCollector.obtainingPicture") + ""
495
+ ), s;
496
+ const a = {
497
+ c: function() {
498
+ e = _("span"), s = K(i), m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1062, 14, 43152);
499
+ },
500
+ m: function(o, r) {
501
+ U(o, e, r), f(e, s);
502
+ },
503
+ p: function(o, r) {
504
+ r[1] & /*$_*/
505
+ 1 && i !== (i = /*$_*/
506
+ o[31]("faceCollector.obtainingPicture") + "") && q(s, i);
507
+ },
508
+ d: function(o) {
509
+ o && W(e);
510
+ }
511
+ };
512
+ return N("SvelteRegisterBlock", {
513
+ block: a,
514
+ id: xn.name,
515
+ type: "else",
516
+ source: "(1062:12) {:else}",
517
+ ctx: n
518
+ }), a;
519
+ }
520
+ function $n(n) {
521
+ let e;
522
+ const i = {
523
+ c: function() {
524
+ e = _("span"), e.textContent = "Obtaining photo...", m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1060, 14, 43016);
525
+ },
526
+ m: function(a, l) {
527
+ U(a, e, l);
528
+ },
529
+ p: ce,
530
+ d: function(a) {
531
+ a && W(e);
532
+ }
533
+ };
534
+ return N("SvelteRegisterBlock", {
535
+ block: i,
536
+ id: $n.name,
537
+ type: "if",
538
+ source: "(1060:12) {#if $isLoading}",
539
+ ctx: n
540
+ }), i;
541
+ }
542
+ function zi(n) {
543
+ let e, i, s, a, l;
544
+ function o(d, c) {
545
+ return (
546
+ /*$isLoading*/
547
+ d[36] ? to : eo
548
+ );
549
+ }
550
+ let r = o(n), u = r(n);
551
+ const b = {
552
+ c: function() {
553
+ e = _("slot"), i = _("div"), s = _("img"), l = V(), u.c(), Yt(s.src, a = mi) || m(s, "src", a), m(s, "alt", "loading gif"), m(s, "class", "m-auto h-[10em] lg:h-[12em]"), v(s, w, 1072, 12, 43643), m(i, "class", "translate-y-1/3 md:translate-y-1/4 xl:translate-y-1/2"), v(i, w, 1071, 10, 43563), m(e, "name", "loading-camera-gif"), m(e, "class", "block h-[17em] lg:h-[21.6em] xl:h-[30em]"), v(e, w, 1070, 8, 43471);
554
+ },
555
+ m: function(c, g) {
556
+ U(c, e, g), f(e, i), f(i, s), f(i, l), u.m(i, null);
557
+ },
558
+ p: function(c, g) {
559
+ r === (r = o(c)) && u ? u.p(c, g) : (u.d(1), u = r(c), u && (u.c(), u.m(i, null)));
560
+ },
561
+ d: function(c) {
562
+ c && W(e), u.d();
563
+ }
564
+ };
565
+ return N("SvelteRegisterBlock", {
566
+ block: b,
567
+ id: zi.name,
568
+ type: "if",
569
+ source: "(1070:6) {#if isLivenessEnabled() && idrndLoading && $cameraStatusStore === CameraStatusEnum.OK}",
570
+ ctx: n
571
+ }), b;
572
+ }
573
+ function eo(n) {
574
+ let e, i = (
575
+ /*$_*/
576
+ n[31]("faceCollector.initiatingCamera") + ""
577
+ ), s;
578
+ const a = {
579
+ c: function() {
580
+ e = _("span"), s = K(i), m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1076, 14, 43900);
581
+ },
582
+ m: function(o, r) {
583
+ U(o, e, r), f(e, s);
584
+ },
585
+ p: function(o, r) {
586
+ r[1] & /*$_*/
587
+ 1 && i !== (i = /*$_*/
588
+ o[31]("faceCollector.initiatingCamera") + "") && q(s, i);
589
+ },
590
+ d: function(o) {
591
+ o && W(e);
592
+ }
593
+ };
594
+ return N("SvelteRegisterBlock", {
595
+ block: a,
596
+ id: eo.name,
597
+ type: "else",
598
+ source: "(1076:12) {:else}",
599
+ ctx: n
600
+ }), a;
601
+ }
602
+ function to(n) {
603
+ let e;
604
+ const i = {
605
+ c: function() {
606
+ e = _("span"), e.textContent = "Loading camera...", m(e, "class", "2xl:text-2xl lg:text-2xl text-md block p-2 m-auto text-center"), v(e, w, 1074, 14, 43765);
607
+ },
608
+ m: function(a, l) {
609
+ U(a, e, l);
610
+ },
611
+ p: ce,
612
+ d: function(a) {
613
+ a && W(e);
614
+ }
615
+ };
616
+ return N("SvelteRegisterBlock", {
617
+ block: i,
618
+ id: to.name,
619
+ type: "if",
620
+ source: "(1074:12) {#if $isLoading}",
621
+ ctx: n
622
+ }), i;
623
+ }
624
+ function Xi(n) {
625
+ let e, i, s = (
626
+ /*$_*/
627
+ n[31]("faceCollector.finish") + ""
628
+ ), a, l, o, r, u = (
629
+ /*$_*/
630
+ n[31]("faceCollector.retakePhoto") + ""
631
+ ), b, d, c;
632
+ const g = {
633
+ c: function() {
634
+ e = _("div"), i = _("button"), a = K(s), o = V(), r = _("button"), b = K(u), i.disabled = l = /*$justification*/
635
+ n[28].length === 0, m(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(i, w, 1085, 10, 44193), m(r, "id", "bry-cc-retake-button"), m(r, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(r, w, 1090, 10, 44426), m(e, "class", "ce-dui-btn-group flex"), v(e, w, 1084, 8, 44147);
636
+ },
637
+ m: function(C, p) {
638
+ U(C, e, p), f(e, i), f(i, a), f(e, o), f(e, r), f(r, b), d || (c = [
639
+ Re(
640
+ i,
641
+ "click",
642
+ /*click_handler*/
643
+ n[58],
644
+ !1,
645
+ !1,
646
+ !1,
647
+ !1
648
+ ),
649
+ Re(
650
+ r,
651
+ "click",
652
+ /*click_handler_1*/
653
+ n[59],
654
+ !1,
655
+ !1,
656
+ !1,
657
+ !1
658
+ )
659
+ ], d = !0);
660
+ },
661
+ p: function(C, p) {
662
+ p[1] & /*$_*/
663
+ 1 && s !== (s = /*$_*/
664
+ C[31]("faceCollector.finish") + "") && q(a, s), p[0] & /*$justification*/
665
+ 268435456 && l !== (l = /*$justification*/
666
+ C[28].length === 0) && hi(i, "disabled", l), p[1] & /*$_*/
667
+ 1 && u !== (u = /*$_*/
668
+ C[31]("faceCollector.retakePhoto") + "") && q(b, u);
669
+ },
670
+ d: function(C) {
671
+ C && W(e), d = !1, bi(c);
672
+ }
673
+ };
674
+ return N("SvelteRegisterBlock", {
675
+ block: g,
676
+ id: Xi.name,
677
+ type: "if",
678
+ source: "(1084:6) {#if $captured}",
679
+ ctx: n
680
+ }), g;
681
+ }
682
+ function io(n) {
683
+ let e, i;
684
+ e = new Jn({
685
+ props: { handler: (
686
+ /*func*/
687
+ n[68]
688
+ ) },
689
+ $$inline: !0
690
+ });
691
+ const s = {
692
+ c: function() {
693
+ kt(e.$$.fragment);
694
+ },
695
+ m: function(l, o) {
696
+ Rt(e, l, o), i = !0;
697
+ },
698
+ p: ce,
699
+ i: function(l) {
700
+ i || (Z(e.$$.fragment, l), i = !0);
701
+ },
702
+ o: function(l) {
703
+ ae(e.$$.fragment, l), i = !1;
704
+ },
705
+ d: function(l) {
706
+ Tt(e, l);
707
+ }
708
+ };
709
+ return N("SvelteRegisterBlock", {
710
+ block: s,
711
+ id: io.name,
712
+ type: "if",
713
+ source: "(1235:55) ",
714
+ ctx: n
715
+ }), s;
716
+ }
717
+ function no(n) {
718
+ let e, i, s, a, l, o, r, u, b;
719
+ const d = [
720
+ ro,
721
+ lo,
722
+ so,
723
+ ao,
724
+ oo
725
+ ], c = [];
726
+ function g(C, p) {
727
+ return (
728
+ /*$captured*/
729
+ C[24] ? (
730
+ /*$unconformitiesStore*/
731
+ C[32].isLoading ? 1 : (
732
+ /*$requestResult*/
733
+ C[30] !== Y.OK ? 2 : (
734
+ /*$saved*/
735
+ C[27] ? 4 : 3
736
+ )
737
+ )
738
+ ) : 0
739
+ );
740
+ }
741
+ o = g(n), r = c[o] = d[o](n);
742
+ const O = {
743
+ c: function() {
744
+ e = _("div"), i = _("img"), l = V(), r.c(), m(i, "class", "m-auto col-start-1 col-end-1 max-h-[23.2em]"), Yt(i.src, s = /*$dataTypePrefix*/
745
+ n[33] + "," + /*$image*/
746
+ n[29]) || m(i, "src", s), i.hidden = a = !/*$captured*/
747
+ n[24] || !/*$showFaceWhileValidating*/
748
+ n[37] && /*$unconformitiesStore*/
749
+ n[32].isLoading, m(i, "alt", ""), v(i, w, 1106, 6, 45038), m(e, "class", u = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
750
+ n[37] && /*$unconformitiesStore*/
751
+ n[32].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid overflow-hidden")), v(e, w, 1100, 4, 44752);
752
+ },
753
+ m: function(p, k) {
754
+ U(p, e, k), f(e, i), f(e, l), c[o].m(e, null), b = !0;
755
+ },
756
+ p: function(p, k) {
757
+ (!b || k[0] & /*$image*/
758
+ 536870912 | k[1] & /*$dataTypePrefix*/
759
+ 4 && !Yt(i.src, s = /*$dataTypePrefix*/
760
+ p[33] + "," + /*$image*/
761
+ p[29])) && m(i, "src", s), (!b || k[0] & /*$captured*/
762
+ 16777216 | k[1] & /*$showFaceWhileValidating, $unconformitiesStore*/
763
+ 66 && a !== (a = !/*$captured*/
764
+ p[24] || !/*$showFaceWhileValidating*/
765
+ p[37] && /*$unconformitiesStore*/
766
+ p[32].isLoading)) && hi(i, "hidden", a);
767
+ let E = o;
768
+ o = g(p), o === E ? c[o].p(p, k) : (Ct(), ae(c[E], 1, 1, () => {
769
+ c[E] = null;
770
+ }), yt(), r = c[o], r ? r.p(p, k) : (r = c[o] = d[o](p), r.c()), Z(r, 1), r.m(e, null)), (!b || k[1] & /*$showFaceWhileValidating, $unconformitiesStore*/
771
+ 66 && u !== (u = "grid-cols-1 grid-rows-2 sm:grid-cols-2 sm:grid-rows-1 gap-[.5em] " + (!/*$showFaceWhileValidating*/
772
+ p[37] && /*$unconformitiesStore*/
773
+ p[32].isLoading ? "absolute -translate-y-1/2 -translate-x-1/2 top-1/2 left-1/2 overflow-visible" : "grid overflow-hidden"))) && m(e, "class", u);
774
+ },
775
+ i: function(p) {
776
+ b || (Z(r), b = !0);
777
+ },
778
+ o: function(p) {
779
+ ae(r), b = !1;
780
+ },
781
+ d: function(p) {
782
+ p && W(e), c[o].d();
783
+ }
784
+ };
785
+ return N("SvelteRegisterBlock", {
786
+ block: O,
787
+ id: no.name,
788
+ type: "if",
789
+ source: "(1100:2) {#if (!idrndClosed || $captured) && showUnconformities}",
790
+ ctx: n
791
+ }), O;
792
+ }
793
+ function oo(n) {
794
+ let e, i, s = (
795
+ /*$_*/
796
+ n[31]("faceCollector.captured") + ""
797
+ ), a, l, o, r, u, b = (
798
+ /*$_*/
799
+ n[31]("faceCollector.retakePhoto") + ""
800
+ ), d, c, g = Qt(qn).faceStrategy !== Kn.DISABLED, O, C, p, k = (
801
+ /*$unconformitiesStore*/
802
+ n[32].unconformities.length !== 0 && Qi(n)
803
+ ), E = g && co(n);
804
+ const M = {
805
+ c: function() {
806
+ e = _("div"), i = _("h1"), a = K(s), l = V(), k && k.c(), o = V(), r = _("div"), u = _("button"), d = K(b), c = V(), E && E.c(), m(i, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 1207, 10, 50163), m(u, "id", "bry-cc-retake-button"), m(u, "class", "ce-dui-btn ce-dui-btn-block flex-shrink text-base"), v(u, w, 1221, 12, 50864), m(r, "class", "flex flex-row"), Ln(r, "ce-dui-btn-group", !/*$exportButtonDisabled*/
807
+ n[38]), v(r, w, 1220, 10, 50776), v(e, w, 1206, 8, 50147);
808
+ },
809
+ m: function(I, T) {
810
+ U(I, e, T), f(e, i), f(i, a), f(e, l), k && k.m(e, null), f(e, o), f(e, r), f(r, u), f(u, d), f(r, c), E && E.m(r, null), O = !0, C || (p = Re(
811
+ u,
812
+ "click",
813
+ /*click_handler_6*/
814
+ n[67],
815
+ !1,
816
+ !1,
817
+ !1,
818
+ !1
819
+ ), C = !0);
820
+ },
821
+ p: function(I, T) {
822
+ (!O || T[1] & /*$_*/
823
+ 1) && s !== (s = /*$_*/
824
+ I[31]("faceCollector.captured") + "") && q(a, s), /*$unconformitiesStore*/
825
+ I[32].unconformities.length !== 0 ? k ? k.p(I, T) : (k = Qi(I), k.c(), k.m(e, o)) : k && (k.d(1), k = null), (!O || T[1] & /*$_*/
826
+ 1) && b !== (b = /*$_*/
827
+ I[31]("faceCollector.retakePhoto") + "") && q(d, b), (!O || T[1] & /*$exportButtonDisabled*/
828
+ 128) && Ln(r, "ce-dui-btn-group", !/*$exportButtonDisabled*/
829
+ I[38]);
830
+ },
831
+ i: function(I) {
832
+ O || (Z(E), O = !0);
833
+ },
834
+ o: function(I) {
835
+ ae(E), O = !1;
836
+ },
837
+ d: function(I) {
838
+ I && W(e), k && k.d(), E && E.d(), C = !1, p();
839
+ }
840
+ };
841
+ return N("SvelteRegisterBlock", {
842
+ block: M,
843
+ id: oo.name,
844
+ type: "else",
845
+ source: "(1206:6) {:else}",
846
+ ctx: n
847
+ }), M;
848
+ }
849
+ function ao(n) {
850
+ let e, i, s = (
851
+ /*evaluatePhoto*/
852
+ (n[1] ? (
853
+ /*$_*/
854
+ n[31]("faceCollector.unconformities")
855
+ ) : (
856
+ /*$_*/
857
+ n[31]("faceCollector.previewCapture")
858
+ )) + ""
859
+ ), a, l, o, r, u, b, d = (
860
+ /*$unconformitiesStore*/
861
+ n[32].unconformities
862
+ );
863
+ Pn(d);
864
+ let c = [];
865
+ for (let k = 0; k < d.length; k += 1)
866
+ c[k] = Yi(Nn(n, d, k));
867
+ let g = (
868
+ /*evaluatePhoto*/
869
+ n[1] && /*$unconformitiesStore*/
870
+ n[32].unconformities.length == 0 && Gi(n)
871
+ ), O = (
872
+ /*showJustificationField*/
873
+ n[7] && Zi(n)
874
+ ), C = (
875
+ /*$captured*/
876
+ n[24] && xi(n)
877
+ );
878
+ const p = {
879
+ c: function() {
880
+ e = _("div"), i = _("h1"), a = K(s), l = V(), o = _("div");
881
+ for (let E = 0; E < c.length; E += 1)
882
+ c[E].c();
883
+ r = V(), g && g.c(), u = V(), O && O.c(), b = V(), C && C.c(), m(i, "class", "text-3xl font-bold transition-opacity"), v(i, w, 1157, 10, 47822), m(o, "class", "flex flex-wrap"), v(o, w, 1158, 10, 47980), m(e, "class", "flex flex-col justify-between"), v(e, w, 1156, 8, 47768);
884
+ },
885
+ m: function(E, M) {
886
+ U(E, e, M), f(e, i), f(i, a), f(e, l), f(e, o);
887
+ for (let B = 0; B < c.length; B += 1)
888
+ c[B] && c[B].m(o, null);
889
+ f(o, r), g && g.m(o, null), f(e, u), O && O.m(e, null), f(e, b), C && C.m(e, null);
890
+ },
891
+ p: function(E, M) {
892
+ if (M[0] & /*evaluatePhoto*/
893
+ 2 | M[1] & /*$_*/
894
+ 1 && s !== (s = /*evaluatePhoto*/
895
+ (E[1] ? (
896
+ /*$_*/
897
+ E[31]("faceCollector.unconformities")
898
+ ) : (
899
+ /*$_*/
900
+ E[31]("faceCollector.previewCapture")
901
+ )) + "") && q(a, s), M[1] & /*$unconformitiesStore*/
902
+ 2) {
903
+ d = /*$unconformitiesStore*/
904
+ E[32].unconformities, Pn(d);
905
+ let B;
906
+ for (B = 0; B < d.length; B += 1) {
907
+ const I = Nn(E, d, B);
908
+ c[B] ? c[B].p(I, M) : (c[B] = Yi(I), c[B].c(), c[B].m(o, r));
909
+ }
910
+ for (; B < c.length; B += 1)
911
+ c[B].d(1);
912
+ c.length = d.length;
913
+ }
914
+ /*evaluatePhoto*/
915
+ E[1] && /*$unconformitiesStore*/
916
+ E[32].unconformities.length == 0 ? g ? g.p(E, M) : (g = Gi(E), g.c(), g.m(o, null)) : g && (g.d(1), g = null), /*showJustificationField*/
917
+ E[7] ? O ? O.p(E, M) : (O = Zi(E), O.c(), O.m(e, b)) : O && (O.d(1), O = null), /*$captured*/
918
+ E[24] ? C ? C.p(E, M) : (C = xi(E), C.c(), C.m(e, null)) : C && (C.d(1), C = null);
919
+ },
920
+ i: ce,
921
+ o: ce,
922
+ d: function(E) {
923
+ E && W(e), Wo(c, E), g && g.d(), O && O.d(), C && C.d();
924
+ }
925
+ };
926
+ return N("SvelteRegisterBlock", {
927
+ block: p,
928
+ id: ao.name,
929
+ type: "if",
930
+ source: "(1156:24) ",
931
+ ctx: n
932
+ }), p;
933
+ }
934
+ function so(n) {
935
+ let e, i, s, a, l = (
936
+ /*$_*/
937
+ n[31]("faceCollector.finish") + ""
938
+ ), o, r, u, b = (
939
+ /*$_*/
940
+ n[31]("faceCollector.retakePhoto") + ""
941
+ ), d, c, g;
942
+ function O(E, M) {
943
+ return (
944
+ /*$requestResult*/
945
+ E[30] === Y.LIVENESS_DETECTION_FAILURE || /*$requestResult*/
946
+ E[30] === Y.UNKNOWN_LIVENESS_ERROR ? go : (
947
+ /*$requestResult*/
948
+ E[30] === Y.LOW_LIVENESS_SCORE ? bo : (
949
+ /*$requestResult*/
950
+ E[30] === Y.TEMPLATE_EXTRACTION_ERROR || /*$requestResult*/
951
+ E[30] === Y.UNKNOWN_TEMPLATE_EXTRACTION_ERROR ? ho : (
952
+ /*$requestResult*/
953
+ E[30] === Y.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE ? mo : (
954
+ /*$requestResult*/
955
+ E[30] === Y.LIVENESS_EVALUATION_ERROR ? fo : uo
956
+ )
957
+ )
958
+ )
959
+ )
960
+ );
961
+ }
962
+ let C = O(n), p = C(n);
963
+ const k = {
964
+ c: function() {
965
+ e = _("div"), p.c(), i = V(), s = _("div"), a = _("button"), o = K(l), r = V(), u = _("button"), d = K(b), a.disabled = !0, m(a, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink"), v(a, w, 1145, 12, 47292), m(u, "id", "bry-cc-retake-button"), m(u, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink"), v(u, w, 1148, 12, 47478), m(s, "class", "ce-dui-btn-group flex"), v(s, w, 1144, 10, 47244), m(e, "class", "flex flex-col justify-between"), v(e, w, 1120, 8, 45652);
966
+ },
967
+ m: function(M, B) {
968
+ U(M, e, B), p.m(e, null), f(e, i), f(e, s), f(s, a), f(a, o), f(s, r), f(s, u), f(u, d), c || (g = [
969
+ Re(
970
+ a,
971
+ "click",
972
+ /*click_handler_2*/
973
+ n[61],
974
+ !1,
975
+ !1,
976
+ !1,
977
+ !1
978
+ ),
979
+ Re(
980
+ u,
981
+ "click",
982
+ /*click_handler_3*/
983
+ n[62],
984
+ !1,
985
+ !1,
986
+ !1,
987
+ !1
988
+ )
989
+ ], c = !0);
990
+ },
991
+ p: function(M, B) {
992
+ C === (C = O(M)) && p ? p.p(M, B) : (p.d(1), p = C(M), p && (p.c(), p.m(e, i))), B[1] & /*$_*/
993
+ 1 && l !== (l = /*$_*/
994
+ M[31]("faceCollector.finish") + "") && q(o, l), B[1] & /*$_*/
995
+ 1 && b !== (b = /*$_*/
996
+ M[31]("faceCollector.retakePhoto") + "") && q(d, b);
997
+ },
998
+ i: ce,
999
+ o: ce,
1000
+ d: function(M) {
1001
+ M && W(e), p.d(), c = !1, bi(g);
1002
+ }
1003
+ };
1004
+ return N("SvelteRegisterBlock", {
1005
+ block: k,
1006
+ id: so.name,
1007
+ type: "if",
1008
+ source: "(1120:56) ",
1009
+ ctx: n
1010
+ }), k;
1011
+ }
1012
+ function lo(n) {
1013
+ let e, i, s = (
1014
+ /*$_*/
1015
+ n[31]("faceCollector.validating") + ""
1016
+ ), a, l, o;
1017
+ const r = {
1018
+ c: function() {
1019
+ e = _("div"), i = _("h1"), a = K(s), l = V(), o = _("div"), m(i, "class", "inline-block text-3xl font-bold pb-[1em] transition-opacity"), v(i, w, 1116, 10, 45407), m(o, "class", "ml-6 inline-block dot-typing"), v(o, w, 1117, 10, 45527), m(e, "class", "min-w-[200px]"), v(e, w, 1115, 8, 45369);
1020
+ },
1021
+ m: function(b, d) {
1022
+ U(b, e, d), f(e, i), f(i, a), f(e, l), f(e, o);
1023
+ },
1024
+ p: function(b, d) {
1025
+ d[1] & /*$_*/
1026
+ 1 && s !== (s = /*$_*/
1027
+ b[31]("faceCollector.validating") + "") && q(a, s);
1028
+ },
1029
+ i: ce,
1030
+ o: ce,
1031
+ d: function(b) {
1032
+ b && W(e);
1033
+ }
1034
+ };
1035
+ return N("SvelteRegisterBlock", {
1036
+ block: r,
1037
+ id: lo.name,
1038
+ type: "if",
1039
+ source: "(1115:47) ",
1040
+ ctx: n
1041
+ }), r;
1042
+ }
1043
+ function ro(n) {
1044
+ let e;
1045
+ const i = {
1046
+ c: function() {
1047
+ e = _("div"), m(e, "class", ""), v(e, w, 1113, 8, 45296);
1048
+ },
1049
+ m: function(a, l) {
1050
+ U(a, e, l);
1051
+ },
1052
+ p: ce,
1053
+ i: ce,
1054
+ o: ce,
1055
+ d: function(a) {
1056
+ a && W(e);
1057
+ }
1058
+ };
1059
+ return N("SvelteRegisterBlock", {
1060
+ block: i,
1061
+ id: ro.name,
1062
+ type: "if",
1063
+ source: "(1113:6) {#if !$captured}",
1064
+ ctx: n
1065
+ }), i;
1066
+ }
1067
+ function Qi(n) {
1068
+ let e, i, s = (
1069
+ /*$_*/
1070
+ n[31]("faceCollector.justification") + ""
1071
+ ), a, l, o, r, u;
1072
+ const b = {
1073
+ c: function() {
1074
+ e = _("label"), i = _("span"), a = K(s), l = V(), o = _("textarea"), m(i, "class", "ce-dui-label-text text-base"), v(i, w, 1211, 14, 50399), m(e, "class", "ce-dui-label"), m(e, "for", "justification"), v(e, w, 1210, 12, 50336), m(o, "contenteditable", ""), m(o, "id", "justification"), m(o, "class", "ce-dui-textarea ce-dui-textarea-bordered textarea-ghost h-[6em] w-full text-base"), v(o, w, 1213, 12, 50517);
1075
+ },
1076
+ m: function(c, g) {
1077
+ U(c, e, g), f(e, i), f(i, a), U(c, l, g), U(c, o, g), di(
1078
+ o,
1079
+ /*$justification*/
1080
+ n[28]
1081
+ ), r || (u = Re(
1082
+ o,
1083
+ "input",
1084
+ /*textarea_input_handler_1*/
1085
+ n[66]
1086
+ ), r = !0);
1087
+ },
1088
+ p: function(c, g) {
1089
+ g[1] & /*$_*/
1090
+ 1 && s !== (s = /*$_*/
1091
+ c[31]("faceCollector.justification") + "") && q(a, s), g[0] & /*$justification*/
1092
+ 268435456 && di(
1093
+ o,
1094
+ /*$justification*/
1095
+ c[28]
1096
+ );
1097
+ },
1098
+ d: function(c) {
1099
+ c && W(e), c && W(l), c && W(o), r = !1, u();
1100
+ }
1101
+ };
1102
+ return N("SvelteRegisterBlock", {
1103
+ block: b,
1104
+ id: Qi.name,
1105
+ type: "if",
1106
+ source: "(1210:10) {#if $unconformitiesStore.unconformities.length !== 0}",
1107
+ ctx: n
1108
+ }), b;
1109
+ }
1110
+ function co(n) {
1111
+ let e, i;
1112
+ e = new Hn({
1113
+ props: { cssClass: "ce-dui-btn-block flex-shrink" },
1114
+ $$inline: !0
1115
+ });
1116
+ const s = {
1117
+ c: function() {
1118
+ kt(e.$$.fragment);
1119
+ },
1120
+ m: function(l, o) {
1121
+ Rt(e, l, o), i = !0;
1122
+ },
1123
+ i: function(l) {
1124
+ i || (Z(e.$$.fragment, l), i = !0);
1125
+ },
1126
+ o: function(l) {
1127
+ ae(e.$$.fragment, l), i = !1;
1128
+ },
1129
+ d: function(l) {
1130
+ Tt(e, l);
1131
+ }
1132
+ };
1133
+ return N("SvelteRegisterBlock", {
1134
+ block: s,
1135
+ id: co.name,
1136
+ type: "if",
1137
+ source: "(1227:12) {#if get(enableStrategy).faceStrategy !== FaceExportStrategy.DISABLED}",
1138
+ ctx: n
1139
+ }), s;
1140
+ }
1141
+ function Yi(n) {
1142
+ let e, i = (
1143
+ /*unconformity*/
1144
+ n[123] + ""
1145
+ ), s;
1146
+ const a = {
1147
+ c: function() {
1148
+ e = _("div"), s = K(i), m(e, "class", "ce-dui-badge ce-dui-badge-lg h-[2em] ce-dui-badge-error text-xl pb-[.25em] m-[.5em]"), v(e, w, 1160, 14, 48095);
1149
+ },
1150
+ m: function(o, r) {
1151
+ U(o, e, r), f(e, s);
1152
+ },
1153
+ p: function(o, r) {
1154
+ r[1] & /*$unconformitiesStore*/
1155
+ 2 && i !== (i = /*unconformity*/
1156
+ o[123] + "") && q(s, i);
1157
+ },
1158
+ d: function(o) {
1159
+ o && W(e);
1160
+ }
1161
+ };
1162
+ return N("SvelteRegisterBlock", {
1163
+ block: a,
1164
+ id: Yi.name,
1165
+ type: "each",
1166
+ source: "(1160:12) {#each $unconformitiesStore.unconformities as unconformity}",
1167
+ ctx: n
1168
+ }), a;
1169
+ }
1170
+ function Gi(n) {
1171
+ let e, i = (
1172
+ /*$_*/
1173
+ n[31]("faceCollector.noNonconformity") + ""
1174
+ ), s;
1175
+ const a = {
1176
+ c: function() {
1177
+ e = _("div"), s = K(i), m(e, "class", "ce-dui-badge ce-dui-badge-lg h-[2em] ce-dui-badge-info text-xl pb-[.25em] m-[.5em]"), v(e, w, 1165, 12, 48360);
1178
+ },
1179
+ m: function(o, r) {
1180
+ U(o, e, r), f(e, s);
1181
+ },
1182
+ p: function(o, r) {
1183
+ r[1] & /*$_*/
1184
+ 1 && i !== (i = /*$_*/
1185
+ o[31]("faceCollector.noNonconformity") + "") && q(s, i);
1186
+ },
1187
+ d: function(o) {
1188
+ o && W(e);
1189
+ }
1190
+ };
1191
+ return N("SvelteRegisterBlock", {
1192
+ block: a,
1193
+ id: Gi.name,
1194
+ type: "if",
1195
+ source: "(1165:12) {#if evaluatePhoto && $unconformitiesStore.unconformities.length == 0}",
1196
+ ctx: n
1197
+ }), a;
1198
+ }
1199
+ function Zi(n) {
1200
+ let e, i, s, a = (
1201
+ /*$_*/
1202
+ n[31]("faceCollector.provideAReasonForTheLowQualityCapture") + ""
1203
+ ), l, o, r, u, b, d, c, g, O = (
1204
+ /*$_*/
1205
+ n[31]("faceCollector.thisInformationIsRequired") + ""
1206
+ ), C, p, k, E;
1207
+ const M = {
1208
+ c: function() {
1209
+ e = _("div"), i = _("label"), s = _("span"), l = K(a), o = V(), r = _("textarea"), b = V(), d = _("label"), c = _("span"), g = K("("), C = K(O), p = K(")"), m(s, "class", "ce-dui-label-text text-base"), v(s, w, 1173, 16, 48727), m(i, "class", "ce-dui-label"), m(i, "for", "justification"), v(i, w, 1172, 14, 48662), m(r, "contenteditable", ""), m(r, "id", "justification"), m(r, "class", "ce-dui-textarea ce-dui-textarea-bordered h-[6em] text-base"), m(r, "placeholder", u = /*$_*/
1210
+ n[31]("faceCollector.yourJustification")), v(r, w, 1177, 14, 48909), m(c, "class", "ce-dui-label-text-alt text-base"), v(c, w, 1185, 16, 49277), m(d, "class", "ce-dui-label"), m(d, "for", "justification"), v(d, w, 1184, 14, 49212), m(e, "class", "ce-dui-form-control"), v(e, w, 1171, 12, 48614);
1211
+ },
1212
+ m: function(I, T) {
1213
+ U(I, e, T), f(e, i), f(i, s), f(s, l), f(e, o), f(e, r), di(
1214
+ r,
1215
+ /*$justification*/
1216
+ n[28]
1217
+ ), f(e, b), f(e, d), f(d, c), f(c, g), f(c, C), f(c, p), k || (E = Re(
1218
+ r,
1219
+ "input",
1220
+ /*textarea_input_handler*/
1221
+ n[63]
1222
+ ), k = !0);
1223
+ },
1224
+ p: function(I, T) {
1225
+ T[1] & /*$_*/
1226
+ 1 && a !== (a = /*$_*/
1227
+ I[31]("faceCollector.provideAReasonForTheLowQualityCapture") + "") && q(l, a), T[1] & /*$_*/
1228
+ 1 && u !== (u = /*$_*/
1229
+ I[31]("faceCollector.yourJustification")) && m(r, "placeholder", u), T[0] & /*$justification*/
1230
+ 268435456 && di(
1231
+ r,
1232
+ /*$justification*/
1233
+ I[28]
1234
+ ), T[1] & /*$_*/
1235
+ 1 && O !== (O = /*$_*/
1236
+ I[31]("faceCollector.thisInformationIsRequired") + "") && q(C, O);
1237
+ },
1238
+ d: function(I) {
1239
+ I && W(e), k = !1, E();
1240
+ }
1241
+ };
1242
+ return N("SvelteRegisterBlock", {
1243
+ block: M,
1244
+ id: Zi.name,
1245
+ type: "if",
1246
+ source: "(1171:10) {#if showJustificationField}",
1247
+ ctx: n
1248
+ }), M;
1249
+ }
1250
+ function xi(n) {
1251
+ let e, i, s = (
1252
+ /*$_*/
1253
+ n[31]("faceCollector.finish") + ""
1254
+ ), a, l, o, r, u = (
1255
+ /*$_*/
1256
+ n[31]("faceCollector.retakePhoto") + ""
1257
+ ), b, d, c;
1258
+ const g = {
1259
+ c: function() {
1260
+ e = _("div"), i = _("button"), a = K(s), o = V(), r = _("button"), b = K(u), i.disabled = l = /*$justification*/
1261
+ n[28].length === 0 && /*showJustificationField*/
1262
+ n[7], m(i, "class", "ce-dui-btn ce-dui-btn-primary ce-dui-btn-block flex-shrink text-base"), v(i, w, 1191, 14, 49526), m(r, "id", "bry-cc-retake-button"), m(r, "class", "ce-dui-btn ce-dui-btn-block ce-dui-btn-outline flex-shrink text-base"), v(r, w, 1197, 14, 49832), m(e, "class", "ce-dui-btn-group flex"), v(e, w, 1190, 12, 49476);
1263
+ },
1264
+ m: function(C, p) {
1265
+ U(C, e, p), f(e, i), f(i, a), f(e, o), f(e, r), f(r, b), d || (c = [
1266
+ Re(
1267
+ i,
1268
+ "click",
1269
+ /*click_handler_4*/
1270
+ n[64],
1271
+ !1,
1272
+ !1,
1273
+ !1,
1274
+ !1
1275
+ ),
1276
+ Re(
1277
+ r,
1278
+ "click",
1279
+ /*click_handler_5*/
1280
+ n[65],
1281
+ !1,
1282
+ !1,
1283
+ !1,
1284
+ !1
1285
+ )
1286
+ ], d = !0);
1287
+ },
1288
+ p: function(C, p) {
1289
+ p[1] & /*$_*/
1290
+ 1 && s !== (s = /*$_*/
1291
+ C[31]("faceCollector.finish") + "") && q(a, s), p[0] & /*$justification, showJustificationField*/
1292
+ 268435584 && l !== (l = /*$justification*/
1293
+ C[28].length === 0 && /*showJustificationField*/
1294
+ C[7]) && hi(i, "disabled", l), p[1] & /*$_*/
1295
+ 1 && u !== (u = /*$_*/
1296
+ C[31]("faceCollector.retakePhoto") + "") && q(b, u);
1297
+ },
1298
+ d: function(C) {
1299
+ C && W(e), d = !1, bi(c);
1300
+ }
1301
+ };
1302
+ return N("SvelteRegisterBlock", {
1303
+ block: g,
1304
+ id: xi.name,
1305
+ type: "if",
1306
+ source: "(1190:10) {#if $captured}",
1307
+ ctx: n
1308
+ }), g;
1309
+ }
1310
+ function uo(n) {
1311
+ let e, i = (
1312
+ /*$_*/
1313
+ n[31]("faceCollector.everythingOk") + ""
1314
+ ), s;
1315
+ const a = {
1316
+ c: function() {
1317
+ e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity"), v(e, w, 1142, 12, 47119);
1318
+ },
1319
+ m: function(o, r) {
1320
+ U(o, e, r), f(e, s);
1321
+ },
1322
+ p: function(o, r) {
1323
+ r[1] & /*$_*/
1324
+ 1 && i !== (i = /*$_*/
1325
+ o[31]("faceCollector.everythingOk") + "") && q(s, i);
1326
+ },
1327
+ d: function(o) {
1328
+ o && W(e);
1329
+ }
1330
+ };
1331
+ return N("SvelteRegisterBlock", {
1332
+ block: a,
1333
+ id: uo.name,
1334
+ type: "else",
1335
+ source: "(1142:10) {:else}",
1336
+ ctx: n
1337
+ }), a;
1338
+ }
1339
+ function fo(n) {
1340
+ let e, i = (
1341
+ /*$_*/
1342
+ n[31]("liveness.error.evaluationError") + ""
1343
+ ), s;
1344
+ const a = {
1345
+ c: function() {
1346
+ e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1138, 12, 46947);
1347
+ },
1348
+ m: function(o, r) {
1349
+ U(o, e, r), f(e, s);
1350
+ },
1351
+ p: function(o, r) {
1352
+ r[1] & /*$_*/
1353
+ 1 && i !== (i = /*$_*/
1354
+ o[31]("liveness.error.evaluationError") + "") && q(s, i);
1355
+ },
1356
+ d: function(o) {
1357
+ o && W(e);
1358
+ }
1359
+ };
1360
+ return N("SvelteRegisterBlock", {
1361
+ block: a,
1362
+ id: fo.name,
1363
+ type: "if",
1364
+ source: "(1138:83) ",
1365
+ ctx: n
1366
+ }), a;
1367
+ }
1368
+ function mo(n) {
1369
+ let e, i = (
1370
+ /*$_*/
1371
+ n[31]("faceCollector.unableToCompleteRequest") + ""
1372
+ ), s;
1373
+ const a = {
1374
+ c: function() {
1375
+ e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1134, 12, 46702);
1376
+ },
1377
+ m: function(o, r) {
1378
+ U(o, e, r), f(e, s);
1379
+ },
1380
+ p: function(o, r) {
1381
+ r[1] & /*$_*/
1382
+ 1 && i !== (i = /*$_*/
1383
+ o[31]("faceCollector.unableToCompleteRequest") + "") && q(s, i);
1384
+ },
1385
+ d: function(o) {
1386
+ o && W(e);
1387
+ }
1388
+ };
1389
+ return N("SvelteRegisterBlock", {
1390
+ block: a,
1391
+ id: mo.name,
1392
+ type: "if",
1393
+ source: "(1134:112) ",
1394
+ ctx: n
1395
+ }), a;
1396
+ }
1397
+ function ho(n) {
1398
+ let e, i = (
1399
+ /*$_*/
1400
+ n[31]("faceCollector.lowQualityCapture") + ""
1401
+ ), s;
1402
+ const a = {
1403
+ c: function() {
1404
+ e = _("h1"), s = K(i), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1130, 12, 46434);
1405
+ },
1406
+ m: function(o, r) {
1407
+ U(o, e, r), f(e, s);
1408
+ },
1409
+ p: function(o, r) {
1410
+ r[1] & /*$_*/
1411
+ 1 && i !== (i = /*$_*/
1412
+ o[31]("faceCollector.lowQualityCapture") + "") && q(s, i);
1413
+ },
1414
+ d: function(o) {
1415
+ o && W(e);
1416
+ }
1417
+ };
1418
+ return N("SvelteRegisterBlock", {
1419
+ block: a,
1420
+ id: ho.name,
1421
+ type: "if",
1422
+ source: "(1130:157) ",
1423
+ ctx: n
1424
+ }), a;
1425
+ }
1426
+ function bo(n) {
1427
+ let e, i = (
1428
+ /*$_*/
1429
+ n[31]("liveness.error.error") + ""
1430
+ ), s, a, l = (
1431
+ /*$_*/
1432
+ n[31]("faceCollector.unaliveCapture") + ""
1433
+ ), o;
1434
+ const r = {
1435
+ c: function() {
1436
+ e = _("h1"), s = K(i), a = K(": "), o = K(l), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1126, 12, 46094);
1437
+ },
1438
+ m: function(b, d) {
1439
+ U(b, e, d), f(e, s), f(e, a), f(e, o);
1440
+ },
1441
+ p: function(b, d) {
1442
+ d[1] & /*$_*/
1443
+ 1 && i !== (i = /*$_*/
1444
+ b[31]("liveness.error.error") + "") && q(s, i), d[1] & /*$_*/
1445
+ 1 && l !== (l = /*$_*/
1446
+ b[31]("faceCollector.unaliveCapture") + "") && q(o, l);
1447
+ },
1448
+ d: function(b) {
1449
+ b && W(e);
1450
+ }
1451
+ };
1452
+ return N("SvelteRegisterBlock", {
1453
+ block: r,
1454
+ id: bo.name,
1455
+ type: "if",
1456
+ source: "(1126:76) ",
1457
+ ctx: n
1458
+ }), r;
1459
+ }
1460
+ function go(n) {
1461
+ let e, i = (
1462
+ /*$_*/
1463
+ n[31]("liveness.error.error") + ""
1464
+ ), s, a, l = (
1465
+ /*$_*/
1466
+ n[31](
1467
+ /*livenessError*/
1468
+ n[20]
1469
+ ) + ""
1470
+ ), o, r;
1471
+ const u = {
1472
+ c: function() {
1473
+ e = _("h1"), s = K(i), a = K(": "), o = K(l), r = K("."), m(e, "class", "text-3xl font-bold pb-[1em] transition-opacity text-error"), v(e, w, 1122, 12, 45851);
1474
+ },
1475
+ m: function(d, c) {
1476
+ U(d, e, c), f(e, s), f(e, a), f(e, o), f(e, r);
1477
+ },
1478
+ p: function(d, c) {
1479
+ c[1] & /*$_*/
1480
+ 1 && i !== (i = /*$_*/
1481
+ d[31]("liveness.error.error") + "") && q(s, i), c[0] & /*livenessError*/
1482
+ 1048576 | c[1] & /*$_*/
1483
+ 1 && l !== (l = /*$_*/
1484
+ d[31](
1485
+ /*livenessError*/
1486
+ d[20]
1487
+ ) + "") && q(o, l);
1488
+ },
1489
+ d: function(d) {
1490
+ d && W(e);
1491
+ }
1492
+ };
1493
+ return N("SvelteRegisterBlock", {
1494
+ block: u,
1495
+ id: go.name,
1496
+ type: "if",
1497
+ source: "(1122:10) {#if $requestResult === requestResultEnum.LIVENESS_DETECTION_FAILURE || $requestResult === requestResultEnum.UNKNOWN_LIVENESS_ERROR}",
1498
+ ctx: n
1499
+ }), u;
1500
+ }
1501
+ function _o(n) {
1502
+ let e, i, s, a, l = J(), o, r = (
1503
+ /*unique*/
1504
+ n[13]
1505
+ ), u, b, d, c, g, O, C, p, k, E, M, B, I, T, ke, ne = !J() && !/*$ready*/
1506
+ n[35], ue, we = J() && /*waitingIdrndCaptureEvent*/
1507
+ n[19], He, Te = J() && /*idrndLoading*/
1508
+ n[17] && /*$cameraStatusStore*/
1509
+ n[21] === Q.OK, Ue, We, G, x, Ae, Se = l && Yn(n), pe = Mi(n), $ = (
1510
+ /*showConfigButton*/
1511
+ n[4] && /*$ready*/
1512
+ n[35] && Ui(n)
1513
+ ), ee = (
1514
+ /*showCameraButton*/
1515
+ n[6] && /*$ready*/
1516
+ n[35] && Wi(n)
1517
+ ), z = (
1518
+ /*showAutoCaptureButton*/
1519
+ n[5] && !/*$automaticCapture*/
1520
+ n[25] && !/*showCaptureButton*/
1521
+ n[2] && /*$ready*/
1522
+ n[35] && Vi(n)
1523
+ ), te = (
1524
+ /*showCaptureButton*/
1525
+ n[2] && /*$ready*/
1526
+ n[35] && Ki(n)
1527
+ ), se = (
1528
+ /*isCountingDown*/
1529
+ n[12] && ji(n)
1530
+ ), le = (
1531
+ /*$enableFaceApi*/
1532
+ n[34] && !/*isCountingDown*/
1533
+ n[12] && /*$faceValidationAlert*/
1534
+ n[26] && Hi(n)
1535
+ ), he = ne && qi(n), ve = we && Ji(n), A = Te && zi(n), H = (
1536
+ /*$captured*/
1537
+ n[24] && Xi(n)
1538
+ );
1539
+ const Ce = [no, io], fe = [];
1540
+ function qe(de, y) {
1541
+ return (!/*idrndClosed*/
1542
+ de[18] || /*$captured*/
1543
+ de[24]) && /*showUnconformities*/
1544
+ de[3] ? 0 : (
1545
+ /*$cameraStatusStore*/
1546
+ de[21] !== Q.OK ? 1 : -1
1547
+ );
1548
+ }
1549
+ ~(G = qe(n)) && (x = fe[G] = Ce[G](n));
1550
+ const Je = {
1551
+ c: function() {
1552
+ e = _("div"), i = _("div"), s = _("div"), a = _("div"), Se && Se.c(), o = V(), pe.c(), u = V(), $ && $.c(), b = V(), ee && ee.c(), d = V(), z && z.c(), c = V(), te && te.c(), g = V(), O = _("canvas"), C = V(), p = _("canvas"), k = V(), E = _("canvas"), M = V(), se && se.c(), B = V(), le && le.c(), ke = V(), he && he.c(), ue = V(), ve && ve.c(), He = V(), A && A.c(), Ue = V(), H && H.c(), We = V(), x && x.c(), this.c = ce, m(O, "id", "bry-ce-displayCanvas"), m(O, "class", "max-w-full -scale-x-100"), v(O, w, 1018, 8, 40893), m(p, "id", "bry-ce-detectionsCanvas"), m(p, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(p, w, 1020, 8, 41019), m(E, "id", "bry-ce-maskCanvas"), m(E, "class", "absolute top-0 left-0 max-w-full -scale-x-100"), v(E, w, 1025, 8, 41188), m(a, "class", I = /*$ready*/
1553
+ n[35] ? "relative" : "relative w-0 h-0"), a.hidden = T = /*$cameraStatusStore*/
1554
+ n[21] !== Q.OK || J() && /*idrndLoading*/
1555
+ (n[17] || /*idrndClosed*/
1556
+ n[18] || /*waitingIdrndCaptureEvent*/
1557
+ n[19]), v(a, w, 968, 6, 38973), m(s, "class", "relative mx-auto"), v(s, w, 967, 4, 38936), m(i, "class", "flex flex-col justify-between"), v(i, w, 966, 2, 38863), v(e, w, 962, 0, 38628);
1558
+ },
1559
+ l: function(y) {
1560
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
1561
+ },
1562
+ m: function(y, j) {
1563
+ U(y, e, j), f(e, i), f(i, s), f(s, a), Se && Se.m(a, null), f(a, o), pe.m(a, null), f(a, u), $ && $.m(a, null), f(a, b), ee && ee.m(a, null), f(a, d), z && z.m(a, null), f(a, c), te && te.m(a, null), f(a, g), f(a, O), n[55](O), f(a, C), f(a, p), n[56](p), f(a, k), f(a, E), n[57](E), f(a, M), se && se.m(a, null), f(a, B), le && le.m(a, null), f(s, ke), he && he.m(s, null), f(s, ue), ve && ve.m(s, null), f(s, He), A && A.m(s, null), f(s, Ue), H && H.m(s, null), n[60](i), f(e, We), ~G && fe[G].m(e, null), Ae = !0;
1564
+ },
1565
+ p: function(y, j) {
1566
+ l && Se.p(y, j), j[0] & /*unique*/
1567
+ 8192 && $i(r, r = /*unique*/
1568
+ y[13]) ? (pe.d(1), pe = Mi(y), pe.c(), pe.m(a, u)) : pe.p(y, j), /*showConfigButton*/
1569
+ y[4] && /*$ready*/
1570
+ y[35] ? $ ? j[0] & /*showConfigButton*/
1571
+ 16 | j[1] & /*$ready*/
1572
+ 16 && Z($, 1) : ($ = Ui(y), $.c(), Z($, 1), $.m(a, b)) : $ && (Ct(), ae($, 1, 1, () => {
1573
+ $ = null;
1574
+ }), yt()), /*showCameraButton*/
1575
+ y[6] && /*$ready*/
1576
+ y[35] ? ee ? j[0] & /*showCameraButton*/
1577
+ 64 | j[1] & /*$ready*/
1578
+ 16 && Z(ee, 1) : (ee = Wi(y), ee.c(), Z(ee, 1), ee.m(a, d)) : ee && (Ct(), ae(ee, 1, 1, () => {
1579
+ ee = null;
1580
+ }), yt()), /*showAutoCaptureButton*/
1581
+ y[5] && !/*$automaticCapture*/
1582
+ y[25] && !/*showCaptureButton*/
1583
+ y[2] && /*$ready*/
1584
+ y[35] ? z ? j[0] & /*showAutoCaptureButton, $automaticCapture, showCaptureButton*/
1585
+ 33554468 | j[1] & /*$ready*/
1586
+ 16 && Z(z, 1) : (z = Vi(y), z.c(), Z(z, 1), z.m(a, c)) : z && (Ct(), ae(z, 1, 1, () => {
1587
+ z = null;
1588
+ }), yt()), /*showCaptureButton*/
1589
+ y[2] && /*$ready*/
1590
+ y[35] ? te ? (te.p(y, j), j[0] & /*showCaptureButton*/
1591
+ 4 | j[1] & /*$ready*/
1592
+ 16 && Z(te, 1)) : (te = Ki(y), te.c(), Z(te, 1), te.m(a, g)) : te && (Ct(), ae(te, 1, 1, () => {
1593
+ te = null;
1594
+ }), yt()), /*isCountingDown*/
1595
+ y[12] ? se ? se.p(y, j) : (se = ji(y), se.c(), se.m(a, B)) : se && (se.d(1), se = null), /*$enableFaceApi*/
1596
+ y[34] && !/*isCountingDown*/
1597
+ y[12] && /*$faceValidationAlert*/
1598
+ y[26] ? le ? le.p(y, j) : (le = Hi(y), le.c(), le.m(a, null)) : le && (le.d(1), le = null), (!Ae || j[1] & /*$ready*/
1599
+ 16 && I !== (I = /*$ready*/
1600
+ y[35] ? "relative" : "relative w-0 h-0")) && m(a, "class", I), (!Ae || j[0] & /*$cameraStatusStore, idrndLoading, idrndClosed, waitingIdrndCaptureEvent*/
1601
+ 3014656 && T !== (T = /*$cameraStatusStore*/
1602
+ y[21] !== Q.OK || J() && /*idrndLoading*/
1603
+ (y[17] || /*idrndClosed*/
1604
+ y[18] || /*waitingIdrndCaptureEvent*/
1605
+ y[19]))) && hi(a, "hidden", T), j[1] & /*$ready*/
1606
+ 16 && (ne = !J() && !/*$ready*/
1607
+ y[35]), ne ? he ? he.p(y, j) : (he = qi(y), he.c(), he.m(s, ue)) : he && (he.d(1), he = null), j[0] & /*waitingIdrndCaptureEvent*/
1608
+ 524288 && (we = J() && /*waitingIdrndCaptureEvent*/
1609
+ y[19]), we ? ve ? ve.p(y, j) : (ve = Ji(y), ve.c(), ve.m(s, He)) : ve && (ve.d(1), ve = null), j[0] & /*idrndLoading, $cameraStatusStore*/
1610
+ 2228224 && (Te = J() && /*idrndLoading*/
1611
+ y[17] && /*$cameraStatusStore*/
1612
+ y[21] === Q.OK), Te ? A ? A.p(y, j) : (A = zi(y), A.c(), A.m(s, Ue)) : A && (A.d(1), A = null), /*$captured*/
1613
+ y[24] ? H ? H.p(y, j) : (H = Xi(y), H.c(), H.m(s, null)) : H && (H.d(1), H = null);
1614
+ let Ie = G;
1615
+ G = qe(y), G === Ie ? ~G && fe[G].p(y, j) : (x && (Ct(), ae(fe[Ie], 1, 1, () => {
1616
+ fe[Ie] = null;
1617
+ }), yt()), ~G ? (x = fe[G], x ? x.p(y, j) : (x = fe[G] = Ce[G](y), x.c()), Z(x, 1), x.m(e, null)) : x = null);
1618
+ },
1619
+ i: function(y) {
1620
+ Ae || (Z($), Z(ee), Z(z), Z(te), Z(x), Ae = !0);
1621
+ },
1622
+ o: function(y) {
1623
+ ae($), ae(ee), ae(z), ae(te), ae(x), Ae = !1;
1624
+ },
1625
+ d: function(y) {
1626
+ y && W(e), Se && Se.d(), pe.d(y), $ && $.d(), ee && ee.d(), z && z.d(), te && te.d(), n[55](null), n[56](null), n[57](null), se && se.d(), le && le.d(), he && he.d(), ve && ve.d(), A && A.d(), H && H.d(), n[60](null), ~G && fe[G].d();
1627
+ }
1628
+ };
1629
+ return N("SvelteRegisterBlock", {
1630
+ block: Je,
1631
+ id: _o.name,
1632
+ type: "component",
1633
+ source: "",
1634
+ ctx: n
1635
+ }), Je;
1636
+ }
1637
+ function Ni(n, e, i) {
1638
+ const s = e.videoWidth / e.videoHeight, a = i.width / i.height;
1639
+ let l = 0, o = 0, r = e.videoWidth, u = e.videoHeight;
1640
+ s > a ? (r = e.videoHeight * a, l = (e.videoWidth - r) / 2) : s < a && (u = e.videoWidth / a, o = (e.videoHeight - u) / 2), n.drawImage(e, l, o, r, u, 0, 0, i.width, i.height);
1641
+ }
1642
+ function Ko(n, e, i) {
1643
+ let s, a, l, o, r, u, b, d, c, g, O, C, p, k, E, M, B, I, T, ke, ne, ue, we, He, Te, Ue, We, G, x, Ae, Se, pe, $, ee, z, te, se, le;
1644
+ L(Mt, "retakePhoto"), F(n, Mt, (t) => i(79, s = t)), L(mt, "faceFound"), F(n, mt, (t) => i(81, l = t)), L(re, "cameraStatusStore"), F(n, re, (t) => i(21, o = t)), L(yi, "collectorSelect"), F(n, yi, (t) => i(82, r = t)), L(ht, "facingMode"), F(n, ht, (t) => i(83, u = t)), L(Le, "selectedVideoDeviceId"), F(n, Le, (t) => i(22, b = t)), L(Ei, "cameraDevicesStore"), F(n, Ei, (t) => i(84, d = t)), L(Fe, "videoStore"), F(n, Fe, (t) => i(23, c = t)), L($e, "captured"), F(n, $e, (t) => i(24, g = t)), L(Ut, "clearedVideoSrcObject"), F(n, Ut, (t) => i(85, O = t)), L(ni, "_stream"), F(n, ni, (t) => i(86, C = t)), L(je, "automaticCapture"), F(n, je, (t) => i(25, p = t)), L(Ne, "faceValidationAlert"), F(n, Ne, (t) => i(26, k = t)), L(ki, "showLivenessResultToast"), F(n, ki, (t) => i(87, E = t)), L(Wt, "saved"), F(n, Wt, (t) => i(27, M = t)), L(Vt, "justification"), F(n, Vt, (t) => i(28, B = t)), L(Be, "image"), F(n, Be, (t) => i(29, I = t)), L(ge, "requestResult"), F(n, ge, (t) => i(30, T = t)), L(Et, "_"), F(n, Et, (t) => i(31, ke = t)), L(Me, "unconformitiesStore"), F(n, Me, (t) => i(32, ne = t)), L(et, "originalCapture"), F(n, et, (t) => i(88, ue = t)), L(Ri, "boxStore"), F(n, Ri, (t) => i(89, He = t)), L(Ti, "enableFaceApi"), F(n, Ti, (t) => i(34, Te = t)), L(Si, "eyeDistance"), F(n, Si, (t) => i(90, Ue = t)), L(oi, "screenLocked"), F(n, oi, (t) => i(91, We = t)), L(bt, "initializing"), F(n, bt, (t) => i(92, G = t)), L(gt, "ready"), F(n, gt, (t) => i(35, x = t)), L(Kt, "selectedTab"), F(n, Kt, (t) => i(93, Ae = t)), L(Oi, "captureLivenessIdrndEndpoint"), F(n, Oi, (t) => i(94, Se = t)), L(_t, "blob"), F(n, _t, (t) => i(95, pe = t)), L(ai, "idrndInitialized"), F(n, ai, (t) => i(96, $ = t)), L(si, "idrndVideoStoreDimensions"), F(n, si, (t) => i(97, ee = t)), L(vt, "ovalDimensions"), F(n, vt, (t) => i(98, z = t)), L(Ai, "isLoading"), F(n, Ai, (t) => i(36, te = t)), L(Ii, "showFaceWhileValidating"), F(n, Ii, (t) => i(37, se = t)), L(Bi, "exportButtonDisabled"), F(n, Bi, (t) => i(38, le = t));
1645
+ let { $$slots: he = {}, $$scope: ve } = e;
1646
+ Vn("face-collector", he, []);
1647
+ let A, H, Ce, fe = !1, qe = {}, Je = !1, de = !1, y = !1, j = (/* @__PURE__ */ new Date()).getTime(), { enableMinutiae: Ie } = e, { videoDimensions: ze } = e, { noTabs: it } = e, { weightsPath: nt } = e, { evaluatePhoto: Oe } = e, { showCaptureButton: ot } = e, { showUnconformities: St } = e, { videoOverlay: Xe } = e, { videoOverlayTransparency: Ve } = e, { showConfigButton: Ot } = e, { showAutoCaptureButton: Qe } = e, { showCameraButton: At } = e, { showJustificationField: It } = e, { minEyeToEyeDist: Ke } = e;
1648
+ const at = Li(!1);
1649
+ L(at, "startFaceApi"), F(n, at, (t) => i(80, a = t));
1650
+ const Ye = Li("data:image/png;base64");
1651
+ L(Ye, "dataTypePrefix"), F(n, Ye, (t) => i(33, we = t));
1652
+ let { widgetInstance: oe } = e, Pe, X, st = !1, Gt = !1, lt = !0, ye = !0, rt = !1, Zt = 0, Ee = "", Bt = 0, gi = 5, xt = 3e3, Dt = !0, Pt = 0, Lt = !1;
1653
+ const ct = wn.mixin({
1654
+ toast: !0,
1655
+ position: "bottom-left",
1656
+ timer: 13e3,
1657
+ timerProgressBar: !0
1658
+ });
1659
+ pn(async () => {
1660
+ Cn("Mounting Face Collector!"), h(bt, G = !0, G), h(gt, x = !1, x), _i(), J() && (import("./index-no-detector_4b302e78_2.2.21-RC05.js"), tn()), Te && (await yn(nt), Je = !0), await Ge(), on();
1661
+ });
1662
+ function _i() {
1663
+ h(mt, l = !1, l), h($e, g = !1, g), h(ht, u = li.FRONT_CAMERA, u), h(re, o = Q.OK, o), Qe && h(je, p = !1, p), h(Wt, M = !1, M), h(ge, T = Y.OK, T), h(et, ue = "", ue), h(Me, ne.unconformities = [], ne);
1664
+ const t = Qt(ri);
1665
+ t.closedMouth = !1, t.isPersonCloseEnough = !1, t.isPersonTooclose = !0, t.isPersonInFrame = !1, ri.set(t), h(Ne, k = "", k);
1666
+ }
1667
+ function $t(t, S) {
1668
+ t.clearRect(0, 0, X.width, X.height), t.save(), Xe != "none" ? (Ve > 0 && (t.globalAlpha = Ve / 100), t.fillStyle = Xe, t.fillRect(0, 0, X.width, X.height)) : (t.beginPath(), t.rect(0, 0, X.width, X.height));
1669
+ let R = X.height * 0.8;
1670
+ const D = c.videoWidth / 2;
1671
+ let P = c.videoHeight * 0.5;
1672
+ (Qe || ot) && (P = c.videoHeight * 0.44), De() && (R = X.height * 0.65, P = c.videoHeight * 0.51);
1673
+ const ie = R / 1.45;
1674
+ h(vt, z.width = ie, z), h(vt, z.height = R, z), h(vt, z.y = P, z), t.ellipse(D, P, ie / 2, R / 2, 0, 0, 2 * Math.PI, !0), Ve == 0 && t.clip(), Ni(t, S, X), t.restore(), t.save(), t.beginPath();
1675
+ const ft = window.getComputedStyle(X).getPropertyValue("--p"), dt = window.getComputedStyle(X).getPropertyValue("--su");
1676
+ if (t.strokeStyle = `hsl(${ft})`, t.lineWidth = 16, t.ellipse(D, P, ie / 2, R / 2, 0, 0, 2 * Math.PI), t.stroke(), fe && !Lt) {
1677
+ const Nt = 1 - (Pt - (/* @__PURE__ */ new Date()).getTime()) / xt;
1678
+ t.save(), t.beginPath(), t.lineWidth = 16, t.strokeStyle = `hsl(${dt})`, t.ellipse(D, P, ie / 2, R / 2, 0, 0 - Math.PI / 2, 1.5 * (Math.PI * 2 * Nt) - Math.PI / 2), t.stroke();
1679
+ }
1680
+ t.beginPath();
1681
+ const me = new Path2D();
1682
+ me.ellipse(D, P, ie / 2, R / 2, 0, 0, 2 * Math.PI), t.clip(me), Ni(t, S, X), t.restore();
1683
+ }
1684
+ function tn() {
1685
+ oe.addEventListener("open", (t) => {
1686
+ const S = t.detail[0].video;
1687
+ h(
1688
+ si,
1689
+ ee = {
1690
+ width: S.videoWidth,
1691
+ height: S.videoHeight
1692
+ },
1693
+ ee
1694
+ ), i(9, A.srcObject = S.srcObject, A), i(17, lt = !1);
1695
+ function R() {
1696
+ ye || ($t(X.getContext("2d"), S), tt(A, R, !0));
1697
+ }
1698
+ R();
1699
+ }), oe.addEventListener("error", (t) => {
1700
+ console.error(t), t.detail[0].message === "Device in use" ? h(re, o = Q.CAMERA_IN_USE_ERROR, o) : t.detail[0].message === "Permission denied" || t.detail[0].message === "Permission dismissed" ? h(re, o = Q.CAMERA_DENIED_ERROR, o) : t.detail[0].message === "Requested device not found" && h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o), i(17, lt = !1);
1701
+ }), oe.addEventListener("faceDetection", (t) => {
1702
+ }), oe.addEventListener("close", async (t) => {
1703
+ g || (st = !1), i(18, ye = !0), i(19, rt = !1), o === Q.OK && h(re, o = Q.CAMERA_CLOSED_ERROR, o);
1704
+ }), oe.addEventListener("initialize", async (t) => {
1705
+ Gt = !0, h(ai, $ = !0, $);
1706
+ }), oe.addEventListener("capture", async (t) => {
1707
+ i(20, Ee = "");
1708
+ const { encryptedFile: S, photo: R } = t.detail[0];
1709
+ h(_t, pe = S, pe), i(19, rt = !1), h(ge, T = Y.OK, T), h(Me, ne.isLoading = !0, ne), h($e, g = !0, g), st = !1;
1710
+ const D = (await jt(R)).split(",");
1711
+ if (h(Ye, we = D[0], we), h(Be, I = D[1], I), h(et, ue = D[1], ue), !Se) {
1712
+ let me, Nt;
1713
+ try {
1714
+ ({ bodyParts: me, icaoWarnings: Nt } = await Ht(ue, Oe, (await jt(S)).split(",")[1])), window.dispatchEvent(new CustomEvent(
1715
+ "face-unconformities-validated",
1716
+ {
1717
+ detail: {
1718
+ bodyParts: me,
1719
+ icaoWarnings: Nt,
1720
+ status: T
1721
+ }
1722
+ }
1723
+ ));
1724
+ } catch (xe) {
1725
+ console.error(xe);
1726
+ let ii = wt.UNKNOWN, Ci = [], _n = [];
1727
+ if (xe instanceof ci && xe.response?.status === 400)
1728
+ if (xe.response.data && Array.isArray(xe.response.data.bodyParts)) {
1729
+ Ci = xe.response.data.bodyParts, _n = xe.response.data.icaoWarnings;
1730
+ const vn = Ci.find((No) => No.livenessResult.error);
1731
+ ii = vn?.livenessResult.error_code, h(ge, T = Y.LIVENESS_DETECTION_FAILURE, T), vn?.livenessResult.error_code || h(ge, T = Y.UNKNOWN_LIVENESS_ERROR, T), i(20, Ee = wt[ii]), console.error("Liveness error:", ii);
1732
+ } else
1733
+ h(ge, T = Y.TEMPLATE_EXTRACTION_ERROR, T);
1734
+ else
1735
+ h(ge, T = Y.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE, T), Oe && ct.fire({
1736
+ icon: "error",
1737
+ title: "Falha ao comunicar com serviço de Liveness"
1738
+ });
1739
+ h(Me, ne.isLoading = !1, ne), window.dispatchEvent(new CustomEvent(
1740
+ "face-unconformities-validated",
1741
+ {
1742
+ detail: {
1743
+ bodyParts: Ci,
1744
+ errorCode: ii,
1745
+ translatedError: ke(Ee),
1746
+ status: T,
1747
+ icaoWarnings: _n
1748
+ }
1749
+ }
1750
+ ));
1751
+ return;
1752
+ }
1753
+ if (T !== Y.OK) {
1754
+ h(Me, ne.isLoading = !1, ne);
1755
+ return;
1756
+ }
1757
+ me[0].livenessResult && wi(me[0].livenessResult), me.length !== 0 && me[0].data && h(Be, I = me[0].data, I), qt(Nt);
1758
+ return;
1759
+ }
1760
+ let P, ie;
1761
+ try {
1762
+ ie = await En(S), wi(ie.data);
1763
+ } catch (me) {
1764
+ h(ge, T = Y.UNKNOWN_LIVENESS_ERROR, T), console.error(me), me instanceof ci && me.response?.status === 400 ? (P = me.response.data.error_code, i(20, Ee = wt[P]), console.error("Liveness error:", P), h(ge, T = Y.LIVENESS_DETECTION_FAILURE, T)) : ct.fire({
1765
+ icon: "error",
1766
+ title: "Falha ao comunicar com serviço de Liveness"
1767
+ });
1768
+ }
1769
+ if (T !== Y.OK) {
1770
+ h(Me, ne.isLoading = !1, ne), window.dispatchEvent(new CustomEvent(
1771
+ "face-unconformities-validated",
1772
+ {
1773
+ detail: {
1774
+ bodyParts: [
1775
+ {
1776
+ bodyPart: "FACE",
1777
+ data: ue,
1778
+ livenessBlob: (await jt(S)).split(",")[1],
1779
+ ...ie && { livenessResult: ie }
1780
+ }
1781
+ ],
1782
+ ...P && { errorCode: P },
1783
+ ...Ee && { translatedError: ke(Ee) },
1784
+ status: T
1785
+ }
1786
+ }
1787
+ ));
1788
+ return;
1789
+ }
1790
+ let { bodyParts: ft, icaoWarnings: dt } = await Ht(ue, Oe);
1791
+ window.dispatchEvent(new CustomEvent(
1792
+ "face-unconformities-validated",
1793
+ {
1794
+ detail: {
1795
+ bodyParts: ft,
1796
+ icaoWarnings: dt,
1797
+ status: T,
1798
+ errorCode: P,
1799
+ ...Ee && { translatedError: ke(Ee) }
1800
+ }
1801
+ }
1802
+ )), ft[0].data && h(Be, I = ft[0].data, I), qt(dt);
1803
+ });
1804
+ }
1805
+ async function Ge(t) {
1806
+ const [S, R] = (ze ?? "")?.replaceAll(" ", "")?.split("x")?.map((D) => D ? parseInt(D) : void 0);
1807
+ if (!(!S || !R)) {
1808
+ if (h(Fe, c = { videoWidth: S, videoHeight: R }, c), J() && R < S && De() && h(Fe, c = { videoWidth: R, videoHeight: S }, c), J()) {
1809
+ ei();
1810
+ return;
1811
+ }
1812
+ await nn(S, R, t);
1813
+ }
1814
+ }
1815
+ async function ei() {
1816
+ if (J() && (h(re, o = Q.OK, o), oe && "openCamera" in oe && oe.openCamera(), st = !0, i(18, ye = !1), i(17, lt = !0), !d[0]?.deviceId)) {
1817
+ const [t, S] = (ze ?? "")?.replaceAll(" ", "")?.split("x")?.map((R) => R ? parseInt(R) : void 0);
1818
+ if (!t || !S)
1819
+ return;
1820
+ await Di(t, S, u), await ui();
1821
+ }
1822
+ }
1823
+ async function ut() {
1824
+ if (Te && !Je)
1825
+ return tt(A, ut);
1826
+ if (A) {
1827
+ if (Ae !== fi.Face && !it)
1828
+ return tt(A, ut);
1829
+ h(gt, x = !0, x), h(bt, G = !1, G), Te ? (a || h(at, a = !0, a), J() || $t(X.getContext("2d"), A), tt(A, ut)) : ($t(X.getContext("2d"), A), tt(A, ut));
1830
+ }
1831
+ }
1832
+ async function vi() {
1833
+ if (We && (Pi(), h(oi, We = !1, We)), Ke > 0 && Ue < Ke) {
1834
+ let t = "FACE_MUITO_PEQUENA";
1835
+ const S = Fi[t];
1836
+ t = Fi.FACE_MUITO_PEQUENA, window.dispatchEvent(new CustomEvent(
1837
+ "low-quality-face",
1838
+ {
1839
+ detail: {
1840
+ errorCode: t,
1841
+ translatedError: ke(S),
1842
+ bodyParts: [
1843
+ {
1844
+ bodyPart: "FACE",
1845
+ minEyeToEyeDist: Ke,
1846
+ capturedEyeToEyeDist: Ue
1847
+ }
1848
+ ]
1849
+ }
1850
+ }
1851
+ )), ct.fire({
1852
+ icon: "error",
1853
+ title: ke(S)
1854
+ });
1855
+ return;
1856
+ }
1857
+ if (h(ge, T = Y.OK, T), J()) {
1858
+ i(19, rt = !0), oe.takePhoto();
1859
+ return;
1860
+ }
1861
+ h($e, g = !0, g);
1862
+ try {
1863
+ if (Te) {
1864
+ const [t] = await (await import("./face_api_0e3ce8c8_2.2.21-RC05.js")).extractFaces(A, [He]), S = t.toDataURL("image/jpeg").split(",");
1865
+ h(Ye, we = S[0], we), h(Be, I = S[1], I), h(et, ue = S[1], ue);
1866
+ let R, D;
1867
+ ({ bodyParts: R, icaoWarnings: D } = await Ht(I, Oe)), window.dispatchEvent(new CustomEvent(
1868
+ "face-unconformities-validated",
1869
+ {
1870
+ detail: {
1871
+ bodyParts: R,
1872
+ icaoWarnings: D,
1873
+ status: T
1874
+ }
1875
+ }
1876
+ )), R.length !== 0 && R[0].data && h(Be, I = R[0].data, I), qt(D);
1877
+ } else {
1878
+ const t = document.createElement("canvas"), S = t.getContext("2d");
1879
+ t.width = A.width, t.height = A.height, S?.drawImage(A, 0, 0, t.width, t.height);
1880
+ const R = t.toDataURL("image/jpeg").split(",");
1881
+ h(Ye, we = R[0], we), h(Be, I = R[1], I), h(et, ue = R[1], ue);
1882
+ let { bodyParts: D, icaoWarnings: P } = await Ht(I, Oe);
1883
+ window.dispatchEvent(new CustomEvent(
1884
+ "face-unconformities-validated",
1885
+ {
1886
+ detail: {
1887
+ bodyParts: D,
1888
+ icaoWarnings: P,
1889
+ status: T
1890
+ }
1891
+ }
1892
+ )), D.length !== 0 && D[0].data && h(Be, I = D[0].data, I), qt(P);
1893
+ }
1894
+ } catch (t) {
1895
+ console.error(t);
1896
+ let S = wt.UNKNOWN, R = [], D = [];
1897
+ if (t instanceof ci && t.response?.status === 400)
1898
+ if (t.response.data && Array.isArray(t.response.data.bodyParts)) {
1899
+ R = t.response.data.bodyParts, D = t.response.data.icaoWarnings;
1900
+ const P = R.find((ie) => ie.livenessResult.error);
1901
+ S = P?.livenessResult.error_code, h(ge, T = Y.LIVENESS_DETECTION_FAILURE, T), P?.livenessResult.error_code || h(ge, T = Y.UNKNOWN_LIVENESS_ERROR, T), i(20, Ee = wt[S]), console.error("Liveness error:", S);
1902
+ } else
1903
+ h(ge, T = Y.TEMPLATE_EXTRACTION_ERROR, T);
1904
+ else
1905
+ h(ge, T = Y.UNABLE_TO_COMMUNICATE_WITH_TEMPLATE_EXTRACTION_SERVICE, T), Oe && ct.fire({
1906
+ icon: "error",
1907
+ title: "Falha ao comunicar com serviço de Liveness"
1908
+ });
1909
+ h(Me, ne.isLoading = !1, ne), window.dispatchEvent(new CustomEvent(
1910
+ "face-unconformities-validated",
1911
+ {
1912
+ detail: {
1913
+ bodyParts: R,
1914
+ errorCode: S,
1915
+ translatedError: ke(Ee),
1916
+ status: T,
1917
+ icaoWarnings: D
1918
+ }
1919
+ }
1920
+ ));
1921
+ return;
1922
+ }
1923
+ }
1924
+ function Ft() {
1925
+ const t = {
1926
+ bodyPart: "FACE",
1927
+ data: I,
1928
+ justification: B
1929
+ };
1930
+ h(Wt, M = !0, M), Qt(_t) && jt(Qt(_t)).then((S) => {
1931
+ t.livenessBlob = S.split(",")[1];
1932
+ }), window.dispatchEvent(new CustomEvent("export-face", { detail: t }));
1933
+ }
1934
+ function Ze() {
1935
+ window.dispatchEvent(new CustomEvent("face-scrapped")), _i(), ye && ei();
1936
+ }
1937
+ function wi(t) {
1938
+ let S = "", R = "success";
1939
+ t.isAlive ? S = `Vivacidade de face (${t.face_liveness.probability.toFixed(2)}) e de captura (${t.capture_liveness.probability}, ${t.capture_liveness.score.toFixed(2)}) verificados!` : t?.face_liveness?.probability && (R = "error", S = `Vivacidade de face (${t.face_liveness.probability.toFixed(2)}) e de captura (${t.capture_liveness.probability}, ${t.capture_liveness.score.toFixed(2)}) insuficientes!`), E && ct.fire({ icon: R, title: S });
1940
+ }
1941
+ async function nn(t, S, R) {
1942
+ try {
1943
+ const { deviceId: D, width: P, height: ie, aspectRatio: ft, facingMode: dt, touchPoints: me } = await Di(t, S, u, R);
1944
+ P < t && ie < S && h(
1945
+ Fe,
1946
+ c = {
1947
+ videoWidth: P,
1948
+ videoHeight: ie
1949
+ },
1950
+ c
1951
+ ), De() && (!dt || me <= 1) && P > ie && h(
1952
+ Fe,
1953
+ c = {
1954
+ videoWidth: ie,
1955
+ videoHeight: P
1956
+ },
1957
+ c
1958
+ ), h(Le, b = D || d[0].deviceId, b);
1959
+ } catch (D) {
1960
+ const P = D;
1961
+ i(18, ye = !0);
1962
+ const ie = Jt(D) && D.constraint ? D.constraint : "";
1963
+ console.error(P, ie), Jt(P) && "message" in P && P.message.includes("Permission denied") && (console.error("User didn't give permission to use camera!"), h(re, o = Q.CAMERA_DENIED_ERROR, o)), Jt(P) && "message" in P && P.message.includes("Requested device not found") && h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o), (ie.includes("width") || ie.includes("height")) && (console.error(`Camera does not meet the minimum supported requirements! (${ie})`), h(re, o = Q.CAMERA_UNSUPPORTED, o));
1964
+ }
1965
+ }
1966
+ async function ti() {
1967
+ h(Le, b = "", b), await Ge();
1968
+ }
1969
+ function on() {
1970
+ navigator.mediaDevices.ondevicechange = async (t) => {
1971
+ await ui(), o !== Q.OK ? await ti() : (!J() && !C.active || J() && !ye) && (zt(oe), h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o), i(18, ye = !0));
1972
+ };
1973
+ }
1974
+ async function an() {
1975
+ h(mt, l = !1, l);
1976
+ const t = (/* @__PURE__ */ new Date()).getTime();
1977
+ if (t - j > 5e3) {
1978
+ i(14, y = !0), j = t;
1979
+ try {
1980
+ const R = await Bn(A);
1981
+ if (R < 50) {
1982
+ h(Ne, k = "faceCollector.illuminationTooLow", k);
1983
+ return;
1984
+ }
1985
+ if (R > 180) {
1986
+ h(Ne, k = "faceCollector.illuminationTooHigh", k);
1987
+ return;
1988
+ }
1989
+ } catch (R) {
1990
+ console.warn("An error occurred while getting the video lighting level: ", R);
1991
+ }
1992
+ try {
1993
+ if (await Dn(A) < 5) {
1994
+ h(Ne, k = "faceCollector.lowSharpness", k);
1995
+ return;
1996
+ }
1997
+ } catch (R) {
1998
+ console.warn("An error occurred while getting the video sharpness level: ", R);
1999
+ }
2000
+ h(Ne, k = "faceCollector.faceWasNotFound", k);
2001
+ } else
2002
+ de || (de = !0, setTimeout(
2003
+ () => {
2004
+ let R = [
2005
+ "faceCollector.faceWasNotFound",
2006
+ "faceCollector.illuminationTooLow",
2007
+ "faceCollector.lowSharpness",
2008
+ "faceCollector.illuminationTooHigh"
2009
+ ];
2010
+ de = !1, k && !R.includes(k) && h(Ne, k = "", k);
2011
+ },
2012
+ 1500
2013
+ ));
2014
+ }
2015
+ const sn = Fe.subscribe((t) => {
2016
+ A && H && (i(9, A.width = t.videoWidth, A), i(9, A.height = t.videoHeight, A), i(10, H.width = t.videoWidth, H), i(10, H.height = t.videoHeight, H), i(15, Pe.width = t.videoWidth, Pe), i(15, Pe.height = t.videoHeight, Pe), i(16, X.width = t.videoWidth, X), i(16, X.height = t.videoHeight, X));
2017
+ }), ln = ri.subscribe((t) => {
2018
+ if (r == "DOCUMENT")
2019
+ return;
2020
+ let S = "";
2021
+ if (t.isPersonCloseEnough ? t.isPersonTooclose ? S = "faceCollector.moveAwayCamera" : t.isPersonInFrame ? t.closedMouth || (S = "faceCollector.dontOpenMouth") : S = "faceCollector.stayInFrame" : S = "faceCollector.comeCloserCamera", l && kn(S), !g && p && l && !fe && t.isPersonInFrame && t.closedMouth && !(!t.isPersonCloseEnough || t.isPersonTooclose)) {
2022
+ i(12, fe = !0), Pt = (/* @__PURE__ */ new Date()).getTime() + xt;
2023
+ const R = setInterval(
2024
+ () => {
2025
+ if (!p || g || J() && ye || !t.isPersonCloseEnough || t.isPersonTooclose || !t.closedMouth || !t.isPersonInFrame) {
2026
+ i(12, fe = !1), Lt = !0, setTimeout(
2027
+ () => {
2028
+ Lt = !1;
2029
+ },
2030
+ 1500
2031
+ ), clearInterval(R);
2032
+ return;
2033
+ }
2034
+ const D = (/* @__PURE__ */ new Date()).getTime();
2035
+ Math.floor((Pt - D) % (1e3 * 60) / 1e3) <= 0 && (clearInterval(R), i(12, fe = !1), vi());
2036
+ },
2037
+ 100
2038
+ );
2039
+ }
2040
+ }), rn = $e.subscribe((t) => {
2041
+ Ce && (t ? (Ce.classList.remove("flex"), Ce.classList.add("hidden")) : (Ce.classList.add("flex"), Ce.classList.remove("hidden")));
2042
+ }), cn = Ut.subscribe((t) => {
2043
+ A && t && (console.log("setting null in video srcObject"), i(9, A.srcObject = null, A), i(9, A.src = "", A), h(Le, b = null, b));
2044
+ });
2045
+ Kt.subscribe(async (t) => {
2046
+ t === fi.Face && (await ui(), J() && h(Le, b = d[0]?.deviceId, b));
2047
+ });
2048
+ const un = Le.subscribe(async (t) => {
2049
+ if (!t || r == "DOCUMENT" || J() && ye)
2050
+ return;
2051
+ A || i(13, qe = {});
2052
+ const { videoHeight: S, videoWidth: R } = c;
2053
+ try {
2054
+ if (J()) {
2055
+ await zt(oe), await ei();
2056
+ return;
2057
+ }
2058
+ const D = await Rn(R, S, t);
2059
+ i(9, A.srcObject = D, A), h(ni, C = D, C), h(Ut, O = !1, O), Dt ? h(re, o = Q.OK, o) : h(re, o = Q.CAMERA_ORIENTATION_PORTRAIT, o), D.getTracks().forEach((P) => {
2060
+ P.readyState === "live" && console.log(`Camera ${P.label} opened successfully!`);
2061
+ });
2062
+ } catch (D) {
2063
+ const P = D;
2064
+ i(18, ye = !0), Jt(P) && "message" in P && P.message.includes("Requested device not found") && h(re, o = Q.DEVICE_NOT_FOUND_ERROR, o);
2065
+ }
2066
+ }), fn = Kt.subscribe(async (t) => {
2067
+ t === fi.Face && J() && !st && !g && Gt && await Ge();
2068
+ }), dn = at.subscribe(async (t) => {
2069
+ t && pi();
2070
+ }), mn = Tn.subscribe(async (t) => {
2071
+ if (c) {
2072
+ if (zt(), !De()) {
2073
+ const R = (d.findIndex((P) => P.deviceId === b) + 1) % d.length, D = d[R].deviceId;
2074
+ J() ? h(Le, b = D, b) : await Ge(D);
2075
+ return;
2076
+ }
2077
+ t ? (h(ht, u = li.REAR_CAMERA, u), await Ge()) : (h(ht, u = li.FRONT_CAMERA, u), await Ge());
2078
+ }
2079
+ }), hn = Sn.subscribe(async (t) => {
2080
+ !t.isSupported || !De() || r != "FACE" || (Dt = t.orientation.includes("portrait"), Dt ? h(re, o = Q.OK, o) : h(re, o = Q.CAMERA_ORIENTATION_PORTRAIT, o));
2081
+ });
2082
+ async function pi() {
2083
+ let t;
2084
+ if (Bt >= gi) {
2085
+ Bt = 0;
2086
+ const S = await In(), R = await import("./face_api_0e3ce8c8_2.2.21-RC05.js");
2087
+ let D;
2088
+ D = R.detectSingleFace(X, S), t = await D.withFaceLandmarks(), H.getContext("2d")?.clearRect(0, 0, H.width, H.height), t != null ? (An(t, H, Ie), h(mt, l = !0, l), i(14, y = !0), j = (/* @__PURE__ */ new Date()).getTime()) : an();
2089
+ } else
2090
+ Bt++;
2091
+ a && tt(A, pi);
2092
+ }
2093
+ Mt.subscribe(async (t) => {
2094
+ t && (Ze(), h(Mt, s = !1, s));
2095
+ });
2096
+ const bn = gt.subscribe((t) => {
2097
+ t && window.dispatchEvent(new CustomEvent("brycc-camera-ready"));
2098
+ }), gn = bt.subscribe((t) => {
2099
+ t && window.dispatchEvent(new CustomEvent("brycc-face-initialized"));
2100
+ });
2101
+ On(() => {
2102
+ zt(), rn(), ln(), sn(), cn(), un(), fn(), clearInterval(Zt), dn(), mn(), hn(), bn(), gn(), Pi(), Zt = 0;
2103
+ }), n.$$.on_mount.push(function() {
2104
+ Ie === void 0 && !("enableMinutiae" in e || n.$$.bound[n.$$.props.enableMinutiae]) && _e.warn("<face-collector> was created without expected prop 'enableMinutiae'"), ze === void 0 && !("videoDimensions" in e || n.$$.bound[n.$$.props.videoDimensions]) && _e.warn("<face-collector> was created without expected prop 'videoDimensions'"), it === void 0 && !("noTabs" in e || n.$$.bound[n.$$.props.noTabs]) && _e.warn("<face-collector> was created without expected prop 'noTabs'"), nt === void 0 && !("weightsPath" in e || n.$$.bound[n.$$.props.weightsPath]) && _e.warn("<face-collector> was created without expected prop 'weightsPath'"), Oe === void 0 && !("evaluatePhoto" in e || n.$$.bound[n.$$.props.evaluatePhoto]) && _e.warn("<face-collector> was created without expected prop 'evaluatePhoto'"), ot === void 0 && !("showCaptureButton" in e || n.$$.bound[n.$$.props.showCaptureButton]) && _e.warn("<face-collector> was created without expected prop 'showCaptureButton'"), St === void 0 && !("showUnconformities" in e || n.$$.bound[n.$$.props.showUnconformities]) && _e.warn("<face-collector> was created without expected prop 'showUnconformities'"), Xe === void 0 && !("videoOverlay" in e || n.$$.bound[n.$$.props.videoOverlay]) && _e.warn("<face-collector> was created without expected prop 'videoOverlay'"), Ve === void 0 && !("videoOverlayTransparency" in e || n.$$.bound[n.$$.props.videoOverlayTransparency]) && _e.warn("<face-collector> was created without expected prop 'videoOverlayTransparency'"), Ot === void 0 && !("showConfigButton" in e || n.$$.bound[n.$$.props.showConfigButton]) && _e.warn("<face-collector> was created without expected prop 'showConfigButton'"), Qe === void 0 && !("showAutoCaptureButton" in e || n.$$.bound[n.$$.props.showAutoCaptureButton]) && _e.warn("<face-collector> was created without expected prop 'showAutoCaptureButton'"), At === void 0 && !("showCameraButton" in e || n.$$.bound[n.$$.props.showCameraButton]) && _e.warn("<face-collector> was created without expected prop 'showCameraButton'"), It === void 0 && !("showJustificationField" in e || n.$$.bound[n.$$.props.showJustificationField]) && _e.warn("<face-collector> was created without expected prop 'showJustificationField'"), Ke === void 0 && !("minEyeToEyeDist" in e || n.$$.bound[n.$$.props.minEyeToEyeDist]) && _e.warn("<face-collector> was created without expected prop 'minEyeToEyeDist'"), oe === void 0 && !("widgetInstance" in e || n.$$.bound[n.$$.props.widgetInstance]) && _e.warn("<face-collector> was created without expected prop 'widgetInstance'");
2105
+ });
2106
+ const vo = [
2107
+ "enableMinutiae",
2108
+ "videoDimensions",
2109
+ "noTabs",
2110
+ "weightsPath",
2111
+ "evaluatePhoto",
2112
+ "showCaptureButton",
2113
+ "showUnconformities",
2114
+ "videoOverlay",
2115
+ "videoOverlayTransparency",
2116
+ "showConfigButton",
2117
+ "showAutoCaptureButton",
2118
+ "showCameraButton",
2119
+ "showJustificationField",
2120
+ "minEyeToEyeDist",
2121
+ "widgetInstance"
2122
+ ];
2123
+ Object.keys(e).forEach((t) => {
2124
+ !~vo.indexOf(t) && t.slice(0, 2) !== "$$" && t !== "slot" && _e.warn(`<face-collector> was created with unknown prop '${t}'`);
2125
+ });
2126
+ function wo(t) {
2127
+ pt[t ? "unshift" : "push"](() => {
2128
+ oe = t, i(0, oe);
2129
+ });
2130
+ }
2131
+ function po(t) {
2132
+ pt[t ? "unshift" : "push"](() => {
2133
+ A = t, i(9, A);
2134
+ });
2135
+ }
2136
+ const Co = () => {
2137
+ J() || h(
2138
+ Fe,
2139
+ c = {
2140
+ videoHeight: A.videoHeight,
2141
+ videoWidth: A.videoWidth
2142
+ },
2143
+ c
2144
+ );
2145
+ };
2146
+ function yo(t) {
2147
+ pt[t ? "unshift" : "push"](() => {
2148
+ X = t, i(16, X);
2149
+ });
2150
+ }
2151
+ function Eo(t) {
2152
+ pt[t ? "unshift" : "push"](() => {
2153
+ H = t, i(10, H);
2154
+ });
2155
+ }
2156
+ function ko(t) {
2157
+ pt[t ? "unshift" : "push"](() => {
2158
+ Pe = t, i(15, Pe);
2159
+ });
2160
+ }
2161
+ const Ro = () => Ft(), To = () => Ze();
2162
+ function So(t) {
2163
+ pt[t ? "unshift" : "push"](() => {
2164
+ Ce = t, i(11, Ce);
2165
+ });
2166
+ }
2167
+ const Oo = () => Ft(), Ao = () => Ze();
2168
+ function Io() {
2169
+ B = this.value, Vt.set(B);
2170
+ }
2171
+ const Bo = () => Ft(), Do = () => Ze();
2172
+ function Po() {
2173
+ B = this.value, Vt.set(B);
2174
+ }
2175
+ const Lo = () => Ze(), Fo = async () => {
2176
+ await ti();
2177
+ };
2178
+ return n.$$set = (t) => {
2179
+ "enableMinutiae" in t && i(45, Ie = t.enableMinutiae), "videoDimensions" in t && i(46, ze = t.videoDimensions), "noTabs" in t && i(47, it = t.noTabs), "weightsPath" in t && i(48, nt = t.weightsPath), "evaluatePhoto" in t && i(1, Oe = t.evaluatePhoto), "showCaptureButton" in t && i(2, ot = t.showCaptureButton), "showUnconformities" in t && i(3, St = t.showUnconformities), "videoOverlay" in t && i(49, Xe = t.videoOverlay), "videoOverlayTransparency" in t && i(50, Ve = t.videoOverlayTransparency), "showConfigButton" in t && i(4, Ot = t.showConfigButton), "showAutoCaptureButton" in t && i(5, Qe = t.showAutoCaptureButton), "showCameraButton" in t && i(6, At = t.showCameraButton), "showJustificationField" in t && i(7, It = t.showJustificationField), "minEyeToEyeDist" in t && i(51, Ke = t.minEyeToEyeDist), "widgetInstance" in t && i(0, oe = t.widgetInstance);
2180
+ }, n.$capture_state = () => ({
2181
+ CameraStatus: Jn,
2182
+ onDestroy: On,
2183
+ onMount: pn,
2184
+ _: Et,
2185
+ isLoading: Ai,
2186
+ get: Qt,
2187
+ writable: Li,
2188
+ selectedTab: Kt,
2189
+ TabEnum: fi,
2190
+ cameraDeniedPermission: Mo,
2191
+ faceValidationsStore: ri,
2192
+ getFaceUnconformities: Ht,
2193
+ image: Be,
2194
+ unconformitiesStore: Me,
2195
+ setupStream: Rn,
2196
+ videoStore: Fe,
2197
+ requestResult: ge,
2198
+ cameraDevicesStore: Ei,
2199
+ justification: Vt,
2200
+ saved: Wt,
2201
+ captured: $e,
2202
+ _stream: ni,
2203
+ shutOffCamera: zt,
2204
+ ready: gt,
2205
+ initializing: bt,
2206
+ clearedVideoSrcObject: Ut,
2207
+ enumerateDevices: ui,
2208
+ originalCapture: et,
2209
+ automaticCapture: je,
2210
+ selectedVideoDeviceId: Le,
2211
+ translateAndSetUnconformities: qt,
2212
+ requestResultEnum: Y,
2213
+ retakePhoto: Mt,
2214
+ showFaceWhileValidating: Ii,
2215
+ getVideoDimensions: Di,
2216
+ FaceExportStrategy: Kn,
2217
+ orientationData: Sn,
2218
+ FacingModeEnum: li,
2219
+ facingMode: ht,
2220
+ unconformityToi18nKey: Fi,
2221
+ swapCamera: Tn,
2222
+ ConfBtn: jn,
2223
+ CameraBtn: zn,
2224
+ AutoCaptureBtn: en,
2225
+ ExportBtn: Hn,
2226
+ enableStrategy: qn,
2227
+ exportButtonDisabled: Bi,
2228
+ boxStore: Ri,
2229
+ drawDetectionsInFace: An,
2230
+ enableFaceApi: Ti,
2231
+ faceFound: mt,
2232
+ getFaceDetectorOptions: In,
2233
+ ovalDimensions: vt,
2234
+ faceValidationAlert: Ne,
2235
+ eyeDistance: Si,
2236
+ setValidationAlert: kn,
2237
+ blobToBase64: jt,
2238
+ isMobile: De,
2239
+ isObject: Jt,
2240
+ loadFaceApiAndWeights: yn,
2241
+ loopCaller: tt,
2242
+ unLockScreen: Pi,
2243
+ getImageLightness: Bn,
2244
+ getImageSharpness: Dn,
2245
+ collectorSelect: yi,
2246
+ isLivenessEnabled: J,
2247
+ screenLocked: oi,
2248
+ loadingGif: mi,
2249
+ getLivenessIdrnd: En,
2250
+ blob: _t,
2251
+ idrndErrorToi18nKey: wt,
2252
+ showLivenessResultToast: ki,
2253
+ captureLivenessIdrndEndpoint: Oi,
2254
+ idrndInitialized: ai,
2255
+ idrndVideoStoreDimensions: si,
2256
+ Swal: wn,
2257
+ AxiosError: ci,
2258
+ cameraStatusStore: re,
2259
+ CameraStatusEnum: Q,
2260
+ log: Cn,
2261
+ TakePictureBtn: Xn,
2262
+ video: A,
2263
+ detectionsCanvas: H,
2264
+ enclosingDiv: Ce,
2265
+ isCountingDown: fe,
2266
+ unique: qe,
2267
+ loadedFaceApiAndWeights: Je,
2268
+ waitingFaceNotFoundTimeout: de,
2269
+ enableCaptureButton: y,
2270
+ faceFoundStartTime: j,
2271
+ enableMinutiae: Ie,
2272
+ videoDimensions: ze,
2273
+ noTabs: it,
2274
+ weightsPath: nt,
2275
+ evaluatePhoto: Oe,
2276
+ showCaptureButton: ot,
2277
+ showUnconformities: St,
2278
+ videoOverlay: Xe,
2279
+ videoOverlayTransparency: Ve,
2280
+ showConfigButton: Ot,
2281
+ showAutoCaptureButton: Qe,
2282
+ showCameraButton: At,
2283
+ showJustificationField: It,
2284
+ minEyeToEyeDist: Ke,
2285
+ startFaceApi: at,
2286
+ dataTypePrefix: Ye,
2287
+ widgetInstance: oe,
2288
+ maskCanvas: Pe,
2289
+ displayCanvas: X,
2290
+ capturing: st,
2291
+ initialized: Gt,
2292
+ idrndLoading: lt,
2293
+ idrndClosed: ye,
2294
+ waitingIdrndCaptureEvent: rt,
2295
+ intervalId: Zt,
2296
+ livenessError: Ee,
2297
+ faceApiCounter: Bt,
2298
+ faceApiFrameRate: gi,
2299
+ countDownCapture: xt,
2300
+ rightOrientation: Dt,
2301
+ countDownFinishTime: Pt,
2302
+ disableCountDown: Lt,
2303
+ toast: ct,
2304
+ resetFaceCollector: _i,
2305
+ drawOval: $t,
2306
+ drawVideoOnCanvas: Ni,
2307
+ registerIdrndListeners: tn,
2308
+ openCamera: Ge,
2309
+ openCameraLiveness: ei,
2310
+ play: ut,
2311
+ capture: vi,
2312
+ save: Ft,
2313
+ retake: Ze,
2314
+ validateLiveness: wi,
2315
+ selectDevice: nn,
2316
+ reOpenCamera: ti,
2317
+ registerDeviceChangeListener: on,
2318
+ setFaceNotFoundAlert: an,
2319
+ unsubscribeVideoDimensions: sn,
2320
+ unsubscribeFaceValidations: ln,
2321
+ unsubscribeCapturedState: rn,
2322
+ unsubscribeClearVideoSrc: cn,
2323
+ unsubscribeSelectedStream: un,
2324
+ unsubscribeChangeTab: fn,
2325
+ unsubscribeFaceApi: dn,
2326
+ unsubscribeSwapCamera: mn,
2327
+ unsubscribeOrientation: hn,
2328
+ faceapiLoop: pi,
2329
+ unsubscribeReadyCameraEventEmitter: bn,
2330
+ unsubscribeInitializedEventEmitter: gn,
2331
+ $retakePhoto: s,
2332
+ $startFaceApi: a,
2333
+ $faceFound: l,
2334
+ $cameraStatusStore: o,
2335
+ $collectorSelect: r,
2336
+ $facingMode: u,
2337
+ $selectedVideoDeviceId: b,
2338
+ $cameraDevicesStore: d,
2339
+ $videoStore: c,
2340
+ $captured: g,
2341
+ $clearedVideoSrcObject: O,
2342
+ $_stream: C,
2343
+ $automaticCapture: p,
2344
+ $faceValidationAlert: k,
2345
+ $showLivenessResultToast: E,
2346
+ $saved: M,
2347
+ $justification: B,
2348
+ $image: I,
2349
+ $requestResult: T,
2350
+ $_: ke,
2351
+ $unconformitiesStore: ne,
2352
+ $originalCapture: ue,
2353
+ $dataTypePrefix: we,
2354
+ $boxStore: He,
2355
+ $enableFaceApi: Te,
2356
+ $eyeDistance: Ue,
2357
+ $screenLocked: We,
2358
+ $initializing: G,
2359
+ $ready: x,
2360
+ $selectedTab: Ae,
2361
+ $captureLivenessIdrndEndpoint: Se,
2362
+ $blob: pe,
2363
+ $idrndInitialized: $,
2364
+ $idrndVideoStoreDimensions: ee,
2365
+ $ovalDimensions: z,
2366
+ $isLoading: te,
2367
+ $showFaceWhileValidating: se,
2368
+ $exportButtonDisabled: le
2369
+ }), n.$inject_state = (t) => {
2370
+ "video" in t && i(9, A = t.video), "detectionsCanvas" in t && i(10, H = t.detectionsCanvas), "enclosingDiv" in t && i(11, Ce = t.enclosingDiv), "isCountingDown" in t && i(12, fe = t.isCountingDown), "unique" in t && i(13, qe = t.unique), "loadedFaceApiAndWeights" in t && (Je = t.loadedFaceApiAndWeights), "waitingFaceNotFoundTimeout" in t && (de = t.waitingFaceNotFoundTimeout), "enableCaptureButton" in t && i(14, y = t.enableCaptureButton), "faceFoundStartTime" in t && (j = t.faceFoundStartTime), "enableMinutiae" in t && i(45, Ie = t.enableMinutiae), "videoDimensions" in t && i(46, ze = t.videoDimensions), "noTabs" in t && i(47, it = t.noTabs), "weightsPath" in t && i(48, nt = t.weightsPath), "evaluatePhoto" in t && i(1, Oe = t.evaluatePhoto), "showCaptureButton" in t && i(2, ot = t.showCaptureButton), "showUnconformities" in t && i(3, St = t.showUnconformities), "videoOverlay" in t && i(49, Xe = t.videoOverlay), "videoOverlayTransparency" in t && i(50, Ve = t.videoOverlayTransparency), "showConfigButton" in t && i(4, Ot = t.showConfigButton), "showAutoCaptureButton" in t && i(5, Qe = t.showAutoCaptureButton), "showCameraButton" in t && i(6, At = t.showCameraButton), "showJustificationField" in t && i(7, It = t.showJustificationField), "minEyeToEyeDist" in t && i(51, Ke = t.minEyeToEyeDist), "widgetInstance" in t && i(0, oe = t.widgetInstance), "maskCanvas" in t && i(15, Pe = t.maskCanvas), "displayCanvas" in t && i(16, X = t.displayCanvas), "capturing" in t && (st = t.capturing), "initialized" in t && (Gt = t.initialized), "idrndLoading" in t && i(17, lt = t.idrndLoading), "idrndClosed" in t && i(18, ye = t.idrndClosed), "waitingIdrndCaptureEvent" in t && i(19, rt = t.waitingIdrndCaptureEvent), "intervalId" in t && (Zt = t.intervalId), "livenessError" in t && i(20, Ee = t.livenessError), "faceApiCounter" in t && (Bt = t.faceApiCounter), "faceApiFrameRate" in t && (gi = t.faceApiFrameRate), "countDownCapture" in t && (xt = t.countDownCapture), "rightOrientation" in t && (Dt = t.rightOrientation), "countDownFinishTime" in t && (Pt = t.countDownFinishTime), "disableCountDown" in t && (Lt = t.disableCountDown);
2371
+ }, e && "$$inject" in e && n.$inject_state(e.$$inject), [
2372
+ oe,
2373
+ Oe,
2374
+ ot,
2375
+ St,
2376
+ Ot,
2377
+ Qe,
2378
+ At,
2379
+ It,
2380
+ ut,
2381
+ A,
2382
+ H,
2383
+ Ce,
2384
+ fe,
2385
+ qe,
2386
+ y,
2387
+ Pe,
2388
+ X,
2389
+ lt,
2390
+ ye,
2391
+ rt,
2392
+ Ee,
2393
+ o,
2394
+ b,
2395
+ c,
2396
+ g,
2397
+ p,
2398
+ k,
2399
+ M,
2400
+ B,
2401
+ I,
2402
+ T,
2403
+ ke,
2404
+ ne,
2405
+ we,
2406
+ Te,
2407
+ x,
2408
+ te,
2409
+ se,
2410
+ le,
2411
+ at,
2412
+ Ye,
2413
+ vi,
2414
+ Ft,
2415
+ Ze,
2416
+ ti,
2417
+ Ie,
2418
+ ze,
2419
+ it,
2420
+ nt,
2421
+ Xe,
2422
+ Ve,
2423
+ Ke,
2424
+ wo,
2425
+ po,
2426
+ Co,
2427
+ yo,
2428
+ Eo,
2429
+ ko,
2430
+ Ro,
2431
+ To,
2432
+ So,
2433
+ Oo,
2434
+ Ao,
2435
+ Io,
2436
+ Bo,
2437
+ Do,
2438
+ Po,
2439
+ Lo,
2440
+ Fo
2441
+ ];
2442
+ }
2443
+ class jo extends Mn {
2444
+ constructor(e) {
2445
+ super(), Un(
2446
+ this,
2447
+ {
2448
+ target: this.shadowRoot,
2449
+ props: Wn(this.attributes),
2450
+ customElement: !0
2451
+ },
2452
+ Ko,
2453
+ _o,
2454
+ $i,
2455
+ {
2456
+ enableMinutiae: 45,
2457
+ videoDimensions: 46,
2458
+ noTabs: 47,
2459
+ weightsPath: 48,
2460
+ evaluatePhoto: 1,
2461
+ showCaptureButton: 2,
2462
+ showUnconformities: 3,
2463
+ videoOverlay: 49,
2464
+ videoOverlayTransparency: 50,
2465
+ showConfigButton: 4,
2466
+ showAutoCaptureButton: 5,
2467
+ showCameraButton: 6,
2468
+ showJustificationField: 7,
2469
+ minEyeToEyeDist: 51,
2470
+ widgetInstance: 0,
2471
+ play: 8
2472
+ },
2473
+ null,
2474
+ [-1, -1, -1, -1, -1]
2475
+ ), e && (e.target && U(e.target, this, e.anchor), e.props && (this.$set(e.props), be()));
2476
+ }
2477
+ static get observedAttributes() {
2478
+ return [
2479
+ "enableMinutiae",
2480
+ "videoDimensions",
2481
+ "noTabs",
2482
+ "weightsPath",
2483
+ "evaluatePhoto",
2484
+ "showCaptureButton",
2485
+ "showUnconformities",
2486
+ "videoOverlay",
2487
+ "videoOverlayTransparency",
2488
+ "showConfigButton",
2489
+ "showAutoCaptureButton",
2490
+ "showCameraButton",
2491
+ "showJustificationField",
2492
+ "minEyeToEyeDist",
2493
+ "widgetInstance",
2494
+ "play"
2495
+ ];
2496
+ }
2497
+ get enableMinutiae() {
2498
+ return this.$$.ctx[45];
2499
+ }
2500
+ set enableMinutiae(e) {
2501
+ this.$$set({ enableMinutiae: e }), be();
2502
+ }
2503
+ get videoDimensions() {
2504
+ return this.$$.ctx[46];
2505
+ }
2506
+ set videoDimensions(e) {
2507
+ this.$$set({ videoDimensions: e }), be();
2508
+ }
2509
+ get noTabs() {
2510
+ return this.$$.ctx[47];
2511
+ }
2512
+ set noTabs(e) {
2513
+ this.$$set({ noTabs: e }), be();
2514
+ }
2515
+ get weightsPath() {
2516
+ return this.$$.ctx[48];
2517
+ }
2518
+ set weightsPath(e) {
2519
+ this.$$set({ weightsPath: e }), be();
2520
+ }
2521
+ get evaluatePhoto() {
2522
+ return this.$$.ctx[1];
2523
+ }
2524
+ set evaluatePhoto(e) {
2525
+ this.$$set({ evaluatePhoto: e }), be();
2526
+ }
2527
+ get showCaptureButton() {
2528
+ return this.$$.ctx[2];
2529
+ }
2530
+ set showCaptureButton(e) {
2531
+ this.$$set({ showCaptureButton: e }), be();
2532
+ }
2533
+ get showUnconformities() {
2534
+ return this.$$.ctx[3];
2535
+ }
2536
+ set showUnconformities(e) {
2537
+ this.$$set({ showUnconformities: e }), be();
2538
+ }
2539
+ get videoOverlay() {
2540
+ return this.$$.ctx[49];
2541
+ }
2542
+ set videoOverlay(e) {
2543
+ this.$$set({ videoOverlay: e }), be();
2544
+ }
2545
+ get videoOverlayTransparency() {
2546
+ return this.$$.ctx[50];
2547
+ }
2548
+ set videoOverlayTransparency(e) {
2549
+ this.$$set({ videoOverlayTransparency: e }), be();
2550
+ }
2551
+ get showConfigButton() {
2552
+ return this.$$.ctx[4];
2553
+ }
2554
+ set showConfigButton(e) {
2555
+ this.$$set({ showConfigButton: e }), be();
2556
+ }
2557
+ get showAutoCaptureButton() {
2558
+ return this.$$.ctx[5];
2559
+ }
2560
+ set showAutoCaptureButton(e) {
2561
+ this.$$set({ showAutoCaptureButton: e }), be();
2562
+ }
2563
+ get showCameraButton() {
2564
+ return this.$$.ctx[6];
2565
+ }
2566
+ set showCameraButton(e) {
2567
+ this.$$set({ showCameraButton: e }), be();
2568
+ }
2569
+ get showJustificationField() {
2570
+ return this.$$.ctx[7];
2571
+ }
2572
+ set showJustificationField(e) {
2573
+ this.$$set({ showJustificationField: e }), be();
2574
+ }
2575
+ get minEyeToEyeDist() {
2576
+ return this.$$.ctx[51];
2577
+ }
2578
+ set minEyeToEyeDist(e) {
2579
+ this.$$set({ minEyeToEyeDist: e }), be();
2580
+ }
2581
+ get widgetInstance() {
2582
+ return this.$$.ctx[0];
2583
+ }
2584
+ set widgetInstance(e) {
2585
+ this.$$set({ widgetInstance: e }), be();
2586
+ }
2587
+ get play() {
2588
+ return this.$$.ctx[8];
2589
+ }
2590
+ set play(e) {
2591
+ throw new Error("<face-collector>: Cannot set read-only property 'play'");
2592
+ }
2593
+ }
2594
+ customElements.define("face-collector", jo);
2595
+ export {
2596
+ jo as default
2597
+ };
2598
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFjZUNvbGxlY3Rvcl84NDdjYmNiZV8yLjIuMjEtUkMwNS5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9mYWNlVGFiL2J1dHRvbnMvY2FwdHVyZS9hdXRvQ2FwdHVyZUJ0bi9BdXRvQ2FwdHVyZUJ0bi5zdmVsdGUiLCIuLi9zcmMvbGliL2ZhY2VUYWIvRmFjZUNvbGxlY3Rvci5zdmVsdGUiXSwic291cmNlc0NvbnRlbnQiOlsiPHN2ZWx0ZTpvcHRpb25zIHRhZz1cInN0YXJ0LWF1dG8tY2FwdHVyZS1idG5cIiAvPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBhdXRvbWF0aWNDYXB0dXJlIH0gZnJvbSBcIi4uLy4uLy4uL2ZhY2VTdG9yZVwiO1xuICBpbXBvcnQgeyBfIH0gZnJvbSAnc3ZlbHRlLWkxOG4nO1xuICBpbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsL3V0aWxcIjtcblxuICBmdW5jdGlvbiBoYW5kbGVBdXRvQ2FwdHVyZSgpIHtcbiAgICAkYXV0b21hdGljQ2FwdHVyZSA9IHRydWU7XG4gIH1cbiAgICBcbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgPGJ1dHRvbiBjbGFzcz17XG4gICAgaXNNb2JpbGUoKVxuICAgID8gXCJjZS1kdWktYnRuIGNlLWR1aS1idG4tcHJpbWFyeSB0ZXh0LWJhc2UgdGV4dC14bCBwYi1bMnB4XSBhYnNvbHV0ZSB6LTIwIGJvdHRvbS0xMFwiXG4gICAgOiBcImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1wcmltYXJ5IHRleHQtYmFzZSB0ZXh0LXhsIHBiLVsycHhdIGFic29sdXRlIHotMjAgYm90dG9tLTJcIn1cbiAgICBvbjpjbGljaz17KCkgPT4gaGFuZGxlQXV0b0NhcHR1cmUoKX1cbiAgICA+XG4gICAgICB7JF8oJ2J1dHRvbnMuc3RhcnRDYXB0dXJlJyl9XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iLCI8c3ZlbHRlOm9wdGlvbnMgdGFnPVwiZmFjZS1jb2xsZWN0b3JcIiAvPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgQ2FtZXJhU3RhdHVzIGZyb20gJy4vY2FtZXJhU3RhdHVzL0NhbWVyYVN0YXR1cy5zdmVsdGUnO1xuICBpbXBvcnQgeyBvbkRlc3Ryb3ksIG9uTW91bnQgfSBmcm9tICdzdmVsdGUnO1xuICBpbXBvcnQgdHlwZSB7IEJvZHlQYXJ0LCBCb2R5UGFydFJldHVyblR5cGUgfSBmcm9tICcuLi92YWxpZGF0b3JzL2Jpb21ldHJpY3NWYWxpZGF0b3InO1xuICBpbXBvcnQgeyBfLCBpc0xvYWRpbmcgfSBmcm9tICdzdmVsdGUtaTE4bic7XG4gIGltcG9ydCB7IGdldCwgd3JpdGFibGUgfSBmcm9tICdzdmVsdGUvc3RvcmUnO1xuICBpbXBvcnQgeyBzZWxlY3RlZFRhYiwgVGFiRW51bSB9IGZyb20gJy4uL3RhYkJ0bnMvdGFiU3RvcmUnO1xuICBpbXBvcnQge1xuICAgIGNhbWVyYURlbmllZFBlcm1pc3Npb24sXG4gICAgZmFjZVZhbGlkYXRpb25zU3RvcmUsXG4gICAgZ2V0RmFjZVVuY29uZm9ybWl0aWVzLFxuICAgIGltYWdlLFxuICAgIHVuY29uZm9ybWl0aWVzU3RvcmUsXG4gICAgc2V0dXBTdHJlYW0sXG4gICAgdmlkZW9TdG9yZSxcbiAgICByZXF1ZXN0UmVzdWx0LFxuICAgIGNhbWVyYURldmljZXNTdG9yZSxcbiAgICBqdXN0aWZpY2F0aW9uLFxuICAgIHNhdmVkLFxuICAgIGNhcHR1cmVkLFxuICAgIF9zdHJlYW0sXG4gICAgc2h1dE9mZkNhbWVyYSxcbiAgICByZWFkeSxcbiAgICBpbml0aWFsaXppbmcsXG4gICAgY2xlYXJlZFZpZGVvU3JjT2JqZWN0LFxuICAgIGVudW1lcmF0ZURldmljZXMsXG4gICAgb3JpZ2luYWxDYXB0dXJlLFxuICAgIGF1dG9tYXRpY0NhcHR1cmUsXG4gICAgc2VsZWN0ZWRWaWRlb0RldmljZUlkLFxuICAgIHRyYW5zbGF0ZUFuZFNldFVuY29uZm9ybWl0aWVzLFxuICAgIHJlcXVlc3RSZXN1bHRFbnVtLFxuICAgIHJldGFrZVBob3RvLFxuICAgIHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nLFxuICAgIGdldFZpZGVvRGltZW5zaW9ucyxcbiAgICBGYWNlRXhwb3J0U3RyYXRlZ3ksXG4gICAgb3JpZW50YXRpb25EYXRhLFxuICAgIEZhY2luZ01vZGVFbnVtLFxuICAgIGZhY2luZ01vZGUsXG4gICAgdW5jb25mb3JtaXR5VG9pMThuS2V5XG5cbiAgfSBmcm9tICcuL2ZhY2VTdG9yZSc7XG4gIGltcG9ydCB7XG4gICAgc3dhcENhbWVyYVxuICB9ZnJvbSAnLi4vY29uZi9jb25mU3RvcmUnOyAgXG4gIGltcG9ydCBDb25mQnRuIGZyb20gJy4uL2NvbmYvQ29uZkJ0bi5zdmVsdGUnO1xuICBpbXBvcnQgQ2FtZXJhQnRuIGZyb20gJy4uL2NvbmYvQ2FtZXJhQnRuLnN2ZWx0ZSc7XG4gIGltcG9ydCBBdXRvQ2FwdHVyZUJ0biBmcm9tICcuL2J1dHRvbnMvY2FwdHVyZS9hdXRvQ2FwdHVyZUJ0bi9BdXRvQ2FwdHVyZUJ0bi5zdmVsdGUnO1xuICBpbXBvcnQgRXhwb3J0QnRuIGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vRXhwb3J0QnRuLnN2ZWx0ZSc7XG4gIGltcG9ydCB7IGVuYWJsZVN0cmF0ZWd5IH0gZnJvbSAnLi4vZmluZ2Vyc1RhYi9oYW5kL2hhbmRQYXJ0cy9maW5nZXJzU3RvcmUnO1xuICBpbXBvcnQgeyBleHBvcnRCdXR0b25EaXNhYmxlZCB9IGZyb20gJy4uL2ZpbmdlcnNUYWIvYnV0dG9ucy9leHBvcnRCdG4vZXhwb3J0U3RvcmUnO1xuICBpbXBvcnQge1xuICAgIGJveFN0b3JlLFxuICAgIGRyYXdEZXRlY3Rpb25zSW5GYWNlLFxuICAgIGVuYWJsZUZhY2VBcGksXG4gICAgZmFjZUZvdW5kLFxuICAgIGdldEZhY2VEZXRlY3Rvck9wdGlvbnMsXG4gICAgb3ZhbERpbWVuc2lvbnMsXG4gICAgZmFjZVZhbGlkYXRpb25BbGVydCxcbiAgICBleWVEaXN0YW5jZSxcbiAgICBzZXRWYWxpZGF0aW9uQWxlcnQsXG4gIH0gZnJvbSAnLi9mYWNlQXBpU3RvcmUnO1xuICBpbXBvcnQgeyBibG9iVG9CYXNlNjQsIGlzTW9iaWxlLCBpc09iamVjdCwgbG9hZEZhY2VBcGlBbmRXZWlnaHRzLCBsb29wQ2FsbGVyLCB1bkxvY2tTY3JlZW4sIGdldEltYWdlTGlnaHRuZXNzLCBnZXRJbWFnZVNoYXJwbmVzc30gZnJvbSAnLi4vdXRpbC91dGlsJztcbiAgaW1wb3J0IHsgY29sbGVjdG9yU2VsZWN0LCBpc0xpdmVuZXNzRW5hYmxlZCwgc2NyZWVuTG9ja2VkIH0gZnJvbSAnLi4vLi4vbWFpblN0b3JlJztcbiAgaW1wb3J0IGxvYWRpbmdHaWYgZnJvbSAnLi4vLi4vYXNzZXRzL2ltZy9CbG9ja3MtMXMtMjAwcHguZ2lmJztcbiAgaW1wb3J0IHtcbiAgICBnZXRMaXZlbmVzc0lkcm5kLFxuICAgIGJsb2IsXG4gICAgaWRybmRFcnJvclRvaTE4bktleSxcbiAgICBzaG93TGl2ZW5lc3NSZXN1bHRUb2FzdCxcbiAgICBjYXB0dXJlTGl2ZW5lc3NJZHJuZEVuZHBvaW50LFxuICAgIHR5cGUgbGl2ZW5lc3NSZXN1bHQsXG4gICAgdHlwZSBsaXZlbmVzc0Vycm9yUmVzdWx0LFxuICAgIGlkcm5kSW5pdGlhbGl6ZWQsXG4gICAgaWRybmRWaWRlb1N0b3JlRGltZW5zaW9ucyxcbiAgfSBmcm9tICcuL2xpdmVuZXNzL0xpdmVuZXNzU3RvcmUnO1xuICBpbXBvcnQgdHlwZSB7IFN3ZWV0QWxlcnRJY29uIH0gZnJvbSAnc3dlZXRhbGVydDInO1xuICBpbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG4gIGltcG9ydCB7IEF4aW9zRXJyb3IsIHR5cGUgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcbiAgaW1wb3J0IHsgY2FtZXJhU3RhdHVzU3RvcmUsIENhbWVyYVN0YXR1c0VudW0gfSBmcm9tICcuL2NhbWVyYVN0YXR1cy9jYW1lcmFTdGF0dXNTdG9yZSc7XG4gIGltcG9ydCB7IGxvZyB9IGZyb20gJy4uL3V0aWwvbG9nZ2VyJztcbiAgaW1wb3J0IFRha2VQaWN0dXJlQnRuIGZyb20gJy4vYnV0dG9ucy9jYXB0dXJlL3Rha2VQaWN0dXJlQnRuL1Rha2VQaWN0dXJlQnRuLnN2ZWx0ZSc7XG4gIFxuICBsZXQgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQ7XG4gIGxldCBkZXRlY3Rpb25zQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgbGV0IGVuY2xvc2luZ0RpdjogSFRNTERpdkVsZW1lbnQ7XG4gIGxldCBpc0NvdW50aW5nRG93biA9IGZhbHNlO1xuICBsZXQgdW5pcXVlID0ge307XG4gIGxldCBsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cyA9IGZhbHNlO1xuICBsZXQgd2FpdGluZ0ZhY2VOb3RGb3VuZFRpbWVvdXQgPSBmYWxzZTtcbiAgbGV0IGVuYWJsZUNhcHR1cmVCdXR0b24gPSBmYWxzZTtcbiAgbGV0IGZhY2VGb3VuZFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gIC8vIFByb3BzXG4gIGV4cG9ydCBsZXQgZW5hYmxlTWludXRpYWU6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgdmlkZW9EaW1lbnNpb25zOiBzdHJpbmc7XG4gIGV4cG9ydCBsZXQgbm9UYWJzOiBib29sZWFuO1xuICBleHBvcnQgbGV0IHdlaWdodHNQYXRoOiBzdHJpbmc7XG4gIGV4cG9ydCBsZXQgZXZhbHVhdGVQaG90bzogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93Q2FwdHVyZUJ1dHRvbjogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93VW5jb25mb3JtaXRpZXM6IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgdmlkZW9PdmVybGF5OiBzdHJpbmc7XG4gIGV4cG9ydCBsZXQgdmlkZW9PdmVybGF5VHJhbnNwYXJlbmN5OiBudW1iZXI7XG4gIGV4cG9ydCBsZXQgc2hvd0NvbmZpZ0J1dHRvbjogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93QXV0b0NhcHR1cmVCdXR0b246IGJvb2xlYW47XG4gIGV4cG9ydCBsZXQgc2hvd0NhbWVyYUJ1dHRvbjogYm9vbGVhbjtcbiAgZXhwb3J0IGxldCBzaG93SnVzdGlmaWNhdGlvbkZpZWxkOiBib29sZWFuO1xuICBleHBvcnQgbGV0IG1pbkV5ZVRvRXllRGlzdDogbnVtYmVyO1xuXG4gIGNvbnN0IHN0YXJ0RmFjZUFwaSA9IHdyaXRhYmxlKGZhbHNlKTtcbiAgY29uc3QgZGF0YVR5cGVQcmVmaXggPSB3cml0YWJsZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0Jyk7XG5cbiAgLy8gbGl2ZW5lc3MgcmVsYXRlZFxuICAvLyBwcm9wIHBhc3NpbmcgdXAgdG8gcGFyZW50XG4gIGV4cG9ydCBsZXQgd2lkZ2V0SW5zdGFuY2U6IEhUTUxJZExpdmVGYWNlQ2FwdHVyZUVsZW1lbnQ7XG4gIGxldCBtYXNrQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcbiAgbGV0IGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBsZXQgY2FwdHVyaW5nID0gZmFsc2U7XG4gIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBsZXQgaWRybmRMb2FkaW5nID0gdHJ1ZTtcbiAgbGV0IGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgbGV0IHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCA9IGZhbHNlO1xuICBsZXQgaW50ZXJ2YWxJZCA9IDA7XG4gIGxldCBsaXZlbmVzc0Vycm9yID0gJyc7XG4gIGxldCBmYWNlQXBpQ291bnRlciA9IDA7XG4gIGxldCBmYWNlQXBpRnJhbWVSYXRlID0gNTtcbiAgbGV0IGNvdW50RG93bkNhcHR1cmUgPSAzMDAwO1xuICBsZXQgcmlnaHRPcmllbnRhdGlvbiA9IHRydWU7XG5cbiAgbGV0IGNvdW50RG93bkZpbmlzaFRpbWUgPSAwO1xuICBsZXQgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuXG4gIGNvbnN0IHRvYXN0ID0gU3dhbC5taXhpbih7XG4gICAgdG9hc3Q6IHRydWUsXG4gICAgcG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgdGltZXI6IDEzMDAwLFxuICAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXG4gIH0pO1xuXG4gIG9uTW91bnQoYXN5bmMgKCkgPT4ge1xuICAgIGxvZygnTW91bnRpbmcgRmFjZSBDb2xsZWN0b3IhJyk7XG4gICAgJGluaXRpYWxpemluZyA9IHRydWU7XG4gICAgJHJlYWR5ID0gZmFsc2U7XG4gICAgcmVzZXRGYWNlQ29sbGVjdG9yKCkgLy8gcmVzZXQgYWxsIGZhY2UgY29sbGVjdG9yIHZhcmlhYmxlc1xuICAgIFxuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgICBpbXBvcnQoJ2xpdmVuZXNzLWxpYi1kZXYvaW5kZXgtbm8tZGV0ZWN0b3InKTtcbiAgICAgIHJlZ2lzdGVySWRybmRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBpZiAoJGVuYWJsZUZhY2VBcGkpIHtcbiAgICAgIGF3YWl0IGxvYWRGYWNlQXBpQW5kV2VpZ2h0cyh3ZWlnaHRzUGF0aCk7XG4gICAgICBsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cyA9IHRydWU7XG4gICAgfVxuICBcbiAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7IC8vIG9wZW4gdGhlIGZyb250IGNhbWVyYVxuICAgIHJlZ2lzdGVyRGV2aWNlQ2hhbmdlTGlzdGVuZXIoKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gcmVzZXRGYWNlQ29sbGVjdG9yKCkge1xuICAgICRmYWNlRm91bmQgPSBmYWxzZTtcbiAgICAkY2FwdHVyZWQgPSBmYWxzZTtcbiAgICAkZmFjaW5nTW9kZSA9IEZhY2luZ01vZGVFbnVtLkZST05UX0NBTUVSQTtcbiAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLk9LO1xuICAgIC8vIGRpc2FibGUgYXV0b21hdGljIGNhcHR1cmUgaWYgc2hvd0F1dG9DYXB0dXJlQnV0dG9uIHByb3BlcnR5IGlzIHRydWVcbiAgICBpZiAoc2hvd0F1dG9DYXB0dXJlQnV0dG9uKSB7XG4gICAgICAkYXV0b21hdGljQ2FwdHVyZSA9IGZhbHNlO1xuICAgIH1cbiAgICAkc2F2ZWQgPSBmYWxzZTtcbiAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLk9LO1xuICAgICRvcmlnaW5hbENhcHR1cmUgPSAnJztcbiAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcyA9IFtdO1xuICAgIGNvbnN0IGZhY2VWYWxpZGF0aW9ucyA9IGdldChmYWNlVmFsaWRhdGlvbnNTdG9yZSk7XG4gICAgZmFjZVZhbGlkYXRpb25zLmNsb3NlZE1vdXRoID0gZmFsc2U7XG4gICAgZmFjZVZhbGlkYXRpb25zLmlzUGVyc29uQ2xvc2VFbm91Z2ggPSBmYWxzZTtcbiAgICBmYWNlVmFsaWRhdGlvbnMuaXNQZXJzb25Ub29jbG9zZSA9IHRydWU7XG4gICAgZmFjZVZhbGlkYXRpb25zLmlzUGVyc29uSW5GcmFtZSA9IGZhbHNlO1xuICAgIGZhY2VWYWxpZGF0aW9uc1N0b3JlLnNldChmYWNlVmFsaWRhdGlvbnMpO1xuICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3T3ZhbChjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICAvLyBjbGVhciB0aGUgYXJlYSAodGhlcmUgc2hvdWxkbid0IGV2ZW4gYmUgYW55dGhpbmcgYW55d2F5cylcbiAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGRpc3BsYXlDYW52YXMud2lkdGgsIGRpc3BsYXlDYW52YXMuaGVpZ2h0KTtcbiAgICAvLyBzYXZlIHRoZSBjb250ZXh0IHN0YXRlXG4gICAgLy8gZnJvbSBtZG4gZG9jc1xuICAgIGN0eC5zYXZlKCk7XG4gICAgLy8gYXBwbHkgdGhlIGJsdXIvY29sb3IgZmlsdGVyXG4gICAgaWYodmlkZW9PdmVybGF5ICE9ICdub25lJykge1xuICAgICAgaWYgKHZpZGVvT3ZlcmxheVRyYW5zcGFyZW5jeSA+IDApe1xuICAgICAgICBjdHguZ2xvYmFsQWxwaGEgPSAodmlkZW9PdmVybGF5VHJhbnNwYXJlbmN5KSAvIDEwMDtcbiAgICAgIH1cbiAgICAgIGN0eC5maWxsU3R5bGUgPSB2aWRlb092ZXJsYXk7XG4gICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZGlzcGxheUNhbnZhcy53aWR0aCwgZGlzcGxheUNhbnZhcy5oZWlnaHQpOyAgICAgIFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkcmF3IGEgcmVjdGFuZ2xlIHdpdGggdGhlIHNhbWUgc2l6ZSBhcyB0aGUgdmlkZW9cbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGN0eC5yZWN0KDAsIDAsIGRpc3BsYXlDYW52YXMud2lkdGgsIGRpc3BsYXlDYW52YXMuaGVpZ2h0KTtcbiAgICB9XG4gICAgXG4gICAgLy8gY2FsY3VsYXRlIHRoZSBvdmFsIHNpemUgdXNpbmcgdmlld3BvcnQgdW5pdHNcbiAgICBsZXQgb3ZhbEhlaWdodCA9IGRpc3BsYXlDYW52YXMuaGVpZ2h0ICogMC44MDsgLy8gODAlIG9mIHRoZSB2aWV3cG9ydCBoZWlnaHRcbiAgICBjb25zdCBvdmFsWCA9ICR2aWRlb1N0b3JlLnZpZGVvV2lkdGggLyAyO1xuICAgIGxldCBvdmFsWSA9ICR2aWRlb1N0b3JlLnZpZGVvSGVpZ2h0ICogMC41MDtcbiAgICBpZiAoc2hvd0F1dG9DYXB0dXJlQnV0dG9uIHx8IHNob3dDYXB0dXJlQnV0dG9uKSB7XG4gICAgICBvdmFsWSA9ICR2aWRlb1N0b3JlLnZpZGVvSGVpZ2h0ICogMC40NDtcbiAgICB9XG4gICAgaWYgKGlzTW9iaWxlKCkpe1xuICAgICAgb3ZhbEhlaWdodCA9IGRpc3BsYXlDYW52YXMuaGVpZ2h0ICogMC42NTsgLy8gODAlIG9mIHRoZSB2aWV3cG9ydCBoZWlnaHRcbiAgICAgIG92YWxZID0gJHZpZGVvU3RvcmUudmlkZW9IZWlnaHQgKiAwLjUxO1xuICAgIH1cbiAgICBjb25zdCBvdmFsV2lkdGggPSBvdmFsSGVpZ2h0IC8gMS40NTsgXG4gICAgJG92YWxEaW1lbnNpb25zLndpZHRoID0gb3ZhbFdpZHRoO1xuICAgICRvdmFsRGltZW5zaW9ucy5oZWlnaHQgPSBvdmFsSGVpZ2h0O1xuICAgICRvdmFsRGltZW5zaW9ucy55ID0gb3ZhbFk7XG5cbiAgICAvLyBtYWtlIHRoZSBvdmFsIFxuICAgIGN0eC5lbGxpcHNlKFxuICAgICAgb3ZhbFgsXG4gICAgICBvdmFsWSxcbiAgICAgIG92YWxXaWR0aCAvIDIsXG4gICAgICBvdmFsSGVpZ2h0IC8gMixcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgMiAqIE1hdGguUEksXG4gICAgICB0cnVlIC8vIGl0IGhhcyB0byBiZSBjb3VudGVyY2xvY2t3aXNlXG4gICAgKTtcblxuICAgIGlmICh2aWRlb092ZXJsYXlUcmFuc3BhcmVuY3kgPT0gMCl7XG4gICAgICBjdHguY2xpcCgpO1xuICAgIH1cbiAgICAvLyBkcmF3IHRoZSB2aWRlb1xuICAgIC8vIHRoaXMgbWFrZXMgZmFjZSBhcGkgb25seSBhd2FyZSBvZiBvdXRzaWRlIHRoZSBvdmFsIGFyZWFcbiAgICBkcmF3VmlkZW9PbkNhbnZhcyhjdHgsIHZpZGVvLCBkaXNwbGF5Q2FudmFzKTtcbiAgICBjdHgucmVzdG9yZSgpO1xuXG4gICAgLy8gc2F2ZSBhZ2FpbiwgYmVjYXVzZSB3aGVuIHJlZHJhd2luZyB0aGUgb3ZhbCwgZXZlcnl0aGluZyBhcm91bmQgdGhlIG92YWwgaXMgbG9zdFxuICAgIGN0eC5zYXZlKCk7XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIC8vIGRyYXcgdGhlIGVsbGlwc2UgKHRoaXMgdGltZSBpdCBkb2Vzbid0IG1hdHRlciB0aGUgZGlyZWN0aW9uLCBzaW5jZSB0aGVyZSBpc24ndCBhIHJlY3RhbmdsZSBiZWhpbmQpXG4gICAgY29uc3QgcHJpbWFyeVRoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wJyk7XG4gICAgY29uc3Qgc3VjY2Vzc1RoZW1lID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlzcGxheUNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zdScpO1xuXG4gICAgY3R4LnN0cm9rZVN0eWxlID0gYGhzbCgke3ByaW1hcnlUaGVtZX0pYDtcbiAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgY3R4LmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgY3R4LnN0cm9rZSgpO1xuICAgIGlmIChpc0NvdW50aW5nRG93biAmJiAhZGlzYWJsZUNvdW50RG93bikge1xuICAgICAgY29uc3QgdGltZVJlbWFpbmluZyA9IDEgLSAoY291bnREb3duRmluaXNoVGltZSAtIG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIGNvdW50RG93bkNhcHR1cmU7XG4gICAgICAvLyBDb3VudGVyIGNvbnRvdXJcbiAgICAgIGN0eC5zYXZlKCk7XG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICBjdHgubGluZVdpZHRoID0gMTY7XG4gICAgICBjdHguc3Ryb2tlU3R5bGUgPSBgaHNsKCR7c3VjY2Vzc1RoZW1lfSlgO1xuICAgICAgY3R4LmVsbGlwc2UoXG4gICAgICAgIG92YWxYLFxuICAgICAgICBvdmFsWSxcbiAgICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgICAgb3ZhbEhlaWdodCAvIDIsXG4gICAgICAgIDAsXG4gICAgICAgIDAgLSBNYXRoLlBJIC8gMixcbiAgICAgICAgMS41ICogKE1hdGguUEkgKiAyICogdGltZVJlbWFpbmluZykgLSBNYXRoLlBJIC8gMlxuICAgICAgKTtcbiAgICAgIGN0eC5zdHJva2UoKTtcbiAgICB9XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGNvbnN0IGNsaXBQYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgIGNsaXBQYXRoLmVsbGlwc2UoXG4gICAgICBvdmFsWCxcbiAgICAgIG92YWxZLFxuICAgICAgb3ZhbFdpZHRoIC8gMixcbiAgICAgIG92YWxIZWlnaHQgLyAyLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSVxuICAgICk7XG4gICAgLy8gYmFzaWNhbGx5IGNsaXBwaW5nIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBzbyBmYWNlIGFwaSBpcyBhd2FyZSBvZiB0aGUgb3ZhbCBhcmVhXG4gICAgY3R4LmNsaXAoY2xpcFBhdGgpO1xuICAgIGRyYXdWaWRlb09uQ2FudmFzKGN0eCwgdmlkZW8sIGRpc3BsYXlDYW52YXMpO1xuICAgIGN0eC5yZXN0b3JlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3VmlkZW9PbkNhbnZhcyhjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGRpc3BsYXlDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgY29uc3QgdmlkZW9Bc3BlY3RSYXRpbyA9IHZpZGVvLnZpZGVvV2lkdGggLyB2aWRlby52aWRlb0hlaWdodDtcbiAgICBjb25zdCBjYW52YXNBc3BlY3RSYXRpbyA9IGRpc3BsYXlDYW52YXMud2lkdGggLyBkaXNwbGF5Q2FudmFzLmhlaWdodDtcblxuICAgIGxldCBzb3VyY2VYID0gMDtcbiAgICBsZXQgc291cmNlWSA9IDA7XG4gICAgbGV0IHNvdXJjZVdpZHRoID0gdmlkZW8udmlkZW9XaWR0aDtcbiAgICBsZXQgc291cmNlSGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7XG5cbiAgICBpZiAodmlkZW9Bc3BlY3RSYXRpbyA+IGNhbnZhc0FzcGVjdFJhdGlvKSB7XG4gICAgICAvLyB0aGUgdmlkZW8gaXMgd2lkZXIgdGhhbiB0aGUgY2FudmFzLCBzbyBpdCBjcm9wcyB0aGUgc2lkZXNcbiAgICAgIHNvdXJjZVdpZHRoID0gdmlkZW8udmlkZW9IZWlnaHQgKiBjYW52YXNBc3BlY3RSYXRpbztcbiAgICAgIHNvdXJjZVggPSAodmlkZW8udmlkZW9XaWR0aCAtIHNvdXJjZVdpZHRoKSAvIDI7XG4gICAgfSBlbHNlIGlmICh2aWRlb0FzcGVjdFJhdGlvIDwgY2FudmFzQXNwZWN0UmF0aW8pIHtcbiAgICAgIC8vIHRoZSB2aWRlbyBpcyB0YWxsZXIgdGhhbiB0aGUgY2FudmFzLCBzbyBpdCBjcm9wcyB0aGUgdG9wIGFuZCBib3R0b21cbiAgICAgIHNvdXJjZUhlaWdodCA9IHZpZGVvLnZpZGVvV2lkdGggLyBjYW52YXNBc3BlY3RSYXRpbztcbiAgICAgIHNvdXJjZVkgPSAodmlkZW8udmlkZW9IZWlnaHQgLSBzb3VyY2VIZWlnaHQpIC8gMjtcbiAgICB9XG5cbiAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgdmlkZW8sXG4gICAgICBzb3VyY2VYLFxuICAgICAgc291cmNlWSxcbiAgICAgIHNvdXJjZVdpZHRoLFxuICAgICAgc291cmNlSGVpZ2h0LFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICBkaXNwbGF5Q2FudmFzLndpZHRoLFxuICAgICAgZGlzcGxheUNhbnZhcy5oZWlnaHRcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXJJZHJuZExpc3RlbmVycygpIHtcbiAgICB3aWRnZXRJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB2aWRlb18gPSBldmVudC5kZXRhaWxbMF0udmlkZW87XG4gICAgICAkaWRybmRWaWRlb1N0b3JlRGltZW5zaW9ucyA9IHsgd2lkdGg6IHZpZGVvXy52aWRlb1dpZHRoLCBoZWlnaHQ6IHZpZGVvXy52aWRlb0hlaWdodCB9O1xuXG4gICAgICB2aWRlby5zcmNPYmplY3QgPSB2aWRlb18uc3JjT2JqZWN0O1xuICAgICAgaWRybmRMb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgIGZ1bmN0aW9uIGxvb3AoKSB7XG4gICAgICAgIGlmIChpZHJuZENsb3NlZCkgcmV0dXJuO1xuXG4gICAgICAgIGRyYXdPdmFsKGRpc3BsYXlDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvXyk7XG4gICAgICAgIGxvb3BDYWxsZXIodmlkZW8sIGxvb3AsIHRydWUpO1xuICAgICAgfVxuICAgICAgbG9vcCgpO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICBpZiAoZS5kZXRhaWxbMF0ubWVzc2FnZSA9PT0gJ0RldmljZSBpbiB1c2UnKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0lOX1VTRV9FUlJPUjtcbiAgICAgIH0gZWxzZSBpZiAoZS5kZXRhaWxbMF0ubWVzc2FnZSA9PT0gJ1Blcm1pc3Npb24gZGVuaWVkJyB8fCBlLmRldGFpbFswXS5tZXNzYWdlID09PSAnUGVybWlzc2lvbiBkaXNtaXNzZWQnKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0RFTklFRF9FUlJPUjtcbiAgICAgIH0gZWxzZSBpZiAoZS5kZXRhaWxbMF0ubWVzc2FnZSA9PT0gJ1JlcXVlc3RlZCBkZXZpY2Ugbm90IGZvdW5kJykge1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkRFVklDRV9OT1RfRk9VTkRfRVJST1I7XG4gICAgICB9XG4gICAgICBpZHJuZExvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgICB3aWRnZXRJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdmYWNlRGV0ZWN0aW9uJywgKGUpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgYXN5bmMgKGUpID0+IHtcbiAgICAgIGlmICghJGNhcHR1cmVkKSB7XG4gICAgICAgIGNhcHR1cmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWRybmRDbG9zZWQgPSB0cnVlO1xuICAgICAgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50ID0gZmFsc2U7XG4gICAgICBpZiAoJGNhbWVyYVN0YXR1c1N0b3JlID09PSBDYW1lcmFTdGF0dXNFbnVtLk9LKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0NMT1NFRF9FUlJPUjtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKGUpO1xuICAgIH0pO1xuICAgIHdpZGdldEluc3RhbmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2luaXRpYWxpemUnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAkaWRybmRJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfSk7XG4gICAgd2lkZ2V0SW5zdGFuY2UuYWRkRXZlbnRMaXN0ZW5lcignY2FwdHVyZScsIGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgbGl2ZW5lc3NFcnJvciA9ICcnO1xuICAgICAgY29uc3QgeyBlbmNyeXB0ZWRGaWxlLCBwaG90byB9ID0gZXZlbnQuZGV0YWlsWzBdO1xuICAgICAgJGJsb2IgPSBlbmNyeXB0ZWRGaWxlO1xuICAgICAgd2FpdGluZ0lkcm5kQ2FwdHVyZUV2ZW50ID0gZmFsc2U7XG4gICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLk9LO1xuICAgICAgJHVuY29uZm9ybWl0aWVzU3RvcmUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICRjYXB0dXJlZCA9IHRydWU7XG4gICAgICBjYXB0dXJpbmcgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGltZyA9IChhd2FpdCBibG9iVG9CYXNlNjQocGhvdG8pKS5zcGxpdCgnLCcpO1xuICAgICAgJGRhdGFUeXBlUHJlZml4ID0gaW1nWzBdO1xuICAgICAgJGltYWdlID0gaW1nWzFdO1xuICAgICAgJG9yaWdpbmFsQ2FwdHVyZSA9IGltZ1sxXTtcblxuICAgICAgLy8gaWYgbm8gZW5kcG9pbnQgaXMgcHJvdmlkZWQsIHdlIHVzZSB0aGUgZXZhbHVhdGUgYmlvbWV0cmljcyBlbmRwb2ludCB3aGljaCBzaG91bGQgZG8gYm90aCBsaXZlbmVzcyBhbmQgdW5jb25mb3JtaXRpZXNcbiAgICAgIGlmICghJGNhcHR1cmVMaXZlbmVzc0lkcm5kRW5kcG9pbnQpIHtcbiAgICAgICAgbGV0IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICh7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoXG4gICAgICAgICAgICAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgZXZhbHVhdGVQaG90byxcbiAgICAgICAgICAgIChhd2FpdCBibG9iVG9CYXNlNjQoZW5jcnlwdGVkRmlsZSkpLnNwbGl0KCcsJylbMV1cbiAgICAgICAgICApKTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncywgc3RhdHVzOiAkcmVxdWVzdFJlc3VsdCB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vVE9ETzogdW5jb21tZW50IHRoaXNcbiAgICAgICAgICAvLyBpZiBldmVyeXRoaW5nIGlzIGZpbmUsIGNsb3NlIHRoZSBjYW1lcmEgYWxyZWFkeS5cbiAgICAgICAgICAvLyB3aWRnZXRJbnN0YW5jZS5jbG9zZUNhbWVyYSgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICBsZXQgZXJyb3JDb2RlID0gaWRybmRFcnJvclRvaTE4bktleVsnVU5LTk9XTiddO1xuICAgICAgICAgIGxldCBib2R5UGFydHM6IEJvZHlQYXJ0W10gPSBbXTtcbiAgICAgICAgICBsZXQgaWNhb1dhcm5pbmdzID0gW107XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBeGlvc0Vycm9yICYmIGUucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICBpZiAoZS5yZXNwb25zZS5kYXRhICYmIEFycmF5LmlzQXJyYXkoZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cykpIHtcbiAgICAgICAgICAgICAgYm9keVBhcnRzID0gZS5yZXNwb25zZS5kYXRhLmJvZHlQYXJ0cyBhcyBCb2R5UGFydFtdO1xuICAgICAgICAgICAgICBpY2FvV2FybmluZ3MgPSBlLnJlc3BvbnNlLmRhdGEuaWNhb1dhcm5pbmdzO1xuICAgICAgICAgICAgICBjb25zdCBmYWNlID0gYm9keVBhcnRzLmZpbmQoKGJwKSA9PiAoYnAubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3IpO1xuICAgICAgICAgICAgICBlcnJvckNvZGUgPSAoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZTtcbiAgICAgICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgICAgICAgaWYgKCEoZmFjZT8ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NFcnJvclJlc3VsdCkuZXJyb3JfY29kZSkge1xuICAgICAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5LTk9XTl9MSVZFTkVTU19FUlJPUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdMaXZlbmVzcyBlcnJvcjonLCBlcnJvckNvZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgYnBzIGlzIG1pc3NpbmcsIHRoaXMgaXMgbGlrZWx5IGEgdGVtcGxhdGUgZXh0cmFjdGlvbiBlcnJvclxuICAgICAgICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlRFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uVU5BQkxFX1RPX0NPTU1VTklDQVRFX1dJVEhfVEVNUExBVEVfRVhUUkFDVElPTl9TRVJWSUNFOyAgICAgICAgXG4gICAgICAgICAgICBpZiAoZXZhbHVhdGVQaG90bykgeyAgXG4gICAgICAgICAgICAgIHRvYXN0LmZpcmUoeyBpY29uOiAnZXJyb3InLCB0aXRsZTogJ0ZhbGhhIGFvIGNvbXVuaWNhciBjb20gc2VydmnDp28gZGUgTGl2ZW5lc3MnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGJvZHlQYXJ0cyxcbiAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlZEVycm9yOiAkXyhsaXZlbmVzc0Vycm9yKSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRyZXF1ZXN0UmVzdWx0ICE9PSByZXF1ZXN0UmVzdWx0RW51bS5PSykge1xuICAgICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVBhcnRzWzBdLmxpdmVuZXNzUmVzdWx0KSB7XG4gICAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhib2R5UGFydHNbMF0ubGl2ZW5lc3NSZXN1bHQgYXMgbGl2ZW5lc3NSZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5UGFydHMubGVuZ3RoICE9PSAwICYmIGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MhKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGVycm9yQ29kZTtcbiAgICAgIGxldCBsaXZlbmVzc1Jlc3VsdDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxpdmVuZXNzUmVzdWx0ID0gYXdhaXQgZ2V0TGl2ZW5lc3NJZHJuZChlbmNyeXB0ZWRGaWxlKTtcbiAgICAgICAgdmFsaWRhdGVMaXZlbmVzcyhsaXZlbmVzc1Jlc3VsdC5kYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX0xJVkVORVNTX0VSUk9SO1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEF4aW9zRXJyb3IgJiYgZS5yZXNwb25zZT8uc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICBlcnJvckNvZGUgPSBlLnJlc3BvbnNlLmRhdGEuZXJyb3JfY29kZTtcbiAgICAgICAgICBsaXZlbmVzc0Vycm9yID0gaWRybmRFcnJvclRvaTE4bktleVtlcnJvckNvZGUgYXMga2V5b2YgdHlwZW9mIGlkcm5kRXJyb3JUb2kxOG5LZXldO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xpdmVuZXNzIGVycm9yOicsIGVycm9yQ29kZSk7XG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b2FzdC5maXJlKHsgaWNvbjogJ2Vycm9yJywgdGl0bGU6ICdGYWxoYSBhbyBjb211bmljYXIgY29tIHNlcnZpw6dvIGRlIExpdmVuZXNzJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoJHJlcXVlc3RSZXN1bHQgIT09IHJlcXVlc3RSZXN1bHRFbnVtLk9LKSB7XG4gICAgICAgICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2UtdW5jb25mb3JtaXRpZXMtdmFsaWRhdGVkJywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIGJvZHlQYXJ0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICAgICAgICAgICAgICBkYXRhOiAkb3JpZ2luYWxDYXB0dXJlLFxuICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NCbG9iOiAoYXdhaXQgYmxvYlRvQmFzZTY0KGVuY3J5cHRlZEZpbGUpKS5zcGxpdCgnLCcpWzFdLFxuICAgICAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzUmVzdWx0ICYmIHsgbGl2ZW5lc3NSZXN1bHQgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgLi4uKGVycm9yQ29kZSAmJiB7IGVycm9yQ29kZSB9KSxcbiAgICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRvcmlnaW5hbENhcHR1cmUsIGV2YWx1YXRlUGhvdG8pO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnZmFjZS11bmNvbmZvcm1pdGllcy12YWxpZGF0ZWQnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgZXJyb3JDb2RlLFxuICAgICAgICAgICAgLi4uKGxpdmVuZXNzRXJyb3IgJiYgeyB0cmFuc2xhdGVkRXJyb3I6ICRfKGxpdmVuZXNzRXJyb3IpIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaWYgKGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICRpbWFnZSA9IGJvZHlQYXJ0c1swXS5kYXRhO1xuICAgICAgfVxuICAgICAgdHJhbnNsYXRlQW5kU2V0VW5jb25mb3JtaXRpZXMoaWNhb1dhcm5pbmdzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5DYW1lcmEoZGV2aWNlPzogc3RyaW5nKSB7XG4gICAgLy8gdGhpcyB3ZWlyZCBzdHVmIHdpdGggaGVpZ2h0IGFuZCB3aWR0aCBpcyBoZXJlIHRvIGNvbXBlbnNhdGUgYSBzdmVsdGUgaXNzdWVcbiAgICAvLyBiZWNhdXNlIG9uTW91bnQgZ2V0cyBjYWxsZWQgdHdpY2VcbiAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSAodmlkZW9EaW1lbnNpb25zID8/ICcnKVxuICAgICAgPy5yZXBsYWNlQWxsKCcgJywgJycpXG4gICAgICA/LnNwbGl0KCd4JylcbiAgICAgID8ubWFwKCh2KSA9PiAodiA/IHBhcnNlSW50KHYpIDogdW5kZWZpbmVkKSk7XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSByZXR1cm47XG4gICAgJHZpZGVvU3RvcmUgPSB7IHZpZGVvV2lkdGg6IHdpZHRoLCB2aWRlb0hlaWdodDogaGVpZ2h0IH07XG4gICAgLy8gZmxpcCBlbVxuICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGhlaWdodCA8IHdpZHRoICYmIGlzTW9iaWxlKCkpIHtcbiAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiBoZWlnaHQsIHZpZGVvSGVpZ2h0OiB3aWR0aCB9O1xuICAgIH1cbiAgICBcbiAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgb3BlbkNhbWVyYUxpdmVuZXNzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgc2VsZWN0RGV2aWNlKHdpZHRoLCBoZWlnaHQsIGRldmljZSk7IC8vIG9wZW4gdGhlIGZyb250IGNhbWVyYSBcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5DYW1lcmFMaXZlbmVzcygpIHtcbiAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHJldHVybjtcblxuICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uT0s7XG4gICAgaWYgKHdpZGdldEluc3RhbmNlICYmICdvcGVuQ2FtZXJhJyBpbiB3aWRnZXRJbnN0YW5jZSkgd2lkZ2V0SW5zdGFuY2Uub3BlbkNhbWVyYSgpO1xuICAgIGNhcHR1cmluZyA9IHRydWU7XG4gICAgaWRybmRDbG9zZWQgPSBmYWxzZTtcbiAgICBpZHJuZExvYWRpbmcgPSB0cnVlO1xuICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY2FtZXJhIGRldmljZSwgZW51bWVyYXRlIGRldmljZXMgYWdhaW4uIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciAnYXNrJyBwZXJtaXNzaW9uIFxuICAgIGlmICghJGNhbWVyYURldmljZXNTdG9yZVswXT8uZGV2aWNlSWQpIHsgICBcbiAgICAgIGNvbnN0IFt3aWR0aCwgaGVpZ2h0XSA9ICh2aWRlb0RpbWVuc2lvbnMgPz8gJycpXG4gICAgICA/LnJlcGxhY2VBbGwoJyAnLCAnJylcbiAgICAgID8uc3BsaXQoJ3gnKVxuICAgICAgPy5tYXAoKHYpID0+ICh2ID8gcGFyc2VJbnQodikgOiB1bmRlZmluZWQpKTtcbiAgICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkgcmV0dXJuO1xuICAgICAgYXdhaXQgZ2V0VmlkZW9EaW1lbnNpb25zKHdpZHRoLCBoZWlnaHQsICRmYWNpbmdNb2RlKTsgICAgXG4gICAgICBhd2FpdCBlbnVtZXJhdGVEZXZpY2VzKCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgLy8gd2FpdCBmb3IgZmFjZSBhcGkgdG8gbG9hZCB3ZWlnaHRzXG4gICAgaWYgKCRlbmFibGVGYWNlQXBpICYmICFsb2FkZWRGYWNlQXBpQW5kV2VpZ2h0cykgcmV0dXJuIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIC8vIHJldHVybiBpZiB1bmluaXRpYWxpemVkIHZpZGVvIGVsZW1lbnRcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgLy8gcmV0dXJuIGlmIHRoZSBjdXJyZW50IHRhYiBpc24ndCBmYWNlXG4gICAgaWYgKCEoJHNlbGVjdGVkVGFiID09PSBUYWJFbnVtLkZhY2UpICYmICFub1RhYnMpIHJldHVybiBsb29wQ2FsbGVyKHZpZGVvLCBwbGF5KTtcbiAgICAvLyBpZiBldmVyeXRoaW5nIHBhc3NlcyB3ZSBhcmUgcmVhZHkgdG8gY2FwdHVyZVxuICAgICRyZWFkeSA9IHRydWU7XG4gICAgJGluaXRpYWxpemluZyA9IGZhbHNlXG4gICAgLy8gb25seSBtYWtlIGRldGVjdGlvbnMgaWYgZmFjZSBhcGkgZW5hYmxlZFxuICAgIGlmICgkZW5hYmxlRmFjZUFwaSkge1xuICAgICAgLy8gZmlyZXMgdGhlIGxpc3RlbmVyIHRvIHN0YXJ0IHRoZSBmYWNlIGFwaSBsb29wXG4gICAgICBpZiAoISRzdGFydEZhY2VBcGkpICRzdGFydEZhY2VBcGkgPSB0cnVlO1xuXG4gICAgICBpZiAoIWlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgICAgZHJhd092YWwoZGlzcGxheUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgdmlkZW8pO1xuICAgICAgfVxuICAgICAgbG9vcENhbGxlcih2aWRlbywgcGxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRyYXdPdmFsKGRpc3BsYXlDYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHZpZGVvKTtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIHBsYXkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhcHR1cmUoKSB7XG4gICAgaWYgKCRzY3JlZW5Mb2NrZWQpIHtcbiAgICAgIHVuTG9ja1NjcmVlbigpO1xuICAgICAgJHNjcmVlbkxvY2tlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vQ2hlY2tzIGlmIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBleWVzIGluIHRoZSBjYXB0dXJlZCBwaG90byBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbkV5ZVRvRXllRGlzdFxuICAgIGlmIChtaW5FeWVUb0V5ZURpc3QgPiAwICYmICRleWVEaXN0YW5jZSA8IG1pbkV5ZVRvRXllRGlzdCkge1xuICAgICAgbGV0IGVycm9yQ29kZSA9ICdGQUNFX01VSVRPX1BFUVVFTkEnO1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEVycm9yID0gdW5jb25mb3JtaXR5VG9pMThuS2V5W2Vycm9yQ29kZSBhcyBrZXlvZiB0eXBlb2YgdW5jb25mb3JtaXR5VG9pMThuS2V5XTtcbiAgICAgIGVycm9yQ29kZSA9IHVuY29uZm9ybWl0eVRvaTE4bktleVsnRkFDRV9NVUlUT19QRVFVRU5BJ107XG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdsb3ctcXVhbGl0eS1mYWNlJywge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgZXJyb3JDb2RlOiBlcnJvckNvZGUsXG4gICAgICAgICAgICB0cmFuc2xhdGVkRXJyb3I6ICRfKHRyYW5zbGF0ZWRFcnJvciksXG4gICAgICAgICAgICBib2R5UGFydHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICAgICAgICAgICAgbWluRXllVG9FeWVEaXN0OiBtaW5FeWVUb0V5ZURpc3QsXG4gICAgICAgICAgICAgICAgY2FwdHVyZWRFeWVUb0V5ZURpc3Q6ICRleWVEaXN0YW5jZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0b2FzdC5maXJlKHtpY29uOiAnZXJyb3InLCB0aXRsZTogJF8odHJhbnNsYXRlZEVycm9yKX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICRyZXF1ZXN0UmVzdWx0ID0gcmVxdWVzdFJlc3VsdEVudW0uT0s7XG4gICAgaWYgKGlzTGl2ZW5lc3NFbmFibGVkKCkpIHtcbiAgICAgIHdhaXRpbmdJZHJuZENhcHR1cmVFdmVudCA9IHRydWU7XG4gICAgICB3aWRnZXRJbnN0YW5jZS50YWtlUGhvdG8oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgJGNhcHR1cmVkID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgaWYgKCRlbmFibGVGYWNlQXBpKSB7XG4gICAgICAgIGNvbnN0IFtjYW52YXNdID0gYXdhaXQgKGF3YWl0IGltcG9ydCgnQHZsYWRtYW5kaWMvZmFjZS1hcGknKSkuZXh0cmFjdEZhY2VzKHZpZGVvLCBbJGJveFN0b3JlXSk7XG4gICAgICAgIGNvbnN0IGltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKS5zcGxpdCgnLCcpO1xuICAgICAgICAkZGF0YVR5cGVQcmVmaXggPSBpbWdbMF07XG4gICAgICAgICRpbWFnZSA9IGltZ1sxXTtcbiAgICAgICAgJG9yaWdpbmFsQ2FwdHVyZSA9IGltZ1sxXTtcblxuICAgICAgICBsZXQgYm9keVBhcnRzLCBpY2FvV2FybmluZ3M7XG5cbiAgICAgICAgICAoeyBib2R5UGFydHMsIGljYW9XYXJuaW5ncyB9ID0gYXdhaXQgZ2V0RmFjZVVuY29uZm9ybWl0aWVzKCRpbWFnZSwgZXZhbHVhdGVQaG90bykpO1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdmYWNlLXVuY29uZm9ybWl0aWVzLXZhbGlkYXRlZCcsIHtcbiAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgYm9keVBhcnRzLFxuICAgICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICRyZXF1ZXN0UmVzdWx0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuXG4gICAgICAgIGlmIChib2R5UGFydHMubGVuZ3RoICE9PSAwICYmIGJvZHlQYXJ0c1swXS5kYXRhKSB7XG4gICAgICAgICAgJGltYWdlID0gYm9keVBhcnRzWzBdLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MpO1xuICAgICAgICBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gdmlkZW8ud2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby5oZWlnaHQ7XG4gICAgICAgIGN0eD8uZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICBjb25zdCBpbWcgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJykuc3BsaXQoJywnKTtcbiAgICAgICAgJGRhdGFUeXBlUHJlZml4ID0gaW1nWzBdO1xuICAgICAgICAkaW1hZ2UgPSBpbWdbMV07XG4gICAgICAgICRvcmlnaW5hbENhcHR1cmUgPSBpbWdbMV07XG4gICAgICAgIGxldCB7IGJvZHlQYXJ0cywgaWNhb1dhcm5pbmdzIH0gPSBhd2FpdCBnZXRGYWNlVW5jb25mb3JtaXRpZXMoJGltYWdlLCBldmFsdWF0ZVBob3RvKTtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdmYWNlLXVuY29uZm9ybWl0aWVzLXZhbGlkYXRlZCcsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBib2R5UGFydHMsXG4gICAgICAgICAgICAgIGljYW9XYXJuaW5ncyxcbiAgICAgICAgICAgICAgc3RhdHVzOiAkcmVxdWVzdFJlc3VsdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJvZHlQYXJ0cy5sZW5ndGggIT09IDAgJiYgYm9keVBhcnRzWzBdLmRhdGEpIHtcbiAgICAgICAgICAkaW1hZ2UgPSBib2R5UGFydHNbMF0uZGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2xhdGVBbmRTZXRVbmNvbmZvcm1pdGllcyhpY2FvV2FybmluZ3MpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICBsZXQgZXJyb3JDb2RlID0gaWRybmRFcnJvclRvaTE4bktleVsnVU5LTk9XTiddO1xuICAgICAgbGV0IGJvZHlQYXJ0czogQm9keVBhcnRbXSA9IFtdO1xuICAgICAgbGV0IGljYW9XYXJuaW5ncyA9IFtdO1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBeGlvc0Vycm9yICYmIGUucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgIGlmIChlLnJlc3BvbnNlLmRhdGEgJiYgQXJyYXkuaXNBcnJheShlLnJlc3BvbnNlLmRhdGEuYm9keVBhcnRzKSkge1xuICAgICAgICAgIGJvZHlQYXJ0cyA9IGUucmVzcG9uc2UuZGF0YS5ib2R5UGFydHMgYXMgQm9keVBhcnRbXTtcbiAgICAgICAgICBpY2FvV2FybmluZ3MgPSBlLnJlc3BvbnNlLmRhdGEuaWNhb1dhcm5pbmdzO1xuICAgICAgICAgIGNvbnN0IGZhY2UgPSBib2R5UGFydHMuZmluZCgoYnApID0+IChicC5saXZlbmVzc1Jlc3VsdCBhcyBsaXZlbmVzc0Vycm9yUmVzdWx0KS5lcnJvcik7XG4gICAgICAgICAgZXJyb3JDb2RlID0gKGZhY2U/LmxpdmVuZXNzUmVzdWx0IGFzIGxpdmVuZXNzRXJyb3JSZXN1bHQpLmVycm9yX2NvZGU7XG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5MSVZFTkVTU19ERVRFQ1RJT05fRkFJTFVSRTtcbiAgICAgICAgICBpZiAoIShmYWNlPy5saXZlbmVzc1Jlc3VsdCBhcyBsaXZlbmVzc0Vycm9yUmVzdWx0KS5lcnJvcl9jb2RlKSB7XG4gICAgICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlVOS05PV05fTElWRU5FU1NfRVJST1I7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpdmVuZXNzRXJyb3IgPSBpZHJuZEVycm9yVG9pMThuS2V5W2Vycm9yQ29kZSBhcyBrZXlvZiB0eXBlb2YgaWRybmRFcnJvclRvaTE4bktleV07XG4gICAgICAgICAgY29uc29sZS5lcnJvcignTGl2ZW5lc3MgZXJyb3I6JywgZXJyb3JDb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpZiBicHMgaXMgbWlzc2luZywgdGhpcyBpcyBsaWtlbHkgYSB0ZW1wbGF0ZSBleHRyYWN0aW9uIGVycm9yXG4gICAgICAgICAgJHJlcXVlc3RSZXN1bHQgPSByZXF1ZXN0UmVzdWx0RW51bS5URU1QTEFURV9FWFRSQUNUSU9OX0VSUk9SO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkcmVxdWVzdFJlc3VsdCA9IHJlcXVlc3RSZXN1bHRFbnVtLlVOQUJMRV9UT19DT01NVU5JQ0FURV9XSVRIX1RFTVBMQVRFX0VYVFJBQ1RJT05fU0VSVklDRTsgICAgICAgIFxuICAgICAgICBpZiAoZXZhbHVhdGVQaG90bykge1xuICAgICAgICAgIHRvYXN0LmZpcmUoeyBpY29uOiAnZXJyb3InLCB0aXRsZTogJ0ZhbGhhIGFvIGNvbXVuaWNhciBjb20gc2VydmnDp28gZGUgTGl2ZW5lc3MnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2UtdW5jb25mb3JtaXRpZXMtdmFsaWRhdGVkJywge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgYm9keVBhcnRzLFxuICAgICAgICAgICAgZXJyb3JDb2RlLFxuICAgICAgICAgICAgdHJhbnNsYXRlZEVycm9yOiAkXyhsaXZlbmVzc0Vycm9yKSxcbiAgICAgICAgICAgIHN0YXR1czogJHJlcXVlc3RSZXN1bHQsXG4gICAgICAgICAgICBpY2FvV2FybmluZ3MsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZSgpIHtcbiAgICBjb25zdCBmYWNlOiBCb2R5UGFydCA9IHtcbiAgICAgIGJvZHlQYXJ0OiAnRkFDRScsXG4gICAgICBkYXRhOiAkaW1hZ2UsXG4gICAgICBqdXN0aWZpY2F0aW9uOiAkanVzdGlmaWNhdGlvbixcbiAgICB9O1xuICAgICRzYXZlZCA9IHRydWU7XG4gICAgLy8gc2VuZCBibG9iIGlmIHByZXNlbnRcbiAgICBpZiAoZ2V0KGJsb2IpKSB7XG4gICAgICBibG9iVG9CYXNlNjQoZ2V0KGJsb2IpKS50aGVuKChiYXNlNjQpID0+IHtcbiAgICAgICAgZmFjZS5saXZlbmVzc0Jsb2IgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2V4cG9ydC1mYWNlJywgeyBkZXRhaWw6IGZhY2UgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV0YWtlKCkge1xuICAgIC8vZW1pdCBhbiBlbXB0eSBldmVudCBpbmZvcm1pbmcgdGhhdCBpdCB3YXMgc2NyYXBwZWRcbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2ZhY2Utc2NyYXBwZWQnKSk7XG4gICAgcmVzZXRGYWNlQ29sbGVjdG9yKCk7XG4gICAgaWYgKGlkcm5kQ2xvc2VkKSBvcGVuQ2FtZXJhTGl2ZW5lc3MoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlTGl2ZW5lc3MocmVzdWx0OiBsaXZlbmVzc1Jlc3VsdCkge1xuICAgIGxldCB0aXRsZSA9ICcnO1xuICAgIGxldCBpY29uOiBTd2VldEFsZXJ0SWNvbiA9ICdzdWNjZXNzJztcbiAgICBpZiAocmVzdWx0LmlzQWxpdmUpIHtcbiAgICAgIHRpdGxlID0gYFZpdmFjaWRhZGUgZGUgZmFjZSAoJHtyZXN1bHQuZmFjZV9saXZlbmVzcy5wcm9iYWJpbGl0eS50b0ZpeGVkKDIpfSkgZSBkZSBjYXB0dXJhICgke1xuICAgICAgICByZXN1bHQuY2FwdHVyZV9saXZlbmVzcy5wcm9iYWJpbGl0eVxuICAgICAgfSwgJHtyZXN1bHQuY2FwdHVyZV9saXZlbmVzcy5zY29yZS50b0ZpeGVkKDIpfSkgdmVyaWZpY2Fkb3MhYDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJlc3VsdD8uZmFjZV9saXZlbmVzcz8ucHJvYmFiaWxpdHkpIHtcbiAgICAgICAgaWNvbiA9ICdlcnJvcic7XG4gICAgICAgIHRpdGxlID0gYFZpdmFjaWRhZGUgZGUgZmFjZSAoJHtyZXN1bHQuZmFjZV9saXZlbmVzcy5wcm9iYWJpbGl0eS50b0ZpeGVkKDIpfSkgZSBkZSBjYXB0dXJhICgke1xuICAgICAgICAgIHJlc3VsdC5jYXB0dXJlX2xpdmVuZXNzLnByb2JhYmlsaXR5XG4gICAgICAgIH0sICR7cmVzdWx0LmNhcHR1cmVfbGl2ZW5lc3Muc2NvcmUudG9GaXhlZCgyKX0pIGluc3VmaWNpZW50ZXMhYDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCRzaG93TGl2ZW5lc3NSZXN1bHRUb2FzdCkgdG9hc3QuZmlyZSh7IGljb24sIHRpdGxlIH0pO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2VsZWN0RGV2aWNlKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBkZXZpY2U/OiBzdHJpbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBkZXZpY2VJZDogZGV2aWNlSWQsXG4gICAgICAgICAgd2lkdGg6IHdpZHRoQ2FtZXJhLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0Q2FtZXJhLFxuICAgICAgICAgIGFzcGVjdFJhdGlvOiBhc3BlY3RSYXRpb0NhbWVyYSxcbiAgICAgICAgICBmYWNpbmdNb2RlOiBmYWNpbmcsXG4gICAgICAgICAgdG91Y2hQb2ludHM6IHRvdWNoUG9pbnRzXG4gICAgICAgIH0gPSBhd2FpdCBnZXRWaWRlb0RpbWVuc2lvbnMod2lkdGgsIGhlaWdodCwgJGZhY2luZ01vZGUsIGRldmljZSk7XG4gICAgICAgIGlmICh3aWR0aENhbWVyYSA8IHdpZHRoICYmIGhlaWdodENhbWVyYSA8IGhlaWdodCkge1xuICAgICAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiB3aWR0aENhbWVyYSwgdmlkZW9IZWlnaHQ6IGhlaWdodENhbWVyYSB9OyAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAvLyB0byB3b3JrIG9uIGRldmljZSBlbXVsYXRpb24gKGRlc2t0b3ApXG4gICAgICAgIGlmIChpc01vYmlsZSgpICYmICghZmFjaW5nIHx8IHRvdWNoUG9pbnRzIDw9IDEpICAmJiAod2lkdGhDYW1lcmEgPiBoZWlnaHRDYW1lcmEpKSB7IFxuICAgICAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb1dpZHRoOiBoZWlnaHRDYW1lcmEsIHZpZGVvSGVpZ2h0OiB3aWR0aENhbWVyYSB9OyAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICAvLyBmaXhlcyB0aGUgJ2NhbWVyYSBkb2Vzbid0IG9wZW4gaXNzdWUnIGJ1dCBjYXVzZXMgYmxhY2sgc2NyZWVuXG4gICAgICAgIC8vICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSBudWxsO1xuICAgICAgICAkc2VsZWN0ZWRWaWRlb0RldmljZUlkID0gZGV2aWNlSWQgPyBkZXZpY2VJZCA6ICRjYW1lcmFEZXZpY2VzU3RvcmVbMF0uZGV2aWNlSWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBET01FeGNlcHRpb247XG4gICAgICAgIGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY29uc3RyYWludEVycm9yID0gKGlzT2JqZWN0KGUpICYmIGUuY29uc3RyYWludCA/IGUuY29uc3RyYWludCA6ICcnKTsgXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IsIGNvbnN0cmFpbnRFcnJvcik7XG4gICAgICAgIGlmIChpc09iamVjdChlcnJvcikgJiYgJ21lc3NhZ2UnIGluIGVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ1Blcm1pc3Npb24gZGVuaWVkJykpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVXNlciBkaWRuJ3QgZ2l2ZSBwZXJtaXNzaW9uIHRvIHVzZSBjYW1lcmEhXCIpO1xuICAgICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX0RFTklFRF9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdSZXF1ZXN0ZWQgZGV2aWNlIG5vdCBmb3VuZCcpKSB7XG4gICAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5ERVZJQ0VfTk9UX0ZPVU5EX0VSUk9SO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25zdHJhaW50RXJyb3IuaW5jbHVkZXMoJ3dpZHRoJykgfHwgY29uc3RyYWludEVycm9yLmluY2x1ZGVzKCdoZWlnaHQnKSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENhbWVyYSBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIHN1cHBvcnRlZCByZXF1aXJlbWVudHMhICgke2NvbnN0cmFpbnRFcnJvcn0pYCk7XG4gICAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5DQU1FUkFfVU5TVVBQT1JURUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlT3BlbkNhbWVyYSgpe1xuICAgICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSAnJztcbiAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlckRldmljZUNoYW5nZUxpc3RlbmVyKCkge1xuICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2VjaGFuZ2UgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgIGF3YWl0IGVudW1lcmF0ZURldmljZXMoKTtcbiAgICAgIGlmICgkY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0spIHtcbiAgICAgICAgYXdhaXQgcmVPcGVuQ2FtZXJhKCk7ICAgICAgICBcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICghaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiAhJF9zdHJlYW0uYWN0aXZlKSBcbiAgICAgICAgfHwgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgIWlkcm5kQ2xvc2VkKVxuICAgICAgKSB7XG4gICAgICAgIHNodXRPZmZDYW1lcmEod2lkZ2V0SW5zdGFuY2UpO1xuICAgICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkRFVklDRV9OT1RfRk9VTkRfRVJST1I7XG4gICAgICAgIGlkcm5kQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldEZhY2VOb3RGb3VuZEFsZXJ0ICgpIHtcbiAgICAkZmFjZUZvdW5kID0gZmFsc2U7XG4gICAgXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdGltZURpZmYgPSBub3cgLSBmYWNlRm91bmRTdGFydFRpbWU7XG4gICAgaWYgKHRpbWVEaWZmID4gNTAwMCkgeyAgICAgIFxuICAgICAgZW5hYmxlQ2FwdHVyZUJ1dHRvbiA9IHRydWU7XG4gICAgICBmYWNlRm91bmRTdGFydFRpbWUgPSBub3c7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBsaWdodG5lc3MgPSBhd2FpdCBnZXRJbWFnZUxpZ2h0bmVzcyh2aWRlbyk7XG4gICAgICAgIGlmIChsaWdodG5lc3MgPCA1MCkge1xuICAgICAgICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuaWxsdW1pbmF0aW9uVG9vTG93JztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlnaHRuZXNzID4gMTgwKSB7XG4gICAgICAgICAgJGZhY2VWYWxpZGF0aW9uQWxlcnQgPSAnZmFjZUNvbGxlY3Rvci5pbGx1bWluYXRpb25Ub29IaWdoJztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIHRoZSB2aWRlbyBsaWdodGluZyBsZXZlbDogXCIsIGVycm9yKTtcbiAgICAgIH0gXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzaGFycG5lc3MgPSBhd2FpdCBnZXRJbWFnZVNoYXJwbmVzcyh2aWRlbyk7XG4gICAgICAgIGlmIChzaGFycG5lc3MgPCA1KSB7XG4gICAgICAgICAgJGZhY2VWYWxpZGF0aW9uQWxlcnQgPSAnZmFjZUNvbGxlY3Rvci5sb3dTaGFycG5lc3MnO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyB0aGUgdmlkZW8gc2hhcnBuZXNzIGxldmVsOiBcIiwgZXJyb3IpO1xuICAgICAgfSBcbiAgICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuZmFjZVdhc05vdEZvdW5kJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF3YWl0aW5nRmFjZU5vdEZvdW5kVGltZW91dCkge1xuICAgICAgICB3YWl0aW5nRmFjZU5vdEZvdW5kVGltZW91dCA9IHRydWU7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGxldCBpbnZhbGlkQWxlcnRzID0gWydmYWNlQ29sbGVjdG9yLmZhY2VXYXNOb3RGb3VuZCcsICdmYWNlQ29sbGVjdG9yLmlsbHVtaW5hdGlvblRvb0xvdycsICdmYWNlQ29sbGVjdG9yLmxvd1NoYXJwbmVzcycsICdmYWNlQ29sbGVjdG9yLmlsbHVtaW5hdGlvblRvb0hpZ2gnXTtcbiAgICAgICAgICB3YWl0aW5nRmFjZU5vdEZvdW5kVGltZW91dCA9IGZhbHNlO1xuICAgICAgICAgIGlmICgkZmFjZVZhbGlkYXRpb25BbGVydCAmJiAhaW52YWxpZEFsZXJ0cy5pbmNsdWRlcygkZmFjZVZhbGlkYXRpb25BbGVydCkpIHtcbiAgICAgICAgICAgICRmYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxNTAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdWJzY3JpcHRpb25zXG5cbiAgY29uc3QgdW5zdWJzY3JpYmVWaWRlb0RpbWVuc2lvbnMgPSB2aWRlb1N0b3JlLnN1YnNjcmliZSgoc3RvcmVPYmopID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKCFkZXRlY3Rpb25zQ2FudmFzKSByZXR1cm47XG5cbiAgICB2aWRlby53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgdmlkZW8uaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy53aWR0aCA9IHN0b3JlT2JqLnZpZGVvV2lkdGg7XG4gICAgZGV0ZWN0aW9uc0NhbnZhcy5oZWlnaHQgPSBzdG9yZU9iai52aWRlb0hlaWdodDtcbiAgICBtYXNrQ2FudmFzLndpZHRoID0gc3RvcmVPYmoudmlkZW9XaWR0aDtcbiAgICBtYXNrQ2FudmFzLmhlaWdodCA9IHN0b3JlT2JqLnZpZGVvSGVpZ2h0O1xuICAgIC8vIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgLy8gY29uc29sZS5sb2coc3RvcmVPYmoudmlkZW9XaWR0aCwgc3RvcmVPYmoudmlkZW9IZWlnaHQpO1xuICAgIGRpc3BsYXlDYW52YXMud2lkdGggPSBzdG9yZU9iai52aWRlb1dpZHRoO1xuICAgIGRpc3BsYXlDYW52YXMuaGVpZ2h0ID0gc3RvcmVPYmoudmlkZW9IZWlnaHQ7XG4gICAgLy8gfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucyA9IGZhY2VWYWxpZGF0aW9uc1N0b3JlLnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoJGNvbGxlY3RvclNlbGVjdCA9PSAnRE9DVU1FTlQnKSByZXR1cm47XG5cbiAgICBsZXQgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICcnO1xuXG4gICAgaWYgKCFuZXdWYWx1ZS5pc1BlcnNvbkNsb3NlRW5vdWdoKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IuY29tZUNsb3NlckNhbWVyYSc7XG4gICAgfSBlbHNlIGlmIChuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlKSB7XG4gICAgICBuZXdGYWNlVmFsaWRhdGlvbkFsZXJ0ID0gJ2ZhY2VDb2xsZWN0b3IubW92ZUF3YXlDYW1lcmEnO1xuICAgIH0gZWxzZSBpZiAoIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLnN0YXlJbkZyYW1lJztcbiAgICB9IGVsc2UgaWYgKCFuZXdWYWx1ZS5jbG9zZWRNb3V0aCkge1xuICAgICAgbmV3RmFjZVZhbGlkYXRpb25BbGVydCA9ICdmYWNlQ29sbGVjdG9yLmRvbnRPcGVuTW91dGgnO1xuICAgIH1cbiAgICBcbiAgICBpZiAoJGZhY2VGb3VuZCkgc2V0VmFsaWRhdGlvbkFsZXJ0KG5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQpOyAvLyBzZXQgdGhlIGFsZXJ0IG9ubHkgaWYgdGhlIGZhY2UgaXMgZm91bmRcblxuICAgIC8vIEFVVE9NQVRJQyBDQVBUVVJFXG4gICAgLy8gaWYgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBva1xuICAgIGlmIChcbiAgICAgICEkY2FwdHVyZWQgJiZcbiAgICAgICRhdXRvbWF0aWNDYXB0dXJlICYmXG4gICAgICAkZmFjZUZvdW5kICYmXG4gICAgICAhaXNDb3VudGluZ0Rvd24gJiZcbiAgICAgIG5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZSAmJlxuICAgICAgbmV3VmFsdWUuY2xvc2VkTW91dGggJiZcbiAgICAgICEoIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHwgbmV3VmFsdWUuaXNQZXJzb25Ub29jbG9zZSlcbiAgICApIHtcbiAgICAgIC8vIHN0YXJ0IGEgY291bnRkb3duIGFuZCB0YWtlIGEgcGljdHVyZVxuICAgICAgaXNDb3VudGluZ0Rvd24gPSB0cnVlO1xuICAgICAgY291bnREb3duRmluaXNoVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgY291bnREb3duQ2FwdHVyZTtcbiAgICAgIGNvbnN0IGNvdW50ZG93bkludGVydmFsQ2FsbGJhY2sgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vIHN0b3AgY291bnRpbmcgaWYgZGlzYWJsZWQgbWlkLWNvdW50IG9yIGlmIGNhcHR1cmVkIGJlZm9yZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgISRhdXRvbWF0aWNDYXB0dXJlIHx8XG4gICAgICAgICAgJGNhcHR1cmVkIHx8XG4gICAgICAgICAgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgaWRybmRDbG9zZWQpIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uQ2xvc2VFbm91Z2ggfHxcbiAgICAgICAgICBuZXdWYWx1ZS5pc1BlcnNvblRvb2Nsb3NlIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmNsb3NlZE1vdXRoIHx8XG4gICAgICAgICAgIW5ld1ZhbHVlLmlzUGVyc29uSW5GcmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICBpc0NvdW50aW5nRG93biA9IGZhbHNlO1xuICAgICAgICAgIGRpc2FibGVDb3VudERvd24gPSB0cnVlO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgZGlzYWJsZUNvdW50RG93biA9IGZhbHNlO1xuICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gTWF0aC5mbG9vcigoKGNvdW50RG93bkZpbmlzaFRpbWUgLSBub3cpICUgKDEwMDAgKiA2MCkpIC8gMTAwMCk7XG4gICAgICAgIC8vIGNvdW50RG93bkh0bWxFbGVtZW50LmlubmVySFRNTCA9IHJlbWFpbmluZ1NlY29uZHMudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKHJlbWFpbmluZ1NlY29uZHMgPD0gMCkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY291bnRkb3duSW50ZXJ2YWxDYWxsYmFjayk7XG4gICAgICAgICAgaXNDb3VudGluZ0Rvd24gPSBmYWxzZTtcbiAgICAgICAgICBjYXB0dXJlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9KTtcblxuICAvLyB3ZSBjb3VsZCBoYXZlIHVzZWQgaGlkZGVuPXskY2FwdHVyZWR9LCBidXQgZm9yIHNvbWUgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBzbyBkbyB0aGlzIGluc3RlYWRcbiAgY29uc3QgdW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlID0gY2FwdHVyZWQuc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghZW5jbG9zaW5nRGl2KSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LnJlbW92ZSgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNsb3NpbmdEaXYuY2xhc3NMaXN0LmFkZCgnZmxleCcpO1xuICAgICAgZW5jbG9zaW5nRGl2LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjID0gY2xlYXJlZFZpZGVvU3JjT2JqZWN0LnN1YnNjcmliZSgobmV3VmFsdWUpID0+IHtcbiAgICBpZiAoIXZpZGVvKSByZXR1cm47XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBudWxsIGluIHZpZGVvIHNyY09iamVjdCcpO1xuICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIHZpZGVvLnNyYyA9ICcnO1xuICAgICAgJHNlbGVjdGVkVmlkZW9EZXZpY2VJZCA9IG51bGw7XG4gICAgfVxuICB9KTtcblxuICBzZWxlY3RlZFRhYi5zdWJzY3JpYmUoYXN5bmMgKHRhYikgPT4ge1xuICAgIGlmICh0YWIgPT09IFRhYkVudW0uRmFjZSkge1xuICAgICAgYXdhaXQgZW51bWVyYXRlRGV2aWNlcygpO1xuICAgICAgaWYgKGlzTGl2ZW5lc3NFbmFibGVkKCkpICRzZWxlY3RlZFZpZGVvRGV2aWNlSWQgPSAkY2FtZXJhRGV2aWNlc1N0b3JlWzBdPy5kZXZpY2VJZDtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlU2VsZWN0ZWRTdHJlYW0gPSBzZWxlY3RlZFZpZGVvRGV2aWNlSWQuc3Vic2NyaWJlKGFzeW5jIChuZXdEZXZpY2VJZCkgPT4ge1xuICAgIGlmICghbmV3RGV2aWNlSWQgfHwgJGNvbGxlY3RvclNlbGVjdCA9PSAnRE9DVU1FTlQnIHx8IChpc0xpdmVuZXNzRW5hYmxlZCgpICYmIGlkcm5kQ2xvc2VkKSkgcmV0dXJuO1xuICAgIGlmICghdmlkZW8pIHtcbiAgICAgIC8vIHJlcmVuZGVyIHZpZGVvIHRhZ1xuICAgICAgdW5pcXVlID0ge307XG4gICAgfVxuICAgIGNvbnN0IHsgdmlkZW9IZWlnaHQsIHZpZGVvV2lkdGggfSA9ICR2aWRlb1N0b3JlO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgICBhd2FpdCBzaHV0T2ZmQ2FtZXJhKHdpZGdldEluc3RhbmNlKTtcbiAgICAgICAgYXdhaXQgb3BlbkNhbWVyYUxpdmVuZXNzKClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgc2V0dXBTdHJlYW0odmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQsIG5ld0RldmljZUlkKTtcbiAgICAgIHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICRfc3RyZWFtID0gc3RyZWFtO1xuICAgICAgJGNsZWFyZWRWaWRlb1NyY09iamVjdCA9IGZhbHNlO1xuICAgICAgaWYgKCFyaWdodE9yaWVudGF0aW9uKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uQ0FNRVJBX09SSUVOVEFUSU9OX1BPUlRSQUlUO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGNhbWVyYVN0YXR1c1N0b3JlID0gQ2FtZXJhU3RhdHVzRW51bS5PSztcbiAgICAgIH1cbiAgICAgIHN0cmVhbS5nZXRUcmFja3MoKVxuICAgICAgLmZvckVhY2goKHRyYWNrKSA9PiB7XG4gICAgICAgIGlmICh0cmFjay5yZWFkeVN0YXRlID09PSAnbGl2ZScpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FtZXJhICR7dHJhY2subGFiZWx9IG9wZW5lZCBzdWNjZXNzZnVsbHkhYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBET01FeGNlcHRpb247XG4gICAgICBpZHJuZENsb3NlZCA9IHRydWU7XG4gICAgICBpZiAoaXNPYmplY3QoZXJyb3IpICYmICdtZXNzYWdlJyBpbiBlcnJvciAmJiBlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCdSZXF1ZXN0ZWQgZGV2aWNlIG5vdCBmb3VuZCcpKSB7XG4gICAgICAgICRjYW1lcmFTdGF0dXNTdG9yZSA9IENhbWVyYVN0YXR1c0VudW0uREVWSUNFX05PVF9GT1VORF9FUlJPUjtcbiAgICAgIH1cbiAgICB9XG5cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVDaGFuZ2VUYWIgPSBzZWxlY3RlZFRhYi5zdWJzY3JpYmUoYXN5bmMgKHRhYikgPT4ge1xuICAgIGlmICh0YWIgPT09IFRhYkVudW0uRmFjZSAmJiBpc0xpdmVuZXNzRW5hYmxlZCgpKSB7XG4gICAgICBpZiAoIWNhcHR1cmluZyAmJiAhJGNhcHR1cmVkICYmIGluaXRpYWxpemVkKSBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUZhY2VBcGkgPSBzdGFydEZhY2VBcGkuc3Vic2NyaWJlKGFzeW5jIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlmIChuZXdWYWx1ZSkgZmFjZWFwaUxvb3AoKTtcbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVTd2FwQ2FtZXJhID0gc3dhcENhbWVyYS5zdWJzY3JpYmUoYXN5bmMgKG5ld1ZhbHVlKSA9PiB7XG4gICAgaWYgKCEkdmlkZW9TdG9yZSkgcmV0dXJuO1xuICAgIHNodXRPZmZDYW1lcmEoKTtcblxuICAgIGlmICghaXNNb2JpbGUoKSkgeyAvLyBkZXNrdG9wIGNhbWVyYXNcbiAgICAgIGNvbnN0IGN1cnJlbnREZXZpY2UgPSAkY2FtZXJhRGV2aWNlc1N0b3JlLmZpbmRJbmRleChkZXZpY2UgPT4gZGV2aWNlLmRldmljZUlkID09PSAkc2VsZWN0ZWRWaWRlb0RldmljZUlkKTtcbiAgICAgIGNvbnN0IG5leHREZXZpY2UgPSAoY3VycmVudERldmljZSArIDEpICUgJGNhbWVyYURldmljZXNTdG9yZS5sZW5ndGg7XG4gICAgICBjb25zdCBkZXZpY2VJZCA9ICRjYW1lcmFEZXZpY2VzU3RvcmVbbmV4dERldmljZV0uZGV2aWNlSWQ7XG4gICAgICBpZiAoaXNMaXZlbmVzc0VuYWJsZWQoKSkge1xuICAgICAgICAkc2VsZWN0ZWRWaWRlb0RldmljZUlkID0gZGV2aWNlSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKGRldmljZUlkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobmV3VmFsdWUpIHsgLy8gbW9iaWxlIGRldmljZXNcbiAgICAgICAgJGZhY2luZ01vZGUgPSBGYWNpbmdNb2RlRW51bS5SRUFSX0NBTUVSQTtcbiAgICAgICAgYXdhaXQgb3BlbkNhbWVyYSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgICRmYWNpbmdNb2RlID0gRmFjaW5nTW9kZUVudW0uRlJPTlRfQ0FNRVJBO1xuICAgICAgICBhd2FpdCBvcGVuQ2FtZXJhKCk7XG4gICAgfSBcbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVPcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uRGF0YS5zdWJzY3JpYmUoYXN5bmMgKGRhdGEpID0+IHtcbiAgICBpZiAoIWRhdGEuaXNTdXBwb3J0ZWQgfHwgIWlzTW9iaWxlKCkgfHwgJGNvbGxlY3RvclNlbGVjdCAhPSAnRkFDRScpIHJldHVybjtcblxuICAgIHJpZ2h0T3JpZW50YXRpb24gPSBkYXRhLm9yaWVudGF0aW9uLmluY2x1ZGVzKCdwb3J0cmFpdCcpO1xuICAgIGlmIChyaWdodE9yaWVudGF0aW9uKSB7XG4gICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLk9LO1xuICAgIH0gZWxzZSB7XG4gICAgICAkY2FtZXJhU3RhdHVzU3RvcmUgPSBDYW1lcmFTdGF0dXNFbnVtLkNBTUVSQV9PUklFTlRBVElPTl9QT1JUUkFJVDtcbiAgICB9XG4gIH0pO1xuXG5cbiAgYXN5bmMgZnVuY3Rpb24gZmFjZWFwaUxvb3AoKSB7XG4gICAgbGV0IGRldGVjdGlvbnNSZXN1bHQ7XG4gICAgaWYgKGZhY2VBcGlDb3VudGVyID49IGZhY2VBcGlGcmFtZVJhdGUpIHtcbiAgICAgIGZhY2VBcGlDb3VudGVyID0gMDtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBnZXRGYWNlRGV0ZWN0b3JPcHRpb25zKCk7XG4gICAgICAvLyBkZWJ1Z2dlclxuICAgICAgY29uc3QgZmFjZWFwaSA9IGF3YWl0IGltcG9ydCgnQHZsYWRtYW5kaWMvZmFjZS1hcGknKTtcbiAgICAgIGxldCBkZXRlY3Rpb25zUmVzdWx0MjtcbiAgICAgIGRldGVjdGlvbnNSZXN1bHQyID0gZmFjZWFwaS5kZXRlY3RTaW5nbGVGYWNlKGRpc3BsYXlDYW52YXMsIG9wdGlvbnMpO1xuICAgICAgZGV0ZWN0aW9uc1Jlc3VsdCA9IGF3YWl0IGRldGVjdGlvbnNSZXN1bHQyLndpdGhGYWNlTGFuZG1hcmtzKCk7XG4gICAgICAvLyBjbGVhciBjYW52YXMgd2hlbiBub3RoaW5nIGRldGVjdGVkXG4gICAgICBkZXRlY3Rpb25zQ2FudmFzLmdldENvbnRleHQoJzJkJyk/LmNsZWFyUmVjdCgwLCAwLCBkZXRlY3Rpb25zQ2FudmFzLndpZHRoLCBkZXRlY3Rpb25zQ2FudmFzLmhlaWdodCk7XG5cbiAgICAgIGlmIChkZXRlY3Rpb25zUmVzdWx0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBkcmF3RGV0ZWN0aW9uc0luRmFjZShkZXRlY3Rpb25zUmVzdWx0LCBkZXRlY3Rpb25zQ2FudmFzLCBlbmFibGVNaW51dGlhZSk7XG4gICAgICAgICRmYWNlRm91bmQgPSB0cnVlO1xuICAgICAgICBlbmFibGVDYXB0dXJlQnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgZmFjZUZvdW5kU3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRGYWNlTm90Rm91bmRBbGVydCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmYWNlQXBpQ291bnRlciArKztcbiAgICB9XG4gICAgXG4gICAgaWYgKCRzdGFydEZhY2VBcGkpIHtcbiAgICAgIGxvb3BDYWxsZXIodmlkZW8sIGZhY2VhcGlMb29wKTtcbiAgICB9XG4gIH1cblxuICByZXRha2VQaG90by5zdWJzY3JpYmUoYXN5bmMgKG52KSA9PiB7XG4gICAgaWYgKG52KSB7XG4gICAgICByZXRha2UoKTtcbiAgICAgICRyZXRha2VQaG90byA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlciA9IHJlYWR5LnN1YnNjcmliZSgobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIC8vIGluZm9ybXMgdGhhdCB0aGUgY2FtZXJhIGlzIHJlYWR5ICh0byBiZSBjbG9zZWQgaWYgdGhhdCBpcyB3aGF0IHlvdSB3YW50IHRvIGRvKVxuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdicnljYy1jYW1lcmEtcmVhZHknKSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB1bnN1YnNjcmliZUluaXRpYWxpemVkRXZlbnRFbWl0dGVyID0gaW5pdGlhbGl6aW5nLnN1YnNjcmliZSgobnYpID0+IHtcbiAgICBpZiAobnYpIHtcbiAgICAgIC8vIGluZm9ybXMgdGhhdCB0aGUgaWRybmQgd2lkZ2V0IGlzIGluaXRpYWxpemVkXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2JyeWNjLWZhY2UtaW5pdGlhbGl6ZWQnKSk7XG4gICAgfVxuICB9KTtcblxuICBvbkRlc3Ryb3koKCkgPT4ge1xuICAgIHNodXRPZmZDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZUNhcHR1cmVkU3RhdGUoKTtcbiAgICB1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucygpO1xuICAgIHVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zKCk7XG4gICAgdW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjKCk7XG4gICAgdW5zdWJzY3JpYmVTZWxlY3RlZFN0cmVhbSgpO1xuICAgIHVuc3Vic2NyaWJlQ2hhbmdlVGFiKCk7XG4gICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICB1bnN1YnNjcmliZUZhY2VBcGkoKTtcbiAgICB1bnN1YnNjcmliZVN3YXBDYW1lcmEoKTtcbiAgICB1bnN1YnNjcmliZU9yaWVudGF0aW9uKCk7XG4gICAgdW5zdWJzY3JpYmVSZWFkeUNhbWVyYUV2ZW50RW1pdHRlcigpO1xuICAgIHVuc3Vic2NyaWJlSW5pdGlhbGl6ZWRFdmVudEVtaXR0ZXIoKTtcbiAgICB1bkxvY2tTY3JlZW4oKTtcbiAgICBpbnRlcnZhbElkID0gMDtcbiAgfSk7XG48L3NjcmlwdD5cblxuPCEtLSBzdmVsdGUtaWdub3JlIGExMXktbWVkaWEtaGFzLWNhcHRpb24gLS0+XG48ZGl2PlxuICA8IS0tIHtbJHZpZGVvU3RvcmU/LnZpZGVvSGVpZ2h0LCAkdmlkZW9TdG9yZT8udmlkZW9XaWR0aF19XG4gIHtbZGlzcGxheUNhbnZhcz8uaGVpZ2h0LCBkaXNwbGF5Q2FudmFzPy53aWR0aF19XG4gIHtbJF9zdHJlYW0/LmdldFZpZGVvVHJhY2tzKClbMF0/LmdldFNldHRpbmdzKCk/LmhlaWdodCwgJF9zdHJlYW0/LmdldFZpZGVvVHJhY2tzKClbMF0/LmdldFNldHRpbmdzKCk/LndpZHRoXX0gLS0+XG4gIDxkaXYgYmluZDp0aGlzPXtlbmNsb3NpbmdEaXZ9IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbXgtYXV0b1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz0geyAhJHJlYWR5ID8gXCJyZWxhdGl2ZSB3LTAgaC0wXCIgOiBcInJlbGF0aXZlXCIgfVxuICAgICAgICBoaWRkZW49eyAkY2FtZXJhU3RhdHVzU3RvcmUgIT09IENhbWVyYVN0YXR1c0VudW0uT0tcbiAgICAgICAgfHwgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgKGlkcm5kTG9hZGluZyB8fCBpZHJuZENsb3NlZCB8fCB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQpKX1cbiAgICAgID5cbiAgICAgICAgeyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpfVxuICAgICAgICAgIDxpZGxpdmUtZmFjZS1jYXB0dXJlXG4gICAgICAgICAgICBoaWRkZW5cbiAgICAgICAgICAgIG1hc2tfaGlkZGVuXG4gICAgICAgICAgICBhdXRvX2NhcHR1cmVfZGlzYWJsZWRcbiAgICAgICAgICAgIGF1dG9fY2xvc2VfZGlzYWJsZWRcbiAgICAgICAgICAgIGRldmljZV9pZD17JHNlbGVjdGVkVmlkZW9EZXZpY2VJZH1cbiAgICAgICAgICAgIGJpbmQ6dGhpcz17d2lkZ2V0SW5zdGFuY2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgey9pZn1cbiAgICAgICAgPCEtLSB3aGVuIHVuaXF1ZSBnZXRzIHJlc3NpZ25lZCBpdCB3aWxsIGdldCByZSByZW5kZXJlZCwgd2hpY2ggc29sdmVzIHRoZSAnY2FtZXJhIG5vdCBvcGVuaW5nIGlzc3VlJyAtLT5cbiAgICAgICAgeyNrZXkgdW5pcXVlfVxuICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgaWQ9XCJicnktY2MtY2FtZXJhLXZpZGVvLXRhZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIC16LTEwXCJcbiAgICAgICAgICAgIGJpbmQ6dGhpcz17dmlkZW99XG4gICAgICAgICAgICBvbjpjYW5wbGF5PXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc0xpdmVuZXNzRW5hYmxlZCgpKSByZXR1cm47XG4gICAgICAgICAgICAgICR2aWRlb1N0b3JlID0geyB2aWRlb0hlaWdodDogdmlkZW8udmlkZW9IZWlnaHQsIHZpZGVvV2lkdGg6IHZpZGVvLnZpZGVvV2lkdGggfTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbjpwbGF5fG9uY2U9e3BsYXl9XG4gICAgICAgICAgICBwbGF5c2lubGluZVxuICAgICAgICAgICAgbXV0ZWRcbiAgICAgICAgICAgIGF1dG9wbGF5XG4gICAgICAgICAgLz5cbiAgICAgICAgey9rZXl9XG4gICAgICAgIHsjaWYgc2hvd0NvbmZpZ0J1dHRvbiAmJiAkcmVhZHl9XG4gICAgICAgICAgPENvbmZCdG4vPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmIHNob3dDYW1lcmFCdXR0b24gJiYgJHJlYWR5fVxuICAgICAgICAgIDxDYW1lcmFCdG4vPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmIHNob3dBdXRvQ2FwdHVyZUJ1dHRvbiAmJiAhJGF1dG9tYXRpY0NhcHR1cmUgJiYgIXNob3dDYXB0dXJlQnV0dG9uICYmICRyZWFkeX1cbiAgICAgICAgICA8QXV0b0NhcHR1cmVCdG4vPlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmIHNob3dDYXB0dXJlQnV0dG9uICYmICRyZWFkeX1cbiAgICAgICAgICA8VGFrZVBpY3R1cmVCdG5cbiAgICAgICAgICBkaXNhYmxlZD17KCFlbmFibGVDYXB0dXJlQnV0dG9uICYmICRlbmFibGVGYWNlQXBpKSB8fCAoISRyZWFkeSAmJiAhJGVuYWJsZUZhY2VBcGkpfVxuICAgICAgICAgIGhpZGRlbj17KCRjYW1lcmFTdGF0dXNTdG9yZSAhPT0gQ2FtZXJhU3RhdHVzRW51bS5PSykgXG4gICAgICAgICAgfHwgKGlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgKGlkcm5kTG9hZGluZyB8fCBpZHJuZENsb3NlZCB8fCB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnQpKX1cbiAgICAgICAgICBoYW5kbGVyPXtjYXB0dXJlfVxuICAgICAgICAgIC8+XG4gICAgICAgIHsvaWZ9XG4gICAgICAgIDwhLS0geyNpZiBpc0xpdmVuZXNzRW5hYmxlZCgpfSAtLT5cbiAgICAgICAgPCEtLSB3b3JrcyBhcyB0aGUgdmlkZW8gdGFnIHdoZW4gbGl2ZW5lc3MgZW5hYmxlZC4gVGhpcyBpcyByZXF1aXJlZCB0byBiZSBhYmxlIHRvIHNldCB2aWRlbyByYXRpbyBjb3JyZWN0bHkgLS0+XG4gICAgICAgIDxjYW52YXMgYmluZDp0aGlzPXtkaXNwbGF5Q2FudmFzfSBpZD1cImJyeS1jZS1kaXNwbGF5Q2FudmFzXCIgY2xhc3M9XCJtYXgtdy1mdWxsIC1zY2FsZS14LTEwMFwiIC8+XG4gICAgICAgIDwhLS0gey9pZn0gLS0+XG4gICAgICAgIDxjYW52YXNcbiAgICAgICAgICBiaW5kOnRoaXM9e2RldGVjdGlvbnNDYW52YXN9XG4gICAgICAgICAgaWQ9XCJicnktY2UtZGV0ZWN0aW9uc0NhbnZhc1wiXG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgbWF4LXctZnVsbCAtc2NhbGUteC0xMDBcIlxuICAgICAgICAvPlxuICAgICAgICA8Y2FudmFzIGJpbmQ6dGhpcz17bWFza0NhbnZhc30gaWQ9XCJicnktY2UtbWFza0NhbnZhc1wiIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIG1heC13LWZ1bGwgLXNjYWxlLXgtMTAwXCIgLz5cbiAgICAgICAgeyNpZiBpc0NvdW50aW5nRG93bn1cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIGNlLWR1aS1iYWRnZSBjZS1kdWktYmFkZ2UtbGcgaC1bMmVtXSB0ZXh0LTJ4bCB4bDp0ZXh0LWJhc2Ugdy1bMTIuMWVtXSB7aXNNb2JpbGUoKSBcbiAgICAgICAgICAgID8gJ3RvcC1bMTAlXScgOiAndG9wLVszJV0nfVwiXG4gICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLnN0YXlTdGlsbCcpfTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgey9pZn1cbiAgICAgICAgeyNpZiAkZW5hYmxlRmFjZUFwaSAmJiAhaXNDb3VudGluZ0Rvd24gJiYgJGZhY2VWYWxpZGF0aW9uQWxlcnR9XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiBjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gdGV4dC0yeGwgeGw6dGV4dC1iYXNlIHctWzEyLjFlbV0ge2lzTW9iaWxlKCkgXG4gICAgICAgICAgICA/ICd0b3AtWzEwJV0nIDogJ3RvcC1bMyVdJ31cIlxuICAgICAgICAgICAgPnskXyhgJHskZmFjZVZhbGlkYXRpb25BbGVydH1gKX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIHsvaWZ9XG4gICAgICA8L2Rpdj5cbiAgICAgIHsjaWYgIWlzTGl2ZW5lc3NFbmFibGVkKCkgJiYgISRyZWFkeX1cbiAgICAgICAgPHNsb3QgbmFtZT1cImxvYWRpbmctY2FtZXJhLWdpZlwiIGNsYXNzPVwiYmxvY2sgaC1bMTdlbV0gbGc6aC1bMjEuNmVtXSB4bDpoLVszMGVtXVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2xhdGUteS0xLzMgbWQ6dHJhbnNsYXRlLXktMS80IHhsOnRyYW5zbGF0ZS15LTEvMlwiPlxuICAgICAgICAgICAgPGltZyBzcmM9e2xvYWRpbmdHaWZ9IGFsdD1cImxvYWRpbmcgZ2lmXCIgY2xhc3M9XCJtLWF1dG8gaC1bMTBlbV0gbGc6aC1bMTJlbV1cIiAvPlxuICAgICAgICAgICAgeyNpZiAkaXNMb2FkaW5nfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIjJ4bDp0ZXh0LTJ4bCBsZzp0ZXh0LTJ4bCB0ZXh0LW1kIGJsb2NrIHAtMiBtLWF1dG8gdGV4dC1jZW50ZXJcIj5Mb2FkaW5nIGNhbWVyYS4uLjwvc3Bhbj5cbiAgICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLmluaXRpYXRpbmdDYW1lcmEnKX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zbG90PlxuICAgICAgey9pZn1cbiAgICAgIHsjaWYgaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiB3YWl0aW5nSWRybmRDYXB0dXJlRXZlbnR9XG4gICAgICAgIDxzbG90IG5hbWU9XCJvYnRhaW5pbmctcGhvdG8tZ2lmXCIgY2xhc3M9XCJibG9jayBoLVsxN2VtXSBsZzpoLVsyMS42ZW1dIHhsOmgtWzMwZW1dXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZS15LTEvMyBtZDp0cmFuc2xhdGUteS0xLzQgeGw6dHJhbnNsYXRlLXktMS8yXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz17bG9hZGluZ0dpZn0gYWx0PVwibG9hZGluZyBnaWZcIiBjbGFzcz1cIm0tYXV0byBoLVsxMGVtXSBsZzpoLVsxMmVtXVwiIC8+XG4gICAgICAgICAgICB7I2lmICRpc0xvYWRpbmd9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiMnhsOnRleHQtMnhsIGxnOnRleHQtMnhsIHRleHQtbWQgYmxvY2sgcC0yIG0tYXV0byB0ZXh0LWNlbnRlclwiPk9idGFpbmluZyBwaG90by4uLjwvc3Bhbj5cbiAgICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIyeGw6dGV4dC0yeGwgbGc6dGV4dC0yeGwgdGV4dC1tZCBibG9jayBwLTIgbS1hdXRvIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLm9idGFpbmluZ1BpY3R1cmUnKX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zbG90PlxuICAgICAgey9pZn1cbiAgICAgIHsjaWYgaXNMaXZlbmVzc0VuYWJsZWQoKSAmJiBpZHJuZExvYWRpbmcgJiYgJGNhbWVyYVN0YXR1c1N0b3JlID09PSBDYW1lcmFTdGF0dXNFbnVtLk9LfVxuICAgICAgICA8c2xvdCBuYW1lPVwibG9hZGluZy1jYW1lcmEtZ2lmXCIgY2xhc3M9XCJibG9jayBoLVsxN2VtXSBsZzpoLVsyMS42ZW1dIHhsOmgtWzMwZW1dXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZS15LTEvMyBtZDp0cmFuc2xhdGUteS0xLzQgeGw6dHJhbnNsYXRlLXktMS8yXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz17bG9hZGluZ0dpZn0gYWx0PVwibG9hZGluZyBnaWZcIiBjbGFzcz1cIm0tYXV0byBoLVsxMGVtXSBsZzpoLVsxMmVtXVwiIC8+XG4gICAgICAgICAgICB7I2lmICRpc0xvYWRpbmd9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiMnhsOnRleHQtMnhsIGxnOnRleHQtMnhsIHRleHQtbWQgYmxvY2sgcC0yIG0tYXV0byB0ZXh0LWNlbnRlclwiPkxvYWRpbmcgY2FtZXJhLi4uPC9zcGFuPlxuICAgICAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIjJ4bDp0ZXh0LTJ4bCBsZzp0ZXh0LTJ4bCB0ZXh0LW1kIGJsb2NrIHAtMiBtLWF1dG8gdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IuaW5pdGlhdGluZ0NhbWVyYScpfTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3Nsb3Q+XG4gICAgICB7L2lmfVxuICAgICAgeyNpZiAkY2FwdHVyZWR9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYnRuLWdyb3VwIGZsZXhcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gc2F2ZSgpfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyRqdXN0aWZpY2F0aW9uLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiPnskXygnZmFjZUNvbGxlY3Rvci5maW5pc2gnKX08L2J1dHRvblxuICAgICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gcmV0YWtlKCl9PnskXygnZmFjZUNvbGxlY3Rvci5yZXRha2VQaG90bycpfTwvYnV0dG9uXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB7I2lmICghaWRybmRDbG9zZWQgfHwgJGNhcHR1cmVkKSAmJiBzaG93VW5jb25mb3JtaXRpZXN9XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJncmlkLWNvbHMtMSBncmlkLXJvd3MtMiBzbTpncmlkLWNvbHMtMiBzbTpncmlkLXJvd3MtMSBnYXAtWy41ZW1dIHshJHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nICYmXG4gICAgICAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmdcbiAgICAgICAgPyAnYWJzb2x1dGUgLXRyYW5zbGF0ZS15LTEvMiAtdHJhbnNsYXRlLXgtMS8yIHRvcC0xLzIgbGVmdC0xLzIgb3ZlcmZsb3ctdmlzaWJsZSdcbiAgICAgICAgOiAnZ3JpZCBvdmVyZmxvdy1oaWRkZW4nfVwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBjbGFzcz1cIm0tYXV0byBjb2wtc3RhcnQtMSBjb2wtZW5kLTEgbWF4LWgtWzIzLjJlbV1cIlxuICAgICAgICBzcmM9eyRkYXRhVHlwZVByZWZpeCArICcsJyArICRpbWFnZX1cbiAgICAgICAgaGlkZGVuPXshJGNhcHR1cmVkIHx8ICghJHNob3dGYWNlV2hpbGVWYWxpZGF0aW5nICYmICR1bmNvbmZvcm1pdGllc1N0b3JlLmlzTG9hZGluZyl9XG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAvPlxuICAgICAgeyNpZiAhJGNhcHR1cmVkfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgLz5cbiAgICAgIHs6ZWxzZSBpZiAkdW5jb25mb3JtaXRpZXNTdG9yZS5pc0xvYWRpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaW4tdy1bMjAwcHhdXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiaW5saW5lLWJsb2NrIHRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHlcIj57JF8oJ2ZhY2VDb2xsZWN0b3IudmFsaWRhdGluZycpfTwvaDE+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTYgaW5saW5lLWJsb2NrIGRvdC10eXBpbmdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCAhPT0gcmVxdWVzdFJlc3VsdEVudW0uT0t9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIHsjaWYgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLkxJVkVORVNTX0RFVEVDVElPTl9GQUlMVVJFIHx8ICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5VTktOT1dOX0xJVkVORVNTX0VSUk9SfVxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWVycm9yXCI+XG4gICAgICAgICAgICAgIHskXygnbGl2ZW5lc3MuZXJyb3IuZXJyb3InKX06IHskXyhsaXZlbmVzc0Vycm9yKX0uXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uTE9XX0xJVkVORVNTX1NDT1JFfVxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHBiLVsxZW1dIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWVycm9yXCI+XG4gICAgICAgICAgICAgIHskXygnbGl2ZW5lc3MuZXJyb3IuZXJyb3InKX06IHskXygnZmFjZUNvbGxlY3Rvci51bmFsaXZlQ2FwdHVyZScpfVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2UgaWYgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLlRFTVBMQVRFX0VYVFJBQ1RJT05fRVJST1IgfHwgJHJlcXVlc3RSZXN1bHQgPT09IHJlcXVlc3RSZXN1bHRFbnVtLlVOS05PV05fVEVNUExBVEVfRVhUUkFDVElPTl9FUlJPUn1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2ZhY2VDb2xsZWN0b3IubG93UXVhbGl0eUNhcHR1cmUnKX1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgezplbHNlIGlmICRyZXF1ZXN0UmVzdWx0ID09PSByZXF1ZXN0UmVzdWx0RW51bS5VTkFCTEVfVE9fQ09NTVVOSUNBVEVfV0lUSF9URU1QTEFURV9FWFRSQUNUSU9OX1NFUlZJQ0V9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5IHRleHQtZXJyb3JcIj5cbiAgICAgICAgICAgICAgeyRfKCdmYWNlQ29sbGVjdG9yLnVuYWJsZVRvQ29tcGxldGVSZXF1ZXN0Jyl9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIHs6ZWxzZSBpZiAkcmVxdWVzdFJlc3VsdCA9PT0gcmVxdWVzdFJlc3VsdEVudW0uTElWRU5FU1NfRVZBTFVBVElPTl9FUlJPUn1cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHkgdGV4dC1lcnJvclwiPlxuICAgICAgICAgICAgICB7JF8oJ2xpdmVuZXNzLmVycm9yLmV2YWx1YXRpb25FcnJvcicpfVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTN4bCBmb250LWJvbGQgcGItWzFlbV0gdHJhbnNpdGlvbi1vcGFjaXR5XCI+eyRfKCdmYWNlQ29sbGVjdG9yLmV2ZXJ5dGhpbmdPaycpfTwvaDE+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2UtZHVpLWJ0bi1ncm91cCBmbGV4XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG9uOmNsaWNrPXsoKSA9PiBzYXZlKCl9IGRpc2FibGVkIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLXByaW1hcnkgY2UtZHVpLWJ0bi1ibG9jayBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgID57JF8oJ2ZhY2VDb2xsZWN0b3IuZmluaXNoJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJicnktY2MtcmV0YWtlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGNlLWR1aS1idG4tb3V0bGluZSBmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7OmVsc2UgaWYgISRzYXZlZH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0zeGwgZm9udC1ib2xkIHRyYW5zaXRpb24tb3BhY2l0eVwiPnsoZXZhbHVhdGVQaG90byA/ICRfKCdmYWNlQ29sbGVjdG9yLnVuY29uZm9ybWl0aWVzJykgOiAkXygnZmFjZUNvbGxlY3Rvci5wcmV2aWV3Q2FwdHVyZScpICl9PC9oMT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgIHsjZWFjaCAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcyBhcyB1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktYmFkZ2UgY2UtZHVpLWJhZGdlLWxnIGgtWzJlbV0gY2UtZHVpLWJhZGdlLWVycm9yIHRleHQteGwgcGItWy4yNWVtXSBtLVsuNWVtXVwiPlxuICAgICAgICAgICAgICAgIHt1bmNvbmZvcm1pdHl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey9lYWNofVxuICAgICAgICAgICAgeyNpZiBldmFsdWF0ZVBob3RvICYmICR1bmNvbmZvcm1pdGllc1N0b3JlLnVuY29uZm9ybWl0aWVzLmxlbmd0aCA9PSAwfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlLWR1aS1iYWRnZSBjZS1kdWktYmFkZ2UtbGcgaC1bMmVtXSBjZS1kdWktYmFkZ2UtaW5mbyB0ZXh0LXhsIHBiLVsuMjVlbV0gbS1bLjVlbV1cIj5cbiAgICAgICAgICAgICAgeyRfKCdmYWNlQ29sbGVjdG9yLm5vTm9uY29uZm9ybWl0eScpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsjaWYgc2hvd0p1c3RpZmljYXRpb25GaWVsZH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZS1kdWktZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNlLWR1aS1sYWJlbFwiIGZvcj1cImp1c3RpZmljYXRpb25cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNlLWR1aS1sYWJlbC10ZXh0IHRleHQtYmFzZVwiXG4gICAgICAgICAgICAgICAgICA+eyRfKCdmYWNlQ29sbGVjdG9yLnByb3ZpZGVBUmVhc29uRm9yVGhlTG93UXVhbGl0eUNhcHR1cmUnKX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZVxuICAgICAgICAgICAgICAgIGJpbmQ6dmFsdWU9eyRqdXN0aWZpY2F0aW9ufVxuICAgICAgICAgICAgICAgIGlkPVwianVzdGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktdGV4dGFyZWEgY2UtZHVpLXRleHRhcmVhLWJvcmRlcmVkIGgtWzZlbV0gdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17JF8oJ2ZhY2VDb2xsZWN0b3IueW91ckp1c3RpZmljYXRpb24nKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2UtZHVpLWxhYmVsXCIgZm9yPVwianVzdGlmaWNhdGlvblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2UtZHVpLWxhYmVsLXRleHQtYWx0IHRleHQtYmFzZVwiPih7JF8oJ2ZhY2VDb2xsZWN0b3IudGhpc0luZm9ybWF0aW9uSXNSZXF1aXJlZCcpfSk8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7L2lmfVxuICAgICAgICAgIHsjaWYgJGNhcHR1cmVkfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlLWR1aS1idG4tZ3JvdXAgZmxleFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHNhdmUoKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17JGp1c3RpZmljYXRpb24ubGVuZ3RoID09PSAwICYmIHNob3dKdXN0aWZpY2F0aW9uRmllbGR9XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktYnRuIGNlLWR1aS1idG4tcHJpbWFyeSBjZS1kdWktYnRuLWJsb2NrIGZsZXgtc2hyaW5rIHRleHQtYmFzZVwiXG4gICAgICAgICAgICAgICAgPnskXygnZmFjZUNvbGxlY3Rvci5maW5pc2gnKX08L2J1dHRvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImJyeS1jYy1yZXRha2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNlLWR1aS1idG4gY2UtZHVpLWJ0bi1ibG9jayBjZS1kdWktYnRuLW91dGxpbmUgZmxleC1zaHJpbmsgdGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gcmV0YWtlKCl9PnskXygnZmFjZUNvbGxlY3Rvci5yZXRha2VQaG90bycpfTwvYnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgIDwvZGl2PlxuICAgICAgezplbHNlfVxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi1bMWVtXSB0cmFuc2l0aW9uLW9wYWNpdHlcIj57JF8oJ2ZhY2VDb2xsZWN0b3IuY2FwdHVyZWQnKX08L2gxPlxuXG4gICAgICAgICAgeyNpZiAkdW5jb25mb3JtaXRpZXNTdG9yZS51bmNvbmZvcm1pdGllcy5sZW5ndGggIT09IDB9XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjZS1kdWktbGFiZWxcIiBmb3I9XCJqdXN0aWZpY2F0aW9uXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2UtZHVpLWxhYmVsLXRleHQgdGV4dC1iYXNlXCI+eyRfKCdmYWNlQ29sbGVjdG9yLmp1c3RpZmljYXRpb24nKX08L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZVxuICAgICAgICAgICAgICBiaW5kOnZhbHVlPXskanVzdGlmaWNhdGlvbn1cbiAgICAgICAgICAgICAgaWQ9XCJqdXN0aWZpY2F0aW9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjZS1kdWktdGV4dGFyZWEgY2UtZHVpLXRleHRhcmVhLWJvcmRlcmVkIHRleHRhcmVhLWdob3N0IGgtWzZlbV0gdy1mdWxsIHRleHQtYmFzZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgPGRpdiBjbGFzczpjZS1kdWktYnRuLWdyb3VwPXshJGV4cG9ydEJ1dHRvbkRpc2FibGVkfSBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJicnktY2MtcmV0YWtlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2UtZHVpLWJ0biBjZS1kdWktYnRuLWJsb2NrIGZsZXgtc2hyaW5rIHRleHQtYmFzZVwiXG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiByZXRha2UoKX0+eyRfKCdmYWNlQ29sbGVjdG9yLnJldGFrZVBob3RvJyl9PC9idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIHsjaWYgZ2V0KGVuYWJsZVN0cmF0ZWd5KS5mYWNlU3RyYXRlZ3kgIT09IEZhY2VFeHBvcnRTdHJhdGVneS5ESVNBQkxFRH1cbiAgICAgICAgICAgICAgPEV4cG9ydEJ0biBjc3NDbGFzcz1cImNlLWR1aS1idG4tYmxvY2sgZmxleC1zaHJpbmtcIiAvPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7L2lmfVxuICAgICAgPCEtLSA8aDEgaGlkZGVuPXshJGNhcHR1cmVkfSBjbGFzcz1cInRleHQtM3hsIGZvbnQtYm9sZCBwYi00IHRyYW5zaXRpb24tYWxsXCI+RXhjZWxlbnRlITwvaDE+IC0tPlxuICAgIDwvZGl2PlxuICB7OmVsc2UgaWYgJGNhbWVyYVN0YXR1c1N0b3JlICE9PSBDYW1lcmFTdGF0dXNFbnVtLk9LfVxuICAgIDxDYW1lcmFTdGF0dXNcbiAgICAgIGhhbmRsZXI9e2FzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgcmVPcGVuQ2FtZXJhKCk7XG4gICAgICB9fVxuICAgIC8+XG4gIHsvaWZ9XG48L2Rpdj5cbiJdLCJuYW1lcyI6WyJ0X3ZhbHVlIiwiY3R4IiwiaXNNb2JpbGUiLCJpbnNlcnRfZGV2IiwidGFyZ2V0IiwiZGl2IiwiYW5jaG9yIiwiYXBwZW5kX2RldiIsImJ1dHRvbiIsImRpcnR5Iiwic2V0X2RhdGFfZGV2IiwidCIsImhhbmRsZUF1dG9DYXB0dXJlIiwic2V0X3N0b3JlX3ZhbHVlIiwiYXV0b21hdGljQ2FwdHVyZSIsIiRhdXRvbWF0aWNDYXB0dXJlIiwiaWRsaXZlX2ZhY2VfY2FwdHVyZSIsInZpZGVvXzEiLCJDYW1lcmFTdGF0dXNFbnVtIiwiaXNMaXZlbmVzc0VuYWJsZWQiLCJ0YWtlcGljdHVyZWJ0bl9jaGFuZ2VzIiwic3BhbiIsImNyZWF0ZV9pZl9ibG9ja18yMiIsImxvYWRpbmdHaWYiLCJhdHRyX2RldiIsImltZyIsImltZ19zcmNfdmFsdWUiLCJzbG90IiwiY3JlYXRlX2lmX2Jsb2NrXzIwIiwiY3JlYXRlX2lmX2Jsb2NrXzE4IiwidDBfdmFsdWUiLCJ0Ml92YWx1ZSIsImJ1dHRvbjAiLCJidXR0b24xIiwidDAiLCJ0MiIsInJlcXVlc3RSZXN1bHRFbnVtIiwiaW1nX2hpZGRlbl92YWx1ZSIsImN1cnJlbnQiLCJ0M192YWx1ZSIsInNob3dfaWYiLCJnZXQiLCJlbmFibGVTdHJhdGVneSIsIkZhY2VFeHBvcnRTdHJhdGVneSIsImlmX2Jsb2NrMCIsImNyZWF0ZV9pZl9ibG9ja18xNCIsImRpdjEiLCJoMSIsImRpdjAiLCJ0MyIsImVhY2hfdmFsdWUiLCJpIiwiY3JlYXRlX2lmX2Jsb2NrXzEyIiwiY3JlYXRlX2lmX2Jsb2NrXzExIiwiY3JlYXRlX2lmX2Jsb2NrXzEwIiwidDFfdmFsdWUiLCJjcmVhdGVfaWZfYmxvY2tfNCIsImNyZWF0ZV9pZl9ibG9ja181IiwiY3JlYXRlX2lmX2Jsb2NrXzYiLCJjcmVhdGVfaWZfYmxvY2tfNyIsImNyZWF0ZV9pZl9ibG9ja184IiwidDEiLCJsYWJlbCIsInRleHRhcmVhIiwidDRfdmFsdWUiLCJ0ZXh0YXJlYV9wbGFjZWhvbGRlcl92YWx1ZSIsImxhYmVsMCIsInNwYW4wIiwibGFiZWwxIiwic3BhbjEiLCJ0NCIsImJ1dHRvbjBfZGlzYWJsZWRfdmFsdWUiLCJzaG93X2lmXzIiLCJzaG93X2lmXzEiLCJpZl9ibG9jazEiLCJjcmVhdGVfaWZfYmxvY2tfMjgiLCJpZl9ibG9jazIiLCJjcmVhdGVfaWZfYmxvY2tfMjciLCJpZl9ibG9jazMiLCJjcmVhdGVfaWZfYmxvY2tfMjYiLCJpZl9ibG9jazQiLCJjcmVhdGVfaWZfYmxvY2tfMjUiLCJjcmVhdGVfaWZfYmxvY2tfMjQiLCJjcmVhdGVfaWZfYmxvY2tfMjMiLCJjcmVhdGVfaWZfYmxvY2tfMTYiLCJkaXYzIiwiZGl2MiIsImNhbnZhczAiLCJjYW52YXMxIiwiY2FudmFzMiIsImRyYXdWaWRlb09uQ2FudmFzIiwidmlkZW8iLCJkaXNwbGF5Q2FudmFzIiwidmlkZW9Bc3BlY3RSYXRpbyIsImNhbnZhc0FzcGVjdFJhdGlvIiwic291cmNlWCIsInNvdXJjZVkiLCJzb3VyY2VXaWR0aCIsInNvdXJjZUhlaWdodCIsImRldGVjdGlvbnNDYW52YXMiLCJlbmNsb3NpbmdEaXYiLCJpc0NvdW50aW5nRG93biIsInVuaXF1ZSIsImxvYWRlZEZhY2VBcGlBbmRXZWlnaHRzIiwid2FpdGluZ0ZhY2VOb3RGb3VuZFRpbWVvdXQiLCJlbmFibGVDYXB0dXJlQnV0dG9uIiwiZmFjZUZvdW5kU3RhcnRUaW1lIiwiZW5hYmxlTWludXRpYWUiLCIkJHByb3BzIiwidmlkZW9EaW1lbnNpb25zIiwibm9UYWJzIiwid2VpZ2h0c1BhdGgiLCJldmFsdWF0ZVBob3RvIiwic2hvd0NhcHR1cmVCdXR0b24iLCJzaG93VW5jb25mb3JtaXRpZXMiLCJ2aWRlb092ZXJsYXkiLCJ2aWRlb092ZXJsYXlUcmFuc3BhcmVuY3kiLCJzaG93Q29uZmlnQnV0dG9uIiwic2hvd0F1dG9DYXB0dXJlQnV0dG9uIiwic2hvd0NhbWVyYUJ1dHRvbiIsInNob3dKdXN0aWZpY2F0aW9uRmllbGQiLCJtaW5FeWVUb0V5ZURpc3QiLCJzdGFydEZhY2VBcGkiLCJ3cml0YWJsZSIsImRhdGFUeXBlUHJlZml4Iiwid2lkZ2V0SW5zdGFuY2UiLCJtYXNrQ2FudmFzIiwiY2FwdHVyaW5nIiwiaW5pdGlhbGl6ZWQiLCJpZHJuZExvYWRpbmciLCJpZHJuZENsb3NlZCIsIndhaXRpbmdJZHJuZENhcHR1cmVFdmVudCIsImludGVydmFsSWQiLCJsaXZlbmVzc0Vycm9yIiwiZmFjZUFwaUNvdW50ZXIiLCJmYWNlQXBpRnJhbWVSYXRlIiwiY291bnREb3duQ2FwdHVyZSIsInJpZ2h0T3JpZW50YXRpb24iLCJjb3VudERvd25GaW5pc2hUaW1lIiwiZGlzYWJsZUNvdW50RG93biIsInRvYXN0IiwiU3dhbCIsIm9uTW91bnQiLCJsb2ciLCJpbml0aWFsaXppbmciLCIkaW5pdGlhbGl6aW5nIiwicmVhZHkiLCIkcmVhZHkiLCJyZXNldEZhY2VDb2xsZWN0b3IiLCJyZWdpc3Rlcklkcm5kTGlzdGVuZXJzIiwiJGVuYWJsZUZhY2VBcGkiLCJsb2FkRmFjZUFwaUFuZFdlaWdodHMiLCJvcGVuQ2FtZXJhIiwicmVnaXN0ZXJEZXZpY2VDaGFuZ2VMaXN0ZW5lciIsImZhY2VGb3VuZCIsIiRmYWNlRm91bmQiLCJjYXB0dXJlZCIsIiRjYXB0dXJlZCIsIiRmYWNpbmdNb2RlIiwiRmFjaW5nTW9kZUVudW0iLCIkY2FtZXJhU3RhdHVzU3RvcmUiLCJzYXZlZCIsIiRzYXZlZCIsIiRyZXF1ZXN0UmVzdWx0Iiwib3JpZ2luYWxDYXB0dXJlIiwiJG9yaWdpbmFsQ2FwdHVyZSIsInVuY29uZm9ybWl0aWVzU3RvcmUiLCIkdW5jb25mb3JtaXRpZXNTdG9yZSIsImZhY2VWYWxpZGF0aW9ucyIsImZhY2VWYWxpZGF0aW9uc1N0b3JlIiwiZmFjZVZhbGlkYXRpb25BbGVydCIsIiRmYWNlVmFsaWRhdGlvbkFsZXJ0IiwiZHJhd092YWwiLCJvdmFsSGVpZ2h0Iiwib3ZhbFgiLCIkdmlkZW9TdG9yZSIsIm92YWxZIiwib3ZhbFdpZHRoIiwiJG92YWxEaW1lbnNpb25zIiwicHJpbWFyeVRoZW1lIiwic3VjY2Vzc1RoZW1lIiwidGltZVJlbWFpbmluZyIsImNsaXBQYXRoIiwiZXZlbnQiLCJ2aWRlb18iLCIkaWRybmRWaWRlb1N0b3JlRGltZW5zaW9ucyIsIiQkaW52YWxpZGF0ZSIsImxvb3AiLCJsb29wQ2FsbGVyIiwiZSIsImlkcm5kSW5pdGlhbGl6ZWQiLCIkaWRybmRJbml0aWFsaXplZCIsImVuY3J5cHRlZEZpbGUiLCJwaG90byIsImJsb2IiLCIkYmxvYiIsImJsb2JUb0Jhc2U2NCIsIiRkYXRhVHlwZVByZWZpeCIsIiRpbWFnZSIsIiRjYXB0dXJlTGl2ZW5lc3NJZHJuZEVuZHBvaW50IiwiYm9keVBhcnRzIiwiaWNhb1dhcm5pbmdzIiwiZ2V0RmFjZVVuY29uZm9ybWl0aWVzIiwiZXJyb3JDb2RlIiwiaWRybmRFcnJvclRvaTE4bktleSIsIkF4aW9zRXJyb3IiLCJmYWNlIiwiYnAiLCIkXyIsInZhbGlkYXRlTGl2ZW5lc3MiLCJpbWFnZSIsInRyYW5zbGF0ZUFuZFNldFVuY29uZm9ybWl0aWVzIiwibGl2ZW5lc3NSZXN1bHQiLCJnZXRMaXZlbmVzc0lkcm5kIiwiZGV2aWNlIiwid2lkdGgiLCJoZWlnaHQiLCJ2IiwidmlkZW9TdG9yZSIsIm9wZW5DYW1lcmFMaXZlbmVzcyIsInNlbGVjdERldmljZSIsIiRjYW1lcmFEZXZpY2VzU3RvcmUiLCJnZXRWaWRlb0RpbWVuc2lvbnMiLCJlbnVtZXJhdGVEZXZpY2VzIiwicGxheSIsIiRzZWxlY3RlZFRhYiIsIlRhYkVudW0iLCIkc3RhcnRGYWNlQXBpIiwiY2FwdHVyZSIsIiRzY3JlZW5Mb2NrZWQiLCJ1bkxvY2tTY3JlZW4iLCJzY3JlZW5Mb2NrZWQiLCIkZXllRGlzdGFuY2UiLCJ0cmFuc2xhdGVkRXJyb3IiLCJ1bmNvbmZvcm1pdHlUb2kxOG5LZXkiLCJjYW52YXMiLCIkYm94U3RvcmUiLCJzYXZlIiwiJGp1c3RpZmljYXRpb24iLCJiYXNlNjQiLCJyZXRha2UiLCJyZXN1bHQiLCJ0aXRsZSIsImljb24iLCIkc2hvd0xpdmVuZXNzUmVzdWx0VG9hc3QiLCJkZXZpY2VJZCIsIndpZHRoQ2FtZXJhIiwiaGVpZ2h0Q2FtZXJhIiwiYXNwZWN0UmF0aW9DYW1lcmEiLCJmYWNpbmciLCJ0b3VjaFBvaW50cyIsIiRzZWxlY3RlZFZpZGVvRGV2aWNlSWQiLCJlcnJvciIsImNvbnN0cmFpbnRFcnJvciIsImlzT2JqZWN0IiwicmVPcGVuQ2FtZXJhIiwic2VsZWN0ZWRWaWRlb0RldmljZUlkIiwiJF9zdHJlYW0iLCJzaHV0T2ZmQ2FtZXJhIiwic2V0RmFjZU5vdEZvdW5kQWxlcnQiLCJub3ciLCJsaWdodG5lc3MiLCJnZXRJbWFnZUxpZ2h0bmVzcyIsImdldEltYWdlU2hhcnBuZXNzIiwiaW52YWxpZEFsZXJ0cyIsInVuc3Vic2NyaWJlVmlkZW9EaW1lbnNpb25zIiwic3RvcmVPYmoiLCJ1bnN1YnNjcmliZUZhY2VWYWxpZGF0aW9ucyIsIm5ld1ZhbHVlIiwiJGNvbGxlY3RvclNlbGVjdCIsIm5ld0ZhY2VWYWxpZGF0aW9uQWxlcnQiLCJzZXRWYWxpZGF0aW9uQWxlcnQiLCJjb3VudGRvd25JbnRlcnZhbENhbGxiYWNrIiwidW5zdWJzY3JpYmVDYXB0dXJlZFN0YXRlIiwidW5zdWJzY3JpYmVDbGVhclZpZGVvU3JjIiwiY2xlYXJlZFZpZGVvU3JjT2JqZWN0Iiwic2VsZWN0ZWRUYWIiLCJ0YWIiLCJ1bnN1YnNjcmliZVNlbGVjdGVkU3RyZWFtIiwibmV3RGV2aWNlSWQiLCJ2aWRlb0hlaWdodCIsInZpZGVvV2lkdGgiLCJzdHJlYW0iLCJzZXR1cFN0cmVhbSIsIl9zdHJlYW0iLCIkY2xlYXJlZFZpZGVvU3JjT2JqZWN0IiwidHJhY2siLCJ1bnN1YnNjcmliZUNoYW5nZVRhYiIsInVuc3Vic2NyaWJlRmFjZUFwaSIsImZhY2VhcGlMb29wIiwidW5zdWJzY3JpYmVTd2FwQ2FtZXJhIiwic3dhcENhbWVyYSIsIm5leHREZXZpY2UiLCJ1bnN1YnNjcmliZU9yaWVudGF0aW9uIiwib3JpZW50YXRpb25EYXRhIiwiZGF0YSIsImRldGVjdGlvbnNSZXN1bHQiLCJvcHRpb25zIiwiZ2V0RmFjZURldGVjdG9yT3B0aW9ucyIsImZhY2VhcGkiLCJkZXRlY3Rpb25zUmVzdWx0MiIsImRyYXdEZXRlY3Rpb25zSW5GYWNlIiwicmV0YWtlUGhvdG8iLCJudiIsIiRyZXRha2VQaG90byIsInVuc3Vic2NyaWJlUmVhZHlDYW1lcmFFdmVudEVtaXR0ZXIiLCJ1bnN1YnNjcmliZUluaXRpYWxpemVkRXZlbnRFbWl0dGVyIiwib25EZXN0cm95IiwiJCR2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7OztZQW9CT0E7QUFBQTtBQUFBLElBQUFDLEtBQUcsc0JBQXNCLElBQUE7QUFBQTs7OzBFQUw1QkMsR0FBUSxJQUNOLHFGQUNBLGlGQUFpRjs7Ozs7O0FBSnZGLE1BQUFDLEVBU0tDLEdBQUFDLEdBQUFDLENBQUEsR0FSSEMsRUFPUUYsR0FBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O0FBREgsTUFBQUM7QUFBQSxNQUFBLEtBQUFULE9BQUFBO0FBQUEsTUFBQUMsS0FBRyxzQkFBc0IsSUFBQSxPQUFBUyxFQUFBQyxHQUFBWCxDQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBYnJCWSxJQUFpQjtBQUN4QixJQUFBQyxFQUFBQyxJQUFBQyxJQUFvQixJQUFJQSxDQUFBO0FBQUE7Ozs7O2tCQVVSSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUNxbUNHWCxFQUFzQixFQUFBO0FBQUEsTUFBQTs7O0FBTG5DLE1BQUFFLEVBT0NDLEdB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