@tscircuit/schematic-trace-solver 0.0.148 → 0.0.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/.agents/skills/schematic-trace-visualization/SKILL.md +7 -2
  2. package/dist/index.d.ts +31 -2
  3. package/dist/index.js +127 -46
  4. package/lib/solvers/InlineNetLabelSolver/InlineNetLabelSolver.ts +115 -6
  5. package/lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver.ts +17 -1
  6. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +2 -0
  7. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/solvePortOnlyPin.ts +2 -0
  8. package/lib/types/InputProblem.ts +27 -1
  9. package/package.json +8 -1
  10. package/site/examples/example51.page.tsx +4 -0
  11. package/tests/assets/example51.json +5102 -0
  12. package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +751 -5
  13. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +660 -5
  14. package/tests/bug-reports/bug-report-20260707T020342Z/__snapshots__/bug-report-20260707T020342Z.snap.svg +44 -5
  15. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +394 -5
  16. package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +170 -5
  17. package/tests/bug-reports/bug-report-20260707T134722Z/__snapshots__/bug-report-20260707T134722Z.snap.svg +79 -5
  18. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +219 -5
  19. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +65 -5
  20. package/tests/bug-reports/bug-report-20260707T141421Z/__snapshots__/bug-report-20260707T141421Z.snap.svg +142 -5
  21. package/tests/bug-reports/bug-report-20260707T230831Z/__snapshots__/bug-report-20260707T230831Z.snap.svg +100 -5
  22. package/tests/bug-reports/bug-report-20260708T053736Z/__snapshots__/bug-report-20260708T053736Z.snap.svg +23 -5
  23. package/tests/bug-reports/bug-report-20260708T055430Z/__snapshots__/bug-report-20260708T055430Z.snap.svg +58 -5
  24. package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +86 -5
  25. package/tests/bug-reports/bug-report-20260716T144856Z/__snapshots__/bug-report-20260716T144856Z.snap.svg +226 -5
  26. package/tests/bug-reports/bug-report-20260717T022934Z/__snapshots__/bug-report-20260717T022934Z.snap.svg +191 -5
  27. package/tests/bug-reports/bug-report-20260717T031704Z/__snapshots__/bug-report-20260717T031704Z.snap.svg +30 -5
  28. package/tests/bug-reports/bug-report-20260717T042845Z/__snapshots__/bug-report-20260717T042845Z.snap.svg +37 -5
  29. package/tests/bug-reports/bug-report-20260721T221026Z/__snapshots__/bug-report-20260721T221026Z.snap.svg +580 -2
  30. package/tests/bug-reports/bug-report-20260724T175257Z/__snapshots__/bug-report-20260724T175257Z.snap.svg +44 -5
  31. package/tests/bug-reports/bug-report-20260728T144234Z/__snapshots__/bug-report-20260728T144234Z.snap.svg +107 -5
  32. package/tests/bug-reports/bug-report-20260728T225606Z/__snapshots__/bug-report-20260728T225606Z.snap.svg +114 -5
  33. package/tests/bug-reports/bug-report-20260730T061837Z/__snapshots__/bug-report-20260730T061837Z.snap.svg +121 -5
  34. package/tests/bug-reports/bug-report-20260731T052229Z/__snapshots__/bug-report-20260731T052229Z.snap.svg +51 -5
  35. package/tests/bug-reports/bug-report-20260804T095800Z/__snapshots__/bug-report-20260804T095800Z.snap.svg +212 -5
  36. package/tests/bug-reports/bug-report-20260804T171919Z/__snapshots__/bug-report-20260804T171919Z.snap.svg +569 -5
  37. package/tests/bug-reports/bug-report-20260804T225912Z/__snapshots__/bug-report-20260804T225912Z.snap.svg +37 -5
  38. package/tests/bug-reports/bug-report-20260805T061316Z/__snapshots__/bug-report-20260805T061316Z.snap.svg +289 -5
  39. package/tests/bug-reports/bug-report-20260806T061548Z/__snapshots__/bug-report-20260806T061548Z.snap.svg +289 -5
  40. package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +149 -5
  41. package/tests/bug-reports/bug-report-20260811T075142Z/__snapshots__/bug-report-20260811T075142Z.snap.svg +93 -5
  42. package/tests/bug-reports/bug-report-20260815T073240Z/__snapshots__/bug-report-20260815T073240Z.snap.svg +79 -5
  43. package/tests/bug-reports/bug-report-20260819T091818Z/__snapshots__/bug-report-20260819T091818Z.snap.svg +244 -2
  44. package/tests/examples/__snapshots__/example01.snap.svg +44 -5
  45. package/tests/examples/__snapshots__/example02.snap.svg +51 -5
  46. package/tests/examples/__snapshots__/example03.snap.svg +86 -5
  47. package/tests/examples/__snapshots__/example04.snap.svg +30 -5
  48. package/tests/examples/__snapshots__/example05.snap.svg +30 -5
  49. package/tests/examples/__snapshots__/example06.snap.svg +30 -5
  50. package/tests/examples/__snapshots__/example07.snap.svg +58 -5
  51. package/tests/examples/__snapshots__/example08.snap.svg +37 -5
  52. package/tests/examples/__snapshots__/example09.snap.svg +149 -5
  53. package/tests/examples/__snapshots__/example10.snap.svg +65 -5
  54. package/tests/examples/__snapshots__/example11.snap.svg +51 -5
  55. package/tests/examples/__snapshots__/example12.snap.svg +51 -5
  56. package/tests/examples/__snapshots__/example13.snap.svg +72 -5
  57. package/tests/examples/__snapshots__/example14.snap.svg +79 -5
  58. package/tests/examples/__snapshots__/example15.snap.svg +86 -5
  59. package/tests/examples/__snapshots__/example16.snap.svg +51 -5
  60. package/tests/examples/__snapshots__/example17.snap.svg +51 -5
  61. package/tests/examples/__snapshots__/example18.snap.svg +58 -5
  62. package/tests/examples/__snapshots__/example19.snap.svg +44 -5
  63. package/tests/examples/__snapshots__/example20.snap.svg +44 -5
  64. package/tests/examples/__snapshots__/example21.snap.svg +72 -5
  65. package/tests/examples/__snapshots__/example22.snap.svg +51 -5
  66. package/tests/examples/__snapshots__/example23.snap.svg +51 -5
  67. package/tests/examples/__snapshots__/example24.snap.svg +51 -5
  68. package/tests/examples/__snapshots__/example25.snap.svg +86 -5
  69. package/tests/examples/__snapshots__/example26.snap.svg +51 -5
  70. package/tests/examples/__snapshots__/example27.snap.svg +72 -5
  71. package/tests/examples/__snapshots__/example28.snap.svg +44 -5
  72. package/tests/examples/__snapshots__/example29.snap.svg +324 -5
  73. package/tests/examples/__snapshots__/example30.snap.svg +107 -5
  74. package/tests/examples/__snapshots__/example31.snap.svg +37 -5
  75. package/tests/examples/__snapshots__/example32.snap.svg +149 -5
  76. package/tests/examples/__snapshots__/example33.snap.svg +93 -5
  77. package/tests/examples/__snapshots__/example34.snap.svg +51 -5
  78. package/tests/examples/__snapshots__/example35.snap.svg +58 -5
  79. package/tests/examples/__snapshots__/example36.snap.svg +44 -5
  80. package/tests/examples/__snapshots__/example37.snap.svg +72 -5
  81. package/tests/examples/__snapshots__/example38.snap.svg +30 -5
  82. package/tests/examples/__snapshots__/example39.snap.svg +37 -5
  83. package/tests/examples/__snapshots__/example40.snap.svg +100 -5
  84. package/tests/examples/__snapshots__/example41.snap.svg +44 -5
  85. package/tests/examples/__snapshots__/example42.snap.svg +65 -5
  86. package/tests/examples/__snapshots__/example43.snap.svg +58 -5
  87. package/tests/examples/__snapshots__/example44.snap.svg +107 -5
  88. package/tests/examples/__snapshots__/example45.snap.svg +51 -5
  89. package/tests/examples/__snapshots__/example46.snap.svg +93 -5
  90. package/tests/examples/__snapshots__/example47.snap.svg +93 -5
  91. package/tests/examples/__snapshots__/example48.snap.svg +65 -5
  92. package/tests/examples/__snapshots__/example49.snap.svg +177 -5
  93. package/tests/examples/__snapshots__/example50.snap.svg +93 -5
  94. package/tests/examples/__snapshots__/example51.snap.svg +952 -0
  95. package/tests/examples/example51.test.ts +12 -0
  96. package/tests/fixtures/convertSolverOutputToCircuitJson.test.ts +219 -0
  97. package/tests/fixtures/convertSolverOutputToCircuitJson.ts +1058 -0
  98. package/tests/fixtures/matcher.ts +45 -8
  99. package/tests/repros/__snapshots__/board-1273-trace-overlap-cycle.snap.svg +762 -2
  100. package/tests/repros/__snapshots__/board-15984-same-net-junction.snap.svg +111 -2
  101. package/tests/repros/__snapshots__/board1096-usb-label-overlap-iteration.snap.svg +167 -2
  102. package/tests/repros/__snapshots__/bugreport-001-gnd-overlap.snap.svg +65 -5
  103. package/tests/repros/__snapshots__/manufacturePartNumber-text-box.snap.svg +30 -5
  104. package/tests/repros/__snapshots__/netlabel-connector-through-rail-label.snap.svg +79 -5
  105. package/tests/repros/__snapshots__/repro-atmega328p-fault-pullup.snap.svg +65 -5
  106. package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +149 -5
  107. package/tests/repros/__snapshots__/repro-board-589-regulator-section.snap.svg +55 -2
  108. package/tests/repros/__snapshots__/repro-board-648-esp12f-section.snap.svg +160 -2
  109. package/tests/repros/__snapshots__/repro-bq24074-battery-charger.snap.svg +135 -5
  110. package/tests/repros/__snapshots__/repro-bq25895-cross-net-trace-overlap.snap.svg +69 -2
  111. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +86 -5
  112. package/tests/repros/__snapshots__/repro-core-555-power-cross-net-overlap.snap.svg +44 -5
  113. package/tests/repros/__snapshots__/repro-core-subcircuit-missing-ground.snap.svg +44 -5
  114. package/tests/repros/__snapshots__/repro-core-tb67s579ftg-inline-label-routing.snap.svg +260 -0
  115. package/tests/repros/__snapshots__/repro-example35-minimize-trace-crossing.snap.svg +335 -2
  116. package/tests/repros/__snapshots__/repro-ground-label-on-lower-rail-end.snap.svg +48 -2
  117. package/tests/repros/__snapshots__/repro-ina237-current-monitor.snap.svg +149 -5
  118. package/tests/repros/__snapshots__/repro-missing-trace-netlabel.snap.svg +72 -5
  119. package/tests/repros/__snapshots__/repro-netlabel-collision-687.snap.svg +100 -5
  120. package/tests/repros/__snapshots__/repro-netlabel-overlap-trace.snap.svg +51 -5
  121. package/tests/repros/__snapshots__/repro-nrf52810-clock-routing.snap.svg +90 -2
  122. package/tests/repros/__snapshots__/repro-power-group-rail-labels.snap.svg +37 -5
  123. package/tests/repros/__snapshots__/repro-rectifier-trace-overlap.snap.svg +44 -5
  124. package/tests/repros/__snapshots__/repro-rp2040-gamepad-trace-alignment.snap.svg +237 -2
  125. package/tests/repros/__snapshots__/repro-rp2040-usb-cc2-ground-overlap.snap.svg +72 -5
  126. package/tests/repros/__snapshots__/repro-rp2040-v3v3-label-placement.snap.svg +51 -5
  127. package/tests/repros/__snapshots__/repro-rp2040-zero-crystal-fallback-netlabels.snap.svg +30 -5
  128. package/tests/repros/__snapshots__/repro-ti-power-output-section.snap.svg +79 -5
  129. package/tests/repros/__snapshots__/repro-tida010076-j4-ground-bus.snap.svg +27 -2
  130. package/tests/repros/__snapshots__/repro-tida010076-page02.snap.svg +1150 -5
  131. package/tests/repros/__snapshots__/repro-tps61222-trace-intersection.snap.svg +51 -5
  132. package/tests/repros/__snapshots__/repro-type-c-16pin-self-connection.snap.svg +30 -5
  133. package/tests/repros/__snapshots__/repro-type-c-16pin-to-resistor.snap.svg +30 -5
  134. package/tests/repros/__snapshots__/repro-type-c-vbus-led-ground-label.snap.svg +44 -5
  135. package/tests/repros/__snapshots__/repro-usb-power-vbus-label-detour.snap.svg +685 -2
  136. package/tests/repros/__snapshots__/repro-vcc-pin1-detour.snap.svg +27 -2
  137. package/tests/repros/__snapshots__/repro129-host-custom-symbol-passives.snap.svg +51 -5
  138. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +100 -5
  139. package/tests/repros/__snapshots__/repro161-power-section-autolayout.snap.svg +107 -5
  140. package/tests/repros/__snapshots__/repro47-endpoint-obstacle-detour.snap.svg +51 -5
  141. package/tests/repros/__snapshots__/repro48-555-timer-vcc-rail-label.snap.svg +104 -2
  142. package/tests/repros/__snapshots__/repro5-escape-padded-text-obstacles.snap.svg +30 -5
  143. package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +65 -5
  144. package/tests/repros/__snapshots__/repro84-stacked-gnd-label-orientation.snap.svg +27 -2
  145. package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +58 -5
  146. package/tests/repros/__snapshots__/trace-overlap-box-resistor.snap.svg +37 -5
  147. package/tests/repros/assets/repro-core-tb67s579ftg-inline-label-routing.input.json +900 -0
  148. package/tests/repros/repro-core-tb67s579ftg-inline-label-routing.test.ts +40 -0
  149. package/tests/solvers/InlineNetLabelSolver/__snapshots__/fallback-net-label-width.snap.svg +25 -7
  150. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-anchored-label-clearance.snap.svg +34 -2
  151. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-port-stub.snap.svg +23 -5
  152. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label-two-pin-net.snap.svg +23 -5
  153. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label01.snap.svg +23 -5
  154. package/tests/solvers/InlineNetLabelSolver/__snapshots__/inline-net-label02.snap.svg +23 -5
  155. package/tests/solvers/InlineNetLabelSolver/__snapshots__/terminal-stub-trace-clearance.snap.svg +71 -0
  156. package/tests/solvers/InlineNetLabelSolver/fallback-net-label-width.test.ts +10 -1
  157. package/tests/solvers/InlineNetLabelSolver/terminal-stub-trace-clearance.test.ts +102 -0
  158. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.snap.svg +23 -5
  159. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_repro47-short-opposing-pins.snap.svg +20 -2
  160. package/tests/solvers/TraceCleanupSolver/__snapshots__/TraceCleanupSolver.snap.svg +44 -5
  161. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/__snapshots__/TraceLabelOverlapAvoidanceSolver.snap.svg +79 -5
  162. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/MergedNetLabelObstacles.snap.svg +44 -5
  163. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/OverlapAvoidanceStepSolver.snap.svg +23 -5
  164. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/SingleOverlapSolver.snap.svg +30 -5
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.325,0.8 3.5,1.2" data-type="line" data-label="" points="108.9916603487491,243.04776345716448 445.98938589840793,200.59135708870355" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.6 3.5,0.8" data-type="line" data-label="" points="108.9916603487491,264.275966641395 445.98938589840793,243.04776345716448" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.4 3.5,0.4" data-type="line" data-label="" points="108.9916603487491,285.50416982562547 445.98938589840793,285.50416982562547" fill="none" stroke="hsl(40, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.2 3.5,0" data-type="line" data-label="" points="108.9916603487491,306.7323730098559 445.98938589840793,327.9605761940864" fill="none" stroke="hsl(240, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0 3.5,-0.4" data-type="line" data-label="" points="108.9916603487491,327.9605761940864 445.98938589840793,370.41698256254733" fill="none" stroke="hsl(88, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.2 4.5,1" data-type="line" data-label="" points="108.9916603487491,349.1887793783169 552.1304018195603,221.819560272934" fill="none" stroke="hsl(288, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.4 4.5,0.6" data-type="line" data-label="" points="108.9916603487491,370.41698256254733 552.1304018195603,264.275966641395" fill="none" stroke="hsl(128, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.6 4.5,0.2" data-type="line" data-label="" points="108.9916603487491,391.6451857467778 552.1304018195603,306.7323730098559" fill="none" stroke="hsl(152, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.8 4.5,-0.2" data-type="line" data-label="" points="108.9916603487491,412.8733889310083 552.1304018195603,349.1887793783169" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.8 1.9125,0.8 1.9125,1.2 3.5,1.2" data-type="line" data-label="" points="108.9916603487491,243.04776345716448 277.4905231235785,243.04776345716448 277.4905231235785,200.59135708870355 445.98938589840793,200.59135708870355" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0.6 3.3,0.6 3.3,0.8 3.5,0.8" data-type="line" data-label="" points="108.9916603487491,264.275966641395 424.7611827141774,264.275966641395 424.7611827141774,243.04776345716448 445.98938589840793,243.04776345716448" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0.4 3.5,0.4" data-type="line" data-label="" points="108.9916603487491,285.50416982562547 445.98938589840793,285.50416982562547" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0.2 3.3,0.2 3.3,0 3.5,0" data-type="line" data-label="" points="108.9916603487491,306.7323730098559 424.7611827141774,306.7323730098559 424.7611827141774,327.9605761940864 445.98938589840793,327.9605761940864" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0 1.9125,0 1.9125,-0.4 3.5,-0.4" data-type="line" data-label="" points="108.9916603487491,327.9605761940864 277.4905231235785,327.9605761940864 277.4905231235785,370.41698256254733 445.98938589840793,370.41698256254733" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.8 4.7,-0.8 4.7,-0.2 4.5,-0.2" data-type="line" data-label="" points="108.9916603487491,412.8733889310083 573.3586050037908,412.8733889310083 573.3586050037908,349.1887793783169 552.1304018195603,349.1887793783169" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="J2" data-x="0" data-y="0" x="40.00000000000003" y="232.43366186504926" width="68.99166034874906" height="191.05382865807428" fill="hsl(184, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009421428571428572"/></g><g><rect data-type="rect" data-label="U1" data-x="4" data-y="0.4" x="445.9893858984079" y="179.3631539044731" width="106.14101592115242" height="212.28203184230475" fill="hsl(164, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009421428571428572"/></g><g><rect data-type="rect" data-label="netId: J2.pin1 to U1.pin1
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.325,0.8 3.5,1.2" data-type="line" data-label="" points="108.9916603487491,243.04776345716448 445.98938589840793,200.59135708870355" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.6 3.5,0.8" data-type="line" data-label="" points="108.9916603487491,264.275966641395 445.98938589840793,243.04776345716448" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.4 3.5,0.4" data-type="line" data-label="" points="108.9916603487491,285.50416982562547 445.98938589840793,285.50416982562547" fill="none" stroke="hsl(40, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.2 3.5,0" data-type="line" data-label="" points="108.9916603487491,306.7323730098559 445.98938589840793,327.9605761940864" fill="none" stroke="hsl(240, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0 3.5,-0.4" data-type="line" data-label="" points="108.9916603487491,327.9605761940864 445.98938589840793,370.41698256254733" fill="none" stroke="hsl(88, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.2 4.5,1" data-type="line" data-label="" points="108.9916603487491,349.1887793783169 552.1304018195603,221.819560272934" fill="none" stroke="hsl(288, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.4 4.5,0.6" data-type="line" data-label="" points="108.9916603487491,370.41698256254733 552.1304018195603,264.275966641395" fill="none" stroke="hsl(128, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.6 4.5,0.2" data-type="line" data-label="" points="108.9916603487491,391.6451857467778 552.1304018195603,306.7323730098559" fill="none" stroke="hsl(152, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.8 4.5,-0.2" data-type="line" data-label="" points="108.9916603487491,412.8733889310083 552.1304018195603,349.1887793783169" fill="none" stroke="hsl(0, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="0.325,0.8 1.9125,0.8 1.9125,1.2 3.5,1.2" data-type="line" data-label="" points="108.9916603487491,243.04776345716448 277.4905231235785,243.04776345716448 277.4905231235785,200.59135708870355 445.98938589840793,200.59135708870355" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0.6 3.3,0.6 3.3,0.8 3.5,0.8" data-type="line" data-label="" points="108.9916603487491,264.275966641395 424.7611827141774,264.275966641395 424.7611827141774,243.04776345716448 445.98938589840793,243.04776345716448" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0.4 3.5,0.4" data-type="line" data-label="" points="108.9916603487491,285.50416982562547 445.98938589840793,285.50416982562547" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0.2 3.3,0.2 3.3,0 3.5,0" data-type="line" data-label="" points="108.9916603487491,306.7323730098559 424.7611827141774,306.7323730098559 424.7611827141774,327.9605761940864 445.98938589840793,327.9605761940864" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,-0.8 4.7,-0.8 4.7,-0.2 4.5,-0.2" data-type="line" data-label="" points="108.9916603487491,412.8733889310083 573.3586050037908,412.8733889310083 573.3586050037908,349.1887793783169 552.1304018195603,349.1887793783169" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.325,0 1.9125,0 1.9125,-0.4 3.5,-0.4" data-type="line" data-label="" points="108.9916603487491,327.9605761940864 277.4905231235785,327.9605761940864 277.4905231235785,370.41698256254733 445.98938589840793,370.41698256254733" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="J2" data-x="0" data-y="0" x="40.00000000000003" y="232.43366186504926" width="68.99166034874906" height="191.05382865807428" fill="hsl(184, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009421428571428572"/></g><g><rect data-type="rect" data-label="U1" data-x="4" data-y="0.4" x="445.9893858984079" y="179.3631539044731" width="106.14101592115242" height="212.28203184230475" fill="hsl(164, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009421428571428572"/></g><g><rect data-type="rect" data-label="netId: J2.pin1 to U1.pin1
2
4
  globalConnNetId: connectivity_net0" data-x="1.1187500000000001" data-y="1.0250000000000001" x="182.62699014404856" y="195.2843062926459" width="21.228203184230495" height="47.7634571645186" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009421428571428572"/></g><g><rect data-type="rect" data-label="netId: J2.pin2 to U1.pin2
3
5
  globalConnNetId: connectivity_net1" data-x="3.0749999999999997" data-y="0.8" x="376.99772554965887" y="232.43366186504926" width="47.76345716451851" height="21.228203184230466" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009421428571428572"/></g><g><rect data-type="rect" data-label="netId: J2.pin4 to U1.pin4
4
6
  globalConnNetId: connectivity_net3" data-x="3.0749999999999997" data-y="0" x="376.99772554965887" y="317.3464746019712" width="47.76345716451851" height="21.228203184230438" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009421428571428572"/></g><g><rect data-type="rect" data-label="netId: J2.pin5 to U1.pin5
@@ -48,7 +50,7 @@ orientation: y-" data-x="2.5125" data-y="-0.8" cx="341.17513267627" cy="412.8733
48
50
  const h = svg.getElementById('crosshair-h');
49
51
  const v = svg.getElementById('crosshair-v');
50
52
  const coords = svg.getElementById('coordinates');
51
-
53
+
52
54
  crosshair.style.display = 'block';
53
55
  h.setAttribute('x1', '0');
54
56
  h.setAttribute('x2', '640');
@@ -67,13 +69,13 @@ orientation: y-" data-x="2.5125" data-y="-0.8" cx="341.17513267627" cy="412.8733
67
69
  // y' = (y - ty) / sy
68
70
  const sx = matrix.a;
69
71
  const sy = matrix.d;
70
- const tx = matrix.e;
72
+ const tx = matrix.e;
71
73
  const ty = matrix.f;
72
74
  const realPoint = {
73
75
  x: (x - tx) / sx,
74
76
  y: (y - ty) / sy // Flip y back since we used negative scale
75
77
  }
76
-
78
+
77
79
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
78
80
  coords.setAttribute('x', (x + 5).toString());
79
81
  coords.setAttribute('y', (y - 5).toString());
@@ -81,4 +83,97 @@ orientation: y-" data-x="2.5125" data-y="-0.8" cx="341.17513267627" cy="412.8733
81
83
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
82
84
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
83
85
  });
84
- ]]></script></svg>
86
+ ]]></script>
87
+ </g>
88
+ <g transform="translate(1216, 200)">
89
+ <style>
90
+ .boundary { fill: rgb(245, 241, 237); }
91
+ .schematic-boundary { fill: none; stroke: #fff; }
92
+ .component { fill: none; stroke: rgb(132, 0, 0); }
93
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
94
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
95
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
96
+ .pin-number { fill: rgb(169, 0, 0); }
97
+ .port-label { fill: rgb(0, 100, 100); }
98
+ .component-name { fill: rgb(0, 100, 100); }
99
+
100
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 198.455361256775 262.07516949340004 L 511.9358448339875 262.07516949340004 L 511.9358448339875 183.08796103300003 L 825.4163284112 183.08796103300003" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="31.59488338416px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 198.455361256775 262.07516949340004 L 511.9358448339875 262.07516949340004 L 511.9358448339875 183.08796103300003 L 825.4163284112 183.08796103300003" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.94936042302px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 198.455361256775 301.56877372360003 L 785.9227241809999 301.56877372360003 L 785.9227241809999 262.07516949340004 L 825.4163284112 262.07516949340004" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="31.59488338416px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 198.455361256775 301.56877372360003 L 785.9227241809999 301.56877372360003 L 785.9227241809999 262.07516949340004 L 825.4163284112 262.07516949340004" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.94936042302px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 198.455361256775 341.0623779538 L 825.4163284112 341.0623779538" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="31.59488338416px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 198.455361256775 341.0623779538 L 825.4163284112 341.0623779538" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.94936042302px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 198.455361256775 380.555982184 L 785.9227241809999 380.555982184 L 785.9227241809999 420.0495864142 L 825.4163284112 420.0495864142" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="31.59488338416px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 198.455361256775 380.555982184 L 785.9227241809999 380.555982184 L 785.9227241809999 420.0495864142 L 825.4163284112 420.0495864142" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.94936042302px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"><path d="M 198.455361256775 578.024003335 L 1062.3779537924 578.024003335 L 1062.3779537924 459.5431906444 L 1022.8843495621999 459.5431906444" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="31.59488338416px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 198.455361256775 578.024003335 L 1062.3779537924 578.024003335 L 1062.3779537924 459.5431906444 L 1022.8843495621999 459.5431906444" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.94936042302px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_5__stack1"><path d="M 198.455361256775 420.0495864142 L 511.9358448339875 420.0495864142 L 511.9358448339875 499.0367948746 L 825.4163284112 499.0367948746" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="31.59488338416px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 198.455361256775 420.0495864142 L 511.9358448339875 420.0495864142 L 511.9358448339875 499.0367948746 L 825.4163284112 499.0367948746" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.94936042302px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_5__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="124.40485332515" y="242.32836737830002" width="19.74680211510001" height="355.4424380717999" stroke-width="3.94936042302px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="124.40485332515" y="242.32836737830002" width="19.74680211510001" height="355.4424380717999" fill="transparent"/><text class="sch-text" x="134.2782543827" y="420.0495864142" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="35.544243807179996px" transform="rotate(0, 134.2782543827, 420.0495864142)">J2</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="262.07516949340004" x2="198.455361256775" y2="262.07516949340004" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="194.506000833755" y="258.12580907038006" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="258.12580907038" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="301.56877372360003" x2="198.455361256775" y2="301.56877372360003" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><rect x="194.506000833755" y="297.61941330058005" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="297.61941330058005" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="341.0623779538" x2="198.455361256775" y2="341.0623779538" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="194.506000833755" y="337.11301753078004" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="337.11301753078" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="380.555982184" x2="198.455361256775" y2="380.555982184" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="194.506000833755" y="376.60662176098003" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="376.60662176098003" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="420.0495864142" x2="198.455361256775" y2="420.0495864142" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><rect x="194.506000833755" y="416.10022599118" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="416.10022599118" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="459.5431906444" x2="194.506000833755" y2="459.5431906444" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="198.455361256775" cy="459.5431906444" r="3.94936042302" stroke-width="3.94936042302px"/><rect x="194.506000833755" y="455.59383022138" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="455.59383022138" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="499.0367948746" x2="194.506000833755" y2="499.0367948746" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="198.455361256775" cy="499.0367948746" r="3.94936042302" stroke-width="3.94936042302px"/><rect x="194.506000833755" y="495.08743445158" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="495.08743445158" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">7</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="538.5303991048" x2="194.506000833755" y2="538.5303991048" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_7__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="198.455361256775" cy="538.5303991048" r="3.94936042302" stroke-width="3.94936042302px"/><rect x="194.506000833755" y="534.58103868178" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="534.58103868178" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">8</text><line class="component-pin sch-component-pin sch-port-line" x1="144.15165544025" y1="578.024003335" x2="198.455361256775" y2="578.024003335" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_0_8__stack1"><rect x="194.506000833755" y="574.0746429119799" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="171.30350834851248" y="574.0746429119799" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">9</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component chip sch-component-body" x="904.4035368716" y="143.59435680280006" width="39.493604230199935" height="394.936042302" stroke-width="3.94936042302px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="904.4035368716" y="143.59435680280006" width="39.493604230199935" height="394.936042302" fill="transparent"/><text class="sch-text" x="924.1503389866999" y="341.0623779538" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="35.544243807179996px" transform="rotate(0, 924.1503389866999, 341.0623779538)">U1</text><line class="component-pin sch-component-pin sch-port-line" x1="904.4035368716" y1="183.08796103300003" x2="825.4163284112" y2="183.08796103300003" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_0__stack1"><rect x="821.4669679881799" y="179.13860060998002" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="864.9099326413999" y="179.13860060998002" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="904.4035368716" y1="262.07516949340004" x2="825.4163284112" y2="262.07516949340004" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_1__stack1"><rect x="821.4669679881799" y="258.12580907038006" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="864.9099326413999" y="258.12580907038" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="904.4035368716" y1="341.0623779538" x2="825.4163284112" y2="341.0623779538" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_2__stack1"><rect x="821.4669679881799" y="337.11301753078004" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="864.9099326413999" y="337.11301753078" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="904.4035368716" y1="420.0495864142" x2="825.4163284112" y2="420.0495864142" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_3__stack1"><rect x="821.4669679881799" y="416.10022599118" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="864.9099326413999" y="416.10022599118" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="904.4035368716" y1="499.0367948746" x2="825.4163284112" y2="499.0367948746" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_4__stack1"><rect x="821.4669679881799" y="495.08743445158" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="864.9099326413999" y="495.08743445158" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="943.8971411017999" y1="222.58156526320002" x2="1018.93498913918" y2="222.58156526320002" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_5__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1022.8843495621999" cy="222.58156526320002" r="3.94936042302" stroke-width="3.94936042302px"/><rect x="1018.9349891391798" y="218.63220484018" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="983.3907453319999" y="218.63220484018" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="943.8971411017999" y1="301.56877372360003" x2="1018.93498913918" y2="301.56877372360003" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1022.8843495621999" cy="301.56877372360003" r="3.94936042302" stroke-width="3.94936042302px"/><rect x="1018.9349891391798" y="297.61941330058005" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="983.3907453319999" y="297.61941330058005" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">7</text><line class="component-pin sch-component-pin sch-port-line" x1="943.8971411017999" y1="380.555982184" x2="1018.93498913918" y2="380.555982184" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_7__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="1022.8843495621999" cy="380.555982184" r="3.94936042302" stroke-width="3.94936042302px"/><rect x="1018.9349891391798" y="376.60662176098003" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="983.3907453319999" y="376.60662176098003" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">8</text><line class="component-pin sch-component-pin sch-port-line" x1="943.8971411017999" y1="459.5431906444" x2="1022.8843495621999" y2="459.5431906444" stroke-width="3.94936042302px"/><g class="sch-port" data-schematic-port-id="source_port_1_8__stack1"><rect x="1018.9349891391798" y="455.59383022138" width="7.89872084604" height="7.89872084604" opacity="0"/></g><text class="pin-number sch-pin-number" x="983.3907453319999" y="455.59383022138" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="29.620203172649997px" transform="">9</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="198.455361256775" cy="262.07516949340004" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="198.455361256775" cy="301.56877372360003" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="198.455361256775" cy="341.0623779538" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="198.455361256775" cy="380.555982184" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="198.455361256775" cy="420.0495864142" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="198.455361256775" cy="459.5431906444" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="198.455361256775" cy="499.0367948746" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_7__stack1"><circle cx="198.455361256775" cy="538.5303991048" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_8__stack1"><circle cx="198.455361256775" cy="578.024003335" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="825.4163284112" cy="183.08796103300003" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="825.4163284112" cy="262.07516949340004" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_2__stack1"><circle cx="825.4163284112" cy="341.0623779538" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_3__stack1"><circle cx="825.4163284112" cy="420.0495864142" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_4__stack1"><circle cx="825.4163284112" cy="499.0367948746" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_5__stack1"><circle cx="1022.8843495621999" cy="222.58156526320002" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_6__stack1"><circle cx="1022.8843495621999" cy="301.56877372360003" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_7__stack1"><circle cx="1022.8843495621999" cy="380.555982184" r="7.89872084604" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_8__stack1"><circle cx="1022.8843495621999" cy="459.5431906444" r="7.89872084604" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
101
+ M 355.1956030453813,262.07516949340004
102
+ L 335.44880093028127,251.41189635124604
103
+ L 335.4488009302813,183.69352963119644
104
+ L 374.9424051604813,183.69352963119644
105
+ L 374.9424051604813,251.41189635124604
106
+ Z
107
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="355.1956030453813" y="244.30304758981003" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="rotate(-90 355.1956030453813 244.30304758981003)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
108
+ M 785.9227241809999,262.07516949340004
109
+ L 775.2594510388459,281.82197160850006
110
+ L 707.5410843187964,281.8219716085
111
+ L 707.5410843187964,242.32836737830002
112
+ L 775.2594510388459,242.32836737830004
113
+ Z
114
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="768.1506022774099" y="262.07516949340004" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
115
+ M 785.9227241809999,420.0495864142
116
+ L 775.2594510388459,439.79638852930003
117
+ L 707.5410843187964,439.7963885293
118
+ L 707.5410843187964,400.3027842991
119
+ L 775.2594510388459,400.3027842991
120
+ Z
121
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="768.1506022774099" y="420.0495864142" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
122
+ M 355.1956030453813,420.0495864142
123
+ L 374.9424051604813,430.71285955635403
124
+ L 374.9424051604813,498.4312262764036
125
+ L 335.4488009302813,498.4312262764036
126
+ L 335.44880093028127,430.71285955635403
127
+ Z
128
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="355.1956030453813" y="437.82170831779" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="rotate(90 355.1956030453813 437.82170831779)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
129
+ M 198.455361256775,459.5431906444
130
+ L 209.118634398929,439.7963885293
131
+ L 276.8370011189786,439.7963885293
132
+ L 276.8370011189786,479.2899927595
133
+ L 209.118634398929,479.2899927595
134
+ Z
135
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="216.227483160365" y="459.5431906444" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="
136
+ M 1022.8843495621999,222.58156526320002
137
+ L 1033.547622704354,202.83476314810002
138
+ L 1101.2659894244034,202.83476314810002
139
+ L 1101.2659894244034,242.32836737830002
140
+ L 1033.547622704354,242.32836737830002
141
+ Z
142
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="1040.6564714657898" y="222.58156526320002" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" d="
143
+ M 198.455361256775,499.0367948746
144
+ L 209.118634398929,479.28999275949997
145
+ L 276.8370011189786,479.28999275949997
146
+ L 276.8370011189786,518.7835969897
147
+ L 209.118634398929,518.7835969897
148
+ Z
149
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" x="216.227483160365" y="499.0367948746" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" d="
150
+ M 1022.8843495621999,301.56877372360003
151
+ L 1033.547622704354,281.8219716085
152
+ L 1101.2659894244034,281.8219716085
153
+ L 1101.2659894244034,321.31557583870006
154
+ L 1033.547622704354,321.31557583870006
155
+ Z
156
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" x="1040.6564714657898" y="301.56877372360003" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_8__stack1" d="
157
+ M 198.455361256775,538.5303991048
158
+ L 209.118634398929,518.7835969897001
159
+ L 276.8370011189786,518.7835969897001
160
+ L 276.8370011189786,558.2772012199
161
+ L 209.118634398929,558.2772012199
162
+ Z
163
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_8__stack1" x="216.227483160365" y="538.5303991048" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_9__stack1" d="
164
+ M 1022.8843495621999,380.555982184
165
+ L 1033.547622704354,360.8091800689
166
+ L 1101.2659894244034,360.8091800689
167
+ L 1101.2659894244034,400.30278429910004
168
+ L 1033.547622704354,400.30278429910004
169
+ Z
170
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_9__stack1" x="1040.6564714657898" y="380.555982184" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" d="
171
+ M 630.4166575245875,578.024003335
172
+ L 650.1634596396875,588.687276477154
173
+ L 650.1634596396875,656.4056431972035
174
+ L 610.6698554094876,656.4056431972035
175
+ L 610.6698554094876,588.687276477154
176
+ Z
177
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.94936042302px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_10__stack1" x="630.4166575245875" y="595.79612523859" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="35.544243807179996px" transform="rotate(90 630.4166575245875 595.79612523859)">XX</text>
178
+ </g>
179
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,331.9148936170213 171.06382978723423,331.9148936170212" fill="none" stroke="hsl(80, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,331.9148936170213 171.06382978723423,331.9148936170212" fill="none" stroke="hsl(88, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,331.9148936170213 171.06382978723423,331.9148936170212" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-6.5" data-y="-0.33" x="325.9574468085108" y="230.63829787234044" width="274.04255319148933" height="178.7234042553191" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008392857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-9.5" data-y="-0.4299999999999997" x="40.00000000000034" y="308.7457455319149" width="131.063829787234" height="46.33829617021263" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008392857142857145"/></g><g><rect data-type="rect" data-label="netId: SWCLK
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,331.9148936170213 171.06382978723423,331.9148936170212" fill="none" stroke="hsl(80, 100%, 50%, 0.8)" stroke-width="1px"/></g><g><polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,331.9148936170213 171.06382978723423,331.9148936170212" fill="none" stroke="hsl(88, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,331.9148936170213 171.06382978723423,331.9148936170212" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-6.5" data-y="-0.33" x="325.9574468085108" y="230.63829787234044" width="274.04255319148933" height="178.7234042553191" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008392857142857145"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="-9.5" data-y="-0.4299999999999997" x="40.00000000000034" y="308.7457455319149" width="131.063829787234" height="46.33829617021263" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008392857142857145"/></g><g><rect data-type="rect" data-label="netId: SWCLK
2
4
  globalConnNetId: connectivity_net1" data-x="-8.011" data-y="-0.22999999999999998" x="240.0510638297875" y="296.17021276595744" width="85.78723404255311" height="23.829787234042556" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008392857142857145"/></g><g><rect data-type="rect" data-label="netId: SWD
3
5
  globalConnNetId: connectivity_net0" data-x="-8.65" data-y="-0.18989999999999985" x="178.2127659574469" y="274.7114893617021" width="57.191489361702224" height="57.19148936170211" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008392857142857145"/></g><g><rect data-type="rect" data-label="netId: CLK
4
6
  globalConnNetId: connectivity_net2" data-x="-8.011" data-y="-0.6300000000000001" x="240.0510638297875" y="343.82978723404256" width="85.78723404255311" height="23.829787234042556" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008392857142857145"/></g><g><circle data-type="point" data-label="U3.24
@@ -19,7 +21,7 @@ orientation: x-" data-x="-7.65" data-y="-0.6300000000000001" cx="325.95744680851
19
21
  const h = svg.getElementById('crosshair-h');
20
22
  const v = svg.getElementById('crosshair-v');
21
23
  const coords = svg.getElementById('coordinates');
22
-
24
+
23
25
  crosshair.style.display = 'block';
24
26
  h.setAttribute('x1', '0');
25
27
  h.setAttribute('x2', '640');
@@ -38,13 +40,13 @@ orientation: x-" data-x="-7.65" data-y="-0.6300000000000001" cx="325.95744680851
38
40
  // y' = (y - ty) / sy
39
41
  const sx = matrix.a;
40
42
  const sy = matrix.d;
41
- const tx = matrix.e;
43
+ const tx = matrix.e;
42
44
  const ty = matrix.f;
43
45
  const realPoint = {
44
46
  x: (x - tx) / sx,
45
47
  y: (y - ty) / sy // Flip y back since we used negative scale
46
48
  }
47
-
49
+
48
50
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
49
51
  coords.setAttribute('x', (x + 5).toString());
50
52
  coords.setAttribute('y', (y - 5).toString());
@@ -52,4 +54,41 @@ orientation: x-" data-x="-7.65" data-y="-0.6300000000000001" cx="325.95744680851
52
54
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
53
55
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
54
56
  });
55
- ]]></script></svg>
57
+ ]]></script>
58
+ </g>
59
+ <g transform="translate(1216, 200)">
60
+ <style>
61
+ .boundary { fill: rgb(245, 241, 237); }
62
+ .schematic-boundary { fill: none; stroke: #fff; }
63
+ .component { fill: none; stroke: rgb(132, 0, 0); }
64
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
65
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
66
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
67
+ .pin-number { fill: rgb(169, 0, 0); }
68
+ .port-label { fill: rgb(0, 100, 100); }
69
+ .component-name { fill: rgb(0, 100, 100); }
70
+
71
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 640.7766990288649 423.30097087379704 L 337.8640776695952 423.3009708737969" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="37.281553398064005px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 640.7766990288649 423.30097087379704 L 337.8640776695952 423.3009708737969" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.660194174758001px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="733.9805825240248" y="225.242718446582" width="349.5145631068501" height="349.51456310685" stroke-width="4.660194174758001px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="733.9805825240248" y="225.242718446582" width="349.5145631068501" height="349.51456310685" fill="transparent"/><text class="sch-text" x="908.73786407745" y="400.000000000007" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="41.941747572822px" transform="rotate(0, 908.73786407745, 400.000000000007)">U3</text><line class="component-pin sch-component-pin sch-port-line" x1="733.9805825240248" y1="376.699029126217" x2="645.4368932036227" y2="376.699029126217" stroke-width="4.660194174758001px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="640.7766990288649" cy="376.699029126217" r="4.660194174758001" stroke-width="4.660194174758001px"/><rect x="636.1165048541069" y="372.038834951459" width="9.320388349516001" height="9.320388349516001" opacity="0"/></g><text class="pin-number sch-pin-number" x="687.3786407764449" y="372.03883495145897" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="34.951456310685px" transform="">24</text><line class="component-pin sch-component-pin sch-port-line" x1="733.9805825240248" y1="423.30097087379704" x2="640.7766990288649" y2="423.30097087379704" stroke-width="4.660194174758001px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><rect x="636.1165048541069" y="418.64077669903907" width="9.320388349516001" height="9.320388349516001" opacity="0"/></g><text class="pin-number sch-pin-number" x="687.3786407764449" y="418.64077669903907" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="34.951456310685px" transform="">25</text><line class="component-pin sch-component-pin sch-port-line" x1="733.9805825240248" y1="469.902912621377" x2="645.4368932036227" y2="469.902912621377" stroke-width="4.660194174758001px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="640.7766990288649" cy="469.902912621377" r="4.660194174758001" stroke-width="4.660194174758001px"/><rect x="636.1165048541069" y="465.24271844661905" width="9.320388349516001" height="9.320388349516001" opacity="0"/></g><text class="pin-number sch-pin-number" x="687.3786407764449" y="465.24271844661905" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="34.951456310685px" transform="">26</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component-overlay sch-component-overlay" x="81.55339805790462" y="389.1347572815586" width="256.3106796116904" height="68.33242718447661" fill="transparent"/><path class="sch-component-symbol-path" d="M 81.55339805790462 423.3009708737969 L 124.28038834917338 423.3009708737969" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.660194174758001px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 295.13708737832616 423.3009708737969 L 337.86407766959496 423.3009708737969" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.660194174758001px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 124.28038834917338 389.1347572815586 L 295.13708737832616 389.1347572815586 L 295.13708737832616 457.46718446603523 L 124.28038834917338 457.46718446603523 L 124.28038834917338 389.1347572815586" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.660194174758001px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="209.70873786374977" y="354.95145631067953" stroke="rgb(245, 241, 237)" stroke-width="4.660194174758001px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="41.941747572822px">R5</text><text class="sch-component-text" x="209.70873786374977" y="491.6504854369143" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="41.941747572822px"></text><circle class="component-pin sch-component-pin" cx="81.55339805790462" cy="423.3009708737969" r="4.660194174758001px" stroke-width="4.660194174758001px" fill="none" stroke="rgb(132, 0, 0)"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="640.7766990288649" cy="376.699029126217" r="9.320388349516001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="640.7766990288649" cy="423.30097087379704" r="9.320388349516001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="640.7766990288649" cy="469.902912621377" r="9.320388349516001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="139.8058252423798" cy="423.3009708737969" r="9.320388349516001" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="396.11650485406994" cy="423.3009708737969" r="9.320388349516001" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
72
+ M 640.7766990288649,376.699029126217
73
+ L 628.1941747570182,400.000000000007
74
+ L 466.1747572812651,400.000000000007
75
+ L 466.1747572812651,353.39805825242695
76
+ L 628.1941747570182,353.398058252427
77
+ Z
78
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="4.660194174758001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="619.8058252424539" y="376.699029126217" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="41.941747572822px" transform="">XXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
79
+ M 407.7669902909647,423.3009708737969
80
+ L 384.4660194171747,410.71844660195035
81
+ L 384.4660194171747,303.44077669902117
82
+ L 431.0679611647547,303.44077669902117
83
+ L 431.0679611647547,410.71844660195035
84
+ Z
85
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="4.660194174758001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="407.7669902909647" y="402.3300970873859" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="41.941747572822px" transform="rotate(-90 407.7669902909647 402.3300970873859)">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
86
+ M 640.7766990288649,469.902912621377
87
+ L 628.1941747570182,493.203883495167
88
+ L 466.1747572812651,493.203883495167
89
+ L 466.1747572812651,446.601941747587
90
+ L 628.1941747570182,446.60194174758703
91
+ Z
92
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="4.660194174758001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="619.8058252424539" y="469.902912621377" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="41.941747572822px" transform="">XXXXX</text>
93
+ </g>
94
+ </svg>
@@ -1,4 +1,6 @@
1
- <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="2.6,-0.8499999999999999 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,384.0421052631579" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.75,-2.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-1.4 3.75,-2.4" data-type="line" data-label="" points="574.7368421052631,384.0421052631579 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,0.10000000000000009 2.6500000000000004,-1.4" data-type="line" data-label="" points="477.8947368421052,257.7263157894737 482.1052631578947,384.0421052631579" fill="none" stroke="hsl(273, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.09999999999999987 2.6500000000000004,-2.4" data-type="line" data-label="" points="477.8947368421052,274.5684210526316 482.1052631578947,468.25263157894733" fill="none" stroke="hsl(274, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-2.4 3.95,-2.4 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="574.7368421052631,468.25263157894733 591.578947368421,468.25263157894733 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.95,-0.8499999999999999 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 591.578947368421,337.7263157894737 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,0.10000000000000009 2.61,0.10000000000000009 2.61,-1.2 2.435,-1.2 2.435,-1.4 2.6500000000000004,-1.4" data-type="line" data-label="" points="477.8947368421052,257.7263157894737 478.7368421052631,257.7263157894737 478.7368421052631,367.2 463.99999999999994,367.2 463.99999999999994,384.0421052631579 482.1052631578947,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,-0.09999999999999987 2.6400000000000006,-0.09999999999999987 2.6400000000000006,-1.25 2.4650000000000007,-1.25 2.4650000000000007,-2.4 2.6500000000000004,-2.4" data-type="line" data-label="" points="477.8947368421052,274.5684210526316 481.2631578947369,274.5684210526316 481.2631578947369,371.41052631578947 466.5263157894737,371.41052631578947 466.5263157894737,468.25263157894733 482.1052631578947,468.25263157894733" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,0.8499999999999999 2.701,0.8499999999999999 2.701,1.001" data-type="line" data-label="" points="477.8947368421052,194.5684210526316 486.4,194.5684210526316 486.4,181.8526315789474" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_16" data-x="0" data-y="0" x="40" y="181.93684210526317" width="437.8947368421052" height="168.42105263157896" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="schematic_component_17" data-x="3.2" data-y="-1.4" x="482.10526315789474" y="351.24586526315795" width="92.63157894736844" height="65.59247999999991" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="schematic_component_18" data-x="3.2" data-y="-2.4" x="482.10526315789474" y="435.45639157894743" width="92.63157894736844" height="65.59247999999985" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: VBUS
1
+ <svg width="2416" height="1200" viewBox="0 0 2416 1200" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on the left and Circuit JSON schematic on the right">
2
+ <g transform="translate(0, 0) scale(1.875, 1.875) translate(0, 0)">
3
+ <rect width="100%" height="100%" fill="white"/><g><polyline data-points="2.6,-0.8499999999999999 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,384.0421052631579" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.75,-2.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-1.4 3.75,-2.4" data-type="line" data-label="" points="574.7368421052631,384.0421052631579 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,0.10000000000000009 2.6500000000000004,-1.4" data-type="line" data-label="" points="477.8947368421052,257.7263157894737 482.1052631578947,384.0421052631579" fill="none" stroke="hsl(273, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.09999999999999987 2.6500000000000004,-2.4" data-type="line" data-label="" points="477.8947368421052,274.5684210526316 482.1052631578947,468.25263157894733" fill="none" stroke="hsl(274, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-2.4 3.95,-2.4 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="574.7368421052631,468.25263157894733 591.578947368421,468.25263157894733 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.95,-0.8499999999999999 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 591.578947368421,337.7263157894737 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,0.10000000000000009 2.61,0.10000000000000009 2.61,-1.2 2.435,-1.2 2.435,-1.4 2.6500000000000004,-1.4" data-type="line" data-label="" points="477.8947368421052,257.7263157894737 478.7368421052631,257.7263157894737 478.7368421052631,367.2 463.99999999999994,367.2 463.99999999999994,384.0421052631579 482.1052631578947,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,-0.09999999999999987 2.6400000000000006,-0.09999999999999987 2.6400000000000006,-1.25 2.4650000000000007,-1.25 2.4650000000000007,-2.4 2.6500000000000004,-2.4" data-type="line" data-label="" points="477.8947368421052,274.5684210526316 481.2631578947369,274.5684210526316 481.2631578947369,371.41052631578947 466.5263157894737,371.41052631578947 466.5263157894737,468.25263157894733 482.1052631578947,468.25263157894733" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,0.8499999999999999 2.701,0.8499999999999999 2.701,1.001" data-type="line" data-label="" points="477.8947368421052,194.5684210526316 486.4,194.5684210526316 486.4,181.8526315789474" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_16" data-x="0" data-y="0" x="40" y="181.93684210526317" width="437.8947368421052" height="168.42105263157896" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="schematic_component_17" data-x="3.2" data-y="-1.4" x="482.10526315789474" y="351.24586526315795" width="92.63157894736844" height="65.59247999999991" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="schematic_component_18" data-x="3.2" data-y="-2.4" x="482.10526315789474" y="435.45639157894743" width="92.63157894736844" height="65.59247999999985" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: VBUS
2
4
  globalConnNetId: connectivity_net3" data-x="2.701" data-y="1.301" x="477.978947368421" y="131.3263157894737" width="16.84210526315792" height="50.5263157894737" fill="#ef444466" stroke="#ef4444" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: D_PLUS
3
5
  globalConnNetId: connectivity_net2" data-x="3.021" data-y="0.6499999999999999" x="477.978947368421" y="202.98947368421057" width="70.73684210526312" height="16.84210526315789" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: D_MINUS
4
6
  globalConnNetId: connectivity_net1" data-x="3.081" data-y="0.44999999999999996" x="477.97894736842096" y="219.83157894736843" width="80.8421052631578" height="16.84210526315789" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: CC1
@@ -32,7 +34,7 @@ orientation: y-" data-x="3.95" data-y="-2.4" cx="591.578947368421" cy="468.25263
32
34
  const h = svg.getElementById('crosshair-h');
33
35
  const v = svg.getElementById('crosshair-v');
34
36
  const coords = svg.getElementById('coordinates');
35
-
37
+
36
38
  crosshair.style.display = 'block';
37
39
  h.setAttribute('x1', '0');
38
40
  h.setAttribute('x2', '640');
@@ -51,13 +53,13 @@ orientation: y-" data-x="3.95" data-y="-2.4" cx="591.578947368421" cy="468.25263
51
53
  // y' = (y - ty) / sy
52
54
  const sx = matrix.a;
53
55
  const sy = matrix.d;
54
- const tx = matrix.e;
56
+ const tx = matrix.e;
55
57
  const ty = matrix.f;
56
58
  const realPoint = {
57
59
  x: (x - tx) / sx,
58
60
  y: (y - ty) / sy // Flip y back since we used negative scale
59
61
  }
60
-
62
+
61
63
  coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
62
64
  coords.setAttribute('x', (x + 5).toString());
63
65
  coords.setAttribute('y', (y - 5).toString());
@@ -65,4 +67,62 @@ orientation: y-" data-x="3.95" data-y="-2.4" cx="591.578947368421" cy="468.25263
65
67
  document.currentScript.parentElement.addEventListener('mouseleave', () => {
66
68
  document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
67
69
  });
68
- ]]></script></svg>
70
+ ]]></script>
71
+ </g>
72
+ <g transform="translate(1216, 200)">
73
+ <style>
74
+ .boundary { fill: rgb(245, 241, 237); }
75
+ .schematic-boundary { fill: none; stroke: #fff; }
76
+ .component { fill: none; stroke: rgb(132, 0, 0); }
77
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
78
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
79
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
80
+ .pin-number { fill: rgb(169, 0, 0); }
81
+ .port-label { fill: rgb(0, 100, 100); }
82
+ .component-name { fill: rgb(0, 100, 100); }
83
+
84
+ </style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 997.9604526800001 644.2505966445999 L 1026.3861993 644.2505966445999 L 1026.3861993 502.1218635446 L 997.9604526800001 502.1218635446" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.740597296px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 997.9604526800001 644.2505966445999 L 1026.3861993 644.2505966445999 L 1026.3861993 502.1218635446 L 997.9604526800001 502.1218635446" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 834.512409615 423.95106033959996 L 1026.3861993 423.95106033959996 L 1026.3861993 502.1218635446 L 997.9604526800001 502.1218635446" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.740597296px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 834.512409615 423.95106033959996 L 1026.3861993 423.95106033959996 L 1026.3861993 502.1218635446 L 997.9604526800001 502.1218635446" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 834.512409615 288.92876389459997 L 835.933696946 288.92876389459997 L 835.933696946 473.6961169246 L 811.0611686535001 473.6961169246 L 811.0611686535001 502.1218635446 L 841.6188462700001 502.1218635446" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.740597296px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 834.512409615 288.92876389459997 L 835.933696946 288.92876389459997 L 835.933696946 473.6961169246 L 811.0611686535001 473.6961169246 L 811.0611686535001 502.1218635446 L 841.6188462700001 502.1218635446" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 834.512409615 317.35451051459995 L 840.1975589390001 317.35451051459995 L 840.1975589390001 480.8025535796 L 815.3250306465002 480.8025535796 L 815.3250306465002 644.2505966445999 L 841.6188462700001 644.2505966445999" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.740597296px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 834.512409615 317.35451051459995 L 840.1975589390001 317.35451051459995 L 840.1975589390001 480.8025535796 L 815.3250306465002 480.8025535796 L 815.3250306465002 644.2505966445999 L 841.6188462700001 644.2505966445999" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"><path d="M 834.512409615 182.3322140696 L 848.8674116581001 182.3322140696 L 848.8674116581001 160.8707753715" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="22.740597296px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 834.512409615 182.3322140696 L 848.8674116581001 182.3322140696 L 848.8674116581001 160.8707753715" stroke="rgb(0, 150, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><circle cx="1026.3861993" cy="502.1218635446" r="4.263861993" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="997.9604526800001" cy="502.1218635446" r="4.263861993" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_4__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="152.29449073499995" y="161.01290410459998" width="625.3664256400001" height="284.25746619999995" stroke-width="2.842574662px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="152.29449073499995" y="161.01290410459998" width="625.3664256400001" height="284.25746619999995" fill="transparent"/><text class="sch-text" x="464.977703555" y="303.1416372046" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="25.583171958px" transform="rotate(0, 464.977703555, 303.1416372046)">U3</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="182.3322140696" x2="834.512409615" y2="182.3322140696" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="831.6698349530001" y="179.4896394076" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="179.4896394076" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="210.7579606896" x2="831.669834953" y2="210.7579606896" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="834.512409615" cy="210.7579606896" r="2.842574662" stroke-width="2.842574662px"/><rect x="831.6698349530001" y="207.9153860276" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="207.9153860276" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="239.18370730959998" x2="831.669834953" y2="239.18370730959998" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="834.512409615" cy="239.18370730959998" r="2.842574662" stroke-width="2.842574662px"/><rect x="831.6698349530001" y="236.34113264759998" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="236.34113264759998" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="288.92876389459997" x2="834.512409615" y2="288.92876389459997" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="831.6698349530001" y="286.08618923259996" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="286.08618923259996" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="317.35451051459995" x2="834.512409615" y2="317.35451051459995" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><rect x="831.6698349530001" y="314.51193585259995" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="314.51193585259995" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="367.0995670996" x2="831.669834953" y2="367.0995670996" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="834.512409615" cy="367.0995670996" r="2.842574662" stroke-width="2.842574662px"/><rect x="831.6698349530001" y="364.2569924376" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="364.25699243759993" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="395.5253137196" x2="831.669834953" y2="395.5253137196" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_6__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="834.512409615" cy="395.5253137196" r="2.842574662" stroke-width="2.842574662px"/><rect x="831.6698349530001" y="392.6827390576" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="392.6827390576" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">7</text><line class="component-pin sch-component-pin sch-port-line" x1="777.660916375" y1="423.95106033959996" x2="834.512409615" y2="423.95106033959996" stroke-width="2.842574662px"/><g class="sch-port" data-schematic-port-id="source_port_0_7__stack1"><rect x="831.6698349530001" y="421.10848567759996" width="5.685149324" height="5.685149324" opacity="0"/></g><text class="pin-number sch-pin-number" x="806.0866629950001" y="421.10848567759996" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="21.319309965px" transform="">8</text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_1__stack1"><rect class="component-overlay sch-component-overlay" x="841.6188462700001" y="481.281527410147" width="156.34160640999994" height="41.680672268905994" fill="transparent"/><path class="sch-component-symbol-path" d="M 841.6188462700001 502.1218635446 L 867.6809920585471 502.1218635446" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 971.898306891453 502.1218635446 L 997.96045268 502.1218635446" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 867.6809920585471 481.281527410147 L 971.898306891453 481.281527410147 L 971.898306891453 522.962199679053 L 867.6809920585471 522.962199679053 L 867.6809920585471 481.281527410147" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="919.789649475" y="460.43076850193336" stroke="rgb(245, 241, 237)" stroke-width="2.842574662px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="25.583171958px">R8</text><text class="sch-component-text" x="919.789649475" y="543.8129585872666" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="25.583171958px"></text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_2__stack1"><rect class="component-overlay sch-component-overlay" x="841.6188462700001" y="623.4102605101469" width="156.34160640999994" height="41.68067226890594" fill="transparent"/><path class="sch-component-symbol-path" d="M 841.6188462700001 644.2505966445999 L 867.6809920585471 644.2505966445999" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 971.898306891453 644.2505966445999 L 997.96045268 644.2505966445999" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 867.6809920585471 623.4102605101469 L 971.898306891453 623.4102605101469 L 971.898306891453 665.0909327790529 L 867.6809920585471 665.0909327790529 L 867.6809920585471 623.4102605101469" stroke="rgb(132, 0, 0)" fill="none" stroke-width="2.842574662px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="919.789649475" y="602.5595016019332" stroke="rgb(245, 241, 237)" stroke-width="2.842574662px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="25.583171958px">R9</text><text class="sch-component-text" x="919.789649475" y="685.9416916872666" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="25.583171958px"></text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="834.512409615" cy="182.3322140696" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="834.512409615" cy="210.7579606896" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="834.512409615" cy="239.18370730959998" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="834.512409615" cy="288.92876389459997" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="834.512409615" cy="317.35451051459995" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="834.512409615" cy="367.0995670996" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_6__stack1"><circle cx="834.512409615" cy="395.5253137196" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_7__stack1"><circle cx="834.512409615" cy="423.95106033959996" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="877.151029545" cy="502.1218635446" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="1033.492635955" cy="502.1218635446" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="877.151029545" cy="644.2505966445999" r="5.685149324" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="1033.492635955" cy="644.2505966445999" r="5.685149324" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
85
+ M 848.8674116581001,160.8707753715
86
+ L 834.6545383481001,153.1958237841
87
+ L 834.6545383481001,71.06436655004667
88
+ L 863.0802849681,71.06436655004667
89
+ L 863.0802849681,153.1958237841
90
+ Z
91
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.842574662px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="848.8674116581001" y="148.0791893925" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.583171958px" transform="rotate(-90 848.8674116581001 148.0791893925)">XXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" d="
92
+ M 834.512409615,210.7579606896
93
+ L 842.1873612024,196.5450873796
94
+ L 957.70959546608,196.5450873796
95
+ L 957.70959546608,224.9708339996
96
+ L 842.1873612024,224.9708339996
97
+ Z
98
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.842574662px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_1__stack1" x="847.3039955940001" y="210.7579606896" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.583171958px" transform="">XXXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="
99
+ M 834.512409615,239.18370730959998
100
+ L 842.1873612024,224.9708339996
101
+ L 974.4049839808933,224.9708339996
102
+ L 974.4049839808933,253.39658061959997
103
+ L 842.1873612024,253.39658061959997
104
+ Z
105
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.842574662px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="847.3039955940001" y="239.18370730959998" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.583171958px" transform="">XXXXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="
106
+ M 835.933696946,288.92876389459997
107
+ L 843.6086485334,274.71589058459995
108
+ L 909.0447172526401,274.71589058459995
109
+ L 909.0447172526401,303.1416372046
110
+ L 843.6086485334,303.1416372046
111
+ Z
112
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.842574662px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="848.7252829250001" y="288.92876389459997" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.583171958px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
113
+ M 840.1975589390001,317.35451051459995
114
+ L 847.8725105264001,303.14163720459993
115
+ L 913.3085792456402,303.14163720459993
116
+ L 913.3085792456402,331.5673838246
117
+ L 847.8725105264001,331.5673838246
118
+ Z
119
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.842574662px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" x="852.9891449180002" y="317.35451051459995" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.583171958px" transform="">XXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" d="
120
+ M 1026.3861993,644.2505966445999
121
+ L 1040.5990726100001,651.9255482319999
122
+ L 1040.5990726100001,717.36161695124
123
+ L 1012.1733259900001,717.36161695124
124
+ L 1012.1733259900001,651.9255482319999
125
+ Z
126
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="2.842574662px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="1026.3861993" y="657.0421826236" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="25.583171958px" transform="rotate(90 1026.3861993 657.0421826236)">XXX</text>
127
+ </g>
128
+ </svg>