Parallelize the artifact graph only time suck (#6482)

* parallelize the artifact only time suck

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

make wasm safe

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* artifact graph things

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
Jess Frazelle
2025-04-26 21:21:26 -07:00
committed by GitHub
parent d0b0365f75
commit 24465cf463
253 changed files with 73547 additions and 55353 deletions

View File

@ -207,6 +207,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -217,6 +226,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -249,19 +267,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]"
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
"edge_id": "[uuid]"
}
},
{
@ -292,15 +310,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -311,6 +320,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -330,24 +348,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -846,6 +846,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -856,6 +865,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -888,19 +906,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]"
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
"edge_id": "[uuid]"
}
},
{
@ -931,15 +949,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -950,6 +959,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -969,24 +987,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1034,6 +1034,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1044,6 +1053,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1076,19 +1094,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]"
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
"edge_id": "[uuid]"
}
},
{
@ -1119,15 +1137,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1138,6 +1147,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1157,24 +1175,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1727,6 +1727,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1737,6 +1746,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1769,19 +1787,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]"
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
"edge_id": "[uuid]"
}
},
{
@ -1816,19 +1834,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]"
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
"edge_id": "[uuid]"
}
},
{
@ -1859,15 +1877,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1878,6 +1887,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1897,24 +1915,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1947,6 +1947,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1957,6 +1966,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -1989,19 +2007,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"type": "solid3d_get_opposite_edge",
"object_id": "[uuid]",
"edge_id": "[uuid]"
"edge_id": "[uuid]",
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_opposite_edge",
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]",
"face_id": "[uuid]"
"edge_id": "[uuid]"
}
},
{
@ -2032,15 +2050,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -2051,6 +2060,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
@ -2061,24 +2079,6 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],

View File

@ -8,76 +8,76 @@ flowchart LR
6["Segment<br>[243, 250, 0]"]
7[Solid2d]
end
subgraph path16 [Path]
16["Path<br>[362, 405, 0]"]
17["Segment<br>[411, 435, 0]"]
18["Segment<br>[441, 466, 0]"]
subgraph path20 [Path]
20["Path<br>[362, 405, 0]"]
21["Segment<br>[411, 435, 0]"]
22["Segment<br>[441, 466, 0]"]
end
subgraph path19 [Path]
19["Path<br>[480, 522, 0]"]
20["Segment<br>[528, 593, 0]"]
21["Segment<br>[599, 667, 0]"]
22["Segment<br>[673, 761, 0]"]
23["Segment<br>[767, 823, 0]"]
24["Segment<br>[829, 836, 0]"]
25[Solid2d]
subgraph path23 [Path]
23["Path<br>[480, 522, 0]"]
24["Segment<br>[528, 593, 0]"]
25["Segment<br>[599, 667, 0]"]
26["Segment<br>[673, 761, 0]"]
27["Segment<br>[767, 823, 0]"]
28["Segment<br>[829, 836, 0]"]
29[Solid2d]
end
subgraph path26 [Path]
26["Path<br>[850, 892, 0]"]
27["Segment<br>[898, 918, 0]"]
28["Segment<br>[924, 950, 0]"]
29["Segment<br>[956, 1012, 0]"]
30["Segment<br>[1018, 1025, 0]"]
31[Solid2d]
subgraph path30 [Path]
30["Path<br>[850, 892, 0]"]
31["Segment<br>[898, 918, 0]"]
32["Segment<br>[924, 950, 0]"]
33["Segment<br>[956, 1012, 0]"]
34["Segment<br>[1018, 1025, 0]"]
35[Solid2d]
end
subgraph path32 [Path]
32["Path<br>[1039, 1094, 0]"]
33["Segment<br>[1039, 1094, 0]"]
34[Solid2d]
subgraph path36 [Path]
36["Path<br>[1039, 1094, 0]"]
37["Segment<br>[1039, 1094, 0]"]
38[Solid2d]
end
subgraph path35 [Path]
35["Path<br>[1108, 1150, 0]"]
36["Segment<br>[1156, 1180, 0]"]
37["Segment<br>[1186, 1211, 0]"]
38["Segment<br>[1217, 1273, 0]"]
39["Segment<br>[1279, 1286, 0]"]
40[Solid2d]
subgraph path39 [Path]
39["Path<br>[1108, 1150, 0]"]
40["Segment<br>[1156, 1180, 0]"]
41["Segment<br>[1186, 1211, 0]"]
42["Segment<br>[1217, 1273, 0]"]
43["Segment<br>[1279, 1286, 0]"]
44[Solid2d]
end
subgraph path52 [Path]
52["Path<br>[1456, 1497, 0]"]
53["Segment<br>[1503, 1527, 0]"]
54["Segment<br>[1533, 1558, 0]"]
subgraph path59 [Path]
59["Path<br>[1456, 1497, 0]"]
60["Segment<br>[1503, 1527, 0]"]
61["Segment<br>[1533, 1558, 0]"]
end
subgraph path55 [Path]
55["Path<br>[1572, 1614, 0]"]
56["Segment<br>[1620, 1644, 0]"]
57["Segment<br>[1650, 1675, 0]"]
58["Segment<br>[1681, 1737, 0]"]
59["Segment<br>[1743, 1750, 0]"]
60[Solid2d]
subgraph path62 [Path]
62["Path<br>[1572, 1614, 0]"]
63["Segment<br>[1620, 1644, 0]"]
64["Segment<br>[1650, 1675, 0]"]
65["Segment<br>[1681, 1737, 0]"]
66["Segment<br>[1743, 1750, 0]"]
67[Solid2d]
end
subgraph path61 [Path]
61["Path<br>[1764, 1806, 0]"]
62["Segment<br>[1812, 1835, 0]"]
63["Segment<br>[1841, 1866, 0]"]
64["Segment<br>[1872, 1928, 0]"]
65["Segment<br>[1934, 1941, 0]"]
66[Solid2d]
subgraph path68 [Path]
68["Path<br>[1764, 1806, 0]"]
69["Segment<br>[1812, 1835, 0]"]
70["Segment<br>[1841, 1866, 0]"]
71["Segment<br>[1872, 1928, 0]"]
72["Segment<br>[1934, 1941, 0]"]
73[Solid2d]
end
subgraph path67 [Path]
67["Path<br>[1955, 2011, 0]"]
68["Segment<br>[1955, 2011, 0]"]
69[Solid2d]
end
subgraph path70 [Path]
70["Path<br>[2025, 2068, 0]"]
71["Segment<br>[2074, 2139, 0]"]
72["Segment<br>[2145, 2213, 0]"]
73["Segment<br>[2219, 2307, 0]"]
74["Segment<br>[2313, 2369, 0]"]
75["Segment<br>[2375, 2382, 0]"]
subgraph path74 [Path]
74["Path<br>[1955, 2011, 0]"]
75["Segment<br>[1955, 2011, 0]"]
76[Solid2d]
end
subgraph path77 [Path]
77["Path<br>[2025, 2068, 0]"]
78["Segment<br>[2074, 2139, 0]"]
79["Segment<br>[2145, 2213, 0]"]
80["Segment<br>[2219, 2307, 0]"]
81["Segment<br>[2313, 2369, 0]"]
82["Segment<br>[2375, 2382, 0]"]
83[Solid2d]
end
1["Plane<br>[12, 29, 0]"]
8["Sweep Extrusion<br>[264, 296, 0]"]
9[Wall]
@ -86,37 +86,53 @@ flowchart LR
12["Cap Start"]
13["Cap End"]
14["SweepEdge Opposite"]
15["SweepEdge Opposite"]
41["SweepEdge Adjacent"]
42["Sweep RevolveAboutEdge<br>[1300, 1366, 0]"]
43["Sweep Extrusion<br>[1380, 1411, 0]"]
44[Wall]
45[Wall]
46[Wall]
47["Cap Start"]
48["Cap End"]
49["SweepEdge Opposite"]
50["SweepEdge Opposite"]
51["Plane<br>[1424, 1442, 0]"]
77["Sweep Extrusion<br>[2396, 2429, 0]"]
78[Wall]
79[Wall]
80[Wall]
81[Wall]
82["Cap Start"]
83["Cap End"]
84["SweepEdge Opposite"]
85["SweepEdge Opposite"]
86["SweepEdge Opposite"]
87["Sweep RevolveAboutEdge<br>[2443, 2488, 0]"]
15["SweepEdge Adjacent"]
16["SweepEdge Opposite"]
17["SweepEdge Adjacent"]
18["SweepEdge Opposite"]
19["SweepEdge Adjacent"]
45["Sweep RevolveAboutEdge<br>[1300, 1366, 0]"]
46["Sweep Extrusion<br>[1380, 1411, 0]"]
47[Wall]
48[Wall]
49[Wall]
50["Cap Start"]
51["Cap End"]
52["SweepEdge Opposite"]
53["SweepEdge Adjacent"]
54["SweepEdge Opposite"]
55["SweepEdge Adjacent"]
56["SweepEdge Opposite"]
57["SweepEdge Adjacent"]
58["Plane<br>[1424, 1442, 0]"]
84["Sweep Extrusion<br>[2396, 2429, 0]"]
85[Wall]
86[Wall]
87[Wall]
88[Wall]
89[Wall]
90[Wall]
91["Cap Start"]
92["Cap End"]
89["Cap Start"]
90["Cap End"]
91["SweepEdge Opposite"]
92["SweepEdge Adjacent"]
93["SweepEdge Opposite"]
94["SweepEdge Opposite"]
95["StartSketchOnFace<br>[309, 348, 0]"]
94["SweepEdge Adjacent"]
95["SweepEdge Opposite"]
96["SweepEdge Adjacent"]
97["SweepEdge Opposite"]
98["SweepEdge Adjacent"]
99["Sweep RevolveAboutEdge<br>[2443, 2488, 0]"]
100[Wall]
101[Wall]
102[Wall]
103["Cap Start"]
104["Cap End"]
105["SweepEdge Opposite"]
106["SweepEdge Adjacent"]
107["SweepEdge Opposite"]
108["SweepEdge Adjacent"]
109["SweepEdge Opposite"]
110["SweepEdge Adjacent"]
111["StartSketchOnFace<br>[309, 348, 0]"]
1 --- 2
2 --- 3
2 --- 4
@ -125,13 +141,16 @@ flowchart LR
2 ---- 8
2 --- 7
3 --- 11
3 --- 15
3 --- 18
3 --- 19
3 x--> 12
4 --- 10
4 --- 14
4 --- 41
4 --- 16
4 --- 17
4 x--> 12
5 --- 9
5 --- 14
5 --- 15
5 x--> 12
8 --- 9
8 --- 10
@ -140,130 +159,191 @@ flowchart LR
8 --- 13
8 --- 14
8 --- 15
8 --- 41
10 --- 16
10 --- 19
10 --- 26
10 --- 32
10 --- 35
14 <--x 10
8 --- 16
8 --- 17
8 --- 18
8 --- 19
10 --- 20
10 --- 23
10 --- 30
10 --- 36
10 --- 39
14 <--x 9
14 <--x 13
15 <--x 9
15 <--x 11
15 <--x 13
16 --- 17
16 --- 18
19 --- 20
19 --- 21
19 --- 22
19 --- 23
19 --- 24
19 --- 25
26 --- 27
26 --- 28
26 --- 29
26 --- 30
26 ---- 42
26 --- 31
32 --- 33
32 --- 34
35 --- 36
35 --- 37
35 --- 38
35 --- 39
35 ---- 43
35 --- 40
36 --- 46
36 --- 50
36 x--> 47
37 --- 45
37 --- 49
37 x--> 47
38 --- 44
38 x--> 47
41 <--x 9
41 <--x 10
43 --- 44
43 --- 45
43 --- 46
43 --- 47
43 --- 48
43 --- 49
43 --- 50
49 <--x 45
49 <--x 48
50 <--x 46
50 <--x 48
51 --- 52
51 --- 55
51 --- 61
51 --- 67
51 --- 70
52 --- 53
52 --- 54
55 --- 56
55 --- 57
55 --- 58
55 --- 59
55 ---- 87
55 --- 60
56 --- 88
56 x--> 91
57 --- 89
57 --- 93
57 x--> 91
58 --- 90
58 --- 94
58 x--> 91
61 --- 62
61 --- 63
61 --- 64
61 --- 65
61 --- 66
67 --- 68
67 --- 69
70 --- 71
70 --- 72
70 --- 73
70 --- 74
70 --- 75
70 ---- 77
70 --- 76
71 --- 81
71 --- 86
71 x--> 82
72 --- 80
72 --- 85
72 x--> 82
73 --- 79
73 --- 84
73 x--> 82
74 --- 78
74 x--> 82
16 <--x 10
16 <--x 13
17 <--x 9
17 <--x 10
18 <--x 11
18 <--x 13
19 <--x 10
19 <--x 11
20 --- 21
20 --- 22
23 --- 24
23 --- 25
23 --- 26
23 --- 27
23 --- 28
23 --- 29
30 --- 31
30 --- 32
30 --- 33
30 --- 34
30 ---- 45
30 --- 35
36 --- 37
36 --- 38
39 --- 40
39 --- 41
39 --- 42
39 --- 43
39 ---- 46
39 --- 44
40 --- 49
40 --- 56
40 --- 57
40 x--> 50
41 --- 48
41 --- 54
41 --- 55
41 x--> 50
42 --- 47
42 --- 52
42 --- 53
42 x--> 50
46 --- 47
46 --- 48
46 --- 49
46 --- 50
46 --- 51
46 --- 52
46 --- 53
46 --- 54
46 --- 55
46 --- 56
46 --- 57
52 <--x 47
52 <--x 51
53 <--x 47
53 <--x 49
54 <--x 48
54 <--x 51
55 <--x 47
55 <--x 48
56 <--x 49
56 <--x 51
57 <--x 48
57 <--x 49
58 --- 59
58 --- 62
58 --- 68
58 --- 74
58 --- 77
59 --- 60
59 --- 61
62 --- 63
62 --- 64
62 --- 65
62 --- 66
62 ---- 99
62 --- 67
63 --- 100
63 --- 105
63 --- 106
63 x--> 103
64 --- 101
64 --- 107
64 --- 108
64 x--> 103
65 --- 102
65 --- 109
65 --- 110
65 x--> 103
68 --- 69
68 --- 70
68 --- 71
68 --- 72
68 --- 73
74 --- 75
74 --- 76
77 --- 78
77 --- 79
77 --- 80
77 --- 81
77 --- 82
77 ---- 84
77 --- 83
77 --- 84
77 --- 85
77 --- 86
84 <--x 79
84 <--x 83
85 <--x 80
85 <--x 83
86 <--x 81
86 <--x 83
87 --- 88
87 --- 89
87 --- 90
87 --- 91
87 --- 92
87 --- 93
87 --- 94
93 <--x 89
93 <--x 92
94 <--x 90
94 <--x 92
10 <--x 95
78 --- 88
78 --- 97
78 --- 98
78 x--> 89
79 --- 87
79 --- 95
79 --- 96
79 x--> 89
80 --- 86
80 --- 93
80 --- 94
80 x--> 89
81 --- 85
81 --- 91
81 --- 92
81 x--> 89
84 --- 85
84 --- 86
84 --- 87
84 --- 88
84 --- 89
84 --- 90
84 --- 91
84 --- 92
84 --- 93
84 --- 94
84 --- 95
84 --- 96
84 --- 97
84 --- 98
91 <--x 85
91 <--x 90
92 <--x 85
92 <--x 88
93 <--x 86
93 <--x 90
94 <--x 85
94 <--x 86
95 <--x 87
95 <--x 90
96 <--x 86
96 <--x 87
97 <--x 88
97 <--x 90
98 <--x 87
98 <--x 88
99 --- 100
99 --- 101
99 --- 102
99 --- 103
99 --- 104
99 --- 105
99 --- 106
99 --- 107
99 --- 108
99 --- 109
99 --- 110
105 <--x 100
105 <--x 104
106 <--x 100
106 <--x 101
107 <--x 101
107 <--x 104
108 <--x 101
108 <--x 102
109 <--x 102
109 <--x 104
110 <--x 102
110 <--x 100
10 <--x 111
```