tnp-core 13.1.59 → 13.1.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +5 -5
  2. package/app.js +3 -3
  3. package/browser/README.md +24 -24
  4. package/browser/esm2020/lib/core-config.mjs +6 -6
  5. package/browser/esm2020/lib/core-imports.mjs +77 -77
  6. package/browser/esm2020/lib/core-models.mjs +3 -3
  7. package/browser/esm2020/lib/framework-name.mjs +9 -9
  8. package/browser/esm2020/lib/helpers-isomorphic.mjs +35 -35
  9. package/browser/esm2020/lib/helpers-messages.mjs +453 -453
  10. package/browser/esm2020/lib/helpers.mjs +1162 -1162
  11. package/browser/esm2020/lib/index.mjs +10 -10
  12. package/browser/esm2020/lib/progress-data.mjs +51 -51
  13. package/browser/esm2020/public-api.mjs +1 -1
  14. package/browser/esm2020/tnp-core.mjs +4 -4
  15. package/browser/fesm2015/tnp-core.mjs +1764 -1764
  16. package/browser/fesm2020/tnp-core.mjs +1762 -1762
  17. package/browser/lib/core-config.d.ts +4 -4
  18. package/browser/lib/core-imports.d.ts +6 -6
  19. package/browser/lib/core-models.d.ts +41 -41
  20. package/browser/lib/framework-name.d.ts +1 -1
  21. package/browser/lib/helpers-isomorphic.d.ts +5 -5
  22. package/browser/lib/helpers-messages.d.ts +16 -16
  23. package/browser/lib/helpers.d.ts +49 -49
  24. package/browser/lib/index.d.ts +7 -7
  25. package/browser/lib/progress-data.d.ts +17 -17
  26. package/browser/tnp-core.d.ts +4 -4
  27. package/cli.backend.js +3 -3
  28. package/client/README.md +24 -24
  29. package/client/esm2020/lib/core-config.mjs +6 -6
  30. package/client/esm2020/lib/core-imports.mjs +77 -77
  31. package/client/esm2020/lib/core-models.mjs +3 -3
  32. package/client/esm2020/lib/framework-name.mjs +9 -9
  33. package/client/esm2020/lib/helpers-isomorphic.mjs +35 -35
  34. package/client/esm2020/lib/helpers-messages.mjs +453 -453
  35. package/client/esm2020/lib/helpers.mjs +1162 -1162
  36. package/client/esm2020/lib/index.mjs +10 -10
  37. package/client/esm2020/lib/progress-data.mjs +51 -51
  38. package/client/esm2020/public-api.mjs +1 -1
  39. package/client/esm2020/tnp-core.mjs +4 -4
  40. package/client/fesm2015/tnp-core.mjs +1764 -1764
  41. package/client/fesm2020/tnp-core.mjs +1762 -1762
  42. package/client/lib/core-config.d.ts +4 -4
  43. package/client/lib/core-imports.d.ts +6 -6
  44. package/client/lib/core-models.d.ts +41 -41
  45. package/client/lib/framework-name.d.ts +1 -1
  46. package/client/lib/helpers-isomorphic.d.ts +5 -5
  47. package/client/lib/helpers-messages.d.ts +16 -16
  48. package/client/lib/helpers.d.ts +49 -49
  49. package/client/lib/index.d.ts +7 -7
  50. package/client/lib/progress-data.d.ts +17 -17
  51. package/client/tnp-core.d.ts +4 -4
  52. package/index.d.ts +1 -1
  53. package/lib/core-config.d.ts +5 -5
  54. package/lib/core-imports.d.ts +31 -31
  55. package/lib/core-models.d.ts +42 -42
  56. package/lib/framework-name.d.ts +2 -2
  57. package/lib/helpers-isomorphic.d.ts +6 -6
  58. package/lib/helpers-messages.d.ts +17 -17
  59. package/lib/helpers.d.ts +128 -128
  60. package/lib/index.d.ts +8 -8
  61. package/lib/progress-data.d.ts +18 -18
  62. package/lib/public-api.d.ts +7 -7
  63. package/package.json +2 -2
  64. package/package.json_devDependencies.json +202 -202
  65. package/package.json_tnp.json5 +65 -65
  66. package/tmp-environment.json +7 -7
  67. package/websql/README.md +24 -24
  68. package/websql/esm2020/lib/core-config.mjs +6 -6
  69. package/websql/esm2020/lib/core-imports.mjs +83 -83
  70. package/websql/esm2020/lib/core-models.mjs +3 -3
  71. package/websql/esm2020/lib/framework-name.mjs +9 -9
  72. package/websql/esm2020/lib/helpers-isomorphic.mjs +34 -34
  73. package/websql/esm2020/lib/helpers-messages.mjs +453 -453
  74. package/websql/esm2020/lib/helpers.mjs +1160 -1160
  75. package/websql/esm2020/lib/index.mjs +10 -10
  76. package/websql/esm2020/lib/progress-data.mjs +51 -51
  77. package/websql/esm2020/public-api.mjs +1 -1
  78. package/websql/esm2020/tnp-core.mjs +4 -4
  79. package/websql/fesm2015/tnp-core.mjs +1760 -1760
  80. package/websql/fesm2020/tnp-core.mjs +1758 -1758
  81. package/websql/lib/core-config.d.ts +4 -4
  82. package/websql/lib/core-imports.d.ts +8 -8
  83. package/websql/lib/core-models.d.ts +41 -41
  84. package/websql/lib/framework-name.d.ts +1 -1
  85. package/websql/lib/helpers-isomorphic.d.ts +5 -5
  86. package/websql/lib/helpers-messages.d.ts +16 -16
  87. package/websql/lib/helpers.d.ts +49 -49
  88. package/websql/lib/index.d.ts +7 -7
  89. package/websql/lib/progress-data.d.ts +17 -17
  90. package/websql/tnp-core.d.ts +4 -4
@@ -1,1161 +1,1161 @@
1
- import { _, /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ } from './core-imports'; /* */
2
- /* */
3
- /* */
4
- /* */
5
- /* */
6
- /* */
7
- /* */
8
- /* */
9
- /* */
10
- /* */
11
- /* */
12
- /* */
13
- /* */
14
- /* */
15
- /* */
16
- import { Helpers } from './index';
17
- import { HelpersMessages } from './helpers-messages';
18
- import { Subject } from 'rxjs';
19
- const encoding = 'utf8';
20
- const WEBSQL_PROC_MOCK_PROCESSES_PID = {};
21
- const WEBSQL_PROC_MOCK_PROCESSES_PPID = {};
22
- export class HelpersCore extends HelpersMessages {
23
- constructor() {
24
- super();
25
- /* */
26
- /* */
27
- /* */
28
- /* */
29
- /* */
30
- /* */
31
- /* */
32
- /* */
33
- /* */
34
- /* */
35
- /* */
36
- /* */
37
- /* */
38
- /* */
39
- /* */
40
- /* */
41
- /* */
42
- /* */
43
- /* */
44
- /* */
45
- /* */
46
- /* */
47
- this.bigMaxBuffer = 2024 * 500;
48
- /* */
49
- /* */
50
- /* */
51
- }
52
- static get InstanceCore() {
53
- if (!HelpersCore._instanceCore) {
54
- HelpersCore._instanceCore = new HelpersCore();
55
- }
56
- return HelpersCore._instanceCore;
57
- }
58
- removeSlashAtEnd(s) {
59
- s = s?.endsWith(`/`) ? s.slice(0, s.length - 1) : s;
60
- return s;
61
- }
62
- removeSlashAtBegin(s) {
63
- s = s?.startsWith(`/`) ? s.slice(1) : s;
64
- return s;
65
- }
66
- stringify(inputObject) {
67
- return JSON.stringify(inputObject, null, 2);
68
- }
69
- async runSyncOrAsync(fnOrOptions, ...firstArg) {
70
- if (_.isUndefined(fnOrOptions)) {
71
- return;
72
- }
73
- let promisOrValue;
74
- const optionsMode = _.isObject(fnOrOptions)
75
- && !_.isArray(fnOrOptions)
76
- && !_.isFunction(fnOrOptions)
77
- && !_.isNil(fnOrOptions);
78
- if (optionsMode) {
79
- const { functionFn, context, arrayOfParams } = fnOrOptions;
80
- promisOrValue = functionFn.apply(context, arrayOfParams);
81
- }
82
- else {
83
- // @ts-ignore
84
- promisOrValue = _.isArray(fnOrOptions) ? fnOrOptions[1][fnOrOptions[0]](...firstArg) : fnOrOptions(...firstArg);
85
- }
86
- if (promisOrValue instanceof Promise) {
87
- promisOrValue = Promise.resolve(promisOrValue);
88
- }
89
- return promisOrValue;
90
- }
91
- /* */
92
- /* */
93
- /* */
94
- /* */
95
- /* */
96
- /* */
97
- /* */
98
- /* */
99
- /* */
100
- /* */
101
- /* */
102
- /* */
103
- /* */
104
- /* */
105
- /* */
106
- /* */
107
- /* */
108
- /* */
109
- /* */
110
- /* */
111
- /* */
112
- /* */
113
- /* */
114
- /* */
115
- /* */
116
- /* */
117
- /* */
118
- /* */
119
- /* */
120
- /* */
121
- /* */
122
- /* */
123
- /* */
124
- /* */
125
- /* */
126
- /* */
127
- /* */
128
- /* */
129
- /* */
130
- /* */
131
- /* */
132
- /* */
133
- /* */
134
- /* */
135
- /* */
136
- /* */
137
- /* */
138
- /* */
139
- /* */
140
- /* */
141
- /* */
142
- /* */
143
- /* */
144
- /* */
145
- /* */
146
- /* */
147
- /* */
148
- /* */
149
- /* */
150
- /* */
151
- /* */
152
- /* */
153
- /* */
154
- /* */
155
- /* */
156
- /* */
157
- /* */
158
- /* */
159
- /* */
160
- /* */
161
- /* */
162
- /* */
163
- /* */
164
- /* */
165
- /* */
166
- /* */
167
- /* */
168
- /* */
169
- /* */
170
- /* */
171
- /* */
172
- /* */
173
- /* */
174
- /* */
175
- /* */
176
- /* */
177
- /* */
178
- /* */
179
- /* */
180
- /* */
181
- /* */
182
- /* */
183
- /* */
184
- /* */
185
- /* */
186
- /* */
187
- /* */
188
- /* */
189
- /* */
190
- /* */
191
- /* */
192
- /* */
193
- /* */
194
- /* */
195
- /* */
196
- /* */
197
- /* */
198
- /* */
199
- /* */
200
- /* */
201
- /* */
202
- /* */
203
- /* */
204
- /* */
205
- /* */
206
- /* */
207
- /* */
208
- /* */
209
- /* */
210
- /* */
211
- /* */
212
- /* */
213
- /* */
214
- /* */
215
- /* */
216
- /* */
217
- /* */
218
- /* */
219
- /* */
220
- /* */
221
- /* */
222
- /* */
223
- /* */
224
- /* */
225
- /* */
226
- /* */
227
- /* */
228
- /* */
229
- /* */
230
- /* */
231
- /* */
232
- /* */
233
- /* */
234
- /* */
235
- /* */
236
- /* */
237
- /* */
238
- /* */
239
- /* */
240
- /* */
241
- /* */
242
- /* */
243
- /* */
244
- /* */
245
- /* */
246
- /* */
247
- /* */
248
- /* */
249
- /* */
250
- /* */
251
- /* */
252
- /* */
253
- /* */
254
- /* */
255
- /* */
256
- /* */
257
- /* */
258
- /* */
259
- /* */
260
- /* */
261
- /* */
262
- /* */
263
- /* */
264
- /* */
265
- /* */
266
- /* */
267
- /* */
268
- /* */
269
- /* */
270
- /* */
271
- /* */
272
- /* */
273
- /* */
274
- /* */
275
- /* */
276
- /* */
277
- /* */
278
- /* */
279
- /* */
280
- /* */
281
- /* */
282
- /* */
283
- /* */
284
- /* */
285
- /* */
286
- /* */
287
- /* */
288
- /* */
289
- /* */
290
- /* */
291
- /* */
292
- /* */
293
- /* */
294
- /* */
295
- /* */
296
- /* */
297
- /* */
298
- /* */
299
- /**
300
- * symlink may have existed or unexisted destiantion url
301
- * @param destUrl M
302
- */
303
- isSymlinkThatMatchesUrl(possibleSymlink, destUrl, absoluteFileMatch = false) {
304
- /* */
305
- /* */
306
- /* */
307
- /* */
308
- /* */
309
- /* */
310
- /* */
311
- /* */
312
- /* */
313
- /* */
314
- /* */
315
- /* */
316
- /* */
317
- /* */
318
- /* */
319
- /* */
320
- /* */
321
- /* */
322
- /* */
323
- /* */
324
- /* */
325
- /* */
326
- /* */
327
- /* */
328
- /* */
329
- /* */
330
- /* */
331
- /* */
332
- /* */
333
- /* */
334
- /* */
335
- return (void 0);
336
- }
337
- isSymlinkFileExitedOrUnexisted(filePath) {
338
- /* */
339
- /* */
340
- /* */
341
- /* */
342
- /* */
343
- /* */
344
- /* */
345
- return (void 0);
346
- }
347
- /**
348
- * If symbolnk link that target file does not exits
349
- */
350
- isUnexistedLink(filePath) {
351
- /* */
352
- /* */
353
- /* */
354
- /* */
355
- /* */
356
- /* */
357
- /* */
358
- /* */
359
- /* */
360
- /* */
361
- /* */
362
- /* */
363
- return (void 0);
364
- }
365
- /**
366
- * @param existedLink check if source of link exists
367
- */
368
- isExistedSymlink(filePath) {
369
- /* */
370
- /* */
371
- /* */
372
- /* */
373
- /* */
374
- /* */
375
- /* */
376
- /* */
377
- /* */
378
- /* */
379
- /* */
380
- /* */
381
- return (void 0);
382
- }
383
- /* */
384
- /* */
385
- /* */
386
- /* */
387
- /* */
388
- /* */
389
- /* */
390
- /* */
391
- /* */
392
- /* */
393
- /* */
394
- /* */
395
- /* */
396
- /* */
397
- /* */
398
- /* */
399
- /* */
400
- exists(folderOrFilePath) {
401
- /* */
402
- /* */
403
- /* */
404
- /* */
405
- /* */
406
- /* */
407
- /* */
408
- /* */
409
- /* */
410
- /* */
411
- /* */
412
- /* */
413
- /* */
414
- /* */
415
- /* */
416
- /* */
417
- /* */
418
- /* */
419
- /* */
420
- return (void 0);
421
- }
422
- _fixCommand(command) {
423
- if (global.skipCoreCheck && (command.startsWith('tnp ') || command.startsWith('firedev'))) {
424
- command = `${command} --skipCoreCheck`;
425
- }
426
- return command;
427
- }
428
- command(command) {
429
- command = Helpers._fixCommand(command);
430
- return {
431
- /* */
432
- /* */
433
- /* */
434
- /* */
435
- /* */
436
- /* */
437
- /* */
438
- /* */
439
- /* */
440
- /* */
441
- /* */
442
- /* */
443
- /* */
444
- /* */
445
- /* */
446
- /* */
447
- /* */
448
- /* */
449
- /* */
450
- /* */
451
- /* */
452
- /* */
453
- /* */
454
- /* */
455
- /* */
456
- /* */
457
- /* */
458
- /* */
459
- /* */
460
- /* */
461
- /* */
462
- /* */
463
- /* */
464
- /* */
465
- /* */
466
- /* */
467
- /* */
468
- /* */
469
- /* */
470
- /* */
471
- /* */
472
- /* */
473
- /* */
474
- /* */
475
- /* */
476
- /* */
477
- /* */
478
- /* */
479
- /* */
480
- /* */
481
- };
482
- }
483
- wait(second) {
484
- return new Promise((resolve, reject) => {
485
- setTimeout(() => {
486
- resolve(void 0);
487
- }, second * 1000);
488
- });
489
- }
490
- /* */
491
- /* */
492
- /* */
493
- /* */
494
- /* */
495
- /* */
496
- /* */
497
- /* */
498
- /* */
499
- /* */
500
- /* */
501
- /* */
502
- /* */
503
- /* */
504
- /* */
505
- /* */
506
- /* */
507
- /* */
508
- /* */
509
- /* */
510
- /* */
511
- /* */
512
- /* */
513
- /* */
514
- /* */
515
- /* */
516
- /* */
517
- /* */
518
- /* */
519
- /* */
520
- /* */
521
- /* */
522
- /* */
523
- /* */
524
- /* */
525
- /* */
526
- /* */
527
- /* */
528
- /* */
529
- /* */
530
- /* */
531
- /* */
532
- /* */
533
- /* */
534
- /* */
535
- /* */
536
- /* */
537
- /* */
538
- /* */
539
- /* */
540
- /* */
541
- /* */
542
- /* */
543
- /* */
544
- /* */
545
- /* */
546
- /* */
547
- /* */
548
- /* */
549
- /* */
550
- /* */
551
- /* */
552
- /* */
553
- /* */
554
- /* */
555
- /* */
556
- /* */
557
- /* */
558
- /* */
559
- /* */
560
- killProcess(byPid) {
561
- if (WEBSQL_PROC_MOCK_PROCESSES_PID[byPid]) {
562
- const ppid = WEBSQL_PROC_MOCK_PROCESSES_PID[byPid].ppid;
563
- if (WEBSQL_PROC_MOCK_PROCESSES_PPID[ppid]) {
564
- const allChilds = WEBSQL_PROC_MOCK_PROCESSES_PPID[ppid].childProcesses;
565
- WEBSQL_PROC_MOCK_PROCESSES_PPID[ppid].childProcesses = allChilds.filter(p => p !== byPid);
566
- }
567
- delete WEBSQL_PROC_MOCK_PROCESSES_PID[byPid];
568
- }
569
- if (WEBSQL_PROC_MOCK_PROCESSES_PPID[byPid]) {
570
- const childs = WEBSQL_PROC_MOCK_PROCESSES_PPID[byPid].childProcesses;
571
- for (let index = 0; index < childs.length; index++) {
572
- const childPid = childs[index];
573
- delete WEBSQL_PROC_MOCK_PROCESSES_PID[childPid];
574
- }
575
- delete WEBSQL_PROC_MOCK_PROCESSES_PPID[byPid];
576
- }
577
- /* */
578
- /* */
579
- }
580
- run(command, options) {
581
- command = Helpers._fixCommand(command);
582
- /* */
583
- /* */
584
- /* */
585
- /* */
586
- /* */
587
- /* */
588
- /* */
589
- /* */
590
- return {
591
- /* */
592
- /* */
593
- /* */
594
- /* */
595
- /* */
596
- /* */
597
- /* */
598
- /* */
599
- /* */
600
- /* */
601
- /* */
602
- /* */
603
- /* */
604
- /* */
605
- /* */
606
- /* */
607
- /* */
608
- /* */
609
- /* */
610
- /* */
611
- /* */
612
- /* */
613
- /* */
614
- /* */
615
- async(detach = false, mockFun) {
616
- if (mockFun) {
617
- const subStdoutSub = new Subject();
618
- const subStderSub = new Subject();
619
- const exitSub = new Subject();
620
- const subscribtions = [];
621
- const procDummy = {
622
- stdout: {
623
- on(action, stdoutCallback) {
624
- if (action == 'data') {
625
- subscribtions.push(subStdoutSub.subscribe(d => {
626
- stdoutCallback(d);
627
- }));
628
- }
629
- }
630
- },
631
- stderr: {
632
- on(action, stdoutCallback) {
633
- if (action == 'data') {
634
- subscribtions.push(subStderSub.subscribe(d => {
635
- stdoutCallback(d);
636
- }));
637
- }
638
- }
639
- },
640
- on(action, exitFun) {
641
- if (action == 'exit') {
642
- subscribtions.push(exitSub.subscribe(d => {
643
- exitFun(d);
644
- }));
645
- }
646
- },
647
- ppid: void 0,
648
- pid: void 0,
649
- };
650
- procDummy.pid = Math.round(Math.random() * (1000 - 100)) + 100;
651
- procDummy.ppid = procDummy.pid + 9999;
652
- WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid] = procDummy;
653
- if (!WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid]) {
654
- WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid] = {
655
- childProcesses: [],
656
- };
657
- }
658
- WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid].childProcesses.push(procDummy.pid);
659
- const checkIfProcessShouldBeDead = () => {
660
- return _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid]) || _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid]);
661
- };
662
- const f = Helpers.runSyncOrAsync(mockFun, (d) => {
663
- setTimeout(() => {
664
- subStdoutSub.next(d);
665
- });
666
- }, (d) => {
667
- setTimeout(() => {
668
- subStderSub.next(d);
669
- });
670
- }, () => {
671
- const shouldBeDead = checkIfProcessShouldBeDead();
672
- return shouldBeDead;
673
- });
674
- f.then(exitCode => {
675
- if (_.isNil(exitCode)) {
676
- exitCode = 0;
677
- }
678
- setTimeout(() => {
679
- exitSub.next(exitCode);
680
- subscribtions.forEach(s => s.unsubscribe());
681
- });
682
- }).catch((e) => {
683
- console.error(e);
684
- console.error(`Something wrong with your mock funciton`);
685
- exitSub.next(1);
686
- subscribtions.forEach(s => s.unsubscribe());
687
- });
688
- return procDummy;
689
- }
690
- /* */
691
- /* */
692
- /* */
693
- return (void 0);
694
- },
695
- /* */
696
- /* */
697
- /* */
698
- /* */
699
- /* */
700
- /* */
701
- /* */
702
- /* */
703
- /* */
704
- /* */
705
- /* */
706
- /* */
707
- /* */
708
- /* */
709
- /* */
710
- /* */
711
- /* */
712
- /* */
713
- /* */
714
- /* */
715
- /* */
716
- /* */
717
- /* */
718
- /* */
719
- /* */
720
- /* */
721
- /* */
722
- /* */
723
- /* */
724
- /* */
725
- /* */
726
- /* */
727
- /* */
728
- /* */
729
- /* */
730
- /* */
731
- /* */
732
- /* */
733
- /* */
734
- /* */
735
- /* */
736
- /* */
737
- /* */
738
- /* */
739
- /* */
740
- /* */
741
- /* */
742
- /* */
743
- /* */
744
- /* */
745
- /* */
746
- /* */
747
- /* */
748
- /* */
749
- /* */
750
- /* */
751
- /* */
752
- /* */
753
- /* */
754
- /* */
755
- /* */
756
- /* */
757
- /* */
758
- /* */
759
- /* */
760
- /* */
761
- /* */
762
- /* */
763
- /* */
764
- /* */
765
- /* */
766
- /* */
767
- /* */
768
- /* */
769
- /* */
770
- /* */
771
- /* */
772
- /* */
773
- /* */
774
- /* */
775
- /* */
776
- /* */
777
- /* */
778
- /* */
779
- /* */
780
- /* */
781
- };
782
- }
783
- /* */
784
- /* */
785
- /* */
786
- /* */
787
- /* */
788
- /* */
789
- /* */
790
- /* */
791
- /* */
792
- /* */
793
- /* */
794
- /* */
795
- /* */
796
- /* */
797
- /* */
798
- /* */
799
- /* */
800
- /* */
801
- /* */
802
- /* */
803
- /* */
804
- /* */
805
- /* */
806
- /* */
807
- /* */
808
- /* */
809
- /* */
810
- /* */
811
- /* */
812
- /* */
813
- /* */
814
- /* */
815
- /* */
816
- /* */
817
- /* */
818
- /* */
819
- /* */
820
- /* */
821
- /* */
822
- /* */
823
- /* */
824
- /* */
825
- /* */
826
- /* */
827
- /* */
828
- /* */
829
- /* */
830
- /* */
831
- /* */
832
- /* */
833
- /* */
834
- /* */
835
- /* */
836
- /* */
837
- /* */
838
- /* */
839
- /* */
840
- /* */
841
- /* */
842
- /* */
843
- /* */
844
- /* */
845
- /* */
846
- /* */
847
- /* */
848
- /* */
849
- /* */
850
- /* */
851
- /* */
852
- /* */
853
- /* */
854
- /* */
855
- /* */
856
- /* */
857
- /* */
858
- /* */
859
- /* */
860
- /* */
861
- /* */
862
- /* */
863
- /* */
864
- /* */
865
- /* */
866
- /* */
867
- /* */
868
- /* */
869
- /* */
870
- /* */
871
- /* */
872
- /* */
873
- /* */
874
- /* */
875
- /* */
876
- /* */
877
- /* */
878
- /* */
879
- /* */
880
- /* */
881
- /* */
882
- /* */
883
- /* */
884
- /* */
885
- /* */
886
- /* */
887
- /* */
888
- /* */
889
- /* */
890
- /* */
891
- /* */
892
- /* */
893
- /* */
894
- /* */
895
- /* */
896
- /* */
897
- /* */
898
- /* */
899
- /* */
900
- /* */
901
- /* */
902
- /* */
903
- /* */
904
- /* */
905
- /* */
906
- /* */
907
- /* */
908
- /* */
909
- /* */
910
- /* */
911
- /* */
912
- /* */
913
- /* */
914
- /* */
915
- /* */
916
- /* */
917
- /* */
918
- /* */
919
- /* */
920
- /* */
921
- /* */
922
- /* */
923
- /* */
924
- /* */
925
- /* */
926
- /* */
927
- /* */
928
- /* */
929
- /* */
930
- /* */
931
- /* */
932
- /* */
933
- /* */
934
- /* */
935
- /* */
936
- /* */
937
- /* */
938
- /* */
939
- /* */
940
- /* */
941
- /* */
942
- /* */
943
- /* */
944
- /* */
945
- /* */
946
- /* */
947
- /* */
948
- /* */
949
- /* */
950
- /* */
951
- /* */
952
- /* */
953
- /* */
954
- /* */
955
- /* */
956
- /* */
957
- /* */
958
- /* */
959
- /* */
960
- /* */
961
- /* */
962
- /* */
963
- /* */
964
- /* */
965
- /* */
966
- /* */
967
- /* */
968
- /* */
969
- /* */
970
- /* */
971
- /* */
972
- /* */
973
- /* */
974
- /* */
975
- /* */
976
- /* */
977
- /* */
978
- /* */
979
- /* */
980
- /* */
981
- /* */
982
- /* */
983
- /* */
984
- /* */
985
- /* */
986
- /* */
987
- /* */
988
- /* */
989
- /* */
990
- /* */
991
- /* */
992
- /* */
993
- /* */
994
- /* */
995
- /* */
996
- /* */
997
- /* */
998
- /* */
999
- /* */
1000
- /* */
1001
- /* */
1002
- /* */
1003
- /* */
1004
- /* */
1005
- /* */
1006
- /* */
1007
- /* */
1008
- /* */
1009
- /* */
1010
- /* */
1011
- /* */
1012
- /* */
1013
- /* */
1014
- /* */
1015
- /* */
1016
- /* */
1017
- /* */
1018
- /* */
1019
- /* */
1020
- /* */
1021
- /* */
1022
- /* */
1023
- /* */
1024
- /* */
1025
- /* */
1026
- /* */
1027
- /* */
1028
- /* */
1029
- /* */
1030
- /* */
1031
- /* */
1032
- /* */
1033
- /* */
1034
- /* */
1035
- /* */
1036
- /* */
1037
- /* */
1038
- /* */
1039
- /* */
1040
- /* */
1041
- /* */
1042
- /* */
1043
- /* */
1044
- /* */
1045
- /* */
1046
- /* */
1047
- /* */
1048
- /* */
1049
- /* */
1050
- /* */
1051
- /* */
1052
- /* */
1053
- /* */
1054
- /* */
1055
- /* */
1056
- /* */
1057
- /* */
1058
- /* */
1059
- /* */
1060
- /* */
1061
- /* */
1062
- /* */
1063
- /* */
1064
- /* */
1065
- /* */
1066
- /* */
1067
- /* */
1068
- /* */
1069
- /* */
1070
- /* */
1071
- /* */
1072
- /* */
1073
- /* */
1074
- /* */
1075
- /* */
1076
- /* */
1077
- /* */
1078
- /* */
1079
- /* */
1080
- /* */
1081
- /* */
1082
- /* */
1083
- /* */
1084
- /* */
1085
- /* */
1086
- /* */
1087
- /* */
1088
- /* */
1089
- /* */
1090
- /* */
1091
- /* */
1092
- /* */
1093
- /* */
1094
- /* */
1095
- /* */
1096
- /* */
1097
- /* */
1098
- /* */
1099
- /* */
1100
- /* */
1101
- /* */
1102
- /* */
1103
- /* */
1104
- /* */
1105
- /* */
1106
- /* */
1107
- /* */
1108
- /* */
1109
- /* */
1110
- /* */
1111
- /* */
1112
- /* */
1113
- /* */
1114
- /* */
1115
- /* */
1116
- /* */
1117
- /* */
1118
- /* */
1119
- /* */
1120
- /* */
1121
- /* */
1122
- /* */
1123
- /* */
1124
- /* */
1125
- /* */
1126
- /* */
1127
- /* */
1128
- /* */
1129
- /* */
1130
- /* */
1131
- /* */
1132
- /* */
1133
- /* */
1134
- /* */
1135
- /* */
1136
- /* */
1137
- /* */
1138
- /* */
1139
- /* */
1140
- /* */
1141
- /* */
1142
- /* */
1143
- /**
1144
- * Quick fix for object values
1145
- */
1146
- values(obj) {
1147
- if (_.isObject(obj) && !Array.isArray(obj)) {
1148
- const values = [];
1149
- for (const key in obj) {
1150
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
1151
- values.push(obj[key]);
1152
- }
1153
- }
1154
- return values;
1155
- }
1156
- return [];
1157
- }
1158
- }
1159
- ;
1160
- ({}); // @--end-of-file-for-module=tnp-core lib/helpers.ts
1
+ import { _, /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ } from './core-imports'; /* */
2
+ /* */
3
+ /* */
4
+ /* */
5
+ /* */
6
+ /* */
7
+ /* */
8
+ /* */
9
+ /* */
10
+ /* */
11
+ /* */
12
+ /* */
13
+ /* */
14
+ /* */
15
+ /* */
16
+ import { Helpers } from './index';
17
+ import { HelpersMessages } from './helpers-messages';
18
+ import { Subject } from 'rxjs';
19
+ const encoding = 'utf8';
20
+ const WEBSQL_PROC_MOCK_PROCESSES_PID = {};
21
+ const WEBSQL_PROC_MOCK_PROCESSES_PPID = {};
22
+ export class HelpersCore extends HelpersMessages {
23
+ constructor() {
24
+ super();
25
+ /* */
26
+ /* */
27
+ /* */
28
+ /* */
29
+ /* */
30
+ /* */
31
+ /* */
32
+ /* */
33
+ /* */
34
+ /* */
35
+ /* */
36
+ /* */
37
+ /* */
38
+ /* */
39
+ /* */
40
+ /* */
41
+ /* */
42
+ /* */
43
+ /* */
44
+ /* */
45
+ /* */
46
+ /* */
47
+ this.bigMaxBuffer = 2024 * 500;
48
+ /* */
49
+ /* */
50
+ /* */
51
+ }
52
+ static get InstanceCore() {
53
+ if (!HelpersCore._instanceCore) {
54
+ HelpersCore._instanceCore = new HelpersCore();
55
+ }
56
+ return HelpersCore._instanceCore;
57
+ }
58
+ removeSlashAtEnd(s) {
59
+ s = s?.endsWith(`/`) ? s.slice(0, s.length - 1) : s;
60
+ return s;
61
+ }
62
+ removeSlashAtBegin(s) {
63
+ s = s?.startsWith(`/`) ? s.slice(1) : s;
64
+ return s;
65
+ }
66
+ stringify(inputObject) {
67
+ return JSON.stringify(inputObject, null, 2);
68
+ }
69
+ async runSyncOrAsync(fnOrOptions, ...firstArg) {
70
+ if (_.isUndefined(fnOrOptions)) {
71
+ return;
72
+ }
73
+ let promisOrValue;
74
+ const optionsMode = _.isObject(fnOrOptions)
75
+ && !_.isArray(fnOrOptions)
76
+ && !_.isFunction(fnOrOptions)
77
+ && !_.isNil(fnOrOptions);
78
+ if (optionsMode) {
79
+ const { functionFn, context, arrayOfParams } = fnOrOptions;
80
+ promisOrValue = functionFn.apply(context, arrayOfParams);
81
+ }
82
+ else {
83
+ // @ts-ignore
84
+ promisOrValue = _.isArray(fnOrOptions) ? fnOrOptions[1][fnOrOptions[0]](...firstArg) : fnOrOptions(...firstArg);
85
+ }
86
+ if (promisOrValue instanceof Promise) {
87
+ promisOrValue = Promise.resolve(promisOrValue);
88
+ }
89
+ return promisOrValue;
90
+ }
91
+ /* */
92
+ /* */
93
+ /* */
94
+ /* */
95
+ /* */
96
+ /* */
97
+ /* */
98
+ /* */
99
+ /* */
100
+ /* */
101
+ /* */
102
+ /* */
103
+ /* */
104
+ /* */
105
+ /* */
106
+ /* */
107
+ /* */
108
+ /* */
109
+ /* */
110
+ /* */
111
+ /* */
112
+ /* */
113
+ /* */
114
+ /* */
115
+ /* */
116
+ /* */
117
+ /* */
118
+ /* */
119
+ /* */
120
+ /* */
121
+ /* */
122
+ /* */
123
+ /* */
124
+ /* */
125
+ /* */
126
+ /* */
127
+ /* */
128
+ /* */
129
+ /* */
130
+ /* */
131
+ /* */
132
+ /* */
133
+ /* */
134
+ /* */
135
+ /* */
136
+ /* */
137
+ /* */
138
+ /* */
139
+ /* */
140
+ /* */
141
+ /* */
142
+ /* */
143
+ /* */
144
+ /* */
145
+ /* */
146
+ /* */
147
+ /* */
148
+ /* */
149
+ /* */
150
+ /* */
151
+ /* */
152
+ /* */
153
+ /* */
154
+ /* */
155
+ /* */
156
+ /* */
157
+ /* */
158
+ /* */
159
+ /* */
160
+ /* */
161
+ /* */
162
+ /* */
163
+ /* */
164
+ /* */
165
+ /* */
166
+ /* */
167
+ /* */
168
+ /* */
169
+ /* */
170
+ /* */
171
+ /* */
172
+ /* */
173
+ /* */
174
+ /* */
175
+ /* */
176
+ /* */
177
+ /* */
178
+ /* */
179
+ /* */
180
+ /* */
181
+ /* */
182
+ /* */
183
+ /* */
184
+ /* */
185
+ /* */
186
+ /* */
187
+ /* */
188
+ /* */
189
+ /* */
190
+ /* */
191
+ /* */
192
+ /* */
193
+ /* */
194
+ /* */
195
+ /* */
196
+ /* */
197
+ /* */
198
+ /* */
199
+ /* */
200
+ /* */
201
+ /* */
202
+ /* */
203
+ /* */
204
+ /* */
205
+ /* */
206
+ /* */
207
+ /* */
208
+ /* */
209
+ /* */
210
+ /* */
211
+ /* */
212
+ /* */
213
+ /* */
214
+ /* */
215
+ /* */
216
+ /* */
217
+ /* */
218
+ /* */
219
+ /* */
220
+ /* */
221
+ /* */
222
+ /* */
223
+ /* */
224
+ /* */
225
+ /* */
226
+ /* */
227
+ /* */
228
+ /* */
229
+ /* */
230
+ /* */
231
+ /* */
232
+ /* */
233
+ /* */
234
+ /* */
235
+ /* */
236
+ /* */
237
+ /* */
238
+ /* */
239
+ /* */
240
+ /* */
241
+ /* */
242
+ /* */
243
+ /* */
244
+ /* */
245
+ /* */
246
+ /* */
247
+ /* */
248
+ /* */
249
+ /* */
250
+ /* */
251
+ /* */
252
+ /* */
253
+ /* */
254
+ /* */
255
+ /* */
256
+ /* */
257
+ /* */
258
+ /* */
259
+ /* */
260
+ /* */
261
+ /* */
262
+ /* */
263
+ /* */
264
+ /* */
265
+ /* */
266
+ /* */
267
+ /* */
268
+ /* */
269
+ /* */
270
+ /* */
271
+ /* */
272
+ /* */
273
+ /* */
274
+ /* */
275
+ /* */
276
+ /* */
277
+ /* */
278
+ /* */
279
+ /* */
280
+ /* */
281
+ /* */
282
+ /* */
283
+ /* */
284
+ /* */
285
+ /* */
286
+ /* */
287
+ /* */
288
+ /* */
289
+ /* */
290
+ /* */
291
+ /* */
292
+ /* */
293
+ /* */
294
+ /* */
295
+ /* */
296
+ /* */
297
+ /* */
298
+ /* */
299
+ /**
300
+ * symlink may have existed or unexisted destiantion url
301
+ * @param destUrl M
302
+ */
303
+ isSymlinkThatMatchesUrl(possibleSymlink, destUrl, absoluteFileMatch = false) {
304
+ /* */
305
+ /* */
306
+ /* */
307
+ /* */
308
+ /* */
309
+ /* */
310
+ /* */
311
+ /* */
312
+ /* */
313
+ /* */
314
+ /* */
315
+ /* */
316
+ /* */
317
+ /* */
318
+ /* */
319
+ /* */
320
+ /* */
321
+ /* */
322
+ /* */
323
+ /* */
324
+ /* */
325
+ /* */
326
+ /* */
327
+ /* */
328
+ /* */
329
+ /* */
330
+ /* */
331
+ /* */
332
+ /* */
333
+ /* */
334
+ /* */
335
+ return (void 0);
336
+ }
337
+ isSymlinkFileExitedOrUnexisted(filePath) {
338
+ /* */
339
+ /* */
340
+ /* */
341
+ /* */
342
+ /* */
343
+ /* */
344
+ /* */
345
+ return (void 0);
346
+ }
347
+ /**
348
+ * If symbolnk link that target file does not exits
349
+ */
350
+ isUnexistedLink(filePath) {
351
+ /* */
352
+ /* */
353
+ /* */
354
+ /* */
355
+ /* */
356
+ /* */
357
+ /* */
358
+ /* */
359
+ /* */
360
+ /* */
361
+ /* */
362
+ /* */
363
+ return (void 0);
364
+ }
365
+ /**
366
+ * @param existedLink check if source of link exists
367
+ */
368
+ isExistedSymlink(filePath) {
369
+ /* */
370
+ /* */
371
+ /* */
372
+ /* */
373
+ /* */
374
+ /* */
375
+ /* */
376
+ /* */
377
+ /* */
378
+ /* */
379
+ /* */
380
+ /* */
381
+ return (void 0);
382
+ }
383
+ /* */
384
+ /* */
385
+ /* */
386
+ /* */
387
+ /* */
388
+ /* */
389
+ /* */
390
+ /* */
391
+ /* */
392
+ /* */
393
+ /* */
394
+ /* */
395
+ /* */
396
+ /* */
397
+ /* */
398
+ /* */
399
+ /* */
400
+ exists(folderOrFilePath) {
401
+ /* */
402
+ /* */
403
+ /* */
404
+ /* */
405
+ /* */
406
+ /* */
407
+ /* */
408
+ /* */
409
+ /* */
410
+ /* */
411
+ /* */
412
+ /* */
413
+ /* */
414
+ /* */
415
+ /* */
416
+ /* */
417
+ /* */
418
+ /* */
419
+ /* */
420
+ return (void 0);
421
+ }
422
+ _fixCommand(command) {
423
+ if (global.skipCoreCheck && (command.startsWith('tnp ') || command.startsWith('firedev'))) {
424
+ command = `${command} --skipCoreCheck`;
425
+ }
426
+ return command;
427
+ }
428
+ command(command) {
429
+ command = Helpers._fixCommand(command);
430
+ return {
431
+ /* */
432
+ /* */
433
+ /* */
434
+ /* */
435
+ /* */
436
+ /* */
437
+ /* */
438
+ /* */
439
+ /* */
440
+ /* */
441
+ /* */
442
+ /* */
443
+ /* */
444
+ /* */
445
+ /* */
446
+ /* */
447
+ /* */
448
+ /* */
449
+ /* */
450
+ /* */
451
+ /* */
452
+ /* */
453
+ /* */
454
+ /* */
455
+ /* */
456
+ /* */
457
+ /* */
458
+ /* */
459
+ /* */
460
+ /* */
461
+ /* */
462
+ /* */
463
+ /* */
464
+ /* */
465
+ /* */
466
+ /* */
467
+ /* */
468
+ /* */
469
+ /* */
470
+ /* */
471
+ /* */
472
+ /* */
473
+ /* */
474
+ /* */
475
+ /* */
476
+ /* */
477
+ /* */
478
+ /* */
479
+ /* */
480
+ /* */
481
+ };
482
+ }
483
+ wait(second) {
484
+ return new Promise((resolve, reject) => {
485
+ setTimeout(() => {
486
+ resolve(void 0);
487
+ }, second * 1000);
488
+ });
489
+ }
490
+ /* */
491
+ /* */
492
+ /* */
493
+ /* */
494
+ /* */
495
+ /* */
496
+ /* */
497
+ /* */
498
+ /* */
499
+ /* */
500
+ /* */
501
+ /* */
502
+ /* */
503
+ /* */
504
+ /* */
505
+ /* */
506
+ /* */
507
+ /* */
508
+ /* */
509
+ /* */
510
+ /* */
511
+ /* */
512
+ /* */
513
+ /* */
514
+ /* */
515
+ /* */
516
+ /* */
517
+ /* */
518
+ /* */
519
+ /* */
520
+ /* */
521
+ /* */
522
+ /* */
523
+ /* */
524
+ /* */
525
+ /* */
526
+ /* */
527
+ /* */
528
+ /* */
529
+ /* */
530
+ /* */
531
+ /* */
532
+ /* */
533
+ /* */
534
+ /* */
535
+ /* */
536
+ /* */
537
+ /* */
538
+ /* */
539
+ /* */
540
+ /* */
541
+ /* */
542
+ /* */
543
+ /* */
544
+ /* */
545
+ /* */
546
+ /* */
547
+ /* */
548
+ /* */
549
+ /* */
550
+ /* */
551
+ /* */
552
+ /* */
553
+ /* */
554
+ /* */
555
+ /* */
556
+ /* */
557
+ /* */
558
+ /* */
559
+ /* */
560
+ killProcess(byPid) {
561
+ if (WEBSQL_PROC_MOCK_PROCESSES_PID[byPid]) {
562
+ const ppid = WEBSQL_PROC_MOCK_PROCESSES_PID[byPid].ppid;
563
+ if (WEBSQL_PROC_MOCK_PROCESSES_PPID[ppid]) {
564
+ const allChilds = WEBSQL_PROC_MOCK_PROCESSES_PPID[ppid].childProcesses;
565
+ WEBSQL_PROC_MOCK_PROCESSES_PPID[ppid].childProcesses = allChilds.filter(p => p !== byPid);
566
+ }
567
+ delete WEBSQL_PROC_MOCK_PROCESSES_PID[byPid];
568
+ }
569
+ if (WEBSQL_PROC_MOCK_PROCESSES_PPID[byPid]) {
570
+ const childs = WEBSQL_PROC_MOCK_PROCESSES_PPID[byPid].childProcesses;
571
+ for (let index = 0; index < childs.length; index++) {
572
+ const childPid = childs[index];
573
+ delete WEBSQL_PROC_MOCK_PROCESSES_PID[childPid];
574
+ }
575
+ delete WEBSQL_PROC_MOCK_PROCESSES_PPID[byPid];
576
+ }
577
+ /* */
578
+ /* */
579
+ }
580
+ run(command, options) {
581
+ command = Helpers._fixCommand(command);
582
+ /* */
583
+ /* */
584
+ /* */
585
+ /* */
586
+ /* */
587
+ /* */
588
+ /* */
589
+ /* */
590
+ return {
591
+ /* */
592
+ /* */
593
+ /* */
594
+ /* */
595
+ /* */
596
+ /* */
597
+ /* */
598
+ /* */
599
+ /* */
600
+ /* */
601
+ /* */
602
+ /* */
603
+ /* */
604
+ /* */
605
+ /* */
606
+ /* */
607
+ /* */
608
+ /* */
609
+ /* */
610
+ /* */
611
+ /* */
612
+ /* */
613
+ /* */
614
+ /* */
615
+ async(detach = false, mockFun) {
616
+ if (mockFun) {
617
+ const subStdoutSub = new Subject();
618
+ const subStderSub = new Subject();
619
+ const exitSub = new Subject();
620
+ const subscribtions = [];
621
+ const procDummy = {
622
+ stdout: {
623
+ on(action, stdoutCallback) {
624
+ if (action == 'data') {
625
+ subscribtions.push(subStdoutSub.subscribe(d => {
626
+ stdoutCallback(d);
627
+ }));
628
+ }
629
+ }
630
+ },
631
+ stderr: {
632
+ on(action, stdoutCallback) {
633
+ if (action == 'data') {
634
+ subscribtions.push(subStderSub.subscribe(d => {
635
+ stdoutCallback(d);
636
+ }));
637
+ }
638
+ }
639
+ },
640
+ on(action, exitFun) {
641
+ if (action == 'exit') {
642
+ subscribtions.push(exitSub.subscribe(d => {
643
+ exitFun(d);
644
+ }));
645
+ }
646
+ },
647
+ ppid: void 0,
648
+ pid: void 0,
649
+ };
650
+ procDummy.pid = Math.round(Math.random() * (1000 - 100)) + 100;
651
+ procDummy.ppid = procDummy.pid + 9999;
652
+ WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid] = procDummy;
653
+ if (!WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid]) {
654
+ WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid] = {
655
+ childProcesses: [],
656
+ };
657
+ }
658
+ WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid].childProcesses.push(procDummy.pid);
659
+ const checkIfProcessShouldBeDead = () => {
660
+ return _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid]) || _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid]);
661
+ };
662
+ const f = Helpers.runSyncOrAsync(mockFun, (d) => {
663
+ setTimeout(() => {
664
+ subStdoutSub.next(d);
665
+ });
666
+ }, (d) => {
667
+ setTimeout(() => {
668
+ subStderSub.next(d);
669
+ });
670
+ }, () => {
671
+ const shouldBeDead = checkIfProcessShouldBeDead();
672
+ return shouldBeDead;
673
+ });
674
+ f.then(exitCode => {
675
+ if (_.isNil(exitCode)) {
676
+ exitCode = 0;
677
+ }
678
+ setTimeout(() => {
679
+ exitSub.next(exitCode);
680
+ subscribtions.forEach(s => s.unsubscribe());
681
+ });
682
+ }).catch((e) => {
683
+ console.error(e);
684
+ console.error(`Something wrong with your mock funciton`);
685
+ exitSub.next(1);
686
+ subscribtions.forEach(s => s.unsubscribe());
687
+ });
688
+ return procDummy;
689
+ }
690
+ /* */
691
+ /* */
692
+ /* */
693
+ return (void 0);
694
+ },
695
+ /* */
696
+ /* */
697
+ /* */
698
+ /* */
699
+ /* */
700
+ /* */
701
+ /* */
702
+ /* */
703
+ /* */
704
+ /* */
705
+ /* */
706
+ /* */
707
+ /* */
708
+ /* */
709
+ /* */
710
+ /* */
711
+ /* */
712
+ /* */
713
+ /* */
714
+ /* */
715
+ /* */
716
+ /* */
717
+ /* */
718
+ /* */
719
+ /* */
720
+ /* */
721
+ /* */
722
+ /* */
723
+ /* */
724
+ /* */
725
+ /* */
726
+ /* */
727
+ /* */
728
+ /* */
729
+ /* */
730
+ /* */
731
+ /* */
732
+ /* */
733
+ /* */
734
+ /* */
735
+ /* */
736
+ /* */
737
+ /* */
738
+ /* */
739
+ /* */
740
+ /* */
741
+ /* */
742
+ /* */
743
+ /* */
744
+ /* */
745
+ /* */
746
+ /* */
747
+ /* */
748
+ /* */
749
+ /* */
750
+ /* */
751
+ /* */
752
+ /* */
753
+ /* */
754
+ /* */
755
+ /* */
756
+ /* */
757
+ /* */
758
+ /* */
759
+ /* */
760
+ /* */
761
+ /* */
762
+ /* */
763
+ /* */
764
+ /* */
765
+ /* */
766
+ /* */
767
+ /* */
768
+ /* */
769
+ /* */
770
+ /* */
771
+ /* */
772
+ /* */
773
+ /* */
774
+ /* */
775
+ /* */
776
+ /* */
777
+ /* */
778
+ /* */
779
+ /* */
780
+ /* */
781
+ };
782
+ }
783
+ /* */
784
+ /* */
785
+ /* */
786
+ /* */
787
+ /* */
788
+ /* */
789
+ /* */
790
+ /* */
791
+ /* */
792
+ /* */
793
+ /* */
794
+ /* */
795
+ /* */
796
+ /* */
797
+ /* */
798
+ /* */
799
+ /* */
800
+ /* */
801
+ /* */
802
+ /* */
803
+ /* */
804
+ /* */
805
+ /* */
806
+ /* */
807
+ /* */
808
+ /* */
809
+ /* */
810
+ /* */
811
+ /* */
812
+ /* */
813
+ /* */
814
+ /* */
815
+ /* */
816
+ /* */
817
+ /* */
818
+ /* */
819
+ /* */
820
+ /* */
821
+ /* */
822
+ /* */
823
+ /* */
824
+ /* */
825
+ /* */
826
+ /* */
827
+ /* */
828
+ /* */
829
+ /* */
830
+ /* */
831
+ /* */
832
+ /* */
833
+ /* */
834
+ /* */
835
+ /* */
836
+ /* */
837
+ /* */
838
+ /* */
839
+ /* */
840
+ /* */
841
+ /* */
842
+ /* */
843
+ /* */
844
+ /* */
845
+ /* */
846
+ /* */
847
+ /* */
848
+ /* */
849
+ /* */
850
+ /* */
851
+ /* */
852
+ /* */
853
+ /* */
854
+ /* */
855
+ /* */
856
+ /* */
857
+ /* */
858
+ /* */
859
+ /* */
860
+ /* */
861
+ /* */
862
+ /* */
863
+ /* */
864
+ /* */
865
+ /* */
866
+ /* */
867
+ /* */
868
+ /* */
869
+ /* */
870
+ /* */
871
+ /* */
872
+ /* */
873
+ /* */
874
+ /* */
875
+ /* */
876
+ /* */
877
+ /* */
878
+ /* */
879
+ /* */
880
+ /* */
881
+ /* */
882
+ /* */
883
+ /* */
884
+ /* */
885
+ /* */
886
+ /* */
887
+ /* */
888
+ /* */
889
+ /* */
890
+ /* */
891
+ /* */
892
+ /* */
893
+ /* */
894
+ /* */
895
+ /* */
896
+ /* */
897
+ /* */
898
+ /* */
899
+ /* */
900
+ /* */
901
+ /* */
902
+ /* */
903
+ /* */
904
+ /* */
905
+ /* */
906
+ /* */
907
+ /* */
908
+ /* */
909
+ /* */
910
+ /* */
911
+ /* */
912
+ /* */
913
+ /* */
914
+ /* */
915
+ /* */
916
+ /* */
917
+ /* */
918
+ /* */
919
+ /* */
920
+ /* */
921
+ /* */
922
+ /* */
923
+ /* */
924
+ /* */
925
+ /* */
926
+ /* */
927
+ /* */
928
+ /* */
929
+ /* */
930
+ /* */
931
+ /* */
932
+ /* */
933
+ /* */
934
+ /* */
935
+ /* */
936
+ /* */
937
+ /* */
938
+ /* */
939
+ /* */
940
+ /* */
941
+ /* */
942
+ /* */
943
+ /* */
944
+ /* */
945
+ /* */
946
+ /* */
947
+ /* */
948
+ /* */
949
+ /* */
950
+ /* */
951
+ /* */
952
+ /* */
953
+ /* */
954
+ /* */
955
+ /* */
956
+ /* */
957
+ /* */
958
+ /* */
959
+ /* */
960
+ /* */
961
+ /* */
962
+ /* */
963
+ /* */
964
+ /* */
965
+ /* */
966
+ /* */
967
+ /* */
968
+ /* */
969
+ /* */
970
+ /* */
971
+ /* */
972
+ /* */
973
+ /* */
974
+ /* */
975
+ /* */
976
+ /* */
977
+ /* */
978
+ /* */
979
+ /* */
980
+ /* */
981
+ /* */
982
+ /* */
983
+ /* */
984
+ /* */
985
+ /* */
986
+ /* */
987
+ /* */
988
+ /* */
989
+ /* */
990
+ /* */
991
+ /* */
992
+ /* */
993
+ /* */
994
+ /* */
995
+ /* */
996
+ /* */
997
+ /* */
998
+ /* */
999
+ /* */
1000
+ /* */
1001
+ /* */
1002
+ /* */
1003
+ /* */
1004
+ /* */
1005
+ /* */
1006
+ /* */
1007
+ /* */
1008
+ /* */
1009
+ /* */
1010
+ /* */
1011
+ /* */
1012
+ /* */
1013
+ /* */
1014
+ /* */
1015
+ /* */
1016
+ /* */
1017
+ /* */
1018
+ /* */
1019
+ /* */
1020
+ /* */
1021
+ /* */
1022
+ /* */
1023
+ /* */
1024
+ /* */
1025
+ /* */
1026
+ /* */
1027
+ /* */
1028
+ /* */
1029
+ /* */
1030
+ /* */
1031
+ /* */
1032
+ /* */
1033
+ /* */
1034
+ /* */
1035
+ /* */
1036
+ /* */
1037
+ /* */
1038
+ /* */
1039
+ /* */
1040
+ /* */
1041
+ /* */
1042
+ /* */
1043
+ /* */
1044
+ /* */
1045
+ /* */
1046
+ /* */
1047
+ /* */
1048
+ /* */
1049
+ /* */
1050
+ /* */
1051
+ /* */
1052
+ /* */
1053
+ /* */
1054
+ /* */
1055
+ /* */
1056
+ /* */
1057
+ /* */
1058
+ /* */
1059
+ /* */
1060
+ /* */
1061
+ /* */
1062
+ /* */
1063
+ /* */
1064
+ /* */
1065
+ /* */
1066
+ /* */
1067
+ /* */
1068
+ /* */
1069
+ /* */
1070
+ /* */
1071
+ /* */
1072
+ /* */
1073
+ /* */
1074
+ /* */
1075
+ /* */
1076
+ /* */
1077
+ /* */
1078
+ /* */
1079
+ /* */
1080
+ /* */
1081
+ /* */
1082
+ /* */
1083
+ /* */
1084
+ /* */
1085
+ /* */
1086
+ /* */
1087
+ /* */
1088
+ /* */
1089
+ /* */
1090
+ /* */
1091
+ /* */
1092
+ /* */
1093
+ /* */
1094
+ /* */
1095
+ /* */
1096
+ /* */
1097
+ /* */
1098
+ /* */
1099
+ /* */
1100
+ /* */
1101
+ /* */
1102
+ /* */
1103
+ /* */
1104
+ /* */
1105
+ /* */
1106
+ /* */
1107
+ /* */
1108
+ /* */
1109
+ /* */
1110
+ /* */
1111
+ /* */
1112
+ /* */
1113
+ /* */
1114
+ /* */
1115
+ /* */
1116
+ /* */
1117
+ /* */
1118
+ /* */
1119
+ /* */
1120
+ /* */
1121
+ /* */
1122
+ /* */
1123
+ /* */
1124
+ /* */
1125
+ /* */
1126
+ /* */
1127
+ /* */
1128
+ /* */
1129
+ /* */
1130
+ /* */
1131
+ /* */
1132
+ /* */
1133
+ /* */
1134
+ /* */
1135
+ /* */
1136
+ /* */
1137
+ /* */
1138
+ /* */
1139
+ /* */
1140
+ /* */
1141
+ /* */
1142
+ /* */
1143
+ /**
1144
+ * Quick fix for object values
1145
+ */
1146
+ values(obj) {
1147
+ if (_.isObject(obj) && !Array.isArray(obj)) {
1148
+ const values = [];
1149
+ for (const key in obj) {
1150
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
1151
+ values.push(obj[key]);
1152
+ }
1153
+ }
1154
+ return values;
1155
+ }
1156
+ return [];
1157
+ }
1158
+ }
1159
+ ;
1160
+ ({}); // @--end-of-file-for-module=tnp-core lib/helpers.ts
1161
1161
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUtd2Vic3FsL3RucC1jb3JlL3Byb2plY3RzL3RucC1jb3JlL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFLLE1BQU0sZ0JBQWdCLENBQUMsQ0FBQSxLQUFLO0FBQ3RILEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBRUwsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHckQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFJN0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBb0J4QixNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUMxQyxNQUFNLCtCQUErQixHQUFHLEVBQUUsQ0FBQztBQUUzQyxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQWU7SUF3QzlDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUE3QlosS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBSUwsS0FBSztRQUNM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O0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFL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S0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1NBRUEsQ0FBQTtJQUNILENBQUM7SUFFSCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUdMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUdMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUdMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBR0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHSDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFRO1FBQ2IsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7Z0JBQ3JCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDdkI7YUFDRjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0F1VUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9EQUFvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICAgXywgLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gLyogKi8gICAgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBIZWxwZXJzTWVzc2FnZXMgfSBmcm9tICcuL2hlbHBlcnMtbWVzc2FnZXMnO1xuaW1wb3J0IHsgRXhlY3V0ZU9wdGlvbnMsIFJ1bk9wdGlvbnMgfSBmcm9tICcuL2NvcmUtbW9kZWxzJztcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IGFueTtcbmNvbnN0IGVuY29kaW5nID0gJ3V0ZjgnO1xuLyogKi9cbi8qICovXG4gIFxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blN5bmNPckFzeW5jT3B0aW9ucyB7XG4gIGZ1bmN0aW9uRm46IEZ1bmN0aW9uLFxuICBjb250ZXh0Pzogb2JqZWN0LFxuICBhcnJheU9mUGFyYW1zPzogYW55W10sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZE91dHB1dE9wdGlvbnMge1xuICBiaWdnZXJCdWZmZXI/OiBib29sZWFuLFxuICBzaG93V2hvbGVDb21tYW5kTm90T25seUxhc3RMaW5lPzogYm9vbGVhbixcbiAgc2hvd1N0ZGVyPzogYm9vbGVhbjtcbiAgZ2F0aGVyQ29sb3JzPzogYm9vbGVhbjtcbiAgc2hvd0Vycm9yV2FybmluZz86IGJvb2xlYW4sXG59XG5cblxuY29uc3QgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUElEID0ge307XG5jb25zdCBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEID0ge307XG5cbmV4cG9ydCBjbGFzcyBIZWxwZXJzQ29yZSBleHRlbmRzIEhlbHBlcnNNZXNzYWdlcyB7XG5cblxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2VDb3JlOiBIZWxwZXJzQ29yZTtcbiAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2VDb3JlKCkge1xuICAgIGlmICghSGVscGVyc0NvcmUuX2luc3RhbmNlQ29yZSkge1xuICAgICAgSGVscGVyc0NvcmUuX2luc3RhbmNlQ29yZSA9IG5ldyBIZWxwZXJzQ29yZSgpO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyc0NvcmUuX2luc3RhbmNlQ29yZTtcbiAgfVxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgcmVhZG9ubHkgYmlnTWF4QnVmZmVyID0gMjAyNCAqIDUwMDtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuICByZW1vdmVTbGFzaEF0RW5kKHM6IHN0cmluZykge1xuICAgIHMgPSBzPy5lbmRzV2l0aChgL2ApID8gcy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpIDogcztcbiAgICByZXR1cm4gcztcbiAgfVxuXG4gIHJlbW92ZVNsYXNoQXRCZWdpbihzOiBzdHJpbmcpIHtcbiAgICBzID0gcz8uc3RhcnRzV2l0aChgL2ApID8gcy5zbGljZSgxKSA6IHM7XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuICBzdHJpbmdpZnkoaW5wdXRPYmplY3Q6IGFueSk6IHN0cmluZyB7XG5cblxuXG5cblxuXG5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaW5wdXRPYmplY3QsIG51bGwsIDIpO1xuICB9XG5cbiAgYXN5bmMgcnVuU3luY09yQXN5bmMoZm5Pck9wdGlvbnM6IEZ1bmN0aW9uIHwgW3N0cmluZywgb2JqZWN0XSB8IFJ1blN5bmNPckFzeW5jT3B0aW9ucywgLi4uZmlyc3RBcmc6IGFueVtdKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZm5Pck9wdGlvbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBwcm9taXNPclZhbHVlOiBhbnk7XG4gICAgY29uc3Qgb3B0aW9uc01vZGUgPSBfLmlzT2JqZWN0KGZuT3JPcHRpb25zKVxuICAgICAgJiYgIV8uaXNBcnJheShmbk9yT3B0aW9ucylcbiAgICAgICYmICFfLmlzRnVuY3Rpb24oZm5Pck9wdGlvbnMpXG4gICAgICAmJiAhXy5pc05pbChmbk9yT3B0aW9ucylcbiAgICAgIDtcblxuICAgIGlmIChvcHRpb25zTW9kZSkge1xuICAgICAgY29uc3QgeyBmdW5jdGlvbkZuLCBjb250ZXh0LCBhcnJheU9mUGFyYW1zIH0gPSBmbk9yT3B0aW9ucyBhcyBSdW5TeW5jT3JBc3luY09wdGlvbnM7XG4gICAgICBwcm9taXNPclZhbHVlID0gZnVuY3Rpb25Gbi5hcHBseShjb250ZXh0LCBhcnJheU9mUGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcHJvbWlzT3JWYWx1ZSA9IF8uaXNBcnJheShmbk9yT3B0aW9ucykgPyBmbk9yT3B0aW9uc1sxXVtmbk9yT3B0aW9uc1swXV0oLi4uZmlyc3RBcmcpIDogZm5Pck9wdGlvbnMoLi4uZmlyc3RBcmcpO1xuICAgIH1cblxuXG4gICAgaWYgKHByb21pc09yVmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG5cbiAgICAgIHByb21pc09yVmFsdWUgPSBQcm9taXNlLnJlc29sdmUocHJvbWlzT3JWYWx1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzT3JWYWx1ZTtcbiAgfVxuXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG4gIC8qKlxuICAgKiBzeW1saW5rIG1heSBoYXZlIGV4aXN0ZWQgb3IgdW5leGlzdGVkIGRlc3RpYW50aW9uIHVybFxuICAgKiBAcGFyYW0gZGVzdFVybCBNXG4gICAqL1xuICBpc1N5bWxpbmtUaGF0TWF0Y2hlc1VybChwb3NzaWJsZVN5bWxpbms6IHN0cmluZywgZGVzdFVybDogc3RyaW5nLCBhYnNvbHV0ZUZpbGVNYXRjaCA9IGZhbHNlKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIGlzU3ltbGlua0ZpbGVFeGl0ZWRPclVuZXhpc3RlZChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBzeW1ib2xuayBsaW5rIHRoYXQgdGFyZ2V0IGZpbGUgZG9lcyBub3QgZXhpdHNcbiAgICovXG4gIGlzVW5leGlzdGVkTGluayhmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBleGlzdGVkTGluayBjaGVjayBpZiBzb3VyY2Ugb2YgbGluayBleGlzdHNcbiAgICovXG4gIGlzRXhpc3RlZFN5bWxpbmsoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuICBleGlzdHMoZm9sZGVyT3JGaWxlUGF0aDogc3RyaW5nIHwgc3RyaW5nW11cblxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgX2ZpeENvbW1hbmQoY29tbWFuZDogc3RyaW5nKSB7XG4gICAgaWYgKGdsb2JhbC5za2lwQ29yZUNoZWNrICYmIChjb21tYW5kLnN0YXJ0c1dpdGgoJ3RucCAnKSB8fCBjb21tYW5kLnN0YXJ0c1dpdGgoJ2ZpcmVkZXYnKSkpIHtcbiAgICAgIGNvbW1hbmQgPSBgJHtjb21tYW5kfSAtLXNraXBDb3JlQ2hlY2tgXG4gICAgfVxuICAgIHJldHVybiBjb21tYW5kXG4gIH1cblxuICBjb21tYW5kKGNvbW1hbmQ6IHN0cmluZykge1xuXG4gICAgY29tbWFuZCA9IEhlbHBlcnMuX2ZpeENvbW1hbmQoY29tbWFuZCk7XG5cbiAgICByZXR1cm4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIH1cbiAgfVxuXG4gIHdhaXQoc2Vjb25kOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUodm9pZCAwKTtcbiAgICAgIH0sIHNlY29uZCAqIDEwMDApXG4gICAgfSlcbiAgfVxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAga2lsbFByb2Nlc3MoYnlQaWQ6IG51bWJlcikge1xuXG4gICAgaWYgKFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtieVBpZF0pIHtcbiAgICAgIGNvbnN0IHBwaWQgPSBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QSURbYnlQaWRdLnBwaWQ7XG4gICAgICBpZiAoV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtwcGlkXSkge1xuICAgICAgICBjb25zdCBhbGxDaGlsZHMgPSBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW3BwaWRdLmNoaWxkUHJvY2Vzc2VzIGFzIG51bWJlcltdO1xuICAgICAgICBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW3BwaWRdLmNoaWxkUHJvY2Vzc2VzID0gYWxsQ2hpbGRzLmZpbHRlcihwID0+IHAgIT09IGJ5UGlkKTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QSURbYnlQaWRdO1xuICAgIH1cblxuICAgIGlmIChXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW2J5UGlkXSkge1xuICAgICAgY29uc3QgY2hpbGRzID0gV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtieVBpZF0uY2hpbGRQcm9jZXNzZXMgYXMgbnVtYmVyW107XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2hpbGRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBjaGlsZFBpZCA9IGNoaWxkc1tpbmRleF07XG4gICAgICAgIGRlbGV0ZSBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QSURbY2hpbGRQaWRdO1xuICAgICAgfVxuICAgICAgZGVsZXRlIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbYnlQaWRdO1xuICAgIH1cblxuLyogKi9cbi8qICovXG4gIFxuICB9XG5cbiAgcnVuKGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUnVuT3B0aW9ucykge1xuICAgIGNvbW1hbmQgPSBIZWxwZXJzLl9maXhDb21tYW5kKGNvbW1hbmQpO1xuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiB7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuICAgICAgYXN5bmMoZGV0YWNoID0gZmFsc2UsXG5cbiAgICAgICAgbW9ja0Z1bj86IChzdGRvdXRDYWxsYmFjazogKGRhdGFGb3JTdGRvdXQ6IGFueSkgPT4gYW55LCBzdGRFcnJjQ2FsbGJhY2s6IChkYXRhRm9yU3RkZXI6IGFueSkgPT4gYW55LCBzaG91bGRQcm9jZXNCZURlYWQ/OiAoKSA9PiBib29sZWFuKSA9PiBQcm9taXNlPG51bWJlcj4gfCBudW1iZXJcblxuICAgICAgKSB7XG5cblxuICAgICAgICBpZiAobW9ja0Z1bikge1xuICAgICAgICAgIGNvbnN0IHN1YlN0ZG91dFN1YiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgICAgY29uc3Qgc3ViU3RkZXJTdWIgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICAgIGNvbnN0IGV4aXRTdWIgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICAgIGNvbnN0IHN1YnNjcmlidGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cblxuICAgICAgICAgIGNvbnN0IHByb2NEdW1teSA9IHtcbiAgICAgICAgICAgIHN0ZG91dDoge1xuICAgICAgICAgICAgICBvbihhY3Rpb246ICdkYXRhJywgc3Rkb3V0Q2FsbGJhY2s6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYnRpb25zLnB1c2goc3ViU3Rkb3V0U3ViLnN1YnNjcmliZShkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3Rkb3V0Q2FsbGJhY2soZCk7XG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGRlcnI6IHtcbiAgICAgICAgICAgICAgb24oYWN0aW9uOiAnZGF0YScsIHN0ZG91dENhbGxiYWNrOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09ICdkYXRhJykge1xuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJ0aW9ucy5wdXNoKHN1YlN0ZGVyU3ViLnN1YnNjcmliZShkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3Rkb3V0Q2FsbGJhY2soZCk7XG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbihhY3Rpb246ICdleGl0JywgZXhpdEZ1bjogYW55KSB7XG4gICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gJ2V4aXQnKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJ0aW9ucy5wdXNoKGV4aXRTdWIuc3Vic2NyaWJlKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgZXhpdEZ1bihkKTtcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBwaWQ6IHZvaWQgMCBhcyBudW1iZXIsXG4gICAgICAgICAgICBwaWQ6IHZvaWQgMCBhcyBudW1iZXIsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHByb2NEdW1teS5waWQgPSAgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKDEwMDAgLSAxMDApKSArIDEwMDtcbiAgICAgICAgICBwcm9jRHVtbXkucHBpZCA9IHByb2NEdW1teS5waWQgKyA5OTk5O1xuXG5cbiAgICAgICAgICBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QSURbcHJvY0R1bW15LnBpZF0gPSBwcm9jRHVtbXk7XG4gICAgICAgICAgaWYgKCFXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW3Byb2NEdW1teS5wcGlkXSkge1xuICAgICAgICAgICAgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtwcm9jRHVtbXkucHBpZF0gPSB7XG4gICAgICAgICAgICAgIGNoaWxkUHJvY2Vzc2VzOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHJvY0R1bW15LnBwaWRdLmNoaWxkUHJvY2Vzc2VzLnB1c2gocHJvY0R1bW15LnBpZCk7XG5cblxuICAgICAgICAgIGNvbnN0IGNoZWNrSWZQcm9jZXNzU2hvdWxkQmVEZWFkID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF8uaXNOaWwoV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUElEW3Byb2NEdW1teS5waWRdKSB8fCBfLmlzTmlsKFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHJvY0R1bW15LnBwaWRdKVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBmID0gSGVscGVycy5ydW5TeW5jT3JBc3luYyhtb2NrRnVuLFxuICAgICAgICAgICAgKGQpID0+IHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3ViU3Rkb3V0U3ViLm5leHQoZCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgKGQpID0+IHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3ViU3RkZXJTdWIubmV4dChkKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNob3VsZEJlRGVhZCA9IGNoZWNrSWZQcm9jZXNzU2hvdWxkQmVEZWFkKCk7XG4gICAgICAgICAgICAgIHJldHVybiBzaG91bGRCZURlYWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBmLnRoZW4oZXhpdENvZGUgPT4ge1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwoZXhpdENvZGUpKSB7XG4gICAgICAgICAgICAgIGV4aXRDb2RlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBleGl0U3ViLm5leHQoZXhpdENvZGUpO1xuICAgICAgICAgICAgICBzdWJzY3JpYnRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFNvbWV0aGluZyB3cm9uZyB3aXRoIHlvdXIgbW9jayBmdW5jaXRvbmApXG4gICAgICAgICAgICBleGl0U3ViLm5leHQoMSk7XG4gICAgICAgICAgICBzdWJzY3JpYnRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHByb2NEdW1teSBhcyBhbnk7XG4gICAgICAgIH1cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICAgICAgcmV0dXJuICh2b2lkIDApO1xuICAgICAgfSxcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgfVxuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgLyoqXG4gICAqIFF1aWNrIGZpeCBmb3Igb2JqZWN0IHZhbHVlc1xuICAgKi9cbiAgdmFsdWVzKG9iajogYW55KSB7XG4gICAgaWYgKF8uaXNPYmplY3Qob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgIHZhbHVlcy5wdXNoKG9ialtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi9oZWxwZXJzLnRzIl19