@tscircuit/schematic-trace-solver 0.0.173 → 0.0.174

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.
@@ -0,0 +1,85 @@
1
+ <svg width="1200" height="2016" viewBox="0 0 1200 2016" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on top and Circuit JSON schematic on the bottom">
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.6000000000000001,-0.3 2.3410000000000006,-0.3 2.3410000000000006,-0.9510000000000001" data-type="line" data-label="" points="251.25432254008174,334.8758252121974 557.7491354919837,334.8758252121974 557.7491354919837,449.48129519019176" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.5 1.6,0.5" data-type="line" data-label="" points="251.25432254008174,194.0396101854763 427.2995913234831,194.0396101854763" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.30000000000000004 1.6,0.30000000000000004" data-type="line" data-label="" points="251.25432254008174,229.24866394215658 427.2995913234831,229.24866394215658" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,0.10000000000000009 1.6,0.10000000000000009" data-type="line" data-label="" points="251.25432254008174,264.45771769883686 427.2995913234831,264.45771769883686" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,-0.09999999999999998 1.6,-0.09999999999999998" data-type="line" data-label="" points="251.25432254008174,299.66677145551716 427.2995913234831,299.66677145551716" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="0.6000000000000001,-0.5 1.6,-0.5" data-type="line" data-label="" points="251.25432254008174,370.0848789688777 427.2995913234831,370.0848789688777" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="40.00000000000003" y="158.83055642879606" width="211.25432254008172" height="246.46337629676194" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="SM06B-SRSS-TB(LF)(SN)" data-x="1.0599999999999998" data-y="-0.83" x="110.41810751336061" y="412.3357434768941" width="443.6340773341715" height="31.688148381012184" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="SPI1_DISPLAY" data-x="0.52" data-y="0.815" x="99.85539138635653" y="116.57969192077968" width="274.6306193021062" height="44.01131719585038" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="netId: GND
4
+ globalConnNetId: connectivity_net4" data-x="2.3410000000000006" data-y="-1.161" x="515.4982709839674" y="449.48129519019176" width="84.50172901603264" height="73.93901288902862" fill="#00000066" stroke="#000000" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="INLINE netId: SPI1_CS0
5
+ axis: x
6
+ side: y+" data-x="1.06" data-y="0.61" x="268.85884941842187" y="164.11191449229807" width="126.75259352404902" height="21.12543225400816" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="INLINE netId: SPI1_MISO
7
+ axis: x
8
+ side: y+" data-x="1.1" data-y="0.41000000000000003" x="268.8588494184219" y="199.32096824897835" width="140.8362150267211" height="21.12543225400816" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="INLINE netId: SPI1_MOSI
9
+ axis: x
10
+ side: y+" data-x="1.1" data-y="0.21000000000000008" x="268.8588494184219" y="234.53002200565862" width="140.8362150267211" height="21.12543225400816" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="INLINE netId: SPI1_CLK
11
+ axis: x
12
+ side: y+" data-x="1.06" data-y="0.010000000000000023" x="268.85884941842187" y="269.7390757623389" width="126.75259352404902" height="21.12543225400816" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005680357142857144"/></g><g><rect data-type="rect" data-label="INLINE netId: P3V3
13
+ axis: x
14
+ side: y+" data-x="0.9000000000000001" data-y="-0.39" x="268.85884941842187" y="340.1571832756995" width="70.41810751336055" height="21.12543225400816" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005680357142857144"/></g><text data-type="text" data-label="SPI1_CS0" data-x="0.7000000000000001" data-y="0.61" x="268.85884941842187" y="174.67463061930215" fill="green" font-size="21.125432254008167" font-family="sans-serif" text-anchor="start" dominant-baseline="central">SPI1_CS0</text><text data-type="text" data-label="SPI1_MISO" data-x="0.7000000000000001" data-y="0.41000000000000003" x="268.85884941842187" y="209.88368437598243" fill="green" font-size="21.125432254008167" font-family="sans-serif" text-anchor="start" dominant-baseline="central">SPI1_MISO</text><text data-type="text" data-label="SPI1_MOSI" data-x="0.7000000000000001" data-y="0.21000000000000008" x="268.85884941842187" y="245.0927381326627" fill="green" font-size="21.125432254008167" font-family="sans-serif" text-anchor="start" dominant-baseline="central">SPI1_MOSI</text><text data-type="text" data-label="SPI1_CLK" data-x="0.7000000000000001" data-y="0.010000000000000023" x="268.85884941842187" y="280.301791889343" fill="green" font-size="21.125432254008167" font-family="sans-serif" text-anchor="start" dominant-baseline="central">SPI1_CLK</text><text data-type="text" data-label="P3V3" data-x="0.7000000000000002" data-y="-0.39" x="268.8588494184219" y="350.71989940270356" fill="green" font-size="21.125432254008167" font-family="sans-serif" text-anchor="start" dominant-baseline="central">P3V3</text><g><circle data-type="point" data-label="6
15
+ x+" data-x="0.6000000000000001" data-y="0.5" cx="251.25432254008174" cy="194.0396101854763" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="5
16
+ x+" data-x="0.6000000000000001" data-y="0.30000000000000004" cx="251.25432254008174" cy="229.24866394215658" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="4
17
+ x+" data-x="0.6000000000000001" data-y="0.10000000000000009" cx="251.25432254008174" cy="264.45771769883686" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="3
18
+ x+" data-x="0.6000000000000001" data-y="-0.09999999999999998" cx="251.25432254008174" cy="299.66677145551716" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
19
+ x+" data-x="0.6000000000000001" data-y="-0.3" cx="251.25432254008174" cy="334.8758252121974" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="1
20
+ x+" data-x="0.6000000000000001" data-y="-0.5" cx="251.25432254008174" cy="370.0848789688777" r="3" fill="hsl(248, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
21
+ orientation: y-" data-x="2.3410000000000006" data-y="-0.9510000000000001" cx="557.7491354919837" cy="449.48129519019176" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="inline anchor
22
+ SPI1_CS0" data-x="1.1" data-y="0.5" cx="339.2769569317825" cy="194.0396101854763" r="3" fill="green"/></g><g><circle data-type="point" data-label="inline anchor
23
+ SPI1_MISO" data-x="1.1" data-y="0.30000000000000004" cx="339.2769569317825" cy="229.24866394215658" r="3" fill="green"/></g><g><circle data-type="point" data-label="inline anchor
24
+ SPI1_MOSI" data-x="1.1" data-y="0.10000000000000009" cx="339.2769569317825" cy="264.45771769883686" r="3" fill="green"/></g><g><circle data-type="point" data-label="inline anchor
25
+ SPI1_CLK" data-x="1.1" data-y="-0.09999999999999998" cx="339.2769569317825" cy="299.66677145551716" r="3" fill="green"/></g><g><circle data-type="point" data-label="inline anchor
26
+ P3V3" data-x="1.1" data-y="-0.5" cx="339.2769569317825" cy="370.0848789688777" r="3" fill="green"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
27
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
28
+ const svg = e.currentTarget;
29
+ const rect = svg.getBoundingClientRect();
30
+ const x = e.clientX - rect.left;
31
+ const y = e.clientY - rect.top;
32
+ const crosshair = svg.getElementById('crosshair');
33
+ const h = svg.getElementById('crosshair-h');
34
+ const v = svg.getElementById('crosshair-v');
35
+ const coords = svg.getElementById('coordinates');
36
+
37
+ crosshair.style.display = 'block';
38
+ h.setAttribute('x1', '0');
39
+ h.setAttribute('x2', '640');
40
+ h.setAttribute('y1', y);
41
+ h.setAttribute('y2', y);
42
+ v.setAttribute('x1', x);
43
+ v.setAttribute('x2', x);
44
+ v.setAttribute('y1', '0');
45
+ v.setAttribute('y2', '640');
46
+
47
+ // Calculate real coordinates using inverse transformation
48
+ const matrix = {"a":176.0452687834014,"c":0,"e":145.6271612700409,"b":0,"d":-176.0452687834014,"f":282.062244577177};
49
+ // Manually invert and apply the affine transform
50
+ // Since we only use translate and scale, we can directly compute:
51
+ // x' = (x - tx) / sx
52
+ // y' = (y - ty) / sy
53
+ const sx = matrix.a;
54
+ const sy = matrix.d;
55
+ const tx = matrix.e;
56
+ const ty = matrix.f;
57
+ const realPoint = {
58
+ x: (x - tx) / sx,
59
+ y: (y - ty) / sy // Flip y back since we used negative scale
60
+ }
61
+
62
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
63
+ coords.setAttribute('x', (x + 5).toString());
64
+ coords.setAttribute('y', (y - 5).toString());
65
+ });
66
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
67
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
68
+ });
69
+ ]]></script>
70
+ </g>
71
+ <g transform="translate(0, 1216)">
72
+ <style>
73
+ .boundary { fill: rgb(245, 241, 237); }
74
+ .schematic-boundary { fill: none; stroke: #fff; }
75
+ .component { fill: none; stroke: rgb(132, 0, 0); }
76
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
77
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
78
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
79
+ .pin-number { fill: rgb(169, 0, 0); }
80
+ .port-label { fill: rgb(0, 100, 100); }
81
+ .component-name { fill: rgb(0, 100, 100); }
82
+
83
+ </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 488.07558952942003 423.36624830191 L 911.6851517671439 423.36624830191 L 911.6851517671439 581.7636205114206" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="38.930229728912px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 488.07558952942003 423.36624830191 L 911.6851517671439 423.36624830191 L 911.6851517671439 581.7636205114206" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.866278716114px" 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 488.07558952942003 228.71509965734998 L 731.38952533512 228.71509965734998" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="38.930229728912px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 488.07558952942003 228.71509965734998 L 731.38952533512 228.71509965734998" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.866278716114px" 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 488.07558952942003 277.37788681848997 L 731.38952533512 277.37788681848997" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="38.930229728912px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 488.07558952942003 277.37788681848997 L 731.38952533512 277.37788681848997" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.866278716114px" 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 488.07558952942003 326.04067397962996 L 731.38952533512 326.04067397962996" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="38.930229728912px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 488.07558952942003 326.04067397962996 L 731.38952533512 326.04067397962996" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.866278716114px" 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 488.07558952942003 374.70346114076995 L 731.38952533512 374.70346114076995" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="38.930229728912px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 488.07558952942003 374.70346114076995 L 731.38952533512 374.70346114076995" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.866278716114px" 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 488.07558952942003 472.02903546305 L 731.38952533512 472.02903546305" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="38.930229728912px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 488.07558952942003 472.02903546305 L 731.38952533512 472.02903546305" stroke="rgb(0, 150, 0)" fill="none" stroke-width="4.866278716114px" 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="293.42444088486" y="180.05231249621" width="97.32557432227998" height="340.63951012798" stroke-width="4.866278716114px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="293.42444088486" y="180.05231249621" width="97.32557432227998" height="340.63951012798" fill="transparent"/><line class="component-pin sch-component-pin sch-port-line" x1="390.75001520714" y1="228.71509965734998" x2="488.07558952942003" y2="228.71509965734998" stroke-width="4.866278716114px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><rect x="483.20931081330605" y="223.84882094123597" width="9.732557432228" height="9.732557432228" opacity="0"/></g><text class="pin-number sch-pin-number" x="439.41280236828004" y="223.84882094123597" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="36.497090370855px" transform="">6</text><line class="component-pin sch-component-pin sch-port-line" x1="390.75001520714" y1="277.37788681848997" x2="488.07558952942003" y2="277.37788681848997" stroke-width="4.866278716114px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><rect x="483.20931081330605" y="272.511608102376" width="9.732557432228" height="9.732557432228" opacity="0"/></g><text class="pin-number sch-pin-number" x="439.41280236828004" y="272.51160810237593" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="36.497090370855px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="390.75001520714" y1="326.04067397962996" x2="488.07558952942003" y2="326.04067397962996" stroke-width="4.866278716114px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="483.20931081330605" y="321.174395263516" width="9.732557432228" height="9.732557432228" opacity="0"/></g><text class="pin-number sch-pin-number" x="439.41280236828004" y="321.174395263516" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="36.497090370855px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="390.75001520714" y1="374.70346114076995" x2="488.07558952942003" y2="374.70346114076995" stroke-width="4.866278716114px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="483.20931081330605" y="369.83718242465596" width="9.732557432228" height="9.732557432228" opacity="0"/></g><text class="pin-number sch-pin-number" x="439.41280236828004" y="369.83718242465596" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="36.497090370855px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="390.75001520714" y1="423.36624830191" x2="488.07558952942003" y2="423.36624830191" stroke-width="4.866278716114px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><rect x="483.20931081330605" y="418.499969585796" width="9.732557432228" height="9.732557432228" opacity="0"/></g><text class="pin-number sch-pin-number" x="439.41280236828004" y="418.49996958579595" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="36.497090370855px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="390.75001520714" y1="472.02903546305" x2="488.07558952942003" y2="472.02903546305" stroke-width="4.866278716114px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><rect x="483.20931081330605" y="467.162756746936" width="9.732557432228" height="9.732557432228" opacity="0"/></g><text class="pin-number sch-pin-number" x="439.41280236828004" y="467.162756746936" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="36.497090370855px" transform="">1</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="488.07558952942003" cy="228.71509965734998" r="9.732557432228" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="488.07558952942003" cy="277.37788681848997" r="9.732557432228" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="488.07558952942003" cy="326.04067397962996" r="9.732557432228" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="488.07558952942003" cy="374.70346114076995" r="9.732557432228" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="488.07558952942003" cy="423.36624830191" r="9.732557432228" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="488.07558952942003" cy="472.02903546305" r="9.732557432228" fill="red" opacity="0"/></g><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="882.4874794704599" y="581.7636205114208" width="58.39534459336801" height="43.79650844502601" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="M 882.4874794704599 625.5601289564466 L 940.8828240638279 625.5601289564468" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.866278716114px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="M 911.6851517671439 625.5601289564466 L 911.6851517671439 581.7636205114208" stroke="rgb(132, 0, 0)" fill="none" stroke-width="4.866278716114px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" x="911.6851517671439" y="637.7258257467317" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="43.796508445026px">XX</text><text class="sch-text" x="600.000000000042" y="552.322634278931" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="43.796508445025985px" transform="rotate(0, 600.000000000042, 552.322634278931)">SM06B-SRSS-TB(LF)(SN)</text><text class="sch-text" x="468.61047466496404" y="152.0712098785545" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="43.796508445026px" transform="rotate(0, 468.61047466496404, 152.0712098785545)">SPI1_DISPLAY</text><text class="sch-text" x="600.0000000000421" y="201.950566718723" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.197672296683997px" transform="rotate(0, 600.0000000000421, 201.950566718723)">XXXXXXXX</text><text class="sch-text" x="609.73255743227" y="250.61335387986298" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.197672296683997px" transform="rotate(0, 609.73255743227, 250.61335387986298)">XXXXXXXXX</text><text class="sch-text" x="609.73255743227" y="299.276141041003" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.197672296683997px" transform="rotate(0, 609.73255743227, 299.276141041003)">XXXXXXXXX</text><text class="sch-text" x="600.0000000000421" y="347.93892820214296" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.197672296683997px" transform="rotate(0, 600.0000000000421, 347.93892820214296)">XXXXXXXX</text><text class="sch-text" x="561.06977027113" y="445.264502524423" fill="#047857" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="29.197672296683997px" transform="rotate(0, 561.06977027113, 445.264502524423)">XXXX</text><rect class="schematic-box sch-box" x="293.42444088485996" y="530.4243800564179" width="613.1511182303641" height="43.79650844502601" stroke-width="4.866278716114px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="38.930229728912 19.465114864456"/><rect class="schematic-box sch-box" x="278.825604736518" y="121.65696790284198" width="379.56973985689206" height="60.828483951425" stroke-width="4.866278716114px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="38.930229728912 19.465114864456"/>
84
+ </g>
85
+ </svg>
@@ -0,0 +1,172 @@
1
+ {
2
+ "chips": [
3
+ {
4
+ "chipId": "schematic_component_0",
5
+ "center": {
6
+ "x": 0,
7
+ "y": 0
8
+ },
9
+ "width": 1.2000000000000002,
10
+ "height": 1.4,
11
+ "pins": [
12
+ {
13
+ "pinId": "schematic_port_0",
14
+ "displayName": "6",
15
+ "x": 0.6000000000000001,
16
+ "y": 0.5
17
+ },
18
+ {
19
+ "pinId": "schematic_port_1",
20
+ "displayName": "5",
21
+ "x": 0.6000000000000001,
22
+ "y": 0.30000000000000004
23
+ },
24
+ {
25
+ "pinId": "schematic_port_2",
26
+ "displayName": "4",
27
+ "x": 0.6000000000000001,
28
+ "y": 0.10000000000000009
29
+ },
30
+ {
31
+ "pinId": "schematic_port_3",
32
+ "displayName": "3",
33
+ "x": 0.6000000000000001,
34
+ "y": -0.09999999999999998
35
+ },
36
+ {
37
+ "pinId": "schematic_port_4",
38
+ "displayName": "2",
39
+ "x": 0.6000000000000001,
40
+ "y": -0.3
41
+ },
42
+ {
43
+ "pinId": "schematic_port_5",
44
+ "displayName": "1",
45
+ "x": 0.6000000000000001,
46
+ "y": -0.5
47
+ }
48
+ ]
49
+ }
50
+ ],
51
+ "directConnections": [],
52
+ "netConnections": [
53
+ {
54
+ "netId": "SPI1_CS0",
55
+ "isGround": false,
56
+ "netLabelWidth": 1.08,
57
+ "anchoredNetLabelWidth": 1.08,
58
+ "allowInlineNetLabel": true,
59
+ "inlineNetLabelHeight": 0.12,
60
+ "inlineNetLabelWidth": 0.72,
61
+ "pinIds": [
62
+ "schematic_port_0"
63
+ ]
64
+ },
65
+ {
66
+ "netId": "SPI1_MISO",
67
+ "isGround": false,
68
+ "netLabelWidth": 1.2,
69
+ "anchoredNetLabelWidth": 1.2,
70
+ "allowInlineNetLabel": true,
71
+ "inlineNetLabelHeight": 0.12,
72
+ "inlineNetLabelWidth": 0.8,
73
+ "pinIds": [
74
+ "schematic_port_1"
75
+ ]
76
+ },
77
+ {
78
+ "netId": "SPI1_MOSI",
79
+ "isGround": false,
80
+ "netLabelWidth": 1.2,
81
+ "anchoredNetLabelWidth": 1.2,
82
+ "allowInlineNetLabel": true,
83
+ "inlineNetLabelHeight": 0.12,
84
+ "inlineNetLabelWidth": 0.8,
85
+ "pinIds": [
86
+ "schematic_port_2"
87
+ ]
88
+ },
89
+ {
90
+ "netId": "SPI1_CLK",
91
+ "isGround": false,
92
+ "netLabelWidth": 1.08,
93
+ "anchoredNetLabelWidth": 1.08,
94
+ "allowInlineNetLabel": true,
95
+ "inlineNetLabelHeight": 0.12,
96
+ "inlineNetLabelWidth": 0.72,
97
+ "pinIds": [
98
+ "schematic_port_3"
99
+ ]
100
+ },
101
+ {
102
+ "netId": "GND",
103
+ "isGround": true,
104
+ "netLabelWidth": 0.42,
105
+ "netLabelHeight": 0.48,
106
+ "pinIds": [
107
+ "schematic_port_4"
108
+ ]
109
+ },
110
+ {
111
+ "netId": "P3V3",
112
+ "isGround": false,
113
+ "netLabelWidth": 0.6,
114
+ "anchoredNetLabelWidth": 0.6,
115
+ "allowInlineNetLabel": true,
116
+ "inlineNetLabelHeight": 0.12,
117
+ "inlineNetLabelWidth": 0.4,
118
+ "pinIds": [
119
+ "schematic_port_5"
120
+ ]
121
+ }
122
+ ],
123
+ "textBoxes": [
124
+ {
125
+ "chipId": "schematic_component_0",
126
+ "center": {
127
+ "x": 1.0599999999999998,
128
+ "y": -0.83
129
+ },
130
+ "width": 2.52,
131
+ "height": 0.17999999999999994,
132
+ "text": "SM06B-SRSS-TB(LF)(SN)"
133
+ },
134
+ {
135
+ "chipId": "schematic_component_0",
136
+ "center": {
137
+ "x": 0.52,
138
+ "y": 0.815
139
+ },
140
+ "width": 1.56,
141
+ "height": 0.25,
142
+ "text": "SPI1_DISPLAY"
143
+ }
144
+ ],
145
+ "availableNetLabelOrientations": {
146
+ "SPI1_CS0": [
147
+ "x-",
148
+ "x+"
149
+ ],
150
+ "SPI1_MISO": [
151
+ "x-",
152
+ "x+"
153
+ ],
154
+ "SPI1_MOSI": [
155
+ "x-",
156
+ "x+"
157
+ ],
158
+ "SPI1_CLK": [
159
+ "x-",
160
+ "x+"
161
+ ],
162
+ "GND": [
163
+ "y-"
164
+ ],
165
+ "P3V3": [
166
+ "x-",
167
+ "x+"
168
+ ]
169
+ },
170
+ "maxMspPairDistance": 2.4,
171
+ "_hideRatsNet": false
172
+ }
@@ -0,0 +1,25 @@
1
+ import { expect, test } from "bun:test"
2
+ import { isPathCollidingWithObstacles } from "lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/collisions"
3
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
4
+ import { getTextBoxBounds } from "lib/utils/textBoxBounds"
5
+ import inputProblem from "./bug-report-20260831T133233Z.json"
6
+ import "tests/fixtures/matcher"
7
+
8
+ test("bug-report-20260831T133233Z", () => {
9
+ const solver = new SchematicTracePipelineSolver(inputProblem as any)
10
+
11
+ solver.solve()
12
+
13
+ const textBoxBounds = inputProblem.textBoxes.map((textBox) =>
14
+ getTextBoxBounds(textBox),
15
+ )
16
+ const crossingTraceIds = solver
17
+ .netLabelToTraceSolver!.getOutput()
18
+ .traces.filter((trace) =>
19
+ isPathCollidingWithObstacles(trace.tracePath, textBoxBounds),
20
+ )
21
+ .map((trace) => trace.mspPairId)
22
+
23
+ expect(crossingTraceIds).toEqual([])
24
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
25
+ })
@@ -0,0 +1,94 @@
1
+ <svg width="1200" height="2016" viewBox="0 0 1200 2016" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Solver debug visualization on top and Circuit JSON schematic on the bottom">
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="-12.5,-7.1 -12.5,-7 -11.600000000000001,-7" data-type="line" data-label="" points="134.33691756272378,314.98207885304646 134.33691756272378,304.9462365591397 224.659498207885,304.9462365591397" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-12.5,-7.700000000000001 -12.5,-8 -11.600000000000001,-8" data-type="line" data-label="" points="134.33691756272378,375.19713261648747 134.33691756272378,405.3046594982078 224.659498207885,405.3046594982078" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11,-7 -10.45,-7 -10.45,-6.72 -9.9,-6.72 -9.9,-6.92" data-type="line" data-label="" points="284.8745519713261,304.9462365591397 340.0716845878135,304.9462365591397 340.0716845878135,276.84587813620055 395.26881720430094,276.84587813620055 395.26881720430094,296.91756272401426" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-8.7,-6.92 -8.7,-6.720000000000001 -9.9,-6.720000000000001 -9.9,-6.92" data-type="line" data-label="" points="515.6989247311827,296.91756272401426 515.6989247311827,276.84587813620067 395.26881720430094,276.84587813620067 395.26881720430094,296.91756272401426" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-8.7,-7.68 -8.7,-8 -9.9,-8 -9.9,-7.68" data-type="line" data-label="" points="515.6989247311827,373.18996415770596 515.6989247311827,405.3046594982078 395.26881720430094,405.3046594982078 395.26881720430094,373.18996415770596" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-11,-8 -9.9,-8 -9.9,-7.68" data-type="line" data-label="" points="284.8745519713261,405.3046594982078 395.26881720430094,405.3046594982078 395.26881720430094,373.18996415770596" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-12.5,-7 -12.5,-6.95 -13.2,-6.95 -13.2,-7.051" data-type="line" data-label="" points="134.33691756272378,304.9462365591397 134.33691756272378,299.9283154121863 64.08602150537627,299.9283154121863 64.08602150537627,310.0645161290322" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="C26" data-x="-9.7675" data-y="-7.3" x="350.10752688172033" y="296.9175627240142" width="116.91756272401426" height="76.2724014336917" fill="hsl(111, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="C36" data-x="-8.5675" data-y="-7.3" x="470.537634408602" y="296.9175627240142" width="116.91756272401426" height="76.2724014336917" fill="hsl(142, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="R43" data-x="-12.465" data-y="-7.4" x="89.17562724014329" y="314.9820788530465" width="97.34767025089604" height="60.215053763441006" fill="hsl(185, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="R38" data-x="-11.3" data-y="-7" x="224.659498207885" y="270.8243727598566" width="60.21505376344112" height="68.24372759856624" fill="hsl(159, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="R44" data-x="-11.3" data-y="-8" x="224.659498207885" y="371.1827956989247" width="60.21505376344112" height="68.24372759856624" fill="hsl(186, 100%, 50%, 0.8)" stroke="black" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="netId: U2_SRP
4
+ globalConnNetId: connectivity_net2" data-x="-9.9" data-y="-6.3" x="385.2329749103942" y="192.5448028673834" width="20.07168458781348" height="84.30107526881716" fill="#ef444466" stroke="#ef4444" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="netId: U2_SRN
5
+ globalConnNetId: connectivity_net3" data-x="-8.28" data-y="-7.879999999999999" x="515.6989247311826" y="383.22580645161275" width="84.30107526881727" height="20.071684587813593" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="netId: GND
6
+ globalConnNetId: connectivity_net0" data-x="-13.2" data-y="-7.261" x="39.999999999999886" y="310.06451612903214" width="48.17204301075276" height="42.15053763440858" fill="#00000066" stroke="#000000" stroke-width="0.009964285714285714"/></g><g><rect data-type="rect" data-label="netId: PGND
7
+ globalConnNetId: connectivity_net1" data-x="-12.5" data-y="-8.21" x="104.22939068100334" y="405.30465949820774" width="60.21505376344089" height="42.150537634408806" fill="#00000066" stroke="#000000" stroke-width="0.009964285714285714"/></g><g><circle data-type="point" data-label="1
8
+ y+" data-x="-9.9" data-y="-6.92" cx="395.26881720430094" cy="296.91756272401426" r="3" fill="hsl(146, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
9
+ y-" data-x="-9.9" data-y="-7.68" cx="395.26881720430094" cy="373.18996415770596" r="3" fill="hsl(147, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="1
10
+ y+" data-x="-8.7" data-y="-6.92" cx="515.6989247311827" cy="296.91756272401426" r="3" fill="hsl(57, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
11
+ y-" data-x="-8.7" data-y="-7.68" cx="515.6989247311827" cy="373.18996415770596" r="3" fill="hsl(58, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="1
12
+ y+" data-x="-12.5" data-y="-7.1" cx="134.33691756272378" cy="314.98207885304646" r="3" fill="hsl(340, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
13
+ y-" data-x="-12.5" data-y="-7.700000000000001" cx="134.33691756272378" cy="375.19713261648747" r="3" fill="hsl(341, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="1
14
+ x+" data-x="-11" data-y="-7" cx="284.8745519713261" cy="304.9462365591397" r="3" fill="hsl(194, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
15
+ x-" data-x="-11.600000000000001" data-y="-7" cx="224.659498207885" cy="304.9462365591397" r="3" fill="hsl(195, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="1
16
+ x+" data-x="-11" data-y="-8" cx="284.8745519713261" cy="405.3046594982078" r="3" fill="hsl(221, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="2
17
+ x-" data-x="-11.600000000000001" data-y="-8" cx="224.659498207885" cy="405.3046594982078" r="3" fill="hsl(222, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
18
+ orientation: y+" data-x="-9.9" data-y="-6.72" cx="395.26881720430094" cy="276.84587813620055" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
19
+ orientation: x+" data-x="-8.7" data-y="-7.879999999999999" cx="515.6989247311827" cy="393.26164874551955" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
20
+ orientation: y-" data-x="-13.2" data-y="-7.051" cx="64.08602150537627" cy="310.0645161290322" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
21
+ orientation: y-" data-x="-12.5" data-y="-8" cx="134.33691756272378" cy="405.3046594982078" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5"/><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text></g><script><![CDATA[
22
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
23
+ const svg = e.currentTarget;
24
+ const rect = svg.getBoundingClientRect();
25
+ const x = e.clientX - rect.left;
26
+ const y = e.clientY - rect.top;
27
+ const crosshair = svg.getElementById('crosshair');
28
+ const h = svg.getElementById('crosshair-h');
29
+ const v = svg.getElementById('crosshair-v');
30
+ const coords = svg.getElementById('coordinates');
31
+
32
+ crosshair.style.display = 'block';
33
+ h.setAttribute('x1', '0');
34
+ h.setAttribute('x2', '640');
35
+ h.setAttribute('y1', y);
36
+ h.setAttribute('y2', y);
37
+ v.setAttribute('x1', x);
38
+ v.setAttribute('x2', x);
39
+ v.setAttribute('y1', '0');
40
+ v.setAttribute('y2', '640');
41
+
42
+ // Calculate real coordinates using inverse transformation
43
+ const matrix = {"a":100.3584229390681,"c":0,"e":1388.8172043010752,"b":0,"d":-100.3584229390681,"f":-397.56272401433705};
44
+ // Manually invert and apply the affine transform
45
+ // Since we only use translate and scale, we can directly compute:
46
+ // x' = (x - tx) / sx
47
+ // y' = (y - ty) / sy
48
+ const sx = matrix.a;
49
+ const sy = matrix.d;
50
+ const tx = matrix.e;
51
+ const ty = matrix.f;
52
+ const realPoint = {
53
+ x: (x - tx) / sx,
54
+ y: (y - ty) / sy // Flip y back since we used negative scale
55
+ }
56
+
57
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
58
+ coords.setAttribute('x', (x + 5).toString());
59
+ coords.setAttribute('y', (y - 5).toString());
60
+ });
61
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
62
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
63
+ });
64
+ ]]></script>
65
+ </g>
66
+ <g transform="translate(0, 1216)">
67
+ <style>
68
+ .boundary { fill: rgb(245, 241, 237); }
69
+ .schematic-boundary { fill: none; stroke: #fff; }
70
+ .component { fill: none; stroke: rgb(132, 0, 0); }
71
+ .chip { fill: rgb(255, 255, 194); stroke: rgb(132, 0, 0); }
72
+ .component-pin { fill: none; stroke: rgb(132, 0, 0); }
73
+ .text { font-family: sans-serif; fill: rgb(0, 150, 0); }
74
+ .pin-number { fill: rgb(169, 0, 0); }
75
+ .port-label { fill: rgb(0, 100, 100); }
76
+ .component-name { fill: rgb(0, 100, 100); }
77
+
78
+ </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 241.9805174654498 367.88484209253 L 241.9805174654498 349.2709561336002 L 409.5054910958197 349.2709561336002" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.782217534288px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 241.9805174654498 367.88484209253 L 241.9805174654498 349.2709561336002 L 409.5054910958197 349.2709561336002" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.722777191786px" 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 241.9805174654498 479.56815784611024 L 241.9805174654498 535.4098157229001 L 409.5054910958197 535.4098157229001" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.782217534288px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 241.9805174654498 479.56815784611024 L 241.9805174654498 535.4098157229001 L 409.5054910958197 535.4098157229001" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.722777191786px" 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 521.1888068493997 349.2709561336002 L 623.565179623515 349.2709561336002 L 623.565179623515 297.15207544859607 L 725.9415523976297 297.15207544859607 L 725.9415523976297 334.37984736645615" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.782217534288px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 521.1888068493997 349.2709561336002 L 623.565179623515 349.2709561336002 L 623.565179623515 297.15207544859607 L 725.9415523976297 297.15207544859607 L 725.9415523976297 334.37984736645615" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.722777191786px" 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 949.30818390479 334.37984736645615 L 949.30818390479 297.1520754485963 L 725.9415523976297 297.1520754485963 L 725.9415523976297 334.37984736645615" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.782217534288px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 949.30818390479 334.37984736645615 L 949.30818390479 297.1520754485963 L 725.9415523976297 297.1520754485963 L 725.9415523976297 334.37984736645615" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.722777191786px" 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 949.30818390479 475.845380654324 L 949.30818390479 535.4098157229001 L 725.9415523976297 535.4098157229001 L 725.9415523976297 475.845380654324" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.782217534288px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 949.30818390479 475.845380654324 L 949.30818390479 535.4098157229001 L 725.9415523976297 535.4098157229001 L 725.9415523976297 475.845380654324" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.722777191786px" 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 521.1888068493997 535.4098157229001 L 725.9415523976297 535.4098157229001 L 725.9415523976297 475.845380654324" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.782217534288px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 521.1888068493997 535.4098157229001 L 725.9415523976297 535.4098157229001 L 725.9415523976297 475.845380654324" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.722777191786px" 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_6__stack1"><path d="M 241.9805174654498 349.2709561336002 L 241.9805174654498 339.96401315413516 L 111.68331575293996 339.96401315413516 L 111.68331575293996 358.76403797265436" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="29.782217534288px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 241.9805174654498 349.2709561336002 L 241.9805174654498 339.96401315413516 L 111.68331575293996 339.96401315413516 L 111.68331575293996 358.76403797265436" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.722777191786px" 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="241.9805174654498" cy="349.2709561336002" r="5.584165787679" 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"><circle cx="725.9415523976297" cy="297.15207544859607" r="5.584165787679" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="725.9415523976297" cy="334.37984736645615" r="5.584165787679" 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_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"><circle cx="725.9415523976297" cy="535.4098157229001" r="5.584165787679" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="725.9415523976297" cy="475.845380654324" r="5.584165787679" 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_5__stack1"/><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_6__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component-overlay sch-component-overlay" x="688.2126946697554" y="334.3798473664561" width="75.45771545574871" height="141.46553328786797" fill="transparent"/><path class="sch-component-symbol-path" d="M 725.9415523976297 475.84538065432406 L 725.9415523976297 419.2591673391769" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 725.9415523976297 390.96606068160327 L 725.9415523976297 334.3798473664561" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 763.6704101255041 419.2591673391769 L 688.2126946697554 419.2591673391769" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 763.6704101255041 390.96606068160327 L 688.2126946697554 390.96606068160327" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="753.0557796111377" y="357.9574362477674" stroke="rgb(245, 241, 237)" stroke-width="3.722777191786px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="ideographic" font-size="33.504994726074px">C26</text><text class="sch-component-text" x="753.0557796111377" y="452.26779177301273" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="hanging" font-size="33.504994726074px"></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="911.5793261769156" y="334.3798473664561" width="75.45771545574871" height="141.46553328786797" fill="transparent"/><path class="sch-component-symbol-path" d="M 949.30818390479 475.84538065432406 L 949.30818390479 419.2591673391769" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 949.30818390479 390.96606068160327 L 949.30818390479 334.3798473664561" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 987.0370416326643 419.2591673391769 L 911.5793261769156 419.2591673391769" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 987.0370416326643 390.96606068160327 L 911.5793261769156 390.96606068160327" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="976.422411118298" y="357.9574362477674" stroke="rgb(245, 241, 237)" stroke-width="3.722777191786px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="ideographic" font-size="33.504994726074px">C36</text><text class="sch-component-text" x="976.422411118298" y="452.26779177301273" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="hanging" font-size="33.504994726074px"></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="227.09313147549753" y="367.88484209253" width="29.7747719799045" height="111.68331575358025" fill="transparent"/><path class="sch-component-symbol-path" d="M 241.9805174654498 479.56815784611024 L 241.9805174654498 460.9505491099884" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 241.9805174654498 386.50245082865183 L 241.9805174654498 367.88484209253" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 227.09313147549753 460.9505491099884 L 227.09313147549756 386.50245082865183 L 256.86790345540203 386.50245082865183 L 256.86790345540203 460.9505491099884 L 227.09313147549753 460.9505491099884" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="271.76273499973786" y="393.94428243503205" stroke="rgb(245, 241, 237)" stroke-width="3.722777191786px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="middle" font-size="33.504994726074px">R43</text><text class="sch-component-text" x="271.76273499973786" y="453.5087175036082" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="start" dominant-baseline="middle" font-size="33.504994726074px"></text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_3__stack1"><rect class="component-overlay sch-component-overlay" x="409.5054910958197" y="334.38357014364794" width="111.68331575358025" height="29.77477197990447" fill="transparent"/><path class="sch-component-symbol-path" d="M 409.5054910958197 349.2709561336002 L 428.12309983194154 349.2709561336002" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 502.5711981132781 349.2709561336002 L 521.1888068494 349.2709561336002" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 428.12309983194154 334.38357014364794 L 502.5711981132781 334.38357014364794 L 502.5711981132781 364.1583421235524 L 428.12309983194154 364.1583421235524 L 428.12309983194154 334.38357014364794" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="465.34714897260983" y="319.4887385993121" stroke="rgb(245, 241, 237)" stroke-width="3.722777191786px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="33.504994726074px">R38</text><text class="sch-component-text" x="465.34714897260983" y="379.05317366788825" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="33.504994726074px"></text></g><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_4__stack1"><rect class="component-overlay sch-component-overlay" x="409.5054910958197" y="520.5224297329479" width="111.68331575358025" height="29.77477197990447" fill="transparent"/><path class="sch-component-symbol-path" d="M 409.5054910958197 535.4098157229001 L 428.12309983194154 535.4098157229001" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 502.5711981132781 535.4098157229001 L 521.1888068494 535.4098157229001" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-component-symbol-path" d="M 428.12309983194154 520.5224297329479 L 502.5711981132781 520.5224297329479 L 502.5711981132781 550.2972017128524 L 428.12309983194154 550.2972017128524 L 428.12309983194154 520.5224297329479" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><text class="sch-component-name sch-component-text" x="465.34714897260983" y="505.62759818861207" stroke="rgb(245, 241, 237)" stroke-width="3.722777191786px" paint-order="stroke" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="ideographic" font-size="33.504994726074px">R44</text><text class="sch-component-text" x="465.34714897260983" y="565.1920332571882" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="33.504994726074px"></text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="725.9415523976297" cy="349.2709561336002" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="725.9415523976297" cy="490.73648942146804" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_0__stack1"><circle cx="949.30818390479" cy="349.2709561336002" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_1_1__stack1"><circle cx="949.30818390479" cy="490.73648942146804" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_0__stack1"><circle cx="241.9805174654498" cy="367.8848420925302" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_2_1__stack1"><circle cx="241.9805174654498" cy="479.56815784611047" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_0__stack1"><circle cx="521.1888068493997" cy="349.2709561336002" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_3_1__stack1"><circle cx="409.5054910958197" cy="349.2709561336002" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_4_0__stack1"><circle cx="521.1888068493997" cy="535.4098157229001" r="7.445554383572" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_4_1__stack1"><circle cx="409.5054910958197" cy="535.4098157229001" r="7.445554383572" 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="
79
+ M 725.9415523976297,297.15207544859607
80
+ L 707.3276664386997,287.1005770307739
81
+ L 707.3276664386997,140.77061487897214
82
+ L 744.5554383565598,140.77061487897214
83
+ L 744.5554383565598,287.1005770307739
84
+ Z
85
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.722777191786px"/><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="725.9415523976297" y="280.3995780855591" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="33.504994726074px" transform="rotate(-90 725.9415523976297 280.3995780855591)">U2_SRP</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="
86
+ M 949.30818390479,513.0731525721839
87
+ L 959.3596823226122,494.4592666132539
88
+ L 1106.9305702050092,494.4592666132539
89
+ L 1106.9305702050092,531.6870385311139
90
+ L 959.3596823226122,531.6870385311139
91
+ Z
92
+ " fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.722777191786px"/><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="966.060681267827" y="513.0731525721839" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="33.504994726074px" transform="">U2_SRN</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="89.34665260222397" y="358.7640379726544" width="44.673326301431985" height="33.50499472607396" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="M 89.34665260222397 392.2690326987284 L 134.01997890365595 392.2690326987284" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" d="M 111.68331575293996 392.2690326987284 L 111.68331575293996 358.7640379726544" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_2__stack1" x="111.68331575293996" y="401.5759756781934" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="33.504994726074px">GND</text><rect class="component-overlay sch-component-overlay sch-net-label-overlay" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="219.6438543147338" y="535.4098157229001" width="44.673326301431985" height="33.504994726074074" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="M 219.6438543147338 568.9148104489742 L 264.3171806161658 568.9148104489742" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="M 241.9805174654498 568.9148104489742 L 241.9805174654498 535.4098157229001" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.722777191786px" stroke-linecap="round"/><text class="sch-net-label-symbol-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="241.9805174654498" y="578.2217534284392" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="33.504994726074px">PGND</text>
93
+ </g>
94
+ </svg>