-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflow-renderer.min.js
More file actions
2460 lines (2460 loc) · 152 KB
/
flow-renderer.min.js
File metadata and controls
2460 lines (2460 loc) · 152 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
301
302
303
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
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
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
484
485
486
487
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
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
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
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
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
const FlowRenderer = function () {
const t = this || {},
e = 100,
i = 8e3,
n = 8e3,
M = 13.5,
o = { view: {} };
(o.view.tools = {}),
(o.utils = {}),
(o.view.gridSize = function () {
return 20;
}),
(o.view.tools.calculateGridSnapOffsets = function (t, e) {
0;
e = e || { align: "nearest" };
const i = { x: 0, y: 0 },
n = o.view.gridSize(),
M = t.x - (n * Math.round((t.x - t.w / 2) / n) + t.w / 2),
A = t.x - (n * Math.round((t.x + t.w / 2) / n) - t.w / 2);
(i.x = A), "right" === e.align || (("left" === e.align || Math.abs(M) < Math.abs(A)) && (i.x = M));
return (i.y = t.y - n * Math.round(t.y / n)), i;
}),
(o.utils.parseContextKey = function (t, e) {
const i = {},
n = /^#:\((\S+?)\)::(.*)$/.exec(t);
n ? ((i.store = n[1]), (i.key = n[2])) : ((i.key = t), e && (i.store = e));
return i;
});
const A = {
arrows: !1,
gridLines: !0,
zoom: !0,
images: !0,
linkLines: !1,
labels: !0,
autoZoom: !0,
autoScroll: !0,
flowId: void 0,
container: void 0,
document: void 0,
},
a = { width: 10, height: 10 },
g = { rx: 3, ry: 3 },
s = {
junction: { width: 10, height: 10 },
"link in": { width: 30, height: 30 },
"link out": { width: 30, height: 30 },
subflow: { width: 40, height: 40 },
_default: { width: 100, height: 30 },
_default_no_label: { width: 30, height: 30 },
},
r = {
batch: "batch.svg",
catch: "alert.svg",
change: "swap.svg",
complete: "alert.svg",
rbe: "rbe.png",
comment: "comment.svg",
csv: "parser-csv.svg",
debug: "debug.svg",
delay: "timer.svg",
exec: "cog.svg",
feedparse: "parser-xml.svg",
file: "file-out.svg",
"file in": "file-in.svg",
function: "function.svg",
"http response": "white-globe.svg",
"http in": "white-globe.svg",
"http request": "white-globe.svg",
inject: "inject.svg",
join: "join.svg",
json: "parser-json.svg",
"link in": "link-out.svg",
"link out": "link-out.svg",
"link outlink": "link-out.svg",
"link outreturn": "link-return.svg",
"link call": "link-call.svg",
xml: "parser-xml.svg",
yaml: "parser-yaml.svg",
"mqtt in": "bridge.svg",
"mqtt out": "bridge.svg",
"tcp in": "bridge.svg",
"tcp out": "bridge.svg",
"tcp request": "bridge.svg",
"udp in": "bridge.svg",
"udp out": "bridge.svg",
markdown: "parser-markdown.png",
postgresql: "db.svg",
range: "range.svg",
sort: "sort.svg",
split: "split.svg",
subflow: "subflow.svg",
switch: "switch.svg",
template: "template.svg",
trigger: "trigger.svg",
ui_button: "ui_button.png",
ui_template: "ui_template.png",
ui_toast: "ui_toast.png",
ui_audio: "feed.svg",
ui_chart: "ui_chart.png",
ui_colour_picker: "ui_colour_picker.png",
ui_date_picker: "ui_date_picker.png",
ui_dropdown: "ui_dropdown.png",
ui_form: "ui_form.png",
ui_gauge: "ui_gauge.png",
ui_numeric: "ui_numeric.png",
ui_slider: "ui_slider.png",
ui_switch: "ui_switch.png",
ui_text: "ui_text.png",
ui_text_input: "ui_text.png",
"ui-button": "ui_button.png",
"ui-button-group": "ui_button.png",
"ui-chart": "ui_chart.png",
"ui-dropdown": "ui_dropdown.png",
"ui-form": "ui_form.png",
"ui-gauge": "ui_gauge.png",
"ui-markdown": "ui_text.png",
"ui-slider": "ui_slider.png",
"ui-switch": "ui_switch.png",
"ui-template": "ui_template.png",
"ui-text": "ui_text.png",
"ui-text-input": "ui_text.png",
"websocket in": "white-globe.svg",
"websocket out": "white-globe.svg",
Thought: "alert.svg",
Idea: "light.svg",
cronplus: "timer.svg",
"i2c scan": "serial.svg",
"i2c in": "serial.svg",
"i2c out": "serial.svg",
"jimp-image": "image.png",
"image viewer": "watch.svg",
"annotate-image": "image.png",
"MC Read": "plc-read.png",
"MC Write": "plc-write.png",
"FINS Read": "plc-read.png",
"FINS Write": "plc-write.png",
"FINS Read Multiple": "plc-read.png",
"FINS Fill": "plc-write.png",
"FINS Transfer": "plc-write.png",
"FINS Control": "plc-read.png",
"s7comm read": "arrow-in.svg",
"s7comm write": "arrow-in.svg",
"project link out": "ff-logo.svg",
"project link in": "ff-logo.svg",
"project link call": "ff-logo.svg",
"ff-mqtt-in": "ff-logo.svg",
"ff-mqtt-out": "ff-logo.svg",
"tables-query": "ff-logo-red.svg",
"mcp-tool": "function.svg",
"mcp-resource": "file.svg",
"mcp-prompt": "template.svg",
"mcp-response": "arrow-in.svg",
"advanced-ai": "advanced-ai-node.svg",
"image-classification": "classification-node.svg",
"image-depth": "depth-estimation-node.svg",
"object-detection": "object-detection-node.svg",
},
d = {
"alert.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE2Ljc0IC00MTUuMDQpIHNjYWxlKC42MjE0MykiIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Ik0zNzEuMyA2ODMuOTdsMS42MS0xLjYxSDM4OWwxLjYxIDEuNjEtMy4yMTkgNDAuMjMtMy4yMTggMy4yMThoLTYuNDM3bC0zLjIxOS0zLjIxOHoiLz48cmVjdCB4PSIzNzIuOTEiIHk9IjczNS40NyIgd2lkdGg9IjE2LjA5MiIgaGVpZ2h0PSIxNi4wOTIiIHJ5PSIzLjAxNyIgY29sb3I9IiMwMDAiLz48L2c+PC9zdmc+Cg==",
"arduino.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHYSURBVEiJ7ZTBq4xRGMZ/77kzC6XuWN26V8qNdAsbyoI/AvU5u7tB3SihZMGClIVSlhSShb4zN5uxoGYplMWNbCjlkjuUmjKjKXdm3sfCN2NY6i6keVbnvOf0e9/zPuccy/OctVRYU9oYOAb+r8DSkBzCRJZlR4EzwCzSquChmZ1NKb0BiDEacA2YByrAV+BWs9m8WK/XWwDkeY6k0O/3b+qXGpJ6kuTuS5ImJVm/3z8/2ODuDZe+F+NXkibzPB8e+VAI4TDwGdifUpput9tTwFUz2wEsuvuJEMIl4BEwV61Wpw3mJD0xs+3AjdEKL0j6Jmmm+H0MsGLt1EjlL4rYlKT3q9LuYv5ckkYrBOimlFayLDsuySV5jHErcAfoShJwJcZYAR4Dm8pwEsDdnw69GAFOxBg3hBDuApuBWWDZ3SNQMjMDFoBWt9vNJDV6vd7twtBdfwI/AOv1sw9bUkrLwCdgPoSwACwBi8A+4HS5XG6a2cFSqfQuxnhZ0h7g2W8uS3owMFDSS0mdQd8kzRQ34XoR60p67e5fCpffdjqdjcMeppQcOODu54AWsBNYV2Q9klJaSSl5COGYu98DHNhmZhVJ981sb61W+8jAybXUv/+Wx8Ax8C/0A+UBSZXw25H1AAAAAElFTkSuQmCC",
"arrow-in.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTggNXYxMkg3djI2aDExdjEybDE0LTI1eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPgo=",
"batch.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii42MTIiPjxwYXRoIGQ9Ik0zNC4wMDEgMjcuOTg3bC00IC4wMDR2My45OTdsNC0uMDFNNDAuMDAxIDI3Ljk4N2wtNCAuMDA0djMuOTk3bDQtLjAxTTI2LjAwMSAyOS45ODdsLTctNy45ODZ2MTUuOTg2TTM0LjAwMSAxMy45ODdsLTQgLjAwNHYzLjk5N2w0LS4wMU00MC4wMDEgMTMuOTg3bC00IC4wMDR2My45OTdsNC0uMDFNMzQuMDAxIDQxLjk4OGwtNCAuMDAzdjMuOTk3bDQtLjAxTTQwLjAwMSA0MS45ODhsLTQgLjAwM3YzLjk5N2w0LS4wMU04LjAwMSAyNy45ODdsLTQgLjAwNHYzLjk5N2w0LS4wMU0xNC4wMDEgMjcuOTg3bC00IC4wMDR2My45OTdsNC0uMDFNOC4wMDEgMTkuOTg3bC00IC4wMDR2My45OTdsNC0uMDFNMTQuMDAxIDE5Ljk4N2wtNCAuMDA0djMuOTk3bDQtLjAxTTguMDAxIDM1Ljk4N2wtNCAuMDA0djMuOTk3bDQtLjAxTTE0LjAwMSAzNS45ODdsLTQgLjAwNHYzLjk5N2w0LS4wMSIvPjwvZz48L3N2Zz4K",
"bluetooth.png":
"data:image/png;base64,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",
"bridge-dash.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTkuOTI0IDYuNjFjNC4zNzIgNS40MzMgNy4xODIgMTMuODkzIDcuMTgyIDIzLjM5NyAwIDkuNDkzLTIuODA0IDE3Ljk0Ni03LjE2NyAyMy4zNzltLTQuMjk0LTM4LjM5YzUuNjQ1IDkuNDE3IDcuMTcyIDIwLjk0NC4wMjQgMjkuOTkzbS00LjM2LTIxLjY2MWMxLjMzOCAxLjQ1OSAyLjIxNSAzLjkwNiAyLjIxNSA2LjY4IDAgMi41NzEtLjc1NSA0Ljg2My0xLjkzMSA2LjM0NiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2UtZGFzaGFycmF5PSIxNC4wOTYsIDMuNTI0IiBzdHJva2Utd2lkdGg9IjMuNTI0Ii8+PC9zdmc+Cg==",
"bridge.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTkuOTI0IDYuNjFjNC4zNzIgNS40MzMgNy4xODIgMTMuODkzIDcuMTgyIDIzLjM5NyAwIDkuNDkzLTIuODA0IDE3Ljk0Ni03LjE2NyAyMy4zNzltLTQuMjk0LTM4LjM5YzUuNjQ1IDkuNDE3IDcuMTcyIDIwLjk0NC4wMjQgMjkuOTkzbS00LjM2LTIxLjY2MWMxLjMzOCAxLjQ1OSAyLjIxNSAzLjkwNiAyLjIxNSA2LjY4IDAgMi41NzEtLjc1NSA0Ljg2My0xLjkzMSA2LjM0NiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMuMjI0Ii8+PC9zdmc+",
"cog.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAgMTJhMTggMTggMCAwIDAtMy40OTQuMzZsLTEuNDI4IDUuNzE1LTUuMDYtMy4wMzZhMTggMTggMCAwIDAtNC45NDYgNC45MTdsMy4wNDUgNS4wNzgtNS43NjUgMS40NDJBMTggMTggMCAwIDAgMiAzMGExOCAxOCAwIDAgMCAuMzQ1IDMuNDM0bDUuNzc1IDEuNDQ0LTMuMDcyIDUuMTJhMTggMTggMCAwIDAgNC44OTMgNC45MjRsNS4xMzctMy4wODMgMS40NTUgNS44MkExOCAxOCAwIDAgMCAyMCA0OGExOCAxOCAwIDAgMCAzLjQ3LS4zNTNsMS40NTItNS44MDcgNS4xMjggMy4wNzZhMTggMTggMCAwIDAgNC45MDUtNC45MTNsLTMuMDc0LTUuMTI0IDUuNzgzLTEuNDQ2QTE4IDE4IDAgMCAwIDM4IDMwYTE4IDE4IDAgMCAwLS4zNjctMy41MjlsLTUuNzUtMS40MzcgMy4wNDEtNS4wNjlhMTggMTggMCAwIDAtNC45MzctNC45MjhsLTUuMDY1IDMuMDM4LTEuNDMzLTUuNzI4QTE4IDE4IDAgMCAwIDIwIDEyem0wIDlhOSA5IDAgMCAxIDkgOSA5IDkgMCAwIDEtOSA5IDkgOSAwIDAgMS05LTkgOSA5IDAgMCAxIDktOXoiIGNvbG9yPSIjMDAwIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuOTgiIHN0eWxlPSJpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWwiLz48L3N2Zz4K",
"comment.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMzYuMTkgMjguNmMwIDYuMDg4LTcuMjg5IDExLjAyNC0xNi4yOCAxMS4wMjRhMjMuOTggMjMuOTggMCAwIDEtMi45ODItLjE4NWMtMS4yNzItLjE1OS03LjkzMyA3LjUyNi0xMy4xMTMgNi41My4xOC0yLjAwNCA4LjE4LTYuMDA0IDUuODctOC43OUM1Ljk5MyAzNS4xNiAzLjYzIDMyLjA2NiAzLjYzIDI4LjZjMC02LjA4OCA3LjI4OS0xMS4wMjQgMTYuMjgtMTEuMDI0IDguOTkxIDAgMTYuMjggNC45MzYgMTYuMjggMTEuMDI0eiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYmFiYWJhIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHlsZT0iaXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsIi8+PC9zdmc+Cg==",
"db.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzU1IC03MDQuMzYpIj48ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCgxLjI4NjggMCAwIDEuOTI2MyAtNjQuNDQ0IC02MDcuNTYpIiBjeD0iMzQxLjI1IiBjeT0iNjg4LjYxIiByeD0iOS44NCIgcnk9IjMuMjUiIGNvbG9yPSIjMDAwIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTM4Ny4zMiA3NTAuNDhjMCAxLjk0OS01LjY2OSA1Ljg3OS0xMi42NjIgNS44NzlzLTEyLjY2Mi0zLjkzLTEyLjY2Mi01Ljg3OXYtMjcuMDQzYzAgMS45NDkgNS42NjkgNi4yNDIgMTIuNjYyIDYuMjQyczEyLjY2Mi00LjI5MyAxMi42NjItNi4yNDJ2MjcuMDQzIiBjb2xvcj0iIzAwMCIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4K",
"debug.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAuMDA0IDE0LjQ5OWgyME0xMC4wMDQgNDYuNTAzaDIwTTEwLjAwNCAyMi41aDIwTTEwLjAwNCAzMC41MDFoMjBNMTAuMDA0IDM4LjUwMmgyMCIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIuOTk5NzAwMDAwMDAwMDAwMyIvPjwvc3ZnPgo=",
"envelope.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMjAgMzIuOTZsLTE4LTE4aDM2eiIvPjxwYXRoIGQ9Ik0yIDIwLjM2bDE4IDE4IDE4LTE4djI2LjFIMnoiLz48L2c+PC9zdmc+Cg==",
"feed.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjYjg1YzVjIiBzdHJva2U9IiMwMDAiPjxwYXRoIGNvbG9yPSIjMDAwIiBkPSJNLS4wMS0uMDA0aDM5Ljk5OHY2MEgtLjAxeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQ1MC4yNjYgLTU4NS4zNykiPjxyZWN0IHg9IjQ2NC4yNyIgeT0iNjI1LjM3IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHJ5PSIyLjQiIGNvbG9yPSIjMDAwIiBmaWxsPSIjZmZmIiBzdHJva2U9Im5vbmUiLz48ZyBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iNCI+PHBhdGggZD0iTTQ2MS4yNyA2MTguODdsNS41LTIuNWg3bDUuNSAyLjVNNDU5LjI3IDYwOC44N2w1LjUtMi41aDExbDUuNSAyLjVNNDU3LjI3IDU5OC44N2w1LjUtMi41aDE1bDUuNSAyLjUiLz48L2c+PC9nPjwvZz48L3N2Zz4=",
"file-in.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBjb2xvcj0iIzAwMCIgZmlsbD0ibm9uZSIgZD0iTTAtLjA0aDQwdjYwSDB6Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTUgOS45NmgxNHYxNmg5djdIMTh2MTBoMTB2N0g1eiIvPjxwYXRoIGQ9Ik0yMiA5Ljk2bDEzIDEzSDIyeiIvPjxwYXRoIGQ9Ik0yOCAyNS45Nmg3djZsNSA2LTQuOTg3IDYtLjAxMyA2aC03bDEwLTEyeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9nPjwvc3ZnPg==",
"file-out.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI2MCIgdmlld0JveD0iMCwgMCwgNDAsIDYwIj48cGF0aCBjb2xvcj0iIzAwMCIgZmlsbD0ibm9uZSIgZD0iTTAtLjA0aDQwdjYwSDB6Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTUgOS45NmgxNHYxNmgxNnYyNEg1di03aDV2N2wxMC0xMi0xMC0xMnY3SDV6Ii8+PHBhdGggZD0iTTIyIDkuOTZsMTMgMTNIMjJ6Ii8+PC9nPjxwYXRoIGQ9Ik01IDMwLjk2SDB2MTRoNXYtMkgydi0xMGgzeiIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PHNjcmlwdCB4bWxucz0iIi8+PC9zdmc+",
"file.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI2MCIgdmlld0JveD0iMCwgMCwgNDAsIDYwIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNNSAxMGgxNHYxNmgxNnYyNEg1eiIvPjxwYXRoIGQ9Ik0yMiAxMGwxMyAxM0gyMnoiLz48L2c+PHNjcmlwdCB4bWxucz0iIi8+PC9zdmc+",
"function.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMzAuOTk5IDMxLjAwNXYtM2gtNi43NjJzLjgxMi0xMi4zOTcgMS4xNjItMTQgLjU5Ny0zLjM1IDIuNjI4LTMuMTAzIDEuOTcxIDMuMTAzIDEuOTcxIDMuMTAzbDQuODYyLS4wMTZzLS43ODMtMy45ODQtMi43ODMtNS45ODQtNy45NDYtMS43LTkuNjMzLjAzYy0xLjY4NyAxLjczLTIuMzAyIDUuMDY1LTIuNTk3IDYuNDIyLS41ODggNC41LS44NTQgOS4wMjctMS4yNDggMTMuNTQ3aC04LjZ2M0gxOC4xcy0uODEyIDEyLjM5OC0xLjE2MiAxNC0uNTk3IDMuMzUtMi42MjggMy4xMDMtMS45NzItMy4xMDItMS45NzItMy4xMDJsLTQuODYyLjAxNXMuNzgzIDMuOTg1IDIuNzgzIDUuOTg1YzIgMiA3Ljk0NiAxLjY5OSA5LjYzNC0uMDMxIDEuNjg3LTEuNzMgMi4zMDItNS4wNjUgMi41OTctNi40MjIuNTg3LTQuNS44NTQtOS4wMjcgMS4yNDgtMTMuNTQ3eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPgo=",
"hash.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii44NTciPjxwYXRoIGQ9Ik0xNy45OTcgOC45OThsLTUuOTcyLjA3Mi00LjAyOCA0My45MjggNS45MTQuMDcyeiIvPjxwYXRoIGQ9Ik02IDE2Ljk5OWwtMSA2IDMxIDEgMS02eiIvPjxwYXRoIGQ9Ik0zMS45OTYgOC45OThsLTUuOTcxLjA3Mi00LjAyOSA0My45MjggNS45MTQuMDcyeiIvPjxwYXRoIGQ9Ik0zLjk5OCAzNy4wMDRsLTEgNiAzMSAxIDEtNnoiLz48L2c+PC9zdmc+Cg==",
"image.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAACQ0lEQVR4AeyWyys9YRjHz5zfxSXksrKR3JYkKZGF2ChKysIfIEsLLFwWNqws7FiwoZTCRlZSyjVlZ0GKlGxdshKOz8OcSe953zNzZGbOgr4f7zzPe3m+533nzJxoJI3+0s9MLBZbg7A1EsXBH06qG0Qt/AuaeO1xOSYLAx+yLGsnaCi8AaJsMSMXvsHO50MJ/HUr4qsZDExj4A6u4YG4ltYo38xQuJOqgxBXNhfH5LNotfLNDNX6QZUcVbWajMd+mrmNF1HaRyV2wpTNsM2TIJ/QWcRwMaHJn5A7A61SMoOJSlYZhUVIKh4RsjNlDNqDJ5CbuZF8jGutPJvBiMUKqyDqJdbdE9LnQOEraIZcGIZnp1Nz4dkMc9vh6803h6Eacj8mT2Yo+o+KK6DqgL48NekWM8eCUnWcJzNMGoIcUCXPjl0Wlveb2qeN7bHywdrUAa5mmFzIpCkwSY5u1tT5Nc9amcSH0AMJcjXDjAVwUx+FepMNor+I/kuoB62SmmEB+dRd2pmJyWXGy1c/oYd8FckbKAajjGZYQL7K68aZ+g5598h95PSyjtwb5yTkiGjMMpphipxrOW0qymfwNgYqbAaIt8CTtGZYKIPZS/AdNTDpwmaG1rO0Zpg9Bv8hUJnMtAbqwi5mMmN3B9v8mjHtt3ZneNU3gd+aV01pzaiDgorFzGsk8lmO58t+0FD5CEQXUc5CfgZ2SASNIVBHzTfolp2JYGiTQJ66BbRhkIGH0w8zGBBDzyTuQ+JFPDhmJAibtDLzDgAA///iRoiIAAAABklEQVQDAPQ90lai088BAAAAAElFTkSuQmCC",
"inject.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTggNXYxMkg3djloMTV2LTdsNiAxMS02IDEydi04SDd2OWgxMXYxMmwxNC0yNXoiIGZpbGw9IiNmZmYiLz48L3N2Zz4K",
"join.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNDAuMDAxIDM5Ljk5bC0uMDMyLTE5Ljk1NS0xMS45NjcuMDE3djE5Ljk4M2wxMi0uMDQ2TTguMDAxIDI4LjAyN2wtNCAuMDA0djMuOTk3bDQtLjAxTTE0LjAwMSAyOC4wMjdsLTQgLjAwNHYzLjk5N2w0LS4wMU0yNS4wMDEgMzAuMDI3bC03LTcuOTg2djE1Ljk4Nk04LjAwMSAyMC4wMjdsLTQgLjAwNHYzLjk5Nmw0LS4wMU0xNC4wMDEgMjAuMDI3bC00IC4wMDR2My45OTZsNC0uMDFNOC4wMDEgMzYuMDI3bC00IC4wMDR2My45OTdsNC0uMDFNMTQuMDAxIDM2LjAyN2wtNCAuMDA0djMuOTk3bDQtLjAxIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii42MTIiLz48L3N2Zz4K",
"leveldb.png":
"data:image/png;base64,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",
"light.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCguNzg3MzcgMCAwIC43ODc5MyAtMjcxLjI5NCAtNTI5Ljk5KSIgc3Ryb2tlPSIjZmZmIiBmaWxsPSJub25lIj48ZWxsaXBzZSB0cmFuc2Zvcm09Im1hdHJpeCgxLjQ5MjQgMCAwIDEuNDYxNiAtNTkuNDkxIC0zNDMuNDYpIiBjeD0iMjg3Ljc1IiBjeT0iNzE1Ljg2IiByeD0iMTAuNzUiIHJ5PSIxMiIgY29sb3I9IiMwMDAiIHN0cm9rZS13aWR0aD0iNC4wNzEiLz48cGF0aCBkPSJNMzYyLjUgNzE3Ljg2djE1LjVjNi4zNzEgMi4xMjggOC43MTIgMi4wMDMgMTUgMHYtMTUuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1LjAxIi8+PHBhdGggZD0iTTM2Ni41IDcxNy44NmwxLTEyaDVsMSAxMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMuMDA2Ii8+PC9nPjwvc3ZnPgo=",
"link-call.svg":
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+Cjxzdmcgd2lkdGg9IjEwLjU4M21tIiBoZWlnaHQ9IjE1Ljg3NW1tIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxMC41ODMgMTUuODc1IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPHBhdGggZD0ibTguMjAyMSAyLjM4MTItNC44OTIyIDAuNTM2MTIgMS42MDQgMC45MjYwNC0xLjAzOTUgMS44MDA0YzAuNzM3MTktMC4zNzQwMiAxLjY0MzctMC4zODIyNyAyLjQwOTUgMC4wNTk4OTIgMC43NjUxMSAwLjQ0MTc0IDEuMjExOCAxLjIzMDEgMS4yNTc3IDIuMDU1bDEuMDM4NC0xLjc5ODYgMS42MDQgMC45MjYwNHptLTIuMzgxMyA0LjEyNDRjLTAuNzcwMTYtMC40NDQ2NS0xLjc0MDItMC4xODQ3NC0yLjE4NDggMC41ODU0Mi0wLjQ0NDY1IDAuNzcwMTYtMC4xODUgMS43NDA2IDAuNTg1MTYgMi4xODUzIDAuNzcwMTYgMC40NDQ2NSAxLjc0MjIgMC4xODUzMyAyLjE4NjktMC41ODQ4MyAwLjQ0NDY1LTAuNzcwMTYgMC4xODI5NS0xLjc0MTItMC41ODcyMS0yLjE4NTh6bS0zLjMxOTMgMS41MTU5LTEuODIxMSAzLjE1NDIgMy42NjYyIDIuMTE2NyAxLjgyLTMuMTUyNGMtMC43MzczMSAwLjM3MjY2LTEuNjQzMSAwLjM3OTYxLTIuNDA4Mi0wLjA2MjEyOS0wLjc2NTg1LTAuNDQyMTYtMS4yMTIyLTEuMjMwOS0xLjI1NjktMi4wNTYzeiIgZmlsbD0iI2ZmZiIvPgo8L3N2Zz4K",
"link-out.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNyAzOC45OHYzLjk4M2gxMXYxMmwxMy0yM0gxOWwtLjQ2My4wMTdjLTEuMjggNC4wNDgtNS4wNjYgNi45ODMtOS41MzcgNi45ODN6bTEyLTExLjAxN2gxMmwtMTMtMjN2MTJIN1YyMC45bDIgLjA2NGM0LjQ2NyAwIDguMjUgMi45MyA5LjUzNCA2Ljk3MnpNNi45NSAyNC4yMmE2IDYgMCAxIDEtLjA4MyAxMS40NTYiIGZpbGw9IiNmZmYiIHN0eWxlPSJpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWwiLz48L3N2Zz4K",
"link-return.svg":
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+Cjxzdmcgd2lkdGg9IjEwLjU4M21tIiBoZWlnaHQ9IjE1Ljg3NW1tIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxMC41ODMgMTUuODc1IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPHBhdGggZD0ibTIuNjYyMyAxMy4yOTIgNC44OTIyLTAuNTM2MTItMS42MDQtMC45MjYwNCAxLjAzOTUtMS44MDA0Yy0wLjczNzE5IDAuMzc0MDItMS42NDM3IDAuMzgyMjctMi40MDk1LTAuMDU5ODkyLTAuNzY1MTEtMC40NDE3NC0xLjIxMTgtMS4yMzAxLTEuMjU3Ny0yLjA1NWwtMS4wMzg0IDEuNzk4Ni0xLjYwNC0wLjkyNjA0em0yLjM4MTMtNC4xMjQ0YzAuNzcwMTYgMC40NDQ2NSAxLjc0MDIgMC4xODQ3NCAyLjE4NDgtMC41ODU0MiAwLjQ0NDY1LTAuNzcwMTYgMC4xODUtMS43NDA2LTAuNTg1MTYtMi4xODUzLTAuNzcwMTYtMC40NDQ2NS0xLjc0MjItMC4xODUzMy0yLjE4NjkgMC41ODQ4My0wLjQ0NDY1IDAuNzcwMTYtMC4xODI5NSAxLjc0MTIgMC41ODcyMSAyLjE4NTh6bTMuMzE5My0xLjUxNTkgMS44MjExLTMuMTU0Mi0zLjY2NjItMi4xMTY3LTEuODIgMy4xNTI0YzAuNzM3MzEtMC4zNzI2NiAxLjY0MzEtMC4zNzk2MSAyLjQwODIgMC4wNjIxMjkgMC43NjU4NSAwLjQ0MjE2IDEuMjEyMiAxLjIzMDkgMS4yNTY5IDIuMDU2M3oiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==",
"mongodb.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEbSURBVEiJ7davSwRBGMbx76rJ4Gky62EThNOmWfwL7mlm0WAw2U2mK3aDwj5gMBgEi8FmEbGIWYMGwR8gJssGhb2dmdsNIr5t5n3nMy8TZibL85wmY6hR7e+AkmYlTTUCSpoAjoEjSa1aoKRhIAfaQAc4kTRap8NtYPnbeAnYHQiUNAZslaTWJS0O0uEGMF4ynwG9JFBSBmxWbLYgqZPSYRuYrAABVlPA+QAGMJcCTkeAMyngcwT4mQI+RYCPKeAZ8BYAL6JB2y/AQQB0NFjEXkXu0PZlEmj7BjgtSd0Ca/3WhS6HLj/P6gPo2u57vpWg7VdgBbgrpnZsX1etCV6wtt+Bh2J4H6r//Y/USGTdPnAOXIUKs/+fQ+34AkBdPov8hXWQAAAAAElFTkSuQmCC",
"mouse.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98CBBcXKYRGaWIAAAIfSURBVEjHrVY9a1RBFD33bjAhNqYTBW0kpBErawPpjIq4RWyEYG2hiIWdnY3+Aiut/GhiYyeIhb/AJGgQFAtTpFlWCYjnHIvMw3XzXvI2m1vNx50zc7/OHaClSLLtB2WMsUXSkiSRfHgYYAAA29clmeSZJt0cBdh2pwz7h/HKm9qRJ2OD2Z4vpi7vF5SJOn9lZgV0SdKk7bsAEBEXbSeALdtvIuLPoP4uIVmBzktyMdG2RdJlooH1hcFzTaDvCtgLSfNl7bgkD1gxK+lWccPzRjeQXC5gdwaVSJ4eBKxeZPt20e8OO726+ZOkrzUX/Qc4tLci6WN1SRZnV/uzth+3jT5JZOYqgJkskdkVnsxcbwvY6XRgmxExASCaKiVGzNG9S8/2WFQyUbN2VdIvAOuZ2Ss+/l1z8REAc7bnALiR86qELolsSZ9tr5REfkTytaSfA4lu2z8q4ohhQABd25sRcTIiFm1fADATEZOl7PoANgA8i4g1Sd3MXAJwIiK4y+SI6GfmhzJ91YInFw7MhzUpNh7BHijKto+OAhARYVtVPuYwU0TE5REBp2z3M1N1Tn5q+9uIreELydWmzRsl9061LLtzhRPP79nQSXq4hQ7PSR4juW37ZSNr24akqfLK7ySvNdDWFUnbRW+61U9C0lo5sCnpHslFSfclbXmnsbytY5s9fwqSzkra8L/OZJLvq59DK7A635EM29O9Xm/fc38BtSAs2DgLlw8AAAAASUVORK5CYII=",
"parser-csv.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjYuMDAxIDcuMDM0bC0yMiAuMDQzdjQ1Ljk1OGgzMnYtMzZ6bS0xNC44MzggMTRoMi44Mzh2MTUuMDAxaC0zVjI1LjczOGMtMS4wMjcuOTYtMi42MDYgMS4xMTQtNCAxLjU3NFYyNC43NmMuNzM0LS4yNCAxLjUzLS43MDYgMi4zOS0xLjM3My44NjEtLjY3MyAxLjQ1Mi0xLjQ1NyAxLjc3Mi0yLjM1MXptMTUuOTQ4IDBjMS40NDggMCAyLjgyNC4zOTIgMy42NSAxLjE3My44MjguNzggMS4yNCAxLjc1MSAxLjI0IDIuOTEyIDAgLjY2LS4xMiAxLjI5LS4zNiAxLjg5YTcuMTQzIDcuMTQzIDAgMCAxLTEuMDUgMS44NzJjLS4zNC40MzMtLjk1MiAxLjA1Ny0xLjg0IDEuODctLjg4Ni44MTUtMS42ODcgMS4zNTUtMS45MjcgMS42MjItLjIzMy4yNjctLjQyMy40MDgtLjU3LjY2Mmg1Ljc0OHYzSDIxLjk4Yy4xMDctLjk4Ny40MjctMi4xOTIuOTYtMy4wNzIuNTM0LS44ODcgMS44MjUtMi4wNiAzLjQtMy41MjIgMS4yNjctMS4xOCAxLjk3Mi0xLjk4MiAyLjI1OS0yLjQwMi4zODctLjU4LjQwMi0xLjE1NC40MDItMS43MjEgMC0uNjI3LjAwOC0xLjEwOC0uMzMyLTEuNDQxLS4zMzMtLjM0LTEuMDM1LS41MS0xLjYyOS0uNTEtLjU4NyAwLTEuMDUzLjE3OC0xLjQuNTMxLS4zNDcuMzU0LS41NDYgMS4zMTYtLjYgMi4xMzdoLTMuMDM5Yy4xNjctMS41NDguOTI4LTMuMzE1IDEuODA5LTMuOTg5Ljg4LS42NzMgMS45OC0xLjAxMSAzLjMtMS4wMTF6TTE3LjAwMiAzMy4wMzZoM3YxLjkyOGMwIC44MTQtLjA3MyAxLjQ1NS0uMjEzIDEuOTIyLS4xNC40NzMtLjQwNy44OTgtLjggMS4yNzEtLjM4Ny4zNzQtLjg4LjY2Ni0xLjQ4MS44OGwtLjU0OS0xLjE2MWMuNTY3LS4xODcuOTY5LS40NDMgMS4yMS0uNzcuMjQtLjMyNy4zNjctLjUwMy4zOC0xLjA3aC0xLjU0N3oiIGZpbGw9IiNmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIuNjEyIi8+PC9zdmc+Cg==",
"parser-html.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjYuMDAxIDcuMDM0bC0yMiAuMDQzdjQ1Ljk1OGgzMnYtMzZ6bS0xMyAxM2wzIDItNiA4IDYgOC4wMDEtMyAyLTctMTB6bTEzIDBsNyAxMC03IDEwLjAwMS0zLTIgNi04LTYtOHoiIGZpbGw9IiNmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIuNjEyIi8+PC9zdmc+Cg==",
"parser-json.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjYuMDAxIDcuMDM0bC0yMiAuMDQzdjQ1Ljk1OGgzMnYtMzZ6bS05LjE3IDEwLjAwMmgxLjE5N3YzLjExYy0uOTc0IDAtMi4xLjA1Ny0yLjM4MS4xN2ExLjE0NiAxLjE0NiAwIDAgMC0uNjA2LjQ5M2MtLjEzMS4yMTctLjE5Ny41OTMtLjE5NyAxLjEzMSAwIC41NDYtLjA0IDEuNTgzLS4xMTkgMy4xMS0uMDQ0Ljg1OC0uMTU4IDEuNTU2LS4zNDIgMi4wOTMtLjE4NC41My0uNDIxLjk2OC0uNzEgMS4zMTUtLjI4MS4zNDctLjcxNi43MDUtMS4zMDMgMS4wNzguNTE3LjI5NS45MzkuNjQyIDEuMjYzIDEuMDQuMzM0LjM5MS41ODguODY5Ljc2NCAxLjQzMy4xNzUuNTYzLjI5IDEuMzE4LjM0MiAyLjI2M2E4Ni45IDg2LjkgMCAwIDEgLjA5MiAyLjc1NmMwIC41NzMuMDcuOTcyLjIxIDEuMTk4LjE0LjIyNS4zNS4zOTUuNjMxLjUwNy4yOS4xMjIgMS40MDguMTgyIDIuMzU2LjE4MnYzLjEyMUgxNi44M2MtMS4xODUgMC0yLjA5My0uMDk1LTIuNzI1LS4yODVhMy42OSAzLjY5IDAgMCAxLTEuNjA0LS45MjQgMy4zIDMuMyAwIDAgMS0uODY5LTEuNjEzYy0uMTQ5LS42MzMtLjIyNC0xLjYzNC0uMjI0LTMuMDA0IDAtMS41OTYtLjA3LTIuNjMzLS4yMS0zLjExLS4xOTItLjY5My0uNDg3LTEuMTg3LS44ODItMS40ODItLjM4Ni0uMzAzLTIuNTA5LS41MzktMy4zMTYtLjU4MnYtM2MuNjQtLjAzNSAyLjY0OS0uMTkgMi45NzQtLjM0Ni4zMjQtLjE1Ni42MDUtLjQxNy44NDItLjc4MS4yMzctLjM3My4zOTgtLjgzNi40ODYtMS4zOS4wNy0uNDE3LjEwNi0xLjE0My4xMDYtMi4xNzUgMC0xLjY4Mi4wOC0yLjg1Mi4yMzgtMy41MTEuMTU4LS42NjguNDQzLTEuMjAxLjg1NS0xLjYuNDEzLS40MDggMS4wMTItLjcyOSAxLjgwMS0uOTYzLjUzNS0uMTU2IDMuNjc3LS4yMzQgMi41MjctLjIzNHptNS4xNTcgMGgxLjE5N2MxLjE1IDAgMS45OTMuMDc4IDIuNTI4LjIzNC43OS4yMzQgMS4zODguNTU1IDEuOC45NjMuNDEzLjM5OS42OTguOTMyLjg1NiAxLjYuMTU4LjY1OS4yMzggMS44My4yMzggMy41MTEgMCAxLjAzMi4wMzYgMS43NTguMTA2IDIuMTc0LjA4Ny41NTUuMjUgMS4wMTguNDg2IDEuMzkuMjM3LjM2NS41MTcuNjI2Ljg0Mi43ODIuMzI0LjE1NiAyLjMzMy4zMTEgMi45NzMuMzQ2djNjLS44MDcuMDQzLTIuOTMuMjc4LTMuMzE1LjU4Mi0uMzk1LjI5NS0uNjkuNzg5LS44ODMgMS40ODItLjE0LjQ3Ny0uMjA5IDEuNTE0LS4yMDkgMy4xMSAwIDEuMzctLjA3NSAyLjM3LS4yMjQgMy4wMDQtLjE1LjY0MS0uNDQgMS4xOC0uODcgMS42MTNhMy42OSAzLjY5IDAgMCAxLTEuNjAzLjkyNGMtLjYzMi4xOS0zLjkwOS4yODUtMi43MjUuMjg1aC0xLjE5N3YtMy4xMjFjLjk0NyAwIDIuMDY2LS4wNiAyLjM1Ni0uMTgyLjI4LS4xMTIuNDktLjI4Mi42My0uNTA4LjE0LS4yMjUuMjExLS42MjUuMjExLTEuMTk3IDAtLjM5OS4wMy0xLjMxNi4wOTItMi43NTYuMDUzLS45NDUuMTY2LTEuNy4zNDItMi4yNjQuMTc1LS41NjMuNDMtMS4wNDEuNzY0LTEuNDMxYTQuNDM0IDQuNDM0IDAgMCAxIDEuMjYzLTEuMDQxYy0uNTg3LS4zNzMtMS4wMjItLjczMS0xLjMwMi0xLjA3OC0uMjktLjM0Ny0uNTI3LS43ODYtLjcxMS0xLjMxNS0uMTg1LS41MzctLjI5OC0xLjIzNS0uMzQyLTIuMDk0LS4wOC0xLjUyNi0uMTItMi41NjMtLjEyLTMuMTA5IDAtLjUzOC0uMDY1LS45MTQtLjE5Ny0xLjEzYTEuMTQ2IDEuMTQ2IDAgMCAwLS42MDUtLjQ5NWMtLjI4LS4xMTMtMS40MDctLjE3LTIuMzgtLjE3eiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9Ii42MTIiLz48L3N2Zz4K",
"parser-xml.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjYuMDAxIDcuMDM0bC0yMiAuMDQzdjQ1Ljk1OGgzMnYtMzZ6bS0xMyAxM2wzIDItNiA4IDYgOC4wMDEtMyAyLTctMTB6bTEzIDBsNyAxMC03IDEwLjAwMS0zLTIgNi04LTYtOHoiIGZpbGw9IiNmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIuNjEyIi8+PC9zdmc+Cg==",
"parser-yaml.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjYuMDAxIDYuOTg3bC0yMiAuMDQzdjQ1Ljk1OGgzMlYxNi45ODd6TTEwLjU2NyAxOS4zNjJoNS4zNTJjLjc2OCAwIDEuMjgyLjEwNCAxLjU0My4zMTMuMjczLjIwOC40MS41NzMuNDEgMS4wOTMgMCAuNTIxLS4xNjMuODg2LS40ODggMS4wOTQtLjMxMy4yMDktLjg5Mi4zMTMtMS43MzkuMzEzaC0uNjQ0bDQuNzI2IDguNDc3IDQuOTAzLTguNDc3aC0uODAxYy0uNzAzIDAtMS4xOTEtLjEwNC0xLjQ2NS0uMzEzLS4yNzMtLjIwOC0uNDEtLjU3My0uNDEtMS4wOTQgMC0uNTQ2LjExNy0uOTE4LjM1Mi0xLjExMy4yMzQtLjE5NS44MjYtLjI5MyAxLjc3Ny0uMjkzaDMuNTk0Yy45OSAwIDEuNjIuMTA0IDEuODk0LjMxMy4yODcuMTk1LjQzLjU2LjQzIDEuMDkzIDAgLjUyMS0uMTQzLjg4Ni0uNDMgMS4wOTQtLjI3My4yMDktLjguMzEzLTEuNTgyLjMxM2gtLjMxMmwtNi42NCAxMS4zODd2Ni4yMTFoMi44NWMxLjAwMyAwIDEuNjQxLjA5OCAxLjkxNS4yOTMuMjg2LjE4Mi40My41MzQuNDMgMS4wNTUgMCAuNTM0LS4xNDQuOTA1LS40MyAxLjExMy0uMjc0LjE5NS0uODM0LjI5My0xLjY4LjI5M2gtOS4yNzdjLS44NDcgMC0xLjQwNi0uMDk4LTEuNjgtLjI5My0uMjczLS4yMDgtLjQxLS41OC0uNDEtMS4xMTMgMC0uNTIxLjE1LS44NzMuNDUtMS4wNTUuMzEyLS4xOTUuOTUtLjI5MyAxLjkxMy0uMjkzaDIuODMyVjMzLjI5bC02LjUwNC0xMS4xMTRoLS4zMzJjLS43ODEgMC0xLjMxNS0uMTA0LTEuNjAxLS4zMTItLjI4Ny0uMjA5LS40My0uNTczLS40My0xLjA5NCAwLS40ODIuMTE3LS44MzMuMzUxLTEuMDU1LjI0OC0uMjM0LjYyNi0uMzUxIDEuMTMzLS4zNTF6IiBmaWxsPSIjZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iLjYxMiIvPjwvc3ZnPgo=",
"range.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOC4wMDMgNDIuMDA3aDV2LTE4aC01ek04LjAwMyAyMC4wMDZoNXYtNWgtNXpNMjUgNTIuMDA3aDh2LTI5aC04ek0yNSAxNS4wMWg4di04aC04eiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSJub25lIi8+PHBhdGggZD0iTTE1LjgxOSAxNS42MzlsNi4yOTMtMi41MTdNMTUuMTkgNDIuMzg1bDcuMjM2IDMuNzc1IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMS4yNTg2MiIvPjwvc3ZnPgo=",
"rbe.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wcPFiwJnbnE1AAAAIlJREFUWMPtl7sJgEAQRGcPYwMbELQni7AJW7QYEzEYYwX1vog4L13YeWw0CwjxR0hOjKCEiC8LyZXkTLIvIWIBMiPJ1ne3xVzlsMDMrubn2RMu5UqhYUVlciMZyUhGMpKRjGQk87ZMauGuPAIaABuADsCQMzyoA6eExVRSd/eKRHrUubuxEJ9gB2tHwAJpckKMAAAAAElFTkSuQmCC",
"redis.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJdSURBVEiJ7ZVNSFVREMd/zxQL2kSBQl+4qSgoKVxKrSoo+lgNLdUylSzaJLWpNhG0SPuwoIW0sTvRIhShTSRRELTQQEOjoiCoJLEPi1Ly3+KdZ+c9nwbiIqiBw+XMnf/vMnPmzE0lScJcWsGc0v4D58QK/xRgZkXA0rD94u7DswKa2QrgIFADlAT3TzPrAJrd/X4+XSruQzNLAduBemAH6ZK8B7qAcWA1sCWE9wAtwA13H5uEJEmCpCWSjkl6od/WLckkFSVJQmZJ2iCpTdL3EPdO0klJJUmSTKb8BigGPgOXgCvu/jRfSu7+BKgys6aQST1wCjgOzM8Ai4FeoNLdR6eraw54CDhtZmeBh8AmyD6UcuCRmTUD7e7+bSagmRUCVUAdsDHjzwAvA/uAdcA14JyZXQeuuvtADmgRcAA4BCwP7g/ATWDyUBSK3CHpoqRX0eHcldQoqU5Sq6TR4B+WdEvSPUljkpQkSRbwmaSKsC+QtFNSl6SfyrZ+SbWSFoTYckmDucC+SNAjqToSlEnaE1Zl9MHdkh5Eur4YOBi9GA/PEUnnJa2KenChpMOSnoeYiUg3mJvygKQKSSWSTkh6HYn6JfVK+hR8X0M91wTNQCbleNqsDC2wzN3PAGXALuAOsBgoBd4CTSGmIehqgjarbRpJd3w1UG1mj4HWdP96Z54e3GpmR4FtQAp4CVyAqcNhM9AA7AWKgBGgDbhNejisB44Aa4OkG2gGOt19YgowApcC+4HaqHkz9gNoB1rCvc6yvMAIPI/0GMtcrY+kr+XQdJoZgbOxv/8n9Q8CfwE7dg5XDmjPIwAAAABJRU5ErkJggg==",
"rpi.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii4xMzgiPjxwYXRoIGQ9Ik0yMC4yMSAyMC45OGMyLjA5Ni0uMDIzIDQuNjk0IDEuNTYyIDQuNjgzIDMuMDU4LS4wMSAxLjMyLTEuODI0IDIuMzktNC42NjcgMi4zNy0yLjc4NC0uMDM0LTQuNjU2LTEuMzQ0LTQuNjUtMi42MjMuMDA1LTEuMDUzIDIuMjcxLTIuODY2IDQuNjM0LTIuODA1ek0xMy4wNyAyMS44N2MuNDY5LS4wMDkuOTU0LjAyOCAxLjQ0OS4xMTEgMS40NTguMjQ1LTYuOTkgNy42MjMtNy4xMiA1Ljk3Ny0uMTE2LTMuNzU2IDIuMzktNi4wMjcgNS42NzEtNi4wODh6TTI2LjkxIDIxLjk5YzMuMjguMDYxIDUuNzg3IDIuMzMgNS42NyA2LjA4Ni0uMTMgMS42NDUtOC41NzctNS43My03LjExOS01Ljk3NWE3LjgzIDcuODMgMCAwIDEgMS40NDktLjExMXpNMjUuNzYgMjYuNTljMS41Ni4xNDMgMy4xNDMgMS4wOCA0LjE3NSAyLjY0MyAxLjY1MiAyLjUgMS4yNyA1LjY1Ni0uODU1IDcuMDQ4LTIuMTI1IDEuMzkyLTUuMTg1LjQ5Mi02LjgzNy0yLjAwOC0xLjY1Mi0yLjUtMS4yNjktNS42NTYuODU1LTcuMDQ4Ljc5Ny0uNTIyIDEuNzI1LS43MiAyLjY2Mi0uNjM1ek0xNC43IDI2Ljg0Yy45MzctLjA4NiAxLjg2NS4xMTMgMi42NjEuNjM1IDIuMTI1IDEuMzkyIDIuNTA4IDQuNTQ4Ljg1NiA3LjA0OC0xLjY1MiAyLjUtNC43MTIgMy4zOTctNi44MzcgMi4wMDUtMi4xMjQtMS4zOTItMi41MDctNC41NDUtLjg1NS03LjA0NSAxLjAzMi0xLjU2MyAyLjYxNC0yLjUgNC4xNzUtMi42NDN6TTMzLjA1IDI5LjZhLjcyOC43MjggMCAwIDEgLjIwNC4wMjZjMy44MDYgMi4xNzMgMy4xNDUgNy4wMSAxLjA5MiA4LjY2LTEuODA4LjgwNC0zLjI5LTguNjUzLTEuMjk2LTguNjg2ek02Ljk1IDI5LjczYzEuOTk0LjAzMy41MTIgOS40OS0xLjI5NiA4LjY4Ny0yLjA1My0xLjY1MS0yLjcxNC02LjQ4NiAxLjA5Mi04LjY2YS43MzguNzM4IDAgMCAxIC4yMDQtLjAyN3pNMjAuMyAzNi4yM2MyLjgzMi0uMDE0IDUuMTQxIDIuMDkzIDUuMTU2IDQuNzA0di4wNDljLjAxNSAyLjYxLTIuMjY5IDQuNzM4LTUuMSA0Ljc1Mi0yLjgzMi4wMTQtNS4xNDEtMi4wOS01LjE1Ni00LjcwMWEyLjk5NiAyLjk5NiAwIDAgMSAwLS4wNTFjLS4wMTUtMi42MTEgMi4yNjgtNC43NCA1LjEtNC43NTN6TTMxLjY2IDM4LjAyYy40LS4wMTEuNzc3LjEwMiAxLjExNS4zNjQuOTEuOTA3IDEuNDQzIDQuMzItLjE1IDYuMzY2LTIuMTk1IDMuMDQ1LTUuMTY1IDMuMTY0LTYuMjcyIDIuMzE2LTEuMTU3LTEuMDkyLS4yNzQtNC40ODIgMS4zMTMtNi4zNCAxLjM2MS0xLjUzOCAyLjc5My0yLjY3NSAzLjk5NC0yLjcwNnpNOC42NSAzOC43NGMxLjI5LjA1NSAyLjgzNiAxLjA3NiA0LjA5OSAyLjU0IDEuNDY2IDEuNzY4IDIuMTM1IDQuODcyLjkxIDUuNzg4LTEuMTU3LjY5OC0zLjk2OC40MDktNS45NjctMi40NjMtMS4zNDctMi40MDktMS4xNzUtNC44Ni0uMjI5LTUuNThhMi4wNyAyLjA3IDAgMCAxIDEuMTg3LS4yODV6TTIwLjM1IDQ3LjIxYzIuMDYtLjA5IDQuODI0LjY2MyA0LjgzIDEuNjYyLjAzMy45Ny0yLjUwOCAzLjE2My00Ljk2NyAzLjEyLTIuNTQ3LjExLTUuMDQ1LTIuMDg1LTUuMDEyLTIuODQ2LS4wMzgtMS4xMTYgMy4xMDItMS45ODcgNS4xNDktMS45MzZ6TTM1LjEzIDExLjAzYy0uNTY5IDcuMzU2LTcuNDA5IDE0LjEyOC0xMS42MjkgNi45NzEgMS4zNjMtMS41MiAzLjg1My0zLjMwNiA4LjEzMy01LjUxMy0zLjMzIDEuMTMyLTYuMzM1IDIuNjQtOC44NSA0LjcxNi01LjgzOC00LjI5NiA0LjczNC05LjY3NSAxMi4zNDYtNi4xNzR6Ii8+PHBhdGggZD0iTTUuNDIgMTEuMDNjLjU2OSA3LjM1NiA3LjQwOSAxNC4xMjggMTEuNjI5IDYuOTcxLTEuMzYzLTEuNTItMy44NTMtMy4zMDYtOC4xMzMtNS41MTMgMy4zMyAxLjEzMiA2LjMzNSAyLjY0IDguODUgNC43MTYgNS44MzgtNC4yOTYtNC43MzQtOS42NzUtMTIuMzQ2LTYuMTc0eiIvPjwvZz48L3N2Zz4=",
"serial.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC41IDQ3LjVoNGwuMDQtMzQuOTk1TDE5LjUgMTIuNXYzNWgxMXYtMzVoNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2Utd2lkdGg9IjUiLz48L3N2Zz4K",
"sort.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAuMDAxIDE5Ljk1NWwtNy41LTguMTc4LTcuNSA4LjE3OGg1djI4aDV2LTI4ek0zNS4wMDEgMzkuOTU1bC03LjUgOC4xNzctNy41LTguMTc3aDV2LTI4aDV2Mjh6IiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii41MzEiLz48L3N2Zz4K",
"split.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTYuMDAxIDM5Ljk5bC0uMDMyLTE5Ljk1Ny0xMS45NjguMDE3djE5Ljk4M2wxMi0uMDQ1TTM0LjAwMSAyOC4wMjdsLTQgLjAwNHYzLjk5N2w0LS4wMU00MC4wMDEgMjguMDI3bC00IC4wMDR2My45OTdsNC0uMDFNMjcuMDAxIDMwLjAyN2wtNy03Ljk4NnYxNS45ODZNMzQuMDAxIDIwLjAyN2wtNCAuMDA0djMuOTk3bDQtLjAxTTQwLjAwMSAyMC4wMjdsLTQgLjAwNHYzLjk5N2w0LS4wMU0zNC4wMDEgMzYuMDI3bC00IC4wMDR2My45OTdsNC0uMDFNNDAuMDAxIDM2LjAyN2wtNCAuMDA0djMuOTk3bDQtLjAxIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9Ii42MTIiLz48L3N2Zz4K",
"status.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCAzMGg5bDMuNS0xMCA1IDI1IDUuMTI1LTMwTDI3LjUgNDAgMzEgMzBoOSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2UtbWl0ZXJsaW1pdD0iNi41IiBzdHJva2Utd2lkdGg9IjQiLz48L3N2Zz4K",
"subflow.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjUgMjUuOTRoN2MuNTggMCAxLS40MiAxLTF2LTJjMC0uNTgtLjQyLTEtMS0xaC03Yy0uNTggMC0xIC40Mi0xIDF2MmMwIC41OC40MiAxIDEgMXptLTE3IDEyaDdjLjU4IDAgMS0uNDIgMS0xdi0yYzAtLjU4LS40Mi0xLTEtMUg4Yy0uNTggMC0xIC40Mi0xIDF2MmMwIC41OC40MiAxIDEgMXptLS40MTYgMTFDNS42MjQgNDguOTQgNCA0Ny4zMTUgNCA0NS4zNTZWMTQuNTIyYzAtMS45NiAxLjYyNS0zLjU4MiAzLjU4NC0zLjU4MmgyNC44MzJjMS45NiAwIDMuNTg0IDEuNjIzIDMuNTg0IDMuNTgydjMwLjgzNGMwIDEuOTYtMS42MjUgMy41ODQtMy41ODQgMy41ODR6TTMyIDM2Ljk0SDE5YzAgMi4xOS0xLjgxIDQtNCA0SDd2NC40MTZjMCAuMzUuMjM1LjU4NC41ODQuNTg0aDI0LjgzMmMuMzUgMCAuNTg0LS4yMzUuNTg0LS41ODR2LTguNDE3em0xLTJ2LTZoLThjLTIuMTkgMC00LTEuODEtNC00aC0xYy00LjMzMy0uMDAyLTguNjY3LjAwNC0xMyAwdjZoOGMyLjE5IDAgNCAxLjgxIDQgNGgxM3ptMC0xNnYtNC40MThjMC0uMzUtLjIzNS0uNTgyLS41ODQtLjU4Mkg3LjU4NGMtLjM1IDAtLjU4NC4yMzMtLjU4NC41ODJ2OC40MTdjNC4zMzMuMDAyIDguNjY3LjAwMSAxMyAuMDAxaDFjMC0yLjE5IDEuODEtNCA0LTRoOHoiIGNvbG9yPSIjMDAwIiBmaWxsPSIjZmZmIi8+PC9zdmc+Cg==",
"swap.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMTIuNzg3IDI2LjQzMkw5LjUgMTguMDAzaC00LjV2LTVoOGwyLjI4NiA2LjI4Nm01LjM1NyAxNC4yODZsMy4zNTcgOC40MjhoNHYtOGw3IDEwLjUtNyAxMC41di04aC03LjVsLTIuMzU3LTYuMjg2Ii8+PHBhdGggZD0iTTEzLjAwMSA0Ny4wMDNsMTAuODU3LTI5aDQuMTQzdjhsNy0xMC41LTctMTAuNXY4aC03LjVsLTExIDI5aC00LjV2NXoiLz48L2c+PC9zdmc+",
"switch.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4wMDEgMjcuMDA2djZsMTAuMTItLjAxNCAzLjAyMyA3LjcyOCAyLjM1NyA2LjI4Nmg3LjV2OGw3LTEwLjUtNy0xMC41djhoLTRsLTMuMzU3LTguNDI5Yy0uNDc1LTEuMjY3LS45My0yLjQzNS0xLjI5NS0zLjYwMWw0LjUxLTExLjk3SDI4djhsNy0xMC41LTctMTAuNXY4aC03LjVMMTUuMDk4IDI3eiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSJub25lIi8+PC9zdmc+Cg==",
"template.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMzAuMDQxIDQ3LjkxdjMuNDg1aC0xLjVxLTYuMDI3IDAtOC4wODQtMS43OS0yLjAzMy0xLjc5Mi0yLjAzMy03LjE0VjM2LjY4cTAtMy42NTUtMS4zMDctNS4wNTgtMS4zMDYtMS40MDQtNC43NDMtMS40MDRoLTEuNDc2di0zLjQ2aDEuNDc2cTMuNDYgMCA0Ljc0My0xLjM4IDEuMzA3LTEuNDA0IDEuMzA3LTUuMDF2LTUuODA4cTAtNS4zNDkgMi4wMzMtNy4xMTYgMi4wNTctMS43OSA4LjA4My0xLjc5aDEuNTAxdjMuNDZoLTEuNjQ2cS0zLjQxMiAwLTQuNDUzIDEuMDY1LTEuMDQgMS4wNjUtMS4wNCA0LjQ3N3Y2LjAwMnEwIDMuOC0xLjExNCA1LjUxOC0xLjA4OSAxLjcxOS0zLjc1IDIuMzI0IDIuNjg1LjY1MyAzLjc3NSAyLjM3MSAxLjA4OSAxLjcxOSAxLjA4OSA1LjQ5NHY2LjAwMnEwIDMuNDEyIDEuMDQgNC40Nzd0NC40NTMgMS4wNjV6IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iLjcxOSIvPjwvc3ZnPgo=",
"timer.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjb2xvcj0iIzAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTU0MCAtOTg3LjM2KSI+PHBhdGggZD0iTTU2NS40MyAxMDAxLjljNi41NjIgMi4wODkgMTEuMzE2IDguMjMzIDExLjMxNiAxNS40ODggMCA4Ljk3NS03LjI3NSAxNi4yNS0xNi4yNSAxNi4yNXMtMTYuMjUtNy4yNzUtMTYuMjUtMTYuMjVjMC0yLjgwMi43MS01LjQzOCAxLjk1OC03Ljc0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIiBzdHlsZT0iaXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsIi8+PGNpcmNsZSBjeD0iNTYwIiBjeT0iMTAwMS40IiByPSIxLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjMiIHN0eWxlPSJpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWwiLz48cGF0aCBkPSJNNTYwIDEwMTQuNGMtMS4yMDYgMC0xMS0xMC45OTktMTIuMzU0LTkuOTc1UzU1NyAxMDE2LjE0OCA1NTcgMTAxNy40czEuMzYgMyAzIDMgMy0xLjM2MSAzLTMtMS43OTQtMy0zLTN6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPgo=",
"trigger.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC41IDQ3LjQ2aDRsLjA0LTM0Ljk5NSAxMC45Ni0uMDA1djM1aDE2IiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIHN0cm9rZS13aWR0aD0iNSIgZmlsbD0ibm9uZSIvPjwvc3ZnPgo=",
"watch.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzU1IC03MDQuMzYpIj48Y2lyY2xlIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00My4wOTEgLTQ0Ljc1Mikgc2NhbGUoLjgxODE4KSIgY3g9IjUwNS41IiBjeT0iOTQxLjg2IiByPSIxNC41IiBjb2xvcj0iIzAwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjQiLz48cGF0aCBkPSJNMzc3LjYyIDczNy44Nmw4Ljg3NyAxNS41IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI2Ii8+PC9nPjwvc3ZnPgo=",
"white-globe.svg":
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjAgMTJhMTggMTggMCAwIDAtMTQuMjQ2IDcuMDMzbDIuNTI3Ljg0NCAxLjk4My0xLjc5NyA0Ljg5LTMuNzE1Ljk5LjkzLTQuMDg1IDEuOTE4LS4wNjMgMi40MTYgMy4yMi0uODA1Yy45NS0uNjggMS44OTktMS4zNjQgMi44NDktMi4wNDVsLS4yNDktMi4yOWgxLjM2NGMxLjUwNi0uNTE3IDMuMDEzLTEuMDMyIDQuNTItMS41NDhsMS4zNDEgMS4zMjUtLjM1MSAxLjk1Ny0yLjA0My0uMTg2IDEuOTgyIDIuNjYyLTIuNDc3IDEuODU4di0xLjYxbC0yLjI5LjEyM2MtLjg2OC42Ni0xLjczNSAxLjMyMi0yLjYwMiAxLjk4M2wtLjM3MSAzLjM0My0zLjA5Ni40OTctMS4wNTMgMi40MTQuNDk0LjQ5NiAxLjE3OC0uMzEgMS4yMzgtMS40MjUgMi4xMDYuMzcxIDEuMTEzIDEuMjM5YzEuNTY5LjY5MSAzLjEzOSAxLjM4MiA0LjcwNyAyLjA3NEgxMS4wNjhsLTEuNjcyIDEuNDU1LS4zMSAyLjY2MiAxLjc5NyAyLjg1IDQuNTgyLjg2Ny45OSAyLjY2Mi0uMzcxIDMuMDk2IDIuMTA1IDEuNjEgMy4yODEuMzFMMjUgNDMuMTU4bC4zNy0xLjYxLjU2LTIuMDQ0Yy40OTUtLjQ5NS45ODgtLjk5MSAxLjQ4NC0xLjQ4NmwuMTI1LTEuNjctMi44NS0xLjY3Mi0xLjQ4NC0yLjE2OCAxLjU0Ny40OTYgMi40MTYgMi40MTQgMi4zNTEtMS4zLjE4Ni0yLjY2My0yLjQxNC0uMzcxLjEyMy0xLjMzMmg0LjY0NGwxLjQyNCAyLjJjLjU3OC4zMDkgMS4xNTcuNjE3IDEuNzM1LjkyN2wtLjI0OS0zLjEyN2gxLjIzOWwxLjMgMy40MzcuNDA1LTEuNDJBMTggMTggMCAwIDAgMzggMzBhMTggMTggMCAwIDAtMTgtMTh6TTIuOTU3IDMzLjgwOWwtLjUxOC4wNDNhMTggMTggMCAwIDAgMi42NzYgNi4yMzhjLjIxLS42MjguNDE4LTEuMjU2LjYyNy0xLjg4NXYtMi4yOUw1IDM0LjI0MmwtMi4wNDMtLjQzNHptMjUuNTI3IDEyLjA0OWwtNS40OTYgMS44ODlhMTggMTggMCAwIDAgNS40OTYtMS44ODl6IiBjb2xvcj0iIzAwMCIgZmlsbD0iI2ZmZiIgc3R5bGU9Imlzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbCIvPjwvc3ZnPg==",
"parser-markdown.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAoCAYAAADpE0oSAAAABmJLR0QA/wD/AP+gvaeTAAAB7UlEQVRYw+2VPWhUQRSFv/NcloTFxCRCsBItlNiksrQxtUIKC7W2tFOwEIIoapFCtFFsokmRQmzSJ4WxVgsVF1kkEUkwKqgxPyQem1kYhk3eIiEozIHHm3vveffOvDl3BjIyMjIy/nWoObB9EOiJYuuS3qQf2O4CDgEF4OBuSPoe4gKOAh1RjSVJ87RIVtget70QPXXbZxJep+37Ib4Y3nO2z0ecHtuzSa7xtGYlGu8F+iO7H7hi+4Wk92ElF4CzQFfEWwGqkV0AfVEuA7W0cFGyFYPAiO0acAK4mBT9a1RK4nuAYeA1cBI4vFPiqrTBqQGXw0qL3SwM0FtGsN0dFNwZd0tT2bb3Bf+KpNXtCv8Moqkm/i9AdzJpAbeBA8HuS2IDwBjwG5iyPbbdr/sETAdyPJnHwHq6YKAODAGngP1J/EjwDwIfJLkoOVxuAo1gbwBPgtDUgj8BzGwRE7AK3JU0U9pOkp4BN4AFYBa4lfyBmPsZGAHetQhvAk+Bh+32McAk8AC4Kqlewn0J3AO+Jf63wKikX20XlrQGXJf0vA2ugUdhSzaC+ytwTdKrrdrpB7CYqLeZcDO+PIClSO1rsdgkLdu+AxwHjgUxTu3k7aRo/xqSlhPeOeA0cEnSx127b21Xw6GSkZGRkfGf4g8tS8n281i76AAAAABJRU5ErkJggg==",
"ui_button.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADNSURBVEiJ7ZQxCsJAEEX/hhSeQhux9gSSe3gBwcIDeDGx9CYWNvYRi8CzMAlr3M0uWYsI+d3A7Pt/ZmClSf8joABK3iqBIhXYQhp4KpC+2qcsyXV0QL7lPhawtC7aKsLAfSzgAhy6aWJT+0YZtM8usIE8JG2GAH0uRWeH26EJXQ1r4A7MfwKsm47AGTAhWCwwqy+/T05nNa9CH4ILGBwpZGyM+WDkoQeSbpIqqz4ZY3Y+wxhgJWlh1bO+5hhgLulq1U9fOilxh939TRqpXsa932DLVhSzAAAAAElFTkSuQmCC",
"ui_chart.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADVSURBVEiJ7dQva0JhFAdg2bJYZGUywzQNs7DkBxismvwkC8Mug0XrwG6xmtYWjWZZUIMG94ftMWi4iPd6r/c2/cUD5+Ec3sOby51zIkExa1BW1kWKIe5CN0s6IfIY4z0xiKs9tTf84j4RiCI+UQ/UWjZ5ilohDOxsmycoo4IFhrhMBKKEFQaYY4QPTHEdikWAXXzhBg184x+Pkdg+EFX84CVQa+L1IBYC9rDcfWHEu9sgiBr+0I7VHAPsY4ZCVuAtHo7GdsG0OfpzOAhKl+esBzvnpLIGJQw3hKYULUMAAAAASUVORK5CYII=",
"ui_colour_picker.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AwQFgsvH/cw7AAAAhdJREFUSMftlU1LlFEYhq/zopVgMuEipA8IAyGKIpOQIDAiamO0ahFUq/oDBf2Cdi2CCIQg6C9ELVr0SQW5iAxs00bQrEgwGct0Zq42z9jrNOI70Sq6V+frvs9znvN8wH/kobbMSQVEEyBASqk1QZWUEmoHcAIYBHYAs8Bb4BkwllKq1M+u+Tz1gPpUrfo7vqg31Z2FXKIOqJNBrqn31RtquUF4Sj20lliX+ipHeqxuVFGvxQU1dTb2Z9SjjTpZEACGgf7c3hwwH36aDH8/SCmVgJNACbiubmtm3Tr1Sdz8Ta2o8+oF9ZT6Pvauxvn16lysjTQT7Ak/vVOPqGdD8If6PeeGCfWgelFdzD29t1Fwr7qkXqnHnvrS4rgcHLLQ7AIyYEvMS0BHCwkyDLSllGiLhSWgCpxXNwFbgd0tCPaFUTN1Cz8BFaATOANsB8aAWkHBTqBDbcsLfo3xa2AIOAw8LCiYRVgtCy4Ad2M8nlKaSCmVgdHV8gC4DdyLeTleU83/9L5c6PSrfeqLVX51Ud2jHo/5m8i0rDF8RuLAR3U6Uq0ZFtRBtVt9rl6KMrey0tRqtR51vEDcVdWh4Har7XlnLte1LMumgXPAhwIfsSu4MxF2vwRXVNyURoHTwOc1CnM1xylUaHvVW7mczaOsbi7cU3KtoB3YDxwDBoANwBRwB3jUzLJUsPvlXZOllCp/tZX+SXv9h/ET4N13p8IOyEcAAAAASUVORK5CYII=",
"ui_date_picker.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABmJLR0QA/wD/AP+gvaeTAAAATklEQVRIx2NgGAUjFPz///8/uWoYSTEEH2BkZGTEaSOpLsSqnhIXIutloZahNHMhE7VTCBO5gU/QR0PLy8R4cwR6eegmbNrl5VEwCogHAB0Cc6jSgYOVAAAAAElFTkSuQmCC",
"ui_dropdown.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABpSURBVEiJ7ZS7CoAwEARnRfxrK//awrU6CRYhkLNQM9UVy9wjEBh8HwHY3lNk0jJliErShXO2OIQHsHW61qvKeJRwPHbDspMBJCnqGpJUFZaBe7iFsXI/f17Z9loLthIT9n4MWY7BKzgBTP0qup60jeAAAAAASUVORK5CYII=",
"ui_form.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNpiYBgFgw4w/v//vwFI/6KSeWwgA/8DGdVUMrCVAWogVQDILBYoo4FahjJRPVao7WVwpDACAbrXgUINxAYFSC3MQEJerifCvHqivUxMcCCrIcbLcDm84YbQ/5++sTzqZaK8zIIm2YAlsTZQMy83EmFGI03zMqz4qhq0VcBorToIAUCAAQDBm54wNDH87wAAAABJRU5ErkJggg==",
"ui_gauge.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAF4SURBVEiJ7ZTPK0RRHMXPnUSywGgshpXxLxgW2LBTytLKgoUiRcmOLJSyY6dEyX8wmq2FhYU1hfzYSGpmYzTNLHws5jtczzM/rOfU69s953vO/d7Xu09qoIG64SqJQJekIUlxo54lXTjnMnXtAiSBUyAPFANPHkgBA1UnBCKStiStmFaQdC7p3lr6JA1LapGEpB1J6865j78mO7ApcsAG0B7S0wFsAu/Wu/9X2II1ZICRGl7LKJA1z3xQjAKvJk5WC/N8U+Z5ATp9YcmEVK1hnjdt3kVJihg/YfWo3kBJh4EMCXiyXeLhnh8TDQLT3rrHvI9+U87I5hoCr4B+b91i3jfp+8hZq9EqYXOS2pxzdx5d9mT9wFuroV+/hbVKWpZ0FpCSVm/8wLTVmQoDbqt0U44DfNmT/mKAbvtIC8BYyHS9wANwDTR5/Lh3GWJB05qJl0DwjqcoIeVxznqLwOqv8wARYA9IhGgx4ASYDfAJYNd+Kg008F98AoTJY9ZKCu6sAAAAAElFTkSuQmCC",
"ui_numeric.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEUSURBVEiJ7dK9LgRhFIfxsz4SttgaEZ1CJEoNCYVoRUeLRqfYGxCJULoFoZNIFLqtRKFQuQFBrbIivn4K7zKZ3UVCoZinOjln/s97ZuaNKCgoaAa96Go3HMAtNjO9ZVzjAWcYTf0KjvCMe6zlZfO49M5m6g2mwC5mcYVamlXxiDns4QVDWeELdnLCPqw0HkQNF6nuwXCq1/GE/qxwGJ1ZYe4NZlJoI9ffTZlqq2/YUogp1HGKcm42ntlw+lshJnCHE1Qy/RFMprqcclutf/dnqBIRBxHRHRGHEbGAeqlU2o+I5YhYxWJEjKXI+ZcbYkkzN43DcIzXdKW2UfpqwR/h/WJ3/1rUjo8V4S+EHX8hKSj4b7wBmFxhytCBdoQAAAAASUVORK5CYII=",
"ui_slider.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABVSURBVEiJ7dNBCgAgCARA7f9/tlOQIiJpJOEcQ0oXA2j/Q+2QiIgVIap1mhHtSGIvy87cl2wT3O1wKZVhOvcoAL4oem1sTzJMZ4588mN6bbgSGba4CZuaJByfIWmXAAAAAElFTkSuQmCC",
"ui_switch.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEJSURBVEiJ7ZNNSsNQFEbPc9AKLkAHgh35M3QLLYK0W7HqetyK0q7BUn8GohRxasBWhE6Og6byDHlpx5oDGeTm3pOb5AvU1PwH1E31Qh2rM3WeOGZ5z7naXM6HgmwXuAG2ga2S+30CE2CYn7eBI+AZ6IQQ3oqbPapfiY3e1dOSJ+qqH+pDvCnqpZolZFmZrCCdq/0QFcfAfmLmLoRwnBLm8yMgbES1VkX/sOLakgHQioWuMbSSWDip6Guv4WoDL7HwikUsythTuymT2gMOc8dPsbkiNlmZVO3lsblXG2XBvgZ2SAf7lcUHAOgAB8ATcPIr2JG0ofbVkTqt+PWm6q16pjZSr6Om5k/wDYhUJfwAsEtnAAAAAElFTkSuQmCC",
"ui_template.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEaSURBVEiJ7dE/L4NRGAXw90W6EKMahEGMoh2wqUVC7d3EZjdZjGb1GXwIk6WpiVHMJEQwNUHjT+JncCXN9bZCGomkZ7r3nPOce3OeJOmhh38I7GC4W2GDeMLkb4b7MrgV3CBt5/lCBONEkiQnKEfSUpIkh2maCtoxxr/7WQl3eMRMpJ1iPZwLaAbvQruwDbzgErORNoo3jLVwBZzjFVtxWNUHahjJeGwNZxl8HvUwW20VGrhvt0HsY6+NNoUHNFrJSujkFqVoIMU1VjPCFkOPTVRisYCLuBNM4xlDkf+z8yvMZf0+7mQ5cJuoRb5y8NSRzwxrMefCkorhfoDtyFPELnIdwzLC+8Ky5n802CFwAEfo70pgDz38Ad4Br8tc7FtGcAwAAAAASUVORK5CYII=",
"ui_text.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEWSURBVEiJ7ZMhS0RBFEbPyDMYhGXB5poFm2GNJpHFplXQ32AVYYO4xSIGQTAqGhQ0mGwmDQYRZJPYXGQRMYnwjsFZGQyy4YUN75SB716Gc+8wUFJSUgBqU/3qt3+oaIHfC9W62vaHN3UlbVTX1Xv1SB2L2ZR6oT6qp2otNVwGOsAi0Aa2kloG1IAW0AB21BHgEqgAm8A0sJ8aDKtz6rb6pOZqiDvM4wWoB+qLOhOnacS8qmap4TGwBzwD1wAhBJN6iGfvgbI/eQUYTw3f1TN1Ur1V85g3o8muOq921BN1VH1Vr9SFuMeb1HADmAXOgTsgqBNJ/RM4BB6AtRDCB7AEVON0XWCVgae3UFT/a+yXwn9KSckg8A2LRsxzeZWjFAAAAABJRU5ErkJggg==",
"ui_toast.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADeSURBVEiJ7ZKxCQJBFERnRQ5BUCzAxEB7sAB7EGzB6EJzE0OLsAGbMDW0AROTM9E70GcyyiknihiI3MDn/52dP8vuX6lEiT9EkCQg+4pZCFHFdfoFv1SSroYdSRNJW69PbxicnXeSZpK6tx0gBlpABAyBFZABB+d8XLmVtZF747xhBiTAHOiZ6wMLG6SOg7m+NT33JHdzyJ1+dOMSGAABaANTR9vcwJrUPdkzw8drbYAxUAdqwAhYP3sO6fW3wZq966aHUSkShxCi6otJBudGjis0e2vzE/y+YYkSf4kLDcYTu4mDJeQAAAAASUVORK5CYII=",
"plc-read.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABXUlEQVR4AeyUTa7CMAyEX3kCASs4A2vufxDWnAGxAQSCMiPhKolqNy6hAqlVRnEcO/7q/kz+vugaYbSHMXZm7IzWAc3vfmfquq60w971RzAo1DlQ8NEVhJheI4LpdULBpN+AqZQLjVi1bcFvDj5aMwCb7s4A5Ii8XqMLyA3TiyIzKQuGd0TJmbQpWXtmKy8LxlMsjGVhUeoP12KrMHIIZwmGHf3wsG6GxOTOTExjVZg0kGu8vDXnUkqBVBgUboZWvAmAocVYfqRFnVZhrENy91hMlObQn/qyYJhISTJtStbeWcvNgvEWs+I1EOYMCmOBmDB80z3iYZa6QJg7aGdY0NJXw0zYzndl3b21F3UGEEX/sFbhtr0Ipi1gSN8LplxJfIEVNIWW0ByiTf3DXkBraANtoVlYuTgMHzV0g07QBaJN3WGfoQO0h3bQ9aMw4eFeu3hnvABh/AgTdiO0nwAAAP//+PePKAAAAAZJREFUAwCtHPpHGrQtpgAAAABJRU5ErkJggg==",
"plc-write.png":
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABY0lEQVR4AeyU3U7DMAyF2yEQcAXPwDXv/yBc8wyIG0BMW3eONHdOZadx20zb1CpHcRzH/ur+bJoLulYY72GsnVk743XA81d9Z7qua73Cln8yDAqNDhTcjwUhph+TYfoMCxrXAcP2lt5061w4/2JtwW+ObGciQFZ2gHxbfs+XhfEO1fKPwkS7w3hKgGlTss7NCQwPifQh+vS6lp3A5IrkgLgnkhxYJz88rPshMcO5GIYHmY1zifDydiVxOiYEgwLJ3Uoi+kXiG86yz3m4J+sEhoEiCZCZfrFrzQmMVyQCwlhKctGmZJ2bR2FKE+WKlO5lYc4JQmAXJgLCrywiFrbkwljBtX03A7Pho5wr3e3JnQFE+A+rC1v2ZBgr2VzfEWZumtN5fFUtdA89Q48QbeoO9hP0Cr1B79DD6WTTLA7DxwdtoR/oD6JN7WD/Ql/QJ/QB/VeF0cmj9uKdiQLo+BVGd0PbBwAAAP//lELFSQAAAAZJREFUAwBkHfpHEDPmHQAAAABJRU5ErkJggg==",
"ff-logo.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5MCIgaGVpZ2h0PSIxMzUiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDkwIDEzNSI+PHNjcmlwdCB4bWxucz0iIi8+CiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjAwNzggMCAwIDEuMDA3OCAtNjcuMDA3IC02NS45MTQpIj4KICA8cGF0aCBkPSJtNzcuNzcgOTIuN2MtMy40OTcgMC02LjMxMSAyLjgxNi02LjMxMSA2LjMxMy0wLjAwNTIgMTEuNTUtMC4wMTMxNiAyMy4xMS0wLjAxNDk5IDM0LjY2IDcuNSAwLjA0NDQgMTUuMDEgMC4yMTcgMjIuNDktMC4zMTgzIDEwLjQzLTAuOTUxMSAxOS42MS02LjU1MiAyOS4yMi0xMC4yMyA4Ljc0Mi0zLjY5NyAxOC4xMy01Ljk0MSAyNy42Ni01Ljc0MWwtMWUtMyAtMTguMzhjNGUtMyAtMy40OTgtMi44MTUtNi4zMTMtNi4zMTEtNi4zMTN6bTczLjA1IDM3LjE5Yy0xLjA1NSAwLjAxNjktMi4xMTEgMC4wNDU3LTMuMTY2IDAuMDg4OS0xMS42NC0wLjA0NDgtMjEuOTYgNS45NzQtMzIuNDYgMTAuMTkgOC4xMTUgMy4yODMgMTUuOTUgNy40NTQgMjQuNTUgOS4zODkgMy42NzUgMC41NTc2IDcuMzcyIDAuODI5MiAxMS4wOCAwLjkwODV6bS03MS4xMyAxNi41N2MtMi43NDcgNmUtMyAtNS40OTQgMC4wMzQ2LTguMjM5IDAuMDQ4NiAwLjAwMjQgNi40MTYgMC4wMDcyIDEyLjgzIDAuMDE3NTcgMTkuMjUgMC4wMDM3IDMuNDk4IDIuODE1IDYuMzEzIDYuMzExIDYuMzEzaDY2LjczYzMuNDk3IDAgNi4zMTEtMi44MTYgNi4zMTEtNi4zMTN2LTIuNzc4Yy04LjIwMy0wLjA1MzctMTYuNC0xLjMwNC0yNC4wNC00LjM3NC0xMS44Mi00LjEyNC0yMi44NS0xMS40NS0zNS42OC0xMS45NC0zLjc5OC0wLjE3OTQtNy42MDItMC4yMTQ3LTExLjQxLTAuMjA2MnoiIGZpbGw9IiNmZmYiLz4KIDwvZz4KPHNjcmlwdCB4bWxucz0iIi8+PC9zdmc+",
"ff-logo-red.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5MCIgaGVpZ2h0PSIxMzUiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDkwIDEzNSI+CiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjAwNzggMCAwIDEuMDA3OCAtNjcuMDA3IC02NS45MTQpIj4KICA8cGF0aCBkPSJtNzcuNzcgOTIuN2MtMy40OTcgMC02LjMxMSAyLjgxNi02LjMxMSA2LjMxMy0wLjAwNTIgMTEuNTUtMC4wMTMxNiAyMy4xMS0wLjAxNDk5IDM0LjY2IDcuNSAwLjA0NDQgMTUuMDEgMC4yMTcgMjIuNDktMC4zMTgzIDEwLjQzLTAuOTUxMSAxOS42MS02LjU1MiAyOS4yMi0xMC4yMyA4Ljc0Mi0zLjY5NyAxOC4xMy01Ljk0MSAyNy42Ni01Ljc0MWwtMWUtMyAtMTguMzhjNGUtMyAtMy40OTgtMi44MTUtNi4zMTMtNi4zMTEtNi4zMTN6bTczLjA1IDM3LjE5Yy0xLjA1NSAwLjAxNjktMi4xMTEgMC4wNDU3LTMuMTY2IDAuMDg4OS0xMS42NC0wLjA0NDgtMjEuOTYgNS45NzQtMzIuNDYgMTAuMTkgOC4xMTUgMy4yODMgMTUuOTUgNy40NTQgMjQuNTUgOS4zODkgMy42NzUgMC41NTc2IDcuMzcyIDAuODI5MiAxMS4wOCAwLjkwODV6bS03MS4xMyAxNi41N2MtMi43NDcgNmUtMyAtNS40OTQgMC4wMzQ2LTguMjM5IDAuMDQ4NiAwLjAwMjQgNi40MTYgMC4wMDcyIDEyLjgzIDAuMDE3NTcgMTkuMjUgMC4wMDM3IDMuNDk4IDIuODE1IDYuMzEzIDYuMzExIDYuMzEzaDY2LjczYzMuNDk3IDAgNi4zMTEtMi44MTYgNi4zMTEtNi4zMTN2LTIuNzc4Yy04LjIwMy0wLjA1MzctMTYuNC0xLjMwNC0yNC4wNC00LjM3NC0xMS44Mi00LjEyNC0yMi44NS0xMS40NS0zNS42OC0xMS45NC0zLjc5OC0wLjE3OTQtNy42MDItMC4yMTQ3LTExLjQxLTAuMjA2MnoiIGZpbGw9IiNEQTNEMEIiLz4KIDwvZz4KPHNjcmlwdCB4bWxucz0iIi8+PC9zdmc+",
"advanced-ai-node.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPgogICAgPHBhdGggZmlsbD0id2hpdGUiIGQ9Im0xNzYtMTIwLTU2LTU2IDMwMS0zMDItMTgxLTQ1IDE5OC0xMjMtMTctMjM0IDE3OSAxNTEgMjE2LTg4LTg3IDIxNyAxNTEgMTc4LTIzNC0xNi0xMjQgMTk4LTQ1LTE4MS0zMDEgMzAxWm0yNC01MjAtODAtODAgODAtODAgODAgODAtODAgODBabTM1NSAxOTcgNDgtNzkgOTMgNy02MC03MSAzNS04Ni04NiAzNS03MS01OSA3IDkyLTc5IDQ5IDkwIDIyIDIzIDkwWm0xNjUgMzIzLTgwLTgwIDgwLTgwIDgwIDgwLTgwIDgwWk01NjktNTcwWiIvPgo8c2NyaXB0IHhtbG5zPSIiLz48L3N2Zz4=",
"classification-node.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPgogICAgPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0yMTYtNzkydjYyNC02MjQgMTY4LTE2OFptMCA2OTZxLTI5LjcgMC01MC44NS0yMS4xNVExNDQtMTM4LjMgMTQ0LTE2OHYtNjI0cTAtMjkuNyAyMS4xNS01MC44NVExODYuMy04NjQgMjE2LTg2NGgzMTJsMTkyIDE5MnYxNDlxLTE4LTQtMzYtNXQtMzYgMXYtOTdINDgwdi0xNjhIMjE2djYyNGgyNDhxMTIgMjEgMjggMzkuNVQ1MjgtOTZIMjE2Wm00NTUuNzctOTZRNzEyLTE5MiA3NDAtMjE5Ljc3cTI4LTI3Ljc4IDI4LTY4UTc2OC0zMjggNzQwLjE2LTM1NnEtMjcuODQtMjgtNjguMTYtMjgtMzIgMC02NCAyNHQtMzIgNzJxMCA0MC4zMiAyNy43NyA2OC4xNiAyNy43OCAyNy44NCA2OCAyNy44NFpNODYxLTQ4bC05OC05OXEtMjAgMTMtNDMuMDMgMjB0LTQ3LjQ3IDdRNjAyLTEyMCA1NTMtMTY5dC00OS0xMTlxMC03MCA0OS0xMTl0MTE5LTQ5cTcwIDAgMTE5IDQ5dDQ5IDExOXEwIDI0LjYxLTcgNDcuODFRODI2LTIxNyA4MTMtMTk3bDk5IDk4LTUxIDUxWiIvPgo8c2NyaXB0IHhtbG5zPSIiLz48L3N2Zz4=",
"depth-estimation-node.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPgogICAgPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik00ODAtMTE4IDEyMC0zOThsNjYtNTAgMjk0IDIyOCAyOTQtMjI4IDY2IDUwLTM2MCAyODBabTAtMjAyTDEyMC02MDBsMzYwLTI4MCAzNjAgMjgwLTM2MCAyODBabTAtMjgwWm0wIDE3OCAyMzAtMTc4LTIzMC0xNzgtMjMwIDE3OCAyMzAgMTc4WiIvPgo8c2NyaXB0IHhtbG5zPSIiLz48L3N2Zz4=",
"object-detection-node.svg":
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJtMjYwLTUyMCAyMjAtMzYwIDIyMCAzNjBIMjYwWk03MDAtODBxLTc1IDAtMTI3LjUtNTIuNVQ1MjAtMjYwcTAtNzUgNTIuNS0xMjcuNVQ3MDAtNDQwcTc1IDAgMTI3LjUgNTIuNVQ4ODAtMjYwcTAgNzUtNTIuNSAxMjcuNVQ3MDAtODBabS01ODAtMjB2LTMyMGgzMjB2MzIwSDEyMFptNTgwLTYwcTQyIDAgNzEtMjl0MjktNzFxMC00Mi0yOS03MXQtNzEtMjlxLTQyIDAtNzEgMjl0LTI5IDcxcTAgNDIgMjkgNzF0NzEgMjlabS01MDAtMjBoMTYwdi0xNjBIMjAwdjE2MFptMjAyLTQyMGgxNTZsLTc4LTEyNi03OCAxMjZabTc4IDBaTTM2MC0zNDBabTM0MCA4MFoiLz4KPHNjcmlwdCB4bWxucz0iIi8+PC9zdmc+",
},
u =
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBMaWNlbnNlOiBQRC4gTWFkZSBieSBtb25vLWNvbXBhbnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vLWNvbXBhbnkvbW9uby1pY29ucyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTAgNGE2IDYgMCAxIDAgMCAxMiA2IDYgMCAwIDAgMC0xMnptLTggNmE4IDggMCAxIDEgMTQuMzIgNC45MDZsNS4zODcgNS4zODdhMSAxIDAgMCAxLTEuNDE0IDEuNDE0bC01LjM4Ny01LjM4N0E4IDggMCAwIDEgMiAxMHoiIGZpbGw9IiMwRDBEMEQiLz48L3N2Zz4=",
l =
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBMaWNlbnNlOiBQRC4gTWFkZSBieSBtb25vLWNvbXBhbnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vLWNvbXBhbnkvbW9uby1pY29ucyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOCAzYTEgMSAwIDAgMSAxLTFoNmExIDEgMCAwIDEgMSAxaDJhMiAyIDAgMCAxIDIgMnYxNWEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMnptMCAySDZ2MTVoMTJWNWgtMnYxYTEgMSAwIDAgMS0xIDFIOWExIDEgMCAwIDEtMS0xVjV6bTYtMWgtNHYxaDRWNHoiIGZpbGw9IiMwRDBEMEQiLz48L3N2Zz4=",
c =
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBMaWNlbnNlOiBQRC4gTWFkZSBieSBtb25vLWNvbXBhbnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vLWNvbXBhbnkvbW9uby1pY29ucyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIgMmExIDEgMCAwIDEgMSAxdjEwLjU4NmwyLjI5My0yLjI5M2ExIDEgMCAwIDEgMS40MTQgMS40MTRsLTQgNGExIDEgMCAwIDEtMS40MTQgMGwtNC00YTEgMSAwIDEgMSAxLjQxNC0xLjQxNEwxMSAxMy41ODZWM2ExIDEgMCAwIDEgMS0xek01IDE3YTEgMSAwIDAgMSAxIDF2MmgxMnYtMmExIDEgMCAxIDEgMiAwdjJhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJ2LTJhMSAxIDAgMCAxIDEtMXoiIGZpbGw9IiMwRDBEMEQiLz48L3N2Zz4=",
I =
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBMaWNlbnNlOiBNSVQuIE1hZGUgYnkgaGFsZm1hZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYWxmbWFnZS9tYWplc3RpY29ucyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIj48cGF0aCBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNOS41IDVIOWEyIDIgMCAwIDAtMiAydjJjMCAxLS42IDMtMyAzIDEgMCAzIC42IDMgM3YyYTIgMiAwIDAgMCAyIDJoLjVtNS0xNGguNWEyIDIgMCAwIDEgMiAydjJjMCAxIC42IDMgMyAzLTEgMC0zIC42LTMgM3YyYTIgMiAwIDAgMS0yIDJoLS41Ii8+PC9zdmc+",
N = {
base64: y("#DEBD5C"),
batch: y("#E2D96E"),
catch: y("#e49191"),
change: y("#E2D96E"),
rbe: y("#E2D96E"),
complete: y("#C0EDC0"),
comment: y(),
csv: y("#DEBD5C"),
debug: y("#87a980"),
delay: y("#E6E0F8"),
exec: y("darksalmon"),
feedparse: y("#C0DEED"),
file: y("BurlyWood"),
"file in": y("BurlyWood"),
function: y("#fdd0a2"),
html: y("#DEBD5C"),
"http response": y("rgb(231, 231, 174)"),
"http in": y("rgb(231, 231, 174)"),
"http request": y("rgb(231, 231, 174)"),
inject: y("#a6bbcf"),
join: y("#E2D96E"),
json: y("#DEBD5C"),
junction: y("rgb(217, 217, 217)"),
"link in": y("#ddd"),
"link out": y("#ddd"),
"link call": y("#ddd"),
"mqtt in": y("#d8bfd8"),
"mqtt out": y("#d8bfd8"),
"tcp in": y("silver"),
"tcp out": y("silver"),
"tcp request": y("silver"),
"udp in": y("silver"),
"udp out": y("silver"),
markdown: y("#DEBD5C"),
postgresql: y("#5b85a7"),
range: y("#E2D96E"),
sort: y("#E2D96E"),
split: y("#E2D96E"),
subflow: y("#ddd"),
switch: y("#E2D96E"),
trigger: y("#E6E0F8"),
template: y("rgb(243, 181, 103)"),
ui_button: y("rgb(176, 223, 227)"),
ui_list: y("rgb( 63, 173, 181)"),
ui_svg_graphics: y("rgb( 63, 173, 181)"),
ui_template: y("rgb( 63, 173, 181)"),
ui_toast: y("rgb(119, 198, 204)"),
ui_upload: y("rgb( 63, 173, 181)"),
ui_audio: y("rgb(119, 198, 204)"),
ui_chart: y("rgb(119, 198, 204)"),
ui_gauge: y("rgb(119, 198, 204)"),
ui_text: y("rgb(119, 198, 204)"),
ui_date_picker: y("rgb(176, 223, 227)"),
ui_dropdown: y("rgb(176, 223, 227)"),
ui_form: y("rgb(176, 223, 227)"),
ui_numeric: y("rgb(176, 223, 227)"),
ui_slider: y("rgb(176, 223, 227)"),
ui_switch: y("rgb(176, 223, 227)"),
ui_text_input: y("rgb(176, 223, 227)"),
ui_colour_picker: y("rgb(176, 223, 227)"),
"ui-button": y("rgb(160, 230, 236)"),
"ui-button-group": y("rgb(160, 230, 236)"),
"ui-chart": y("rgb(90, 210, 220)"),
"ui-control": y("rgb(32, 160, 170)"),
"ui-dropdown": y("rgb(160, 230, 236)"),
"ui-event": y("rgb(32, 160, 170)"),
"ui-form": y("rgb(160, 230, 236)"),
"ui-gauge": y("rgb(90, 210, 220)"),
"ui-markdown": y("rgb(39, 183, 195)"),
"ui-notification": y("rgb(90, 210, 220)"),
"ui-radio-group": y("rgb(160, 230, 236)"),
"ui-slider": y("rgb(160, 230, 236)"),
"ui-switch": y("rgb(160, 230, 236)"),
"ui-table": y("rgb(90, 210, 220)"),
"ui-template": y("rgb(39, 183, 195)"),
"ui-text": y("rgb(90, 210, 220)"),
"ui-text-input": y("rgb(160, 230, 236)"),
"websocket in": y("rgb(215, 215, 160)"),
"websocket out": y("rgb(215, 215, 160)"),
yaml: y("#DEBD5C"),
xml: y("#DEBD5C"),
BlogPages: y("#ddeeff"),
BlogDetails: y("#ddeeff"),
BlogPageInfo: y("#ddeeff"),
BlogChanges: y("#ddeeff"),
PubMedium: y("#ddee44"),
Topic: y("#d0c9f6"),
Observation: y("#f4adf3"),
Question: y("#e0a4f3"),
Thought: y("#cb9cf3"),
Idea: y("#88baff"),
Analogy: y("#86bfff"),
Aphorism: y("#84c3ff"),
Poesie: y("#83c7ff"),
Humour: y("#81ccff"),
Treasure: y("#7fd0ff"),
Consequence: y("#f6c1cc"),
Advantage: y("#efacbf"),
Disadvantage: y("#e796b1"),
Text: y("#c8ffb5"),
"Blog-Post": y("#d0fdc2"),
Comment: y("#d9fcce"),
"Code-Base": y("#e1fbda"),
Sketch: y("#e1fbda"),
Inspiration: y("#dfdfb6"),
Quote: y("#e5e5c0"),
Definition: y("#eaebca"),
Book: y("#f0f0d4"),
Author: y("#f5f6de"),
"nnb-input-node": y("#ffefef"),
"nnb-layer-node": y("#ffffef"),
"nnb-output-node": y("#efefef"),
"nnb-backprop": y("#e3edef"),
"nnb-trainer": y("#e5e4ef"),
Seeker: y("#e5e4ef"),
Sink: y("#e5e4ef"),
Screenshot: y("#e5e4ef"),
Orphans: y("#e5e4ef"),
IsMobile: y("#e5e4ef"),
Navigator: y("#e5e4ef"),
DrawSVG: y("#e5e4ef"),
GetFlows: y("#e5e4ef"),
SendFlow: y("#e5e4ef"),
TriggerImport: y("#e5e4ef"),
cronplus: y("#a6bbcf"),
"i2c scan": y("rgb(227, 82, 83)"),
"i2c in": y("rgb(227, 82, 83)"),
"i2c out": y("rgb(227, 82, 83)"),
"jimp-image": y("#ffaaaa"),
"image viewer": y("#ffaaaa"),
"annotate-image": y("#f1c2f0"),
"buffer-maker": y("#0090d4"),
"buffer-parser": y("#0090d4"),
"FINS Read": y("#0090d4"),
"FINS Write": y("#0090d4"),
"FINS Read Multiple": y("#0090d4"),
"FINS Transfer": y("#0090d4"),
"FINS Fill": y("#0090d4"),
"FINS Control": y("#0090d4"),
"s7comm read": y("#009999"),
"s7comm write": y("#009999"),
"MC Read": y("#0090d4"),
"MC Write": y("#0090d4"),
"modbus-response": y("#E9967A"),
"modbus-read": y("#E9967A"),
"modbus-getter": y("#E9967A"),
"modbus-write": y("#E9967A"),
"modbus-flex-getter": y("#E9967A"),
"modbus-flex-write": y("#E9967A"),
"modbus-flex-server": y("#E9967A"),
"modbus-flex-connector": y("#E9967A"),
"modbus-response-filter": y("#E9967A"),
"modbus-flex-sequencer": y("#E9967A"),
"modbus-flex-fc": y("#E9967A"),
"OpcUa-Item": y("#3FADB5"),
"OpcUa-Client": y("#3FADB5"),
"OpcUa-Browser": y("#3FADB5"),
"OpcUa-Server": y("#3FADB5"),
"OpcUa-Event": y("#3FADB5"),
"OpcUa-Method": y("#3FADB5"),
"OpcUa-Rights": y("#3FADB5"),
"OpcUa-Discovery": y("#3FADB5"),
"s7 in": y("#3FADB5"),
"s7 out": y("#3FADB5"),
"s7 control": y("#3FADB5"),
"project link out": y("#87D8CF"),
"project link in": y("#87D8CF"),
"project link call": y("#87D8CF"),
"ff-mqtt-in": y("#d8bfd8"),
"ff-mqtt-out": y("#d8bfd8"),
"tables-query": y("#ffffff"),
"mcp-tool": y("#87ceeb"),
"mcp-resource": y("#98fb98"),
"mcp-prompt": y("#ffd700"),
"mcp-response": y("#ffa500"),
"advanced-ai": y("#f69e00"),
"image-classification": y("#f69e00"),
"image-depth": y("#f69e00"),
"object-detection": y("#f69e00"),
_default: y(),
};
function j(t, e) {
return null != t && Object.prototype.hasOwnProperty.call(t, e);
}
function L(t) {
let e = N[(t = t || "_default")];
return (
e ||
(t.startsWith("subflow:")
? (e = N.subflow)
: t.startsWith("ui-")
? (e = N["ui-template"])
: t.startsWith("ui_") && (e = N.ui_template)),
e || N._default
);
}
function D(t) {
let e = s[t.type] || s._default;
return "junction" !== t.type && (!1 === t.l ? (e = s._default_no_label) : !0 === t.l && (e = s._default)), e;
}
function y(t, e) {
return { fill: t || "#ffffff", stroke: e || "rgb(153, 153, 153)" };
}
function b() {
if ("undefined" != typeof document) return document;
if (void 0 !== globalThis.__document) return globalThis.__document;
const t = Array.prototype.slice.call(arguments) || [this];
for (const e of t) {
const t = e && e.constructor && e.constructor.name;
if ("HTMLDocument" === t) return e;
if ("HTMLDivElement" === t || "HTMLBodyElement" === t || "HTMLHtmlElement" === t || "HTMLElement" === t)
return e.ownerDocument;
if ("SVGElement" === t || "SVGSVGElement" === t) return e.ownerDocument;
}
return "undefined" != typeof window ? window.document : null;
}
function w(t, e, i, n) {
return "number" == typeof t && !isNaN(t) ? Math.min(Math.max(t, e), i) : n || e;
}
function p(t) {
return {
hasHorizontalScrollbar: t.scrollWidth > t.clientWidth,
hasVerticalScrollbar: t.scrollHeight > t.clientHeight,
};
}
function m(t, e) {
let i = 1;
const n = t.getAttribute("transform");
if (n) {
const t = n.match(/scale\(([^,]+)\)/);
t && (i = w(parseFloat(t[1] || 1), 0.25, 3, 1));
}
const M = t.querySelector("g.outerContainer");
x(M, i, !0),
(e.onwheel = function (t) {
if (t.ctrlKey || t.metaKey) {
t.preventDefault();
let e = C(M);
(e -= 0.075 * Math.sign(t.deltaY)), (e = w(e, 0.2, 3, 1)), x(M, e);
}
});
const o = (function (t) {
const e = b(t, this);
if (!e) return null;
let i = t.querySelector(".toolbar");
i || (i = v(t));
let n = i.querySelector(".zoom-controls");
if (n)
return {
zoomIn: i.querySelector(".zoom-in"),
zoomOut: i.querySelector(".zoom-out"),
zoomReset: i.querySelector(".zoom-reset"),
};
(n = e.createElement("div")), n.classList.add("zoom-controls"), n.classList.add("button-group");
const M = e.createElement("button");
M.classList.add("red-ui-footer-button", "icon-button-bg", "zoom-in"),
(M.innerHTML = "+"),
(M.title = "Zoom In (Ctrl + Mouse Wheel Up)");
const o = e.createElement("button");
o.classList.add("red-ui-footer-button", "icon-button-bg", "zoom-reset"), (o.title = "Zoom & Scroll Reset");
const A = e.createElement("button");
A.classList.add("red-ui-footer-button", "icon-button-bg", "zoom-out"),
(A.innerHTML = "-"),
(A.title = "Zoom Out (Ctrl + Mouse Wheel Down)"),
n.appendChild(A),
n.appendChild(o),
n.appendChild(M),
i && i.appendChild(n);
return { zoomIn: M, zoomOut: A, zoomReset: o };
})(e);
(o.zoomIn.onclick = function () {
const t = w(C(M) + 0.1, 0.2, 3, 1);
x(M, t);
}),
(o.zoomOut.onclick = function () {
const t = w(C(M) - 0.1, 0.2, 3, 1);
x(M, t);
}),
(o.zoomReset.onclick = function () {
!(function (t) {
const e = t.getAttribute("_scale_original") || 1;
x(t, e);
})(M),
(function (t) {
(t.scrollLeft = t.getAttribute("_scroll_x") || 0), (t.scrollTop = t.getAttribute("_scroll_y") || 0);
})(e.querySelector(".red-ui-workspace-chart"));
});
}
function C(t) {
return parseFloat(t.getAttribute("_scale_current") || 1);
}
function x(t, e, M = !1) {
t.setAttribute("transform", `scale(${e})`);
const o = t.ownerSVGElement || t;
(o.style.width = i * e + "px"),
(o.style.height = n * e + "px"),
t.setAttribute("_scale_current", e),
M && t.setAttribute("_scale_original", e);
}
function T(t, e, i, n = !1) {
(t.scrollLeft = e), (t.scrollTop = i), n && (t.setAttribute("_scroll_x", e), t.setAttribute("_scroll_y", i));
}
function S(t, e, M) {
const o =
M.autoZoom || M.autoScroll
? (function (t, e) {
const M = 0.2,
o = 1,
A = e.container.querySelector(".red-ui-workspace-chart"),
a = A.getBoundingClientRect(),
g = a.width - 25,
s = a.height - 25;
let r = i,
d = n,
u = 0,
l = 0;
const c = e.flowId,
I = t.filter((t) => "tab" !== t.type && "subflow" !== t.type && t.z === c);
if (0 === I.length) return { scale: 1, scrollX: 0, scrollY: 0 };
for (const t of I) {
if ("tab" === t.type || "subflow" === t.type || "junction" === t.type) continue;
const e = t.x || 0,
i = t.y || 0,
n = D(t),
M = (n.width || 100) / 2,
o = (n.height || 30) / 2,
A = e - M,
a = i - o,
g = e + M,
s = i + o;
(r = Math.min(r, A)), (d = Math.min(d, a)), (u = Math.max(u, g)), (l = Math.max(l, s));
}
let N = 1;
const j = u - r,
L = l - d,
y = g / j,
b = s / L;
(j > g || L > s) && ((N = Math.min(y, b)), (N *= 0.95));
N = w(N, M, o, 1);
let p = r,
m = d;
p < 50 && (p = 0);
m < 40 && (m = 0);
p > 0 && (p -= 50);
m > 0 && (m -= 40);
return (
(p = w(p * N, 0, A.scrollWidth)),
(m = w(m * N, 0, A.scrollHeight)),
{ scale: N, scrollX: p, scrollY: m, minX: r, minY: d, maxX: u, maxY: l }
);
})(e, M)
: null;
if (((t = t.ownerSVGElement || t), M.zoom && o && M.autoZoom)) {
x(t.querySelector("g.outerContainer"), o.scale, !0);
}
return o && M.autoScroll && T(t.parentElement, o.scrollX, o.scrollY, !0), o;
}
function z(t, e, i) {
const n = t.parentElement,
M = t.querySelector("g.outerContainer"),
o = n.scrollLeft,
A = n.scrollTop,
a = C(M),
g = i || e.flowId || "global";
n.setAttribute(`data-tab-${g}-x`, o),
n.setAttribute(`data-tab-${g}-y`, A),
n.setAttribute(`data-tab-${g}-scale`, a);
}
function h(t, e, i) {
const n = t.parentElement,
M = t.querySelector("g.outerContainer"),
o = i || e.flowId || "global",
A = n.getAttribute(`data-tab-${o}-x`),
a = n.getAttribute(`data-tab-${o}-y`),
g = n.getAttribute(`data-tab-${o}-scale`);
"string" == typeof A && "string" == typeof a && T(n, A, a), "string" == typeof g && x(M, g);
}
function f(t) {
const e = t.parentElement,
i = t.querySelector("g.outerContainer");
for (const t in i.dataset) /^tab-\w+-.*/.test(t) && e.removeAttribute(t);
}
function E(t) {
const e = b(t, this).createElement("div");
return e.classList.add("red-ui-workspace-chart"), t ? (t.appendChild(e), e) : e;
}
function v(t) {
const e = b(t, this);
if (!e) return null;
let i = t.querySelector(".toolbar");
return i || ((i = e.createElement("div")), i.classList.add("toolbar"), t && t.appendChild(i), i);
}
function O(t, { addDefaultLayer: e = !0, layer: M = 0 } = {}) {
const o = b(t, this),
A = o.createElementNS("http://www.w3.org/2000/svg", "svg");
A.setAttribute("style", `width:${i}px; height:${n}px;`), t.appendChild(A);
const a = o.createElementNS("http://www.w3.org/2000/svg", "defs");
A.appendChild(a);
a.innerHTML =
'\n <pattern id="grid" width="20" height="20" patternUnits="userSpaceOnUse">\n <path d="M 20 0 L 0 0 0 20" fill="none" stroke="rgb(208, 208, 208)" stroke-width="1" shape-rendering="geometricprecision"></path>\n </pattern>\n <filter id="node-glow" x="-5000%" y="-5000%" width="10000%" height="10000%">\n <feFlood result="flood" flood-color="#7d26cd" flood-opacity="0.8"></feFlood>\n <feComposite in="flood" result="mask" in2="SourceGraphic" operator="in"></feComposite>\n <feMorphology in="mask" result="dilated" operator="dilate" radius="2"></feMorphology>\n <feGaussianBlur in="dilated" result="blurred" stdDeviation="5">\n <animate attributeName="stdDeviation" values="5;0;5" dur="1s" repeatCount="indefinite"></animate>\n </feGaussianBlur>\n <feMerge>\n <feMergeNode in="blurred"></feMergeNode>\n <feMergeNode in="SourceGraphic"></feMergeNode>\n </feMerge>\n </filter>';
const g = k("g", { class: "outerContainer" });
return A.appendChild(g), e && Z(A, { layer: M }), A;
}
function k(t, e, i) {
const n = b(i, this).createElementNS("http://www.w3.org/2000/svg", t);
if ("object" == typeof e) for (const t in e) n.setAttribute(t, e[t]);
return i && i.appendChild(n), n;
}
function Z(t, { layer: e = 0, opacity: i = 1 } = {}) {
let n = t.querySelector("g.outerContainer");
n || (n = k("g", { class: "outerContainer" }, t)),
n.querySelector("g.flow_grid") || k("g", { class: "flow_grid" }, n);
let M = n.querySelector(`g.flow-layer-${e}`);
for (M || (M = k("g", { class: `flow-layer-${e || 0}` }, n)); M.firstChild; ) M.removeChild(M.firstChild);
return (
M.setAttribute("opacity", i),
k("g", "flow_group_elements", M),
k("g", "flow_group_select", M),
k("g", "flow_wires", M),
k("g", "flow_nodes", M),
M
);
}
function B(t) {
if (t.childNodes.length > 0) return;
k("rect", { width: `${i}px`, height: `${n}px`, fill: "url(#grid)" }, t).style.transform = "translate(-1px, -1px)";
}
function Y(t, e, i, n, M) {
const o = b(M, this).createElement(t);
if ("object" == typeof e) for (const t in e) o.setAttribute(t, e[t]);
return (
i && "string" == typeof i ? o.classList.add(...i.split(" ")) : Array.isArray(i) && o.classList.add(...i),
"string" == typeof n && (o.textContent = n),
M && M.appendChild(o),
o
);
}
function U(t) {
const e = [],
i = {},
n = new Set([
...Object.keys(t.changed),
...Object.keys(t.added),
...Object.keys(t.deleted),
...Object.keys(t.moved),
...Object.keys(t.positionChanged),
]),
M = t.currentConfig,
o = t.newConfig;
function A(e, i, n, M, o, A) {
const a = { tab: e, item: i, diffType: n, prop: M, value1: o, value2: A, toString: () => "" },
g = (t) => (t ? `'${t}'` : "''"),
s = (t) =>
t
? g(
(function (t, e, i) {
const n = $[t.type] || $._default,
M = (e && e[t.type]) || {};
return n(t, M, i);
})(t),
)
: "'n/a'",
r = t.currentConfig.all[e] || t.newConfig.all[e],
d = s(r),
u = t.currentConfig.all[i] || t.newConfig.all[i],
l = "tab" === i ? r : t.currentConfig.all[i],
c = "tab" === i ? r : t.newConfig.all[i],
I = "tab" === i ? "tab" : "node",
N = /wires\[\d+\]/.test(M);
let j = "";
N &&
(a.value1 && !a.value2
? (j = `had wire removed from ${s(l)}`)
: !a.value1 && a.value2 && (j = `was wired up to ${s(c)}`));
const L = o && ("z" === M || /wires\[\d+\]/.test(M)) ? t.currentConfig.all[o] : null,
D = A && ("z" === M || /wires\[\d+\]/.test(M)) ? t.newConfig.all[A] : null;
return (
(a.toString = function () {
const t = [];
switch (n) {
case "deleted":
t.push("deleted", I, s(u));
break;
case "added":
t.push("added", I, s(u));
break;
case "moved":
t.push(s(u), "moved from ", s(L), "to", s(D));
break;
case "changed":
"g" === M
? o && !A
? t.push(d, s(u), "was removed from group", g(s(o)))
: !o && A
? t.push(d, s(u), "was added to group", g(s(A)))
: t.push(d, s(u), "moved group from", g(o), "to", g(A))
: N
? t.push(d, s(u), j)
: "tab" === i
? t.push("tab", d, "property", g(a.prop), "was", g(a.value1 || "") + ", now", g(a.value2 || ""))
: t.push(s(u), "property", g(a.prop), "was", g(a.value1 || ""), "now", g(a.value2 || ""));
break;
case "positionChanged":
t.push(s(u), "moved from", a.value1, "to", a.value2);
break;
default:
t.push(d, s(u), g(a.prop), "was", g(a.value1 || ""), "now", g(a.value2 || ""));
}
return t.join(" ");
}),
a
);
}
function a(t, e) {
const i = t.currentConfig.all,
M = t.newConfig.all,
o = [];
if (!e.v1 || !e.v2)
return (
e.v1 && o.push(A(e.id, e.id, "tab", "deleted", e.v1, null)),
e.v2 && o.push(A(e.id, e.id, "tab", "added", null, e.v2)),
o
);
const a = e.v1?.tab ? { ...e.v1.tab.n } : {};
a.order = e.v1?.order;
const s = e.v2?.tab ? { ...e.v2.tab.n } : {};
s.order = e.v2?.order;
const r = e.v1?.tab?.nodes || [],
d = e.v2?.tab?.nodes || [];
o.push(...g(e.id, "tab", "", "changed", a, s));
const u = r.map((t) => t.id),
l = d.map((t) => t.id),
c = new Set([...u, ...l].filter((t) => n.has(t))),
I = (t) => ("number" != typeof t ? null : t),
N = (t, e) => {
const i = { ...e };
for (const e of t) delete i[e];
return i;
};
for (const n of c) {
const A = i[n],
a = M[n],
s = !(!A || !a);
if (t.deleted[n]) o.push(...g(e.id, n, "", "deleted", A, a));
else if (t.added[n]) o.push(...g(e.id, n, "", "added", A, a));
else if (s) {
let i = !0;
if ((t.moved[n] && o.push(...g(e.id, n, "", "moved", { z: A.z }, { z: a.z })), t.positionChanged[n])) {
i = !1;
const t = { x: I(A.x), y: I(A.y) },
M = { x: I(a.x), y: I(a.y) },
s = JSON.stringify(t),
r = JSON.stringify(M);
o.push(...g(e.id, n, "position", "positionChanged", s, r));
}
if (i) {
const t = N(["x", "y", "z", "w", "h"], A),
i = N(["x", "y", "z", "w", "h"], a);
o.push(...g(e.id, n, "", "changed", t, i));
}
}
}
return o;
}
function g(t, e, i, n, M, o) {
const a = [];
if ("deleted" === n) a.push(A(t, e, n, i, M ? "" : "deleted", o ? "" : "deleted"));
else if ("added" === n) a.push(A(t, e, n, i, M ? "added" : "", o ? "added" : ""));
else if (typeof M != typeof o) a.push(A(t, e, "changed", i, M || "", o || ""));
else if (Array.isArray(M))
for (let A = 0; A < M.length; A++) {
const s = i ? `${i}[${A}]` : `[${A}]`,
r = M[A],
d = o[A];
a.push(...g(t, e, s, n || "changed", r, d));
}
else if (M && o && "object" == typeof M && "object" == typeof o) {
const A = Object.keys(M);
for (const s of A) {
const A = /[^a-zA-Z0-9_$]/.test(s),
r = i ? (A ? `${i}["${s}"]` : `${i}.${s}`) : A ? `["${s}"]` : s,
d = M[s],
u = o[s];
a.push(...g(t, e, r, n || "changed", d, u));
}
} else M !== o && a.push(A(t, e, n, i, M, o));
return a;
}
return (
e.push(
...(function () {
const e = [];
if (0 === n.size) return e;
i.global = { id: "global", v1: { tab: { nodes: M.globals } }, v2: { tab: { nodes: o.globals } } };
for (const t of [...M.tabOrder, ...o.tabOrder]) {
const e = M.tabs[t],
n = o.tabs[t],
A = M.tabOrder.indexOf(t),
a = o.tabOrder.indexOf(t);
i[t] = { id: t, v1: { order: A, tab: e }, v2: { order: a, tab: n } };
}
const A = Object.keys(M.subflows),
g = Object.keys(o.subflows);
for (const t of [...A, ...g]) {
if (i[t]) continue;
const e = M.subflows[t],
n = o.subflows[t];
i[t] = { id: t, v1: { tab: e }, v2: { tab: n } };
}
for (const n of Object.keys(i)) e.push(...a(t, i[n]));
const s = new Set();
return e.filter((t) => {
const e = `${"z" === t.prop && "moved" === t.diffType ? "*" : t.tab}-${t.item}-${t.diffType}-${t.prop}-${
t.value1
}-${t.value2}`;
return !s.has(e) && (s.add(e), !0);
});
})(),
),
{
get changes() {
return e;
},
get diff() {
return t;
},
get tabs() {
return i;
},
getNodeInfo: (t) => ({
propertiesChanged: e.filter((e) => e.itemId === t && e.tab !== t),
v1: M.all[t],
v2: o.all[t],
}),
getTabInfo: (t) => ({
propertiesChanged: e.filter((e) => e.tab === t && "tab" === e.itemId),
nodesChanged: e.filter((e) => e.tab === t && "tab" !== e.itemId),
v1: i[t],
v2: i[t],
}),
}
);
}
function Q(t) {
t && t.length && "string" != typeof t && "string" == typeof t[0] && (t = [...t].join(" "));
return `\n :root {\n --red-ui-view-grid-color: #eee;\n --red-ui-view-border: 1px solid #bbbbbb;\n --red-ui-node-border: #999;\n --red-ui-node-port-background: #d9d9d9;\n --red-ui-workspace-button-color: #333;\n --red-ui-workspace-button-background: #f3f3f3;\n\n --red-ui-primary-font: Helvetica Neue, Arial, Helvetica, sans-serif;\n --red-ui-primary-font-size: 14px;\n --red-ui-monospace-font: Menlo, Consolas, DejaVu Sans Mono, Courier, monospace;\n --red-ui-primary-background: #f3f3f3;\n\n --red-ui-form-background: #fff;\n --red-ui-form-placeholder-color: #aaa;\n --red-ui-form-text-color: #555;\n --red-ui-form-text-color-disabled: #bbb;\n --red-ui-form-input-focus-color: rgba(85, 150, 230, 0.8);\n --red-ui-form-input-border-color: #ccc;\n --red-ui-form-input-border-selected-color: #aaa;\n --red-ui-form-input-border-error-color: rgb(214, 97, 95);\n --red-ui-form-input-background: #fff;\n --red-ui-form-input-background-disabled: #f9f9f9;\n --red-ui-form-button-background: #efefef;\n\n --red-ui-diff-state-color: #555;\n --red-ui-diff-state-prefix-color: #888;\n --red-ui-diff-state-added: #009900;\n --red-ui-diff-state-deleted: #f80000;\n --red-ui-diff-state-changed: #f89406;\n --red-ui-diff-state-moved: #3f81b3;\n }\n ${(t =
(t = t || ".flow-renderer")
.split(" ")
.map((t) => `.${t}`)
.join(" ")
.trim())} .diff-table {\n width: 100%;\n font-size: var(--red-ui-primary-font-size);\n font-family: var(--red-ui-primary-font);\n }\n ${t} .diff-table thead tr {\n font-weight: bold;\n padding: 2px 4px;\n /* bottom border only */\n border-bottom: 3px solid #ddd;\n }\n ${t} .diff-table td {\n padding: 2px 4px;\n border-bottom: 1px solid #ddd;\n }\n ${t} .diff-table .diff-info {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n ${t} .diff-value button {\n height: 20px;\n width: 20px;\n padding: 1px;\n }\n ${t} .diff-value span {\n margin-left: 4px;\n margin-top: 2px;\n }\n ${t} .diff-type {\n height: 14px;\n width: 14px;\n margin: 2px;\n }\n ${t} .diff-type-text {\n flex-grow: 1;\n }\n ${t} .diff-type-moved {\n background-color: var(--red-ui-diff-state-moved);\n }\n ${t} .diff-type-added {\n background-color: var(--red-ui-diff-state-added);\n }\n ${t} .diff-type-deleted {\n background-color: var(--red-ui-diff-state-deleted);\n }\n ${t} .diff-type-changed {\n background-color: var(--red-ui-diff-state-changed);\n }\n ${t} .diff-type-positionChanged {\n background-color: var(--red-ui-diff-state-changed);\n }\n\n .red-ui-editor {\n font-size: var(--red-ui-primary-font-size);\n font-family: var(--red-ui-primary-font);\n padding: 0;\n margin: 0;\n background: var(--red-ui-primary-background);\n color: var(--red-ui-primary-text-color);\n line-height: 20px\n }\n ${t} {\n position: relative;\n }\n /* Source view */\n ${t} pre.red-ui-workspace-source {\n height: 100%;\n overflow: auto;\n width: 100%;\n font-family: var(--red-ui-monospace-font);\n background-color: #f7f7f7;\n }\n /* Chart view */\n ${t} .red-ui-workspace-chart {\n box-sizing: border-box;\n border: var(--red-ui-view-border);\n overflow: scroll;\n height: 100%;\n width: 100%;\n }\n ${t} div.red-ui-footer {\n height: 20px\n }\n ${t}.has-tabs div.red-ui-workspace-chart {\n height: calc(100% - 34px);\n }\n ${t} svg {\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 250px;\n margin: auto;\n display: block;\n border-radius: 2px;\n }\n ${t} svg {\n cursor: default;\n }\n ${t} svg .group-text-label {\n font-family: Helvetica Neue, Arial, Helvetica, sans-serif;\n font-size: 14px;\n }\n ${t} svg .node-text-label {\n font-family: Helvetica Neue, Arial, Helvetica, sans-serif;\n font-size: 14px;\n dominant-baseline: middle;\n }\n ${t} svg .subflow-node-text-label {\n color: rgb(85, 85, 85);\n dominant-baseline: middle;\n font-family: Helvetica Neue, Arial, Helvetica, sans-serif;\n font-size: 10px;\n line-height: 20px;\n pointer-events: none;\n text-anchor: middle;\n user-select: none\n }\n ${t} svg .subflow-node-text-label-number {\n color: rgb(85, 85, 85);\n dominant-baseline: middle;\n font-family: Helvetica Neue, Arial, Helvetica, sans-serif;\n font-size: 16px;\n line-height: 20px;\n pointer-events: none;\n text-anchor: middle;\n user-select: none\n }\n\n ${t} svg .node {\n fill-opacity: 1;\n stroke-width: 1px;\n }\n ${t} svg .link {\n stroke: #999;\n stroke-width: 3;\n fill: none;\n }\n ${t} svg .link-highlight, .node-highlight {\n stroke: rgb(255, 127, 14);\n }\n ${t} svg .node-highlight {\n stroke-width: 3px;\n }\n ${t} .tab-glow {\n border-radius: 2px;\n animation: tab-glow-animation 1s infinite;\n }\n @keyframes tab-glow-animation {\n 0% {\n box-shadow: 0 0 0px 0px #7d26cddd;\n }\n 50% {\n box-shadow: 0 0 10px 5px #7d26cddd;\n }\n 100% {\n box-shadow: 0 0 0px 0px #7d26cddd;\n }\n }\n\n ${t} svg .node-disabled {\n stroke-dasharray: 8,3;\n fill-opacity: 0.5;\n }\n ${t} svg .group-highlight {\n stroke: rgb(255, 127, 14);\n stroke-width: 4px;\n fill: rgb(255, 127, 14);\n fill-opacity: 0.2;\n }\n ${t} svg .link-disabled {\n stroke-dasharray: 10,8 !important;\n stroke-width: 2 !important;\n stroke: rgb(204, 204, 204);\n }\n ${t} svg .grid-line {\n shape-rendering: geometricprecision;\n stroke: rgb(238, 238, 238);\n stroke-width: 1px;\n fill: none;\n }\n ${t} svg .red-ui-flow-port {\n stroke-width: 1px;\n stroke-miterlimit: 4;\n fill: var(--red-ui-node-port-background);\n }\n ${t} svg .red-ui-flow-port-input {\n stroke-width: 1px;\n stroke-miterlimit: 4;\n fill: var(--red-ui-node-port-background);\n }\n ${t} svg .flow-render-error {\n background-color: rgb(54, 52, 52); \n color: rgb(196, 59, 59); \n width: 100%;\n }\n ${t} svg text {\n user-select: none;\n }\n ${t} .red-ui-tabs {\n display: flex;\n }\n ${t} .red-ui-tab {\n padding: 6px 12px;\n box-sizing: border-box;\n display: block;\n border: 1px solid #bbbbbb;\n border-right: none;\n background-color: #f0f0f0;\n max-width: 200px;\n max-height: 34px; /* for calculating svg height */\n height: 34px; /* for calculating svg height */\n width: 14%;\n overflow: hidden;\n white-space: nowrap;\n position: relative;\n margin-top: -1px;\n transition: 0.2s background-color;\n user-select: none;\n position: relative;\n z-index: 1;\n top: 1px;\n }\n ${t} .red-ui-tab div.red-ui-tab-label {\n position: absolute;\n top: 7px;\n left: 10px;\n }\n ${t} .red-ui-tab-subflow-icon {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAsIDAsIDQwLCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMjUgMjUuOTRoN2MuNTggMCAxLS40MiAxLTF2LTJjMC0uNTgtLjQyLTEtMS0xaC03Yy0uNTggMC0xIC40Mi0xIDF2MmMwIC41OC40MiAxIDEgMXptLTE3IDEyaDdjLjU4IDAgMS0uNDIgMS0xdi0yYzAtLjU4LS40Mi0xLTEtMUg4Yy0uNTggMC0xIC40Mi0xIDF2MmMwIC41OC40MiAxIDEgMXptLS40MTYgMTFDNS42MjQgNDguOTQgNCA0Ny4zMTUgNCA0NS4zNTZWMTQuNTIyYzAtMS45NiAxLjYyNS0zLjU4MiAzLjU4NC0zLjU4MmgyNC44MzJjMS45NiAwIDMuNTg0IDEuNjIzIDMuNTg0IDMuNTgydjMwLjgzNGMwIDEuOTYtMS42MjUgMy41ODQtMy41ODQgMy41ODR6TTMyIDM2Ljk0SDE5YzAgMi4xOS0xLjgxIDQtNCA0SDd2NC40MTZjMCAuMzUuMjM1LjU4NC41ODQuNTg0aDI0LjgzMmMuMzUgMCAuNTg0LS4yMzUuNTg0LS41ODR2LTguNDE3em0xLTJ2LTZoLThjLTIuMTkgMC00LTEuODEtNC00aC0xYy00LjMzMy0uMDAyLTguNjY3LjAwNC0xMyAwdjZoOGMyLjE5IDAgNCAxLjgxIDQgNGgxM3ptMC0xNnYtNC40MThjMC0uMzUtLjIzNS0uNTgyLS41ODQtLjU4Mkg3LjU4NGMtLjM1IDAtLjU4NC4yMzMtLjU4NC41ODJ2OC40MTdjNC4zMzMuMDAyIDguNjY3LjAwMSAxMyAuMDAxaDFjMC0yLjE5IDEuODEtNCA0LTRoOHoiIGNvbG9yPSIjMDAwIiBmaWxsPSIjZmZmIi8+PC9zdmc+Cg==);\n display: inline-block;\n background-color: grey;\n margin-left: -8px;\n margin-right: 3px;\n margin-top: -1px;\n margin-bottom: 1px;\n opacity: 1;\n width: 16px;\n height: 18px;\n vertical-align: middle;\n mask-size: contain;\n mask-position: center;\n mask-repeat: no-repeat;\n }\n ${t} .red-ui-tab-disabled-icon {\n mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25' viewBox='0 0 1536 1792' style='&%2310;'%3E%3Cscript xmlns=''/%3E%3Cpath d='M1312 893q0-161-87-295l-754 753q137 89 297 89 111 0 211.5-43.5t173.5-116.5 116-174.5 43-212.5zM313 1192l755-754q-135-91-300-91-148 0-273 73t-198 199-73 274q0 162 89 299zM1536 893q0 157-61 300t-163.5 246-245 164-298.5 61-298.5-61-245-164-163.5-246-61-300 61-299.5 163.5-245.5 245-164 298.5-61 298.5 61 245 164 163.5 245.5 61 299.5z' fill='currentColor'/%3E%3Cscript xmlns=''/%3E%3C/svg%3E");\n display: inline-block;\n background-color: grey;\n margin-left: -8px;\n margin-right: 3px;\n margin-top: 0px;\n margin-bottom: 0px;\n opacity: 1;\n width: 16px;\n height: 16px;\n vertical-align: middle;\n mask-size: contain;\n mask-position: center;\n mask-repeat: no-repeat;\n transform: translateY(-2px);\n }\n ${t} .red-ui-tab span {\n font-size: 0.875rem;\n font-family: Helvetica Neue, Arial, Helvetica, sans-serif;\n }\n ${t} .red-ui-tab.active {\n background-color: white;\n border-bottom-color: white;\n font-weight: bold;\n }\n ${t} .red-ui-tab.disabled {\n border-top-style: dashed;\n border-left-style: dashed;\n font-style: italic;\n }\n ${t} .red-ui-tab:last-child {\n border-right: 1px solid #bbbbbb;\n }\n ${t} .red-ui-tab:last-child.disabled {\n border-right-style: dashed;\n }\n ${t} .red-ui-tab:hover {\n cursor: pointer;\n background-color: white;\n }\n /* positioning of toolbar */\n ${t} .toolbar {\n display: flex;\n flex-direction: row;\n position: absolute;\n bottom: 5px;\n right: 5px;\n opacity: 0.6;\n }\n ${t} .toolbar:hover {\n opacity: 1;\n }\n ${t}.has-scrollbars .toolbar {\n bottom: 24px;\n right: 24px;\n }\n\n ${t} .hidden {\n display: none !important;\n }\n ${t} .toolbar .button-group.hidden {\n display: none !important;\n }\n ${t} .toolbar .icon-button-bg.view-source {\n background-image: url("${I}");\n }\n ${t} .toolbar .icon-button-bg.download-flow {\n background-image: url("${c}");\n }\n ${t} .toolbar .icon-button-bg.copy-flow {\n background-image: url("${l}");\n }\n ${t} .toolbar .icon-button-bg.zoom-reset {\n background-image: url("${u}");\n }\n ${t} .toolbar .icon-button-bg {\n background-repeat: no-repeat;\n background-position: center;\n background-size: 16px 16px; /* Size of the background SVG */\n background-color: transparent;\n padding: 4px;\n cursor: pointer;\n width: 24px;\n height: 24px;\n font-size: 0; /* Hide any default button text if present */\n line-height: 0; /* Hide any default button text if present */\n }\n\n ${t} .toolbar .icon-button-bg:hover {\n background-color: #f0f0f0;\n }\n\n /* styles for button groups and buttons */\n ${t} .button-group {\n display: flex;\n flex-direction: row;\n }\n ${t} .button-group button {\n user-select: none;\n box-sizing: border-box;\n display: inline-block;\n text-align: center;\n cursor: pointer;\n line-height: 22px;\n height: 24px;\n color: var(--red-ui-workspace-button-color) !important;\n background: var(--red-ui-workspace-button-background);\n text-decoration: none;\n border: 1px solid var(--red-ui-form-input-border-color);\n margin: 0px;\n padding: 0px;\n }\n ${t} .button-group button:not(:first-child) {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n border-left: none;\n }\n\n /* zoom controls */\n ${t} .zoom-controls.button-group button {\n font-size: 22px;\n width: 24px;\n }\n\n /* copy controls */\n ${t} .copy-controls.button-group {\n margin-right: 8px;\n }\n ${t} .copy-controls.button-group button {\n padding: 0px 4px;\n }\n\n /* source controls */\n ${t} .source-controls.button-group {\n margin-right: 8px;\n }\n ${t} .source-controls.button-group button {\n padding: 0px 4px;\n }\n\n /* compare controls */\n ${t} .compare-controls.button-group {\n margin-right: 24px;\n }\n ${t} .compare-controls input[type='range'].flow-compare-slider {\n width: 100%;\n -webkit-appearance: none;\n }\n ${t} input[type='range'].flow-compare-slider::-webkit-slider-runnable-track {\n height: 16px;\n background: var(--red-ui-workspace-button-background);\n border-radius: 16px;\n }\n /* Track: Mozilla Firefox */\n ${t} input[type='range'].flow-compare-slider::-moz-range-track {\n height: 16px;\n background: var(--red-ui-workspace-button-background);\n border-radius: 16px;\n }\n `;
}
function G(t, e) {
const i = "flow-renderer-css" + (e ? "--" + e.toString() : "").replace(/[^a-z0-9]/gi, "-").toLowerCase();
let n = t.getElementById(i);
n || ((n = t.createElement("style")), (n.id = i), (n.innerHTML = Q(e)), t.head.appendChild(n));
}
function H(t, e) {
if (t) {
const i = t.querySelector(`.flow-layer-${e || 0}`);
["flow_group_elements", "flow_group_select", "flow_wires", "flow_nodes"].forEach((t) => {
const e = i.querySelector(`.${t}`) || k("g", { class: t }, i);
for (; e.firstChild; ) e.removeChild(e.firstChild);
});
}
}
function W(t) {
const e = [],
i = {},
n = {},
M = [],
o = {};
return (
t.forEach(function (t) {
(o[t.id] = t),
"tab" === t.type
? (e.push(t.id), (i[t.id] = { n: t, nodes: [] }))
: "subflow" === t.type && (n[t.id] = { n: t, nodes: [] });
}),
t.forEach(function (t) {
"tab" !== t.type &&
"subflow" !== t.type &&
(i[t.z] ? i[t.z].nodes.push(t) : n[t.z] ? n[t.z].nodes.push(t) : M.push(t));
}),
{ all: o, tabOrder: e, tabs: i, subflows: n, globals: M }
);
}
function P(t, i, n, M, o, A = !1) {
const a = M - i,