bry-biometric-collector 2.2.24 → 2.3.1-RC01

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