Files
modeling-app/rust/kcl-lib/tests/kcl_samples/truss-structure/artifact_graph_flowchart.snap.md
Jonathan Tran aae34cf1e5 Deterministic artifact graph - bring back the clockwork universe (#7483)
* Change to use deterministic artifact graph

* Update output to use the new order

* Fix to clear everything when scene is cleared

* Fix lots

* Update artifact graph output for the last time

* Delete unused sorting code

* Remove unneeded cfg

* Fix to preserve top-level artifacts when there's an error

* Update output after error fix

* Add better doc comments

* Remove duplicate global operations

* Update comments

* Update ignored tests that were flaky

* Update graph for new samples after rebase

* Fix test assertion message
2025-06-16 17:55:24 +00:00

22 KiB

flowchart LR
  subgraph path2 [Path]
    2["Path<br>[604, 658, 0]"]
      %% [ProgramBodyItem { index: 12 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    3["Segment<br>[664, 710, 0]"]
      %% [ProgramBodyItem { index: 12 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    4["Segment<br>[716, 734, 0]"]
      %% [ProgramBodyItem { index: 12 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    5["Segment<br>[740, 806, 0]"]
      %% [ProgramBodyItem { index: 12 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    6["Segment<br>[812, 892, 0]"]
      %% [ProgramBodyItem { index: 12 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    7["Segment<br>[898, 905, 0]"]
      %% [ProgramBodyItem { index: 12 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
    8[Solid2d]
  end
  subgraph path9 [Path]
    9["Path<br>[990, 1064, 0]"]
      %% [ProgramBodyItem { index: 13 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    10["Segment<br>[1070, 1104, 0]"]
      %% [ProgramBodyItem { index: 13 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    11["Segment<br>[1110, 1158, 0]"]
      %% [ProgramBodyItem { index: 13 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    12["Segment<br>[1164, 1231, 0]"]
      %% [ProgramBodyItem { index: 13 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    13["Segment<br>[1237, 1245, 0]"]
      %% [ProgramBodyItem { index: 13 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    14[Solid2d]
  end
  subgraph path15 [Path]
    15["Path<br>[1260, 1335, 0]"]
      %% [ProgramBodyItem { index: 14 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    16["Segment<br>[1341, 1376, 0]"]
      %% [ProgramBodyItem { index: 14 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    17["Segment<br>[1382, 1430, 0]"]
      %% [ProgramBodyItem { index: 14 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    18["Segment<br>[1436, 1508, 0]"]
      %% [ProgramBodyItem { index: 14 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    19["Segment<br>[1514, 1522, 0]"]
      %% [ProgramBodyItem { index: 14 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    20[Solid2d]
  end
  subgraph path40 [Path]
    40["Path<br>[1797, 1850, 0]"]
      %% [ProgramBodyItem { index: 19 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    41["Segment<br>[1856, 1898, 0]"]
      %% [ProgramBodyItem { index: 19 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    42["Segment<br>[1904, 1950, 0]"]
      %% [ProgramBodyItem { index: 19 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    43["Segment<br>[1956, 2024, 0]"]
      %% [ProgramBodyItem { index: 19 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    44["Segment<br>[2030, 2038, 0]"]
      %% [ProgramBodyItem { index: 19 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    45[Solid2d]
  end
  subgraph path61 [Path]
    61["Path<br>[2107, 2161, 0]"]
      %% [ProgramBodyItem { index: 21 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    62["Segment<br>[2167, 2215, 0]"]
      %% [ProgramBodyItem { index: 21 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    63["Segment<br>[2221, 2272, 0]"]
      %% [ProgramBodyItem { index: 21 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    64["Segment<br>[2278, 2341, 0]"]
      %% [ProgramBodyItem { index: 21 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    65["Segment<br>[2347, 2355, 0]"]
      %% [ProgramBodyItem { index: 21 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    66[Solid2d]
  end
  subgraph path85 [Path]
    85["Path<br>[2615, 2668, 0]"]
      %% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    86["Segment<br>[2674, 2708, 0]"]
      %% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    87["Segment<br>[2714, 2746, 0]"]
      %% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    88["Segment<br>[2752, 2792, 0]"]
      %% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    89["Segment<br>[2798, 2806, 0]"]
      %% [ProgramBodyItem { index: 25 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    90[Solid2d]
  end
  subgraph path91 [Path]
    91["Path<br>[2824, 2876, 0]"]
      %% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    92["Segment<br>[2882, 2916, 0]"]
      %% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    93["Segment<br>[2922, 2957, 0]"]
      %% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    94["Segment<br>[2963, 3003, 0]"]
      %% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    95["Segment<br>[3009, 3017, 0]"]
      %% [ProgramBodyItem { index: 26 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    96[Solid2d]
  end
  subgraph path130 [Path]
    130["Path<br>[3454, 3520, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    131["Segment<br>[3526, 3591, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    132["Segment<br>[3597, 3631, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    133["Segment<br>[3637, 3707, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    134["Segment<br>[3713, 3783, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    135["Segment<br>[3789, 3822, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
    136["Segment<br>[3828, 3884, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
    137["Segment<br>[3890, 3897, 0]"]
      %% [ProgramBodyItem { index: 31 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
    138[Solid2d]
  end
  subgraph path161 [Path]
    161["Path<br>[4259, 4393, 0]"]
      %% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    162["Segment<br>[4399, 4426, 0]"]
      %% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    163["Segment<br>[4432, 4465, 0]"]
      %% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    164["Segment<br>[4471, 4497, 0]"]
      %% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    165["Segment<br>[4503, 4510, 0]"]
      %% [ProgramBodyItem { index: 34 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    166[Solid2d]
  end
  subgraph path167 [Path]
    167["Path<br>[4524, 4602, 0]"]
      %% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
    168["Segment<br>[4608, 4635, 0]"]
      %% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    169["Segment<br>[4641, 4678, 0]"]
      %% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    170["Segment<br>[4684, 4713, 0]"]
      %% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    171["Segment<br>[4719, 4727, 0]"]
      %% [ProgramBodyItem { index: 35 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    172[Solid2d]
  end
  1["Plane<br>[573, 590, 0]"]
    %% [ProgramBodyItem { index: 11 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  21["Sweep Extrusion<br>[1676, 1716, 0]"]
    %% [ProgramBodyItem { index: 17 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  22[Wall]
    %% face_code_ref=Missing NodePath
  23[Wall]
    %% face_code_ref=Missing NodePath
  24[Wall]
    %% face_code_ref=Missing NodePath
  25[Wall]
    %% face_code_ref=Missing NodePath
  26[Wall]
    %% face_code_ref=Missing NodePath
  27["Cap Start"]
    %% face_code_ref=Missing NodePath
  28["Cap End"]
    %% face_code_ref=Missing NodePath
  29["SweepEdge Opposite"]
  30["SweepEdge Adjacent"]
  31["SweepEdge Opposite"]
  32["SweepEdge Adjacent"]
  33["SweepEdge Opposite"]
  34["SweepEdge Adjacent"]
  35["SweepEdge Opposite"]
  36["SweepEdge Adjacent"]
  37["SweepEdge Opposite"]
  38["SweepEdge Adjacent"]
  39["Plane<br>[1754, 1782, 0]"]
    %% [ProgramBodyItem { index: 18 }, VariableDeclarationDeclaration, VariableDeclarationInit, CallKwUnlabeledArg]
  46["Sweep Extrusion<br>[2050, 2083, 0]"]
    %% [ProgramBodyItem { index: 20 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  47[Wall]
    %% face_code_ref=Missing NodePath
  48[Wall]
    %% face_code_ref=Missing NodePath
  49[Wall]
    %% face_code_ref=Missing NodePath
  50[Wall]
    %% face_code_ref=Missing NodePath
  51["Cap Start"]
    %% face_code_ref=Missing NodePath
  52["Cap End"]
    %% face_code_ref=Missing NodePath
  53["SweepEdge Opposite"]
  54["SweepEdge Adjacent"]
  55["SweepEdge Opposite"]
  56["SweepEdge Adjacent"]
  57["SweepEdge Opposite"]
  58["SweepEdge Adjacent"]
  59["SweepEdge Opposite"]
  60["SweepEdge Adjacent"]
  67["Sweep Extrusion<br>[2367, 2400, 0]"]
    %% [ProgramBodyItem { index: 22 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  68[Wall]
    %% face_code_ref=Missing NodePath
  69[Wall]
    %% face_code_ref=Missing NodePath
  70[Wall]
    %% face_code_ref=Missing NodePath
  71[Wall]
    %% face_code_ref=Missing NodePath
  72["Cap Start"]
    %% face_code_ref=Missing NodePath
  73["Cap End"]
    %% face_code_ref=Missing NodePath
  74["SweepEdge Opposite"]
  75["SweepEdge Adjacent"]
  76["SweepEdge Opposite"]
  77["SweepEdge Adjacent"]
  78["SweepEdge Opposite"]
  79["SweepEdge Adjacent"]
  80["SweepEdge Opposite"]
  81["SweepEdge Adjacent"]
  82["CompositeSolid Union<br>[2474, 2492, 0]"]
    %% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit, BinaryLeft]
  83["CompositeSolid Union<br>[2474, 2502, 0]"]
    %% [ProgramBodyItem { index: 23 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  84["Plane<br>[2569, 2597, 0]"]
    %% [ProgramBodyItem { index: 24 }, VariableDeclarationDeclaration, VariableDeclarationInit, CallKwUnlabeledArg]
  97["Sweep Extrusion<br>[3027, 3075, 0]"]
    %% [ProgramBodyItem { index: 27 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  98[Wall]
    %% face_code_ref=Missing NodePath
  99[Wall]
    %% face_code_ref=Missing NodePath
  100[Wall]
    %% face_code_ref=Missing NodePath
  101[Wall]
    %% face_code_ref=Missing NodePath
  102["Cap Start"]
    %% face_code_ref=Missing NodePath
  103["Cap End"]
    %% face_code_ref=Missing NodePath
  104["SweepEdge Opposite"]
  105["SweepEdge Adjacent"]
  106["SweepEdge Opposite"]
  107["SweepEdge Adjacent"]
  108["SweepEdge Opposite"]
  109["SweepEdge Adjacent"]
  110["SweepEdge Opposite"]
  111["SweepEdge Adjacent"]
  112["Sweep Extrusion<br>[3085, 3133, 0]"]
    %% [ProgramBodyItem { index: 28 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  113[Wall]
    %% face_code_ref=Missing NodePath
  114[Wall]
    %% face_code_ref=Missing NodePath
  115[Wall]
    %% face_code_ref=Missing NodePath
  116[Wall]
    %% face_code_ref=Missing NodePath
  117["Cap Start"]
    %% face_code_ref=Missing NodePath
  118["Cap End"]
    %% face_code_ref=Missing NodePath
  119["SweepEdge Opposite"]
  120["SweepEdge Adjacent"]
  121["SweepEdge Opposite"]
  122["SweepEdge Adjacent"]
  123["SweepEdge Opposite"]
  124["SweepEdge Adjacent"]
  125["SweepEdge Opposite"]
  126["SweepEdge Adjacent"]
  127["CompositeSolid Union<br>[3198, 3215, 0]"]
    %% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }, BinaryLeft]
  128["CompositeSolid Union<br>[3198, 3224, 0]"]
    %% [ProgramBodyItem { index: 29 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
  129["Plane<br>[3423, 3440, 0]"]
    %% [ProgramBodyItem { index: 30 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  139["Sweep Extrusion<br>[3977, 4023, 0]"]
    %% [ProgramBodyItem { index: 32 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
  140[Wall]
    %% face_code_ref=Missing NodePath
  141[Wall]
    %% face_code_ref=Missing NodePath
  142[Wall]
    %% face_code_ref=Missing NodePath
  143[Wall]
    %% face_code_ref=Missing NodePath
  144[Wall]
    %% face_code_ref=Missing NodePath
  145[Wall]
    %% face_code_ref=Missing NodePath
  146["Cap Start"]
    %% face_code_ref=Missing NodePath
  147["Cap End"]
    %% face_code_ref=Missing NodePath
  148["SweepEdge Opposite"]
  149["SweepEdge Adjacent"]
  150["SweepEdge Opposite"]
  151["SweepEdge Adjacent"]
  152["SweepEdge Opposite"]
  153["SweepEdge Adjacent"]
  154["SweepEdge Opposite"]
  155["SweepEdge Adjacent"]
  156["SweepEdge Opposite"]
  157["SweepEdge Adjacent"]
  158["SweepEdge Opposite"]
  159["SweepEdge Adjacent"]
  160["Plane<br>[4227, 4245, 0]"]
    %% [ProgramBodyItem { index: 33 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  173["Sweep Extrusion<br>[4789, 4848, 0]"]
    %% [ProgramBodyItem { index: 36 }, ExpressionStatementExpr, PipeBodyItem { index: 0 }]
  174[Wall]
    %% face_code_ref=Missing NodePath
  175[Wall]
    %% face_code_ref=Missing NodePath
  176[Wall]
    %% face_code_ref=Missing NodePath
  177[Wall]
    %% face_code_ref=Missing NodePath
  178["Cap Start"]
    %% face_code_ref=Missing NodePath
  179["Cap End"]
    %% face_code_ref=Missing NodePath
  180["SweepEdge Opposite"]
  181["SweepEdge Adjacent"]
  182["SweepEdge Opposite"]
  183["SweepEdge Adjacent"]
  184["SweepEdge Opposite"]
  185["SweepEdge Adjacent"]
  186["SweepEdge Opposite"]
  187["SweepEdge Adjacent"]
  188["Sweep Extrusion<br>[4789, 4848, 0]"]
    %% [ProgramBodyItem { index: 36 }, ExpressionStatementExpr, PipeBodyItem { index: 0 }]
  189[Wall]
    %% face_code_ref=Missing NodePath
  190[Wall]
    %% face_code_ref=Missing NodePath
  191[Wall]
    %% face_code_ref=Missing NodePath
  192[Wall]
    %% face_code_ref=Missing NodePath
  193["Cap Start"]
    %% face_code_ref=Missing NodePath
  194["Cap End"]
    %% face_code_ref=Missing NodePath
  195["SweepEdge Opposite"]
  196["SweepEdge Adjacent"]
  197["SweepEdge Opposite"]
  198["SweepEdge Adjacent"]
  199["SweepEdge Opposite"]
  200["SweepEdge Adjacent"]
  201["SweepEdge Opposite"]
  202["SweepEdge Adjacent"]
  203["StartSketchOnPlane<br>[1740, 1783, 0]"]
    %% [ProgramBodyItem { index: 18 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  204["StartSketchOnPlane<br>[2555, 2598, 0]"]
    %% [ProgramBodyItem { index: 24 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  1 --- 2
  1 --- 9
  1 --- 15
  2 --- 3
  2 --- 4
  2 --- 5
  2 --- 6
  2 --- 7
  2 --- 8
  2 ---- 21
  2 --- 82
  3 --- 26
  3 x--> 27
  3 --- 37
  3 --- 38
  4 --- 25
  4 x--> 27
  4 --- 35
  4 --- 36
  5 --- 24
  5 x--> 27
  5 --- 33
  5 --- 34
  6 --- 23
  6 x--> 27
  6 --- 31
  6 --- 32
  7 --- 22
  7 x--> 27
  7 --- 29
  7 --- 30
  9 --- 10
  9 --- 11
  9 --- 12
  9 --- 13
  9 --- 14
  15 --- 16
  15 --- 17
  15 --- 18
  15 --- 19
  15 --- 20
  21 --- 22
  21 --- 23
  21 --- 24
  21 --- 25
  21 --- 26
  21 --- 27
  21 --- 28
  21 --- 29
  21 --- 30
  21 --- 31
  21 --- 32
  21 --- 33
  21 --- 34
  21 --- 35
  21 --- 36
  21 --- 37
  21 --- 38
  22 --- 29
  22 --- 30
  32 <--x 22
  23 --- 31
  23 --- 32
  34 <--x 23
  24 --- 33
  24 --- 34
  36 <--x 24
  25 --- 35
  25 --- 36
  38 <--x 25
  30 <--x 26
  26 --- 37
  26 --- 38
  29 <--x 28
  31 <--x 28
  33 <--x 28
  35 <--x 28
  37 <--x 28
  39 --- 40
  39 --- 61
  39 <--x 203
  40 --- 41
  40 --- 42
  40 --- 43
  40 --- 44
  40 --- 45
  40 ---- 46
  40 --- 82
  41 --- 50
  41 x--> 51
  41 --- 59
  41 --- 60
  42 --- 49
  42 x--> 51
  42 --- 57
  42 --- 58
  43 --- 48
  43 x--> 51
  43 --- 55
  43 --- 56
  44 --- 47
  44 x--> 51
  44 --- 53
  44 --- 54
  46 --- 47
  46 --- 48
  46 --- 49
  46 --- 50
  46 --- 51
  46 --- 52
  46 --- 53
  46 --- 54
  46 --- 55
  46 --- 56
  46 --- 57
  46 --- 58
  46 --- 59
  46 --- 60
  47 --- 53
  47 --- 54
  56 <--x 47
  48 --- 55
  48 --- 56
  58 <--x 48
  49 --- 57
  49 --- 58
  60 <--x 49
  54 <--x 50
  50 --- 59
  50 --- 60
  53 <--x 52
  55 <--x 52
  57 <--x 52
  59 <--x 52
  61 --- 62
  61 --- 63
  61 --- 64
  61 --- 65
  61 --- 66
  61 ---- 67
  61 --- 83
  62 --- 68
  62 x--> 72
  62 --- 74
  62 --- 75
  63 --- 69
  63 x--> 72
  63 --- 76
  63 --- 77
  64 --- 70
  64 x--> 72
  64 --- 78
  64 --- 79
  65 --- 71
  65 x--> 72
  65 --- 80
  65 --- 81
  67 --- 68
  67 --- 69
  67 --- 70
  67 --- 71
  67 --- 72
  67 --- 73
  67 --- 74
  67 --- 75
  67 --- 76
  67 --- 77
  67 --- 78
  67 --- 79
  67 --- 80
  67 --- 81
  68 --- 74
  68 --- 75
  81 <--x 68
  75 <--x 69
  69 --- 76
  69 --- 77
  77 <--x 70
  70 --- 78
  70 --- 79
  79 <--x 71
  71 --- 80
  71 --- 81
  74 <--x 73
  76 <--x 73
  78 <--x 73
  80 <--x 73
  82 --- 83
  83 --- 127
  84 --- 85
  84 --- 91
  84 <--x 204
  85 --- 86
  85 --- 87
  85 --- 88
  85 --- 89
  85 --- 90
  85 ---- 97
  85 --- 127
  86 --- 98
  86 x--> 103
  86 --- 104
  86 --- 105
  87 --- 99
  87 x--> 103
  87 --- 106
  87 --- 107
  88 --- 100
  88 x--> 103
  88 --- 108
  88 --- 109
  89 --- 101
  89 x--> 103
  89 --- 110
  89 --- 111
  91 --- 92
  91 --- 93
  91 --- 94
  91 --- 95
  91 --- 96
  91 ---- 112
  91 --- 128
  92 --- 116
  92 x--> 118
  92 --- 125
  92 --- 126
  93 --- 115
  93 x--> 118
  93 --- 123
  93 --- 124
  94 --- 114
  94 x--> 118
  94 --- 121
  94 --- 122
  95 --- 113
  95 x--> 118
  95 --- 119
  95 --- 120
  97 --- 98
  97 --- 99
  97 --- 100
  97 --- 101
  97 --- 102
  97 --- 103
  97 --- 104
  97 --- 105
  97 --- 106
  97 --- 107
  97 --- 108
  97 --- 109
  97 --- 110
  97 --- 111
  98 --- 104
  98 --- 105
  111 <--x 98
  105 <--x 99
  99 --- 106
  99 --- 107
  107 <--x 100
  100 --- 108
  100 --- 109
  109 <--x 101
  101 --- 110
  101 --- 111
  104 <--x 102
  106 <--x 102
  108 <--x 102
  110 <--x 102
  112 --- 113
  112 --- 114
  112 --- 115
  112 --- 116
  112 --- 117
  112 --- 118
  112 --- 119
  112 --- 120
  112 --- 121
  112 --- 122
  112 --- 123
  112 --- 124
  112 --- 125
  112 --- 126
  113 --- 119
  113 --- 120
  122 <--x 113
  114 --- 121
  114 --- 122
  124 <--x 114
  115 --- 123
  115 --- 124
  126 <--x 115
  120 <--x 116
  116 --- 125
  116 --- 126
  119 <--x 117
  121 <--x 117
  123 <--x 117
  125 <--x 117
  127 --- 128
  129 --- 130
  130 --- 131
  130 --- 132
  130 --- 133
  130 --- 134
  130 --- 135
  130 --- 136
  130 --- 137
  130 --- 138
  130 ---- 139
  131 --- 145
  131 x--> 147
  131 --- 158
  131 --- 159
  132 --- 144
  132 x--> 147
  132 --- 156
  132 --- 157
  133 --- 143
  133 x--> 147
  133 --- 154
  133 --- 155
  134 --- 142
  134 x--> 147
  134 --- 152
  134 --- 153
  135 --- 141
  135 x--> 147
  135 --- 150
  135 --- 151
  136 --- 140
  136 x--> 147
  136 --- 148
  136 --- 149
  139 --- 140
  139 --- 141
  139 --- 142
  139 --- 143
  139 --- 144
  139 --- 145
  139 --- 146
  139 --- 147
  139 --- 148
  139 --- 149
  139 --- 150
  139 --- 151
  139 --- 152
  139 --- 153
  139 --- 154
  139 --- 155
  139 --- 156
  139 --- 157
  139 --- 158
  139 --- 159
  140 --- 148
  140 --- 149
  151 <--x 140
  141 --- 150
  141 --- 151
  153 <--x 141
  142 --- 152
  142 --- 153
  155 <--x 142
  143 --- 154
  143 --- 155
  157 <--x 143
  144 --- 156
  144 --- 157
  159 <--x 144
  149 <--x 145
  145 --- 158
  145 --- 159
  148 <--x 146
  150 <--x 146
  152 <--x 146
  154 <--x 146
  156 <--x 146
  158 <--x 146
  160 --- 161
  160 --- 167
  161 --- 162
  161 --- 163
  161 --- 164
  161 --- 165
  161 --- 166
  161 ---- 173
  162 --- 174
  162 x--> 178
  162 --- 180
  162 --- 181
  163 --- 175
  163 x--> 178
  163 --- 182
  163 --- 183
  164 --- 176
  164 x--> 178
  164 --- 184
  164 --- 185
  165 --- 177
  165 x--> 178
  165 --- 186
  165 --- 187
  167 --- 168
  167 --- 169
  167 --- 170
  167 --- 171
  167 --- 172
  167 ---- 188
  168 --- 192
  168 x--> 193
  168 --- 201
  168 --- 202
  169 --- 191
  169 x--> 193
  169 --- 199
  169 --- 200
  170 --- 190
  170 x--> 193
  170 --- 197
  170 --- 198
  171 --- 189
  171 x--> 193
  171 --- 195
  171 --- 196
  173 --- 174
  173 --- 175
  173 --- 176
  173 --- 177
  173 --- 178
  173 --- 179
  173 --- 180
  173 --- 181
  173 --- 182
  173 --- 183
  173 --- 184
  173 --- 185
  173 --- 186
  173 --- 187
  174 --- 180
  174 --- 181
  187 <--x 174
  181 <--x 175
  175 --- 182
  175 --- 183
  183 <--x 176
  176 --- 184
  176 --- 185
  185 <--x 177
  177 --- 186
  177 --- 187
  180 <--x 179
  182 <--x 179
  184 <--x 179
  186 <--x 179
  188 --- 189
  188 --- 190
  188 --- 191
  188 --- 192
  188 --- 193
  188 --- 194
  188 --- 195
  188 --- 196
  188 --- 197
  188 --- 198
  188 --- 199
  188 --- 200
  188 --- 201
  188 --- 202
  189 --- 195
  189 --- 196
  198 <--x 189
  190 --- 197
  190 --- 198
  200 <--x 190
  191 --- 199
  191 --- 200
  202 <--x 191
  196 <--x 192
  192 --- 201
  192 --- 202
  195 <--x 194
  197 <--x 194
  199 <--x 194
  201 <--x 194