-
Notifications
You must be signed in to change notification settings - Fork 2
/
force_directed_graph.html
589 lines (569 loc) · 33.8 KB
/
force_directed_graph.html
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
<!-- vim: sw=2 ts=2 expandtab smartindent ft=javascript
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>force directed graph demo</title>
<style> document, body { margin: 0px; padding: 0px; overflow: hidden; } </style>
</head>
<body>
<canvas id="glcanvas"></canvas>
<script>"use strict";
const canvas = document.getElementById("glcanvas");
const ctx = canvas.getContext('2d');
(window.onresize = () => {
canvas.width = window.innerWidth*window.devicePixelRatio,
canvas.height = window.innerHeight*window.devicePixelRatio
canvas.style.width = window.innerWidth + 'px';
canvas.style.height = window.innerHeight + 'px';
})();
const graph = {
"edges": [
"01931DB0-740A-7559-95DA-7EF2C74E0AE0,01931DB0-74E3-7559-95DA-80D1FEAF373C",
"01931DB0-74E3-7559-95DA-80D1FEAF373C,01931DB0-74FB-7559-95DB-4FA75F30D75A",
"01931DB0-74FB-7559-95DB-4FA75F30D75A,01931DB0-74FF-7559-95DB-73756ECFE4C7",
"01931DB0-74FF-7559-95DB-73756ECFE4C7,01931DB0-74FB-7559-95DB-4FA75F30D75A",
"01931DB0-74FB-7559-95DB-4FA75F30D75A,01931DB0-74FD-7559-95DB-64189FD947FD",
"01931DB0-74FD-7559-95DB-64189FD947FD,01931DB0-74FB-7559-95DB-4FA75F30D75A",
"01931DB0-74FB-7559-95DB-4FA75F30D75A,01931DB0-74FB-7559-95DB-50FAEFFD3645",
"01931DB0-74FB-7559-95DB-50FAEFFD3645,01931DB0-74FB-7559-95DB-4FA75F30D75A",
"01931DB0-74FB-7559-95DB-4FA75F30D75A,01931DB0-74FE-7559-95DB-6A35863DA078",
"01931DB0-74FE-7559-95DB-6A35863DA078,01931DB0-74FB-7559-95DB-4FA75F30D75A",
"01931DB0-74FB-7559-95DB-4FA75F30D75A,01931DB0-74FD-7559-95DB-5CD74FAFB3DB",
"01931DB0-74FD-7559-95DB-5CD74FAFB3DB,01931DB0-74FB-7559-95DB-4FA75F30D75A",
"01931DB0-74FB-7559-95DB-4FA75F30D75A,01931DB0-74E3-7559-95DA-80D1FEAF373C",
"01931DB0-74E3-7559-95DA-80D1FEAF373C,01931DB0-74E6-7559-95DA-AA253D8BFDA9",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9,01931DB0-74E8-7559-95DA-BD5840CD6513",
"01931DB0-74E8-7559-95DA-BD5840CD6513,01931DB0-74E6-7559-95DA-AA253D8BFDA9",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9,01931DB0-74E9-7559-95DA-C6F55FECC957",
"01931DB0-74E9-7559-95DA-C6F55FECC957,01931DB0-74E6-7559-95DA-AA253D8BFDA9",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9,01931DB0-74E7-7559-95DA-B1BB9F2A19C4",
"01931DB0-74E7-7559-95DA-B1BB9F2A19C4,01931DB0-74E6-7559-95DA-AA253D8BFDA9",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9,01931DB0-74EB-7559-95DA-D124A6857FD8",
"01931DB0-74EB-7559-95DA-D124A6857FD8,01931DB0-74E6-7559-95DA-AA253D8BFDA9",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9,01931DB0-74EA-7559-95DA-CBB0568C00D7",
"01931DB0-74EA-7559-95DA-CBB0568C00D7,01931DB0-74E6-7559-95DA-AA253D8BFDA9",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9,01931DB0-74EC-7559-95DA-DA4508B8C7F7",
"01931DB0-74EC-7559-95DA-DA4508B8C7F7,01931DB0-74E6-7559-95DA-AA253D8BFDA9",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9,01931DB0-74E3-7559-95DA-80D1FEAF373C",
"01931DB0-74E3-7559-95DA-80D1FEAF373C,01931DB0-74F2-7559-95DB-1F0270A3D47C",
"01931DB0-74F2-7559-95DB-1F0270A3D47C,01931DB0-74F3-7559-95DB-2CB3F4595B3A",
"01931DB0-74F3-7559-95DB-2CB3F4595B3A,01931DB0-74F2-7559-95DB-1F0270A3D47C",
"01931DB0-74F2-7559-95DB-1F0270A3D47C,01931DB0-74F8-7559-95DB-392E2C80B05E",
"01931DB0-74F8-7559-95DB-392E2C80B05E,01931DB0-74F2-7559-95DB-1F0270A3D47C",
"01931DB0-74F2-7559-95DB-1F0270A3D47C,01931DB0-74F2-7559-95DB-2677226C9034",
"01931DB0-74F2-7559-95DB-2677226C9034,01931DB0-74F2-7559-95DB-1F0270A3D47C",
"01931DB0-74F2-7559-95DB-1F0270A3D47C,01931DB0-74F3-7559-95DB-31EA7759815B",
"01931DB0-74F3-7559-95DB-31EA7759815B,01931DB0-74F2-7559-95DB-1F0270A3D47C",
"01931DB0-74F2-7559-95DB-1F0270A3D47C,01931DB0-74F9-7559-95DB-407DA28AEE51",
"01931DB0-74F9-7559-95DB-407DA28AEE51,01931DB0-74F2-7559-95DB-1F0270A3D47C",
"01931DB0-74F2-7559-95DB-1F0270A3D47C,01931DB0-74E3-7559-95DA-80D1FEAF373C",
"01931DB0-74E3-7559-95DA-80D1FEAF373C,01931DB0-74ED-7559-95DA-E4F55350A05B",
"01931DB0-74ED-7559-95DA-E4F55350A05B,01931DB0-74EF-7559-95DB-049FD754338D",
"01931DB0-74EF-7559-95DB-049FD754338D,01931DB0-74ED-7559-95DA-E4F55350A05B",
"01931DB0-74ED-7559-95DA-E4F55350A05B,01931DB0-74ED-7559-95DA-ECA8662C1911",
"01931DB0-74ED-7559-95DA-ECA8662C1911,01931DB0-74ED-7559-95DA-E4F55350A05B",
"01931DB0-74ED-7559-95DA-E4F55350A05B,01931DB0-74EF-7559-95DA-FA86986629D0",
"01931DB0-74EF-7559-95DA-FA86986629D0,01931DB0-74ED-7559-95DA-E4F55350A05B",
"01931DB0-74ED-7559-95DA-E4F55350A05B,01931DB0-74EE-7559-95DA-F0FC443965B4",
"01931DB0-74EE-7559-95DA-F0FC443965B4,01931DB0-74ED-7559-95DA-E4F55350A05B",
"01931DB0-74ED-7559-95DA-E4F55350A05B,01931DB0-74F0-7559-95DB-09F338644733",
"01931DB0-74F0-7559-95DB-09F338644733,01931DB0-74ED-7559-95DA-E4F55350A05B",
"01931DB0-74ED-7559-95DA-E4F55350A05B,01931DB0-74F1-7559-95DB-1562A770475D",
"01931DB0-74F1-7559-95DB-1562A770475D,01931DB0-74ED-7559-95DA-E4F55350A05B",
"01931DB0-74ED-7559-95DA-E4F55350A05B,01931DB0-74E3-7559-95DA-80D1FEAF373C",
"01931DB0-74E3-7559-95DA-80D1FEAF373C,01931DB0-74E4-7559-95DA-A44963B63145",
"01931DB0-74E4-7559-95DA-A44963B63145,01931DB0-74E3-7559-95DA-80D1FEAF373C",
"01931DB0-74E3-7559-95DA-80D1FEAF373C,01931DB0-740A-7559-95DA-7EF2C74E0AE0",
"01931DB0-740A-7559-95DA-7EF2C74E0AE0,01931DB0-74E4-7559-95DA-9ABB79CBF497",
"01931DB0-74E4-7559-95DA-9ABB79CBF497,01931DB0-740A-7559-95DA-7EF2C74E0AE0",
"01931DB0-740A-7559-95DA-7EF2C74E0AE0,01931DB0-74E3-7559-95DA-8FE08796BFCB",
"01931DB0-74E3-7559-95DA-8FE08796BFCB,01931DB0-740A-7559-95DA-7EF2C74E0AE0",
"01931DB0-740A-7559-95DA-7EF2C74E0AE0,01931DB0-74E4-7559-95DA-90A720DE4C41",
"01931DB0-74E4-7559-95DA-90A720DE4C41,01931DB0-740A-7559-95DA-7EF2C74E0AE0",
"01931DB0-740A-7559-95DA-7EF2C74E0AE0,4EE90560-4EE9-4888-B84C-30ABCEB86A95",
"4EE90560-4EE9-4888-B84C-30ABCEB86A95,01931DB0-740A-7559-95DA-7EF2C74E0AE0",
"4EE90560-4EE9-4888-B84C-30ABCEB86A95,E2D70457-4590-4F2E-B52C-6DCB42BA5E34",
"E2D70457-4590-4F2E-B52C-6DCB42BA5E34,4EE90560-4EE9-4888-B84C-30ABCEB86A95",
"E2D70457-4590-4F2E-B52C-6DCB42BA5E34,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,534119D6-E101-4CE5-8A07-7E52F27CF828",
"534119D6-E101-4CE5-8A07-7E52F27CF828,17896E2C-14B9-434F-801B-1D83D1F9BFD7",
"17896E2C-14B9-434F-801B-1D83D1F9BFD7,6C5D570E-60A3-4DE2-AFC9-783DF7F526B4",
"6C5D570E-60A3-4DE2-AFC9-783DF7F526B4,17896E2C-14B9-434F-801B-1D83D1F9BFD7",
"17896E2C-14B9-434F-801B-1D83D1F9BFD7,534119D6-E101-4CE5-8A07-7E52F27CF828",
"534119D6-E101-4CE5-8A07-7E52F27CF828,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,0F303099-00B0-4E91-AA77-7C6BA1285461",
"0F303099-00B0-4E91-AA77-7C6BA1285461,F2C9938C-774F-488B-AB56-AF8282AB92F8",
"F2C9938C-774F-488B-AB56-AF8282AB92F8,019297E6-78A0-799A-9000-53B69A77A01C",
"019297E6-78A0-799A-9000-53B69A77A01C,019297EA-56C7-7110-9D3C-5C8844D91A1B",
"019297EA-56C7-7110-9D3C-5C8844D91A1B,019297E6-78A0-799A-9000-53B69A77A01C",
"019297E6-78A0-799A-9000-53B69A77A01C,019297E6-9087-7DD8-B42B-408D3170CB8A",
"019297E6-9087-7DD8-B42B-408D3170CB8A,019297E6-78A0-799A-9000-53B69A77A01C",
"019297E6-78A0-799A-9000-53B69A77A01C,F2C9938C-774F-488B-AB56-AF8282AB92F8",
"F2C9938C-774F-488B-AB56-AF8282AB92F8,0F303099-00B0-4E91-AA77-7C6BA1285461",
"0F303099-00B0-4E91-AA77-7C6BA1285461,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,E2D70457-4590-4F2E-B52C-6DCB42BA5E34",
"38396247-4C98-483A-A153-8D03A7A4750E,9490C60F-EE91-459C-A4E5-292A396EC4A5",
"9490C60F-EE91-459C-A4E5-292A396EC4A5,4B1894F6-2ABD-414F-AF55-C51DBF5DA19B",
"4B1894F6-2ABD-414F-AF55-C51DBF5DA19B,0192A116-B2AC-7DDE-842E-862D0423F99F",
"0192A116-B2AC-7DDE-842E-862D0423F99F,0192A66D-869C-7AA2-9F90-5667DA230B2C",
"0192A66D-869C-7AA2-9F90-5667DA230B2C,0192A116-B2AC-7DDE-842E-862D0423F99F",
"0192A116-B2AC-7DDE-842E-862D0423F99F,0192A117-1274-755D-810D-F39F8B4A67C8",
"0192A117-1274-755D-810D-F39F8B4A67C8,0192A116-B2AC-7DDE-842E-862D0423F99F",
"0192A116-B2AC-7DDE-842E-862D0423F99F,4B1894F6-2ABD-414F-AF55-C51DBF5DA19B",
"4B1894F6-2ABD-414F-AF55-C51DBF5DA19B,9490C60F-EE91-459C-A4E5-292A396EC4A5",
"9490C60F-EE91-459C-A4E5-292A396EC4A5,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,E2607529-A2EA-4365-83A6-7ECBFA303177",
"E2607529-A2EA-4365-83A6-7ECBFA303177,8B3A4BD9-576A-4C76-A326-913A436EF5EE",
"8B3A4BD9-576A-4C76-A326-913A436EF5EE,0192B033-47BB-7CCA-8068-B4559E8E5356",
"0192B033-47BB-7CCA-8068-B4559E8E5356,0192B033-E471-7DD3-AB42-03727FCEDEF5",
"0192B033-E471-7DD3-AB42-03727FCEDEF5,0192B033-47BB-7CCA-8068-B4559E8E5356",
"0192B033-47BB-7CCA-8068-B4559E8E5356,0192B033-5C0E-7BB5-AEEE-E5BFBCBE4E15",
"0192B033-5C0E-7BB5-AEEE-E5BFBCBE4E15,0192B033-47BB-7CCA-8068-B4559E8E5356",
"0192B033-47BB-7CCA-8068-B4559E8E5356,8B3A4BD9-576A-4C76-A326-913A436EF5EE",
"8B3A4BD9-576A-4C76-A326-913A436EF5EE,E2607529-A2EA-4365-83A6-7ECBFA303177",
"E2607529-A2EA-4365-83A6-7ECBFA303177,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,158C943F-C350-4C39-ADEC-91A13748F4B8",
"158C943F-C350-4C39-ADEC-91A13748F4B8,6BFD89A6-6B3B-48F0-BC85-5ABEF08C2FEF",
"6BFD89A6-6B3B-48F0-BC85-5ABEF08C2FEF,01929C34-BC4B-7553-83B2-9237EB14100C",
"01929C34-BC4B-7553-83B2-9237EB14100C,01929C35-D73A-7443-B385-98D84C10FEEC",
"01929C35-D73A-7443-B385-98D84C10FEEC,01929C34-BC4B-7553-83B2-9237EB14100C",
"01929C34-BC4B-7553-83B2-9237EB14100C,01929C34-D492-7443-B22E-C181B452ABE5",
"01929C34-D492-7443-B22E-C181B452ABE5,01929C34-BC4B-7553-83B2-9237EB14100C",
"01929C34-BC4B-7553-83B2-9237EB14100C,6BFD89A6-6B3B-48F0-BC85-5ABEF08C2FEF",
"6BFD89A6-6B3B-48F0-BC85-5ABEF08C2FEF,158C943F-C350-4C39-ADEC-91A13748F4B8",
"158C943F-C350-4C39-ADEC-91A13748F4B8,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,1AFC7D34-7834-4DAE-9B36-8AB7D5F5B72D",
"1AFC7D34-7834-4DAE-9B36-8AB7D5F5B72D,A61A9749-F61C-4A8C-8672-519FB55D0954",
"A61A9749-F61C-4A8C-8672-519FB55D0954,0192AFC6-D376-7CC8-A910-84CF1E7D51C3",
"0192AFC6-D376-7CC8-A910-84CF1E7D51C3,0192B033-0F4A-722D-AA0B-4F6E866120FE",
"0192B033-0F4A-722D-AA0B-4F6E866120FE,0192AFC6-D376-7CC8-A910-84CF1E7D51C3",
"0192AFC6-D376-7CC8-A910-84CF1E7D51C3,0192AFC6-E7D9-7BB0-8445-1A350643E488",
"0192AFC6-E7D9-7BB0-8445-1A350643E488,0192AFC6-D376-7CC8-A910-84CF1E7D51C3",
"0192AFC6-D376-7CC8-A910-84CF1E7D51C3,A61A9749-F61C-4A8C-8672-519FB55D0954",
"A61A9749-F61C-4A8C-8672-519FB55D0954,1AFC7D34-7834-4DAE-9B36-8AB7D5F5B72D",
"1AFC7D34-7834-4DAE-9B36-8AB7D5F5B72D,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,8064DB85-A74B-4BF9-94ED-CF1B8BB7A627",
"8064DB85-A74B-4BF9-94ED-CF1B8BB7A627,84C84DA1-3DF9-4EE1-B4D6-D7C86C4320B3",
"84C84DA1-3DF9-4EE1-B4D6-D7C86C4320B3,0192AC17-47C7-755B-8154-87B4647B092F",
"0192AC17-47C7-755B-8154-87B4647B092F,0192AC1A-F647-7667-AB14-759DEB797082",
"0192AC1A-F647-7667-AB14-759DEB797082,0192AC17-47C7-755B-8154-87B4647B092F",
"0192AC17-47C7-755B-8154-87B4647B092F,84C84DA1-3DF9-4EE1-B4D6-D7C86C4320B3",
"84C84DA1-3DF9-4EE1-B4D6-D7C86C4320B3,8064DB85-A74B-4BF9-94ED-CF1B8BB7A627",
"8064DB85-A74B-4BF9-94ED-CF1B8BB7A627,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,A052F2BA-2310-4001-834B-FA1C7A0D62F3",
"A052F2BA-2310-4001-834B-FA1C7A0D62F3,8B192E17-2743-4048-A638-0375A3C13A49",
"8B192E17-2743-4048-A638-0375A3C13A49,50E7E02B-ABF3-4A42-B312-0F8B22DA4F45",
"50E7E02B-ABF3-4A42-B312-0F8B22DA4F45,1B78B596-928F-4732-8AA5-C2C25A2B1153",
"1B78B596-928F-4732-8AA5-C2C25A2B1153,50E7E02B-ABF3-4A42-B312-0F8B22DA4F45",
"50E7E02B-ABF3-4A42-B312-0F8B22DA4F45,E7BBA44C-EA34-4B31-96CA-20CCDA2B963A",
"E7BBA44C-EA34-4B31-96CA-20CCDA2B963A,50E7E02B-ABF3-4A42-B312-0F8B22DA4F45",
"50E7E02B-ABF3-4A42-B312-0F8B22DA4F45,8B192E17-2743-4048-A638-0375A3C13A49",
"8B192E17-2743-4048-A638-0375A3C13A49,A052F2BA-2310-4001-834B-FA1C7A0D62F3",
"A052F2BA-2310-4001-834B-FA1C7A0D62F3,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,B181595D-2C56-4C71-9E4F-D6A672E7A812",
"B181595D-2C56-4C71-9E4F-D6A672E7A812,9B81EB2D-2E26-4448-B557-C674C92A0CDF",
"9B81EB2D-2E26-4448-B557-C674C92A0CDF,01929627-D122-7BB3-8E28-4EF0E2A4BB5B",
"01929627-D122-7BB3-8E28-4EF0E2A4BB5B,019297DE-6BB2-7BBA-A655-3C02DAD3706A",
"019297DE-6BB2-7BBA-A655-3C02DAD3706A,01929627-D122-7BB3-8E28-4EF0E2A4BB5B",
"01929627-D122-7BB3-8E28-4EF0E2A4BB5B,01929627-F5FD-7779-A648-2CE9F4753945",
"01929627-F5FD-7779-A648-2CE9F4753945,01929627-D122-7BB3-8E28-4EF0E2A4BB5B",
"01929627-D122-7BB3-8E28-4EF0E2A4BB5B,9B81EB2D-2E26-4448-B557-C674C92A0CDF",
"9B81EB2D-2E26-4448-B557-C674C92A0CDF,B181595D-2C56-4C71-9E4F-D6A672E7A812",
"B181595D-2C56-4C71-9E4F-D6A672E7A812,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,B8807D91-4996-455C-BBA9-62A8865FD73D",
"B8807D91-4996-455C-BBA9-62A8865FD73D,8C75B35A-75FA-4F99-A367-F390908A3AD2",
"8C75B35A-75FA-4F99-A367-F390908A3AD2,0192966D-51A0-7BBD-94E0-E40757960251",
"0192966D-51A0-7BBD-94E0-E40757960251,0192966D-7337-7441-B339-CFB8297303FD",
"0192966D-7337-7441-B339-CFB8297303FD,0192966D-51A0-7BBD-94E0-E40757960251",
"0192966D-51A0-7BBD-94E0-E40757960251,0192966D-5FC2-7441-B338-664EC85B8835",
"0192966D-5FC2-7441-B338-664EC85B8835,0192966D-51A0-7BBD-94E0-E40757960251",
"0192966D-51A0-7BBD-94E0-E40757960251,8C75B35A-75FA-4F99-A367-F390908A3AD2",
"8C75B35A-75FA-4F99-A367-F390908A3AD2,B8807D91-4996-455C-BBA9-62A8865FD73D",
"B8807D91-4996-455C-BBA9-62A8865FD73D,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,BB70DE79-170D-4106-AAF8-C6B13D17DDE2",
"BB70DE79-170D-4106-AAF8-C6B13D17DDE2,C111E713-5419-42E2-ABC5-4D62E03C46A6",
"C111E713-5419-42E2-ABC5-4D62E03C46A6,019297DE-9994-7CC1-ACC0-A84D3211A8D4",
"019297DE-9994-7CC1-ACC0-A84D3211A8D4,019297E6-509B-7666-90AD-29D4241F316B",
"019297E6-509B-7666-90AD-29D4241F316B,019297DE-9994-7CC1-ACC0-A84D3211A8D4",
"019297DE-9994-7CC1-ACC0-A84D3211A8D4,019297DE-B077-7884-9B09-E3699C29FCF0",
"019297DE-B077-7884-9B09-E3699C29FCF0,019297DE-9994-7CC1-ACC0-A84D3211A8D4",
"019297DE-9994-7CC1-ACC0-A84D3211A8D4,C111E713-5419-42E2-ABC5-4D62E03C46A6",
"C111E713-5419-42E2-ABC5-4D62E03C46A6,BB70DE79-170D-4106-AAF8-C6B13D17DDE2",
"BB70DE79-170D-4106-AAF8-C6B13D17DDE2,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,F5BCAEC3-083E-4950-9B7F-3EC1128BE078",
"F5BCAEC3-083E-4950-9B7F-3EC1128BE078,B5CCB4CD-B172-4DF2-B5ED-926443695764",
"B5CCB4CD-B172-4DF2-B5ED-926443695764,019297EA-723C-7883-B812-CED706ABE7E8",
"019297EA-723C-7883-B812-CED706ABE7E8,01929818-55B2-7884-A456-A596A5338B90",
"01929818-55B2-7884-A456-A596A5338B90,019297EA-723C-7883-B812-CED706ABE7E8",
"019297EA-723C-7883-B812-CED706ABE7E8,019297EA-8919-7CC9-AB4A-DCD7E04AA4DC",
"019297EA-8919-7CC9-AB4A-DCD7E04AA4DC,019297EA-723C-7883-B812-CED706ABE7E8",
"019297EA-723C-7883-B812-CED706ABE7E8,B5CCB4CD-B172-4DF2-B5ED-926443695764",
"B5CCB4CD-B172-4DF2-B5ED-926443695764,F5BCAEC3-083E-4950-9B7F-3EC1128BE078",
"F5BCAEC3-083E-4950-9B7F-3EC1128BE078,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,FB9D1E2F-6B4A-42F2-8E90-4608273C6E33",
"FB9D1E2F-6B4A-42F2-8E90-4608273C6E33,9733685F-36FF-4116-8B26-9572ACE49709",
"9733685F-36FF-4116-8B26-9572ACE49709,0192A66D-A5EF-7667-A0BF-19F69C9FBD05",
"0192A66D-A5EF-7667-A0BF-19F69C9FBD05,0192AB35-D428-7EEF-BD96-9585C3ECF096",
"0192AB35-D428-7EEF-BD96-9585C3ECF096,0192A66D-A5EF-7667-A0BF-19F69C9FBD05",
"0192A66D-A5EF-7667-A0BF-19F69C9FBD05,0192A66E-0896-7775-9565-B07FD6F59833",
"0192A66E-0896-7775-9565-B07FD6F59833,0192A66D-A5EF-7667-A0BF-19F69C9FBD05",
"0192A66D-A5EF-7667-A0BF-19F69C9FBD05,9733685F-36FF-4116-8B26-9572ACE49709",
"9733685F-36FF-4116-8B26-9572ACE49709,FB9D1E2F-6B4A-42F2-8E90-4608273C6E33",
"FB9D1E2F-6B4A-42F2-8E90-4608273C6E33,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,FFDDE3CF-9327-4B48-BB2B-BF49AC7ECDE6",
"FFDDE3CF-9327-4B48-BB2B-BF49AC7ECDE6,56ABBD8A-6AF2-4E59-992A-5C3412204392",
"56ABBD8A-6AF2-4E59-992A-5C3412204392,0DA74394-3899-48F0-8073-D32ED2513BCF",
"0DA74394-3899-48F0-8073-D32ED2513BCF,373235FD-5272-4B4D-8C7B-C3DD88CB278C",
"373235FD-5272-4B4D-8C7B-C3DD88CB278C,0DA74394-3899-48F0-8073-D32ED2513BCF",
"0DA74394-3899-48F0-8073-D32ED2513BCF,4FAB5C49-8F96-4B16-BE29-09BF9DB3693C",
"4FAB5C49-8F96-4B16-BE29-09BF9DB3693C,0DA74394-3899-48F0-8073-D32ED2513BCF",
"0DA74394-3899-48F0-8073-D32ED2513BCF,56ABBD8A-6AF2-4E59-992A-5C3412204392",
"56ABBD8A-6AF2-4E59-992A-5C3412204392,FFDDE3CF-9327-4B48-BB2B-BF49AC7ECDE6",
"FFDDE3CF-9327-4B48-BB2B-BF49AC7ECDE6,38396247-4C98-483A-A153-8D03A7A4750E",
"38396247-4C98-483A-A153-8D03A7A4750E,E40FDFDB-3F73-493C-882F-42B72FB2059E",
"E40FDFDB-3F73-493C-882F-42B72FB2059E,38396247-4C98-483A-A153-8D03A7A4750E",
"E40FDFDB-3F73-493C-882F-42B72FB2059E,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,5A6A981D-3912-4316-81E2-2F8B01505BD6",
"5A6A981D-3912-4316-81E2-2F8B01505BD6,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,E642E406-1C9F-4813-A800-A7919D71CBE6",
"E642E406-1C9F-4813-A800-A7919D71CBE6,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,71AC0333-B64F-4DE7-BCB0-6C6705FCCC1F",
"71AC0333-B64F-4DE7-BCB0-6C6705FCCC1F,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,701DF69B-78CF-492C-BDA7-21BC81640089",
"701DF69B-78CF-492C-BDA7-21BC81640089,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,D4E84512-789A-455D-A70A-23DB1E8D12E9",
"D4E84512-789A-455D-A70A-23DB1E8D12E9,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,E13B7BD5-D7A0-4698-80C6-33C9EA6F4E92",
"E13B7BD5-D7A0-4698-80C6-33C9EA6F4E92,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,EDF6B24E-2D14-436C-8C75-A00B8DF8260E",
"EDF6B24E-2D14-436C-8C75-A00B8DF8260E,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,67E953FC-2305-47D0-ABC8-FB69AC998951",
"67E953FC-2305-47D0-ABC8-FB69AC998951,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,EB14BF06-3871-4358-B4E3-4F716D596C44",
"EB14BF06-3871-4358-B4E3-4F716D596C44,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,95FFDE75-2846-4914-8185-3159E5335012",
"95FFDE75-2846-4914-8185-3159E5335012,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,74D58710-4BE3-49D7-8235-DA778849D35D",
"74D58710-4BE3-49D7-8235-DA778849D35D,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,4B9C6200-94B3-40F2-A156-E8D871F40BFA",
"4B9C6200-94B3-40F2-A156-E8D871F40BFA,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,71A9E172-DE62-4421-B2BA-80C34D9A0E7E",
"71A9E172-DE62-4421-B2BA-80C34D9A0E7E,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,342008F3-F45F-4637-B3D6-73907E05FDA6",
"342008F3-F45F-4637-B3D6-73907E05FDA6,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,802FED9B-472E-44C9-9AA1-FAE92320320C",
"802FED9B-472E-44C9-9AA1-FAE92320320C,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,A078F932-85D2-4384-803C-E2F59A1806A2",
"A078F932-85D2-4384-803C-E2F59A1806A2,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,A078F932-85D2-4384-803C-E2F59A1806A2",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,1E3FA147-0FE4-4024-A7D0-2602178B4FE1",
"1E3FA147-0FE4-4024-A7D0-2602178B4FE1,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,2682C534-4E5E-4D21-AC6C-BC58684793D4",
"2682C534-4E5E-4D21-AC6C-BC58684793D4,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,3F9B57AA-E321-4A61-99C5-8A25A27846B3",
"3F9B57AA-E321-4A61-99C5-8A25A27846B3,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,4F84E10A-CB74-4901-9929-9C49319BE1CB",
"4F84E10A-CB74-4901-9929-9C49319BE1CB,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,5B053D71-218F-4B1F-96C2-8A3FEF68559F",
"5B053D71-218F-4B1F-96C2-8A3FEF68559F,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,5B3183B7-9D5B-412D-8AFD-01BE737A6582",
"5B3183B7-9D5B-412D-8AFD-01BE737A6582,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,68738E83-A19C-4A71-B780-DE556D72DE8B",
"68738E83-A19C-4A71-B780-DE556D72DE8B,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,6A55DD8C-077E-4FA5-A604-F8E6F34EFE4C",
"6A55DD8C-077E-4FA5-A604-F8E6F34EFE4C,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,73F5AAB4-023E-4A9D-8C7A-487C8686013A",
"73F5AAB4-023E-4A9D-8C7A-487C8686013A,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,A7B45520-918C-41A4-839D-558EBFCD9452",
"A7B45520-918C-41A4-839D-558EBFCD9452,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,D0291071-E99A-4B20-B501-1073CE90E1BB",
"D0291071-E99A-4B20-B501-1073CE90E1BB,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,D8B5FA32-BBFE-4FC3-8ED5-6310CDD33BF2",
"D8B5FA32-BBFE-4FC3-8ED5-6310CDD33BF2,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376,DD157CA5-0DC3-4481-BF3B-68A4EA901BD0",
"DD157CA5-0DC3-4481-BF3B-68A4EA901BD0,1E2136AE-940C-4A33-9A1D-4FABC4A5C376",
"A078F932-85D2-4384-803C-E2F59A1806A2,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,988A406E-1AAB-4520-8AEA-06116BEF1238",
"988A406E-1AAB-4520-8AEA-06116BEF1238,FE6B7B04-0323-48EE-8624-515F1A150DA9",
"FE6B7B04-0323-48EE-8624-515F1A150DA9,5B9860C3-A4D9-4ED0-AEDB-BF130C518A2A",
"5B9860C3-A4D9-4ED0-AEDB-BF130C518A2A,7CCE3C01-828A-423A-8525-90C9EE07A7A9",
"7CCE3C01-828A-423A-8525-90C9EE07A7A9,ADFA1193-B5C6-45BE-A5D9-4F527DA39836",
"ADFA1193-B5C6-45BE-A5D9-4F527DA39836,0192AFC5-772C-7661-87A8-E5CB2A4BA160",
"0192AFC5-772C-7661-87A8-E5CB2A4BA160,ADFA1193-B5C6-45BE-A5D9-4F527DA39836",
"ADFA1193-B5C6-45BE-A5D9-4F527DA39836,8ABC896A-3385-4B4A-B840-8CC7B5ACCE4C",
"8ABC896A-3385-4B4A-B840-8CC7B5ACCE4C,ADFA1193-B5C6-45BE-A5D9-4F527DA39836",
"ADFA1193-B5C6-45BE-A5D9-4F527DA39836,7CCE3C01-828A-423A-8525-90C9EE07A7A9",
"7CCE3C01-828A-423A-8525-90C9EE07A7A9,5B9860C3-A4D9-4ED0-AEDB-BF130C518A2A",
"5B9860C3-A4D9-4ED0-AEDB-BF130C518A2A,FE6B7B04-0323-48EE-8624-515F1A150DA9",
"FE6B7B04-0323-48EE-8624-515F1A150DA9,5DF7D242-8F38-484B-97EB-DD3C5FF25CBC",
"5DF7D242-8F38-484B-97EB-DD3C5FF25CBC,FE6B7B04-0323-48EE-8624-515F1A150DA9",
"FE6B7B04-0323-48EE-8624-515F1A150DA9,988A406E-1AAB-4520-8AEA-06116BEF1238",
"988A406E-1AAB-4520-8AEA-06116BEF1238,4B02FC63-1CF0-4FDB-8E8C-159F940C7F41",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41,E40FDFDB-3F73-493C-882F-42B72FB2059E"
],
"vertices": {
"01931DB0-740A-7559-95DA-7EF2C74E0AE0": "🏡",
"01931DB0-74E3-7559-95DA-80D1FEAF373C": "🏠",
"01931DB0-74FB-7559-95DB-4FA75F30D75A": "📜",
"01931DB0-74FF-7559-95DB-73756ECFE4C7": "🔧",
"01931DB0-74FD-7559-95DB-64189FD947FD": "🔧",
"01931DB0-74FB-7559-95DB-50FAEFFD3645": "🔧",
"01931DB0-74FE-7559-95DB-6A35863DA078": "🔧",
"01931DB0-74FD-7559-95DB-5CD74FAFB3DB": "🔧",
"01931DB0-74E6-7559-95DA-AA253D8BFDA9": "📜",
"01931DB0-74E8-7559-95DA-BD5840CD6513": "🔧",
"01931DB0-74E9-7559-95DA-C6F55FECC957": "🔧",
"01931DB0-74E7-7559-95DA-B1BB9F2A19C4": "🔧",
"01931DB0-74EB-7559-95DA-D124A6857FD8": "🔧",
"01931DB0-74EA-7559-95DA-CBB0568C00D7": "🔧",
"01931DB0-74EC-7559-95DA-DA4508B8C7F7": "⛺️",
"01931DB0-74F2-7559-95DB-1F0270A3D47C": "📜",
"01931DB0-74F3-7559-95DB-2CB3F4595B3A": "🔧",
"01931DB0-74F8-7559-95DB-392E2C80B05E": "🔧",
"01931DB0-74F2-7559-95DB-2677226C9034": "🔧",
"01931DB0-74F3-7559-95DB-31EA7759815B": "🔧",
"01931DB0-74F9-7559-95DB-407DA28AEE51": "🔧",
"01931DB0-74ED-7559-95DA-E4F55350A05B": "📜",
"01931DB0-74EF-7559-95DB-049FD754338D": "🔧",
"01931DB0-74ED-7559-95DA-ECA8662C1911": "🔧",
"01931DB0-74EF-7559-95DA-FA86986629D0": "🔧",
"01931DB0-74EE-7559-95DA-F0FC443965B4": "🔧",
"01931DB0-74F0-7559-95DB-09F338644733": "🔧",
"01931DB0-74F1-7559-95DB-1562A770475D": "⛺️",
"01931DB0-74E4-7559-95DA-A44963B63145": "🔧",
"01931DB0-74E4-7559-95DA-9ABB79CBF497": "⚙️",
"01931DB0-74E3-7559-95DA-8FE08796BFCB": "⚙️",
"01931DB0-74E4-7559-95DA-90A720DE4C41": "⚙️",
"4EE90560-4EE9-4888-B84C-30ABCEB86A95": "🔒",
"E2D70457-4590-4F2E-B52C-6DCB42BA5E34": "🛡️",
"38396247-4C98-483A-A153-8D03A7A4750E": "🏢",
"534119D6-E101-4CE5-8A07-7E52F27CF828": "🛡️",
"17896E2C-14B9-434F-801B-1D83D1F9BFD7": "🔒",
"6C5D570E-60A3-4DE2-AFC9-783DF7F526B4": "🏡",
"0F303099-00B0-4E91-AA77-7C6BA1285461": "🛡️",
"F2C9938C-774F-488B-AB56-AF8282AB92F8": "🔒",
"019297E6-78A0-799A-9000-53B69A77A01C": "🏡",
"019297EA-56C7-7110-9D3C-5C8844D91A1B": "🖼️",
"019297E6-9087-7DD8-B42B-408D3170CB8A": "📍",
"9490C60F-EE91-459C-A4E5-292A396EC4A5": "🛡️",
"4B1894F6-2ABD-414F-AF55-C51DBF5DA19B": "🔒",
"0192A116-B2AC-7DDE-842E-862D0423F99F": "🏡",
"0192A66D-869C-7AA2-9F90-5667DA230B2C": "🖼️",
"0192A117-1274-755D-810D-F39F8B4A67C8": "📍",
"E2607529-A2EA-4365-83A6-7ECBFA303177": "🛡️",
"8B3A4BD9-576A-4C76-A326-913A436EF5EE": "🔒",
"0192B033-47BB-7CCA-8068-B4559E8E5356": "🏡",
"0192B033-E471-7DD3-AB42-03727FCEDEF5": "🖼️",
"0192B033-5C0E-7BB5-AEEE-E5BFBCBE4E15": "📍",
"158C943F-C350-4C39-ADEC-91A13748F4B8": "🛡️",
"6BFD89A6-6B3B-48F0-BC85-5ABEF08C2FEF": "🔒",
"01929C34-BC4B-7553-83B2-9237EB14100C": "🏡",
"01929C35-D73A-7443-B385-98D84C10FEEC": "🖼️",
"01929C34-D492-7443-B22E-C181B452ABE5": "📍",
"1AFC7D34-7834-4DAE-9B36-8AB7D5F5B72D": "🛡️",
"A61A9749-F61C-4A8C-8672-519FB55D0954": "🔒",
"0192AFC6-D376-7CC8-A910-84CF1E7D51C3": "🏡",
"0192B033-0F4A-722D-AA0B-4F6E866120FE": "🖼️",
"0192AFC6-E7D9-7BB0-8445-1A350643E488": "📍",
"8064DB85-A74B-4BF9-94ED-CF1B8BB7A627": "🛡️",
"84C84DA1-3DF9-4EE1-B4D6-D7C86C4320B3": "🔒",
"0192AC17-47C7-755B-8154-87B4647B092F": "🏡",
"0192AC1A-F647-7667-AB14-759DEB797082": "📍",
"A052F2BA-2310-4001-834B-FA1C7A0D62F3": "🛡️",
"8B192E17-2743-4048-A638-0375A3C13A49": "🔒",
"50E7E02B-ABF3-4A42-B312-0F8B22DA4F45": "🏡",
"1B78B596-928F-4732-8AA5-C2C25A2B1153": "🖼️",
"E7BBA44C-EA34-4B31-96CA-20CCDA2B963A": "📍",
"B181595D-2C56-4C71-9E4F-D6A672E7A812": "🛡️",
"9B81EB2D-2E26-4448-B557-C674C92A0CDF": "🔒",
"01929627-D122-7BB3-8E28-4EF0E2A4BB5B": "🏡",
"019297DE-6BB2-7BBA-A655-3C02DAD3706A": "🖼️",
"01929627-F5FD-7779-A648-2CE9F4753945": "📍",
"B8807D91-4996-455C-BBA9-62A8865FD73D": "🛡️",
"8C75B35A-75FA-4F99-A367-F390908A3AD2": "🔒",
"0192966D-51A0-7BBD-94E0-E40757960251": "🏡",
"0192966D-7337-7441-B339-CFB8297303FD": "🖼️",
"0192966D-5FC2-7441-B338-664EC85B8835": "📍",
"BB70DE79-170D-4106-AAF8-C6B13D17DDE2": "🛡️",
"C111E713-5419-42E2-ABC5-4D62E03C46A6": "🔒",
"019297DE-9994-7CC1-ACC0-A84D3211A8D4": "🏡",
"019297E6-509B-7666-90AD-29D4241F316B": "🖼️",
"019297DE-B077-7884-9B09-E3699C29FCF0": "📍",
"F5BCAEC3-083E-4950-9B7F-3EC1128BE078": "🛡️",
"B5CCB4CD-B172-4DF2-B5ED-926443695764": "🔒",
"019297EA-723C-7883-B812-CED706ABE7E8": "🏡",
"01929818-55B2-7884-A456-A596A5338B90": "🖼️",
"019297EA-8919-7CC9-AB4A-DCD7E04AA4DC": "📍",
"FB9D1E2F-6B4A-42F2-8E90-4608273C6E33": "🛡️",
"9733685F-36FF-4116-8B26-9572ACE49709": "🔒",
"0192A66D-A5EF-7667-A0BF-19F69C9FBD05": "🏡",
"0192AB35-D428-7EEF-BD96-9585C3ECF096": "🖼️",
"0192A66E-0896-7775-9565-B07FD6F59833": "📍",
"FFDDE3CF-9327-4B48-BB2B-BF49AC7ECDE6": "🛡️",
"56ABBD8A-6AF2-4E59-992A-5C3412204392": "🔒",
"0DA74394-3899-48F0-8073-D32ED2513BCF": "🏡",
"373235FD-5272-4B4D-8C7B-C3DD88CB278C": "🖼️",
"4FAB5C49-8F96-4B16-BE29-09BF9DB3693C": "📍",
"E40FDFDB-3F73-493C-882F-42B72FB2059E": "🔗",
"4B02FC63-1CF0-4FDB-8E8C-159F940C7F41": "👤",
"5A6A981D-3912-4316-81E2-2F8B01505BD6": "🔄",
"E642E406-1C9F-4813-A800-A7919D71CBE6": "🔄",
"71AC0333-B64F-4DE7-BCB0-6C6705FCCC1F": "🔄",
"701DF69B-78CF-492C-BDA7-21BC81640089": "🔄",
"D4E84512-789A-455D-A70A-23DB1E8D12E9": "🔄",
"E13B7BD5-D7A0-4698-80C6-33C9EA6F4E92": "🔄",
"EDF6B24E-2D14-436C-8C75-A00B8DF8260E": "🔄",
"67E953FC-2305-47D0-ABC8-FB69AC998951": "🔄",
"EB14BF06-3871-4358-B4E3-4F716D596C44": "🔄",
"95FFDE75-2846-4914-8185-3159E5335012": "🔄",
"74D58710-4BE3-49D7-8235-DA778849D35D": "🔄",
"4B9C6200-94B3-40F2-A156-E8D871F40BFA": "🔄",
"71A9E172-DE62-4421-B2BA-80C34D9A0E7E": "🔄",
"342008F3-F45F-4637-B3D6-73907E05FDA6": "🔄",
"802FED9B-472E-44C9-9AA1-FAE92320320C": "🔄",
"A078F932-85D2-4384-803C-E2F59A1806A2": "🔗",
"1E2136AE-940C-4A33-9A1D-4FABC4A5C376": "🏢",
"1E3FA147-0FE4-4024-A7D0-2602178B4FE1": "🔗",
"2682C534-4E5E-4D21-AC6C-BC58684793D4": "🔗",
"3F9B57AA-E321-4A61-99C5-8A25A27846B3": "🔗",
"4F84E10A-CB74-4901-9929-9C49319BE1CB": "🔗",
"5B053D71-218F-4B1F-96C2-8A3FEF68559F": "🔗",
"5B3183B7-9D5B-412D-8AFD-01BE737A6582": "🔗",
"68738E83-A19C-4A71-B780-DE556D72DE8B": "🔗",
"6A55DD8C-077E-4FA5-A604-F8E6F34EFE4C": "🔗",
"73F5AAB4-023E-4A9D-8C7A-487C8686013A": "🔗",
"A7B45520-918C-41A4-839D-558EBFCD9452": "🔗",
"D0291071-E99A-4B20-B501-1073CE90E1BB": "🔗",
"D8B5FA32-BBFE-4FC3-8ED5-6310CDD33BF2": "🔗",
"DD157CA5-0DC3-4481-BF3B-68A4EA901BD0": "🔗",
"988A406E-1AAB-4520-8AEA-06116BEF1238": "🔗",
"FE6B7B04-0323-48EE-8624-515F1A150DA9": "🏢",
"5B9860C3-A4D9-4ED0-AEDB-BF130C518A2A": "🛡️",
"7CCE3C01-828A-423A-8525-90C9EE07A7A9": "🔒",
"ADFA1193-B5C6-45BE-A5D9-4F527DA39836": "🏡",
"0192AFC5-772C-7661-87A8-E5CB2A4BA160": "🖼️",
"8ABC896A-3385-4B4A-B840-8CC7B5ACCE4C": "📍",
"5DF7D242-8F38-484B-97EB-DD3C5FF25CBC": "🔗"
}
};
{
/* give each vertex a random position and edge array */
{
const vert_map = new Map();
for (const id in graph.vertices) {
vert_map.set(id, {
emoji: graph.vertices[id],
x: Math.random() * canvas.width,
y: Math.random() * canvas.height,
edges: [],
});
}
graph.vertices = vert_map;
}
{
const edge_pointers = [];
for (const edge_string of graph.edges) {
let [lhs_id, rhs_id] = edge_string.split(',');
const lhs = graph.vertices.get(lhs_id);
const rhs = graph.vertices.get(rhs_id);
/* yay for linked lists */
lhs.edges.push(rhs);
rhs.edges.push(lhs);
edge_pointers.push([lhs, rhs]);
}
graph.edges = edge_pointers;
}
}
let cam_x = 0;
let cam_y = 0;
let cam_scale = 4;
let mouse_down_cam_x = 0;
let mouse_down_cam_y = 0;
let mouse_down_x = 0;
let mouse_down_y = 0;
let mouse_x = 0;
let mouse_y = 0;
let mouse_down = false;
let mouse_click = false;
canvas.addEventListener('wheel', ev => {
cam_scale -= 0.0005*ev.deltaY*cam_scale;
cam_scale = Math.min(16.0, cam_scale);
cam_scale = Math.max( 0.2, cam_scale);
});
canvas.addEventListener('mousedown', ev => {
if (ev.button != 0) return;
mouse_down = true;
mouse_click = true;
mouse_down_x = ev.offsetX;
mouse_down_y = ev.offsetY;
mouse_down_cam_x = cam_x;
mouse_down_cam_y = cam_y;
});
canvas.addEventListener('mousemove', ev => {
mouse_x = ev.offsetX * window.devicePixelRatio;
mouse_y = ev.offsetY * window.devicePixelRatio;
if (!mouse_down) return;
const delta_x = ev.offsetX - mouse_down_x;
const delta_y = ev.offsetY - mouse_down_y;
cam_x = mouse_down_cam_x + delta_x * window.devicePixelRatio / cam_scale;
cam_y = mouse_down_cam_y + delta_y * window.devicePixelRatio / cam_scale;
});
window.addEventListener('mouseup', ev => {
if (ev.button != 0) return;
mouse_down = false;
});
requestAnimationFrame(function frame() {
requestAnimationFrame(frame);
ctx.save();
ctx.fillStyle = "white";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.translate( canvas.width*0.5, canvas.height*0.5);
ctx.scale(cam_scale, cam_scale);
ctx.translate(-canvas.width*0.5, -canvas.height*0.5);
ctx.translate(cam_x, cam_y);
for (let i = 0; i < 100; i++) for (const [_, v] of graph.vertices) {
/* we'll accumulate all the forces into this vector, to prevent instability */
let vdx = 0;
let vdy = 0;
/* edges attract */
for (const neighbor of v.edges) {
const dx = neighbor.x - v.x;
const dy = neighbor.y - v.y;
vdx += dx * 0.01;
vdy += dy * 0.01;
}
/* vertices repel (TODO: quadtree) */
for (const [_, other] of graph.vertices) {
if (other == v) continue;
const dx = v.x - other.x;
const dy = v.y - other.y;
const dist = (dx === 0 && dy === 0) ? 0 : Math.sqrt(dx*dx + dy*dy);
const force = Math.max(0, 50 - dist) * 0.01;
vdx += dx / dist * force;
vdy += dy / dist * force;
}
/* apply force */
v.x += vdx;
v.y += vdy;
}
ctx.fillStyle = "black";
for (const [lhs, rhs] of graph.edges) {
ctx.beginPath();
ctx.moveTo(lhs.x, lhs.y);
ctx.lineTo(rhs.x, rhs.y);
ctx.closePath();
ctx.stroke();
}
for (const [_, v] of graph.vertices) {
// ctx.fillRect(v.x - 5, v.y - 5, 10, 10);
ctx.font = "10px serif";
ctx.textBaseline = "middle";
ctx.fillText(v.emoji, v.x - 5, v.y);
}
ctx.restore();
});
</script>
</body>
</html>