circuit-json-to-tscircuit 0.0.28 → 0.0.30

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.
@@ -238,7 +238,11 @@ var convertHoles = (circuitJson) => {
238
238
  elementStrings.push(
239
239
  `<hole pcbX="${mmStr2(hole.x)}" pcbY="${mmStr2(hole.y)}" width="${mmStr2(hole.hole_width)}" height="${mmStr2(hole.hole_height)}" shape="rect" />`
240
240
  );
241
- } else if (hole.hole_shape === "oval" || hole.hole_shape === "pill" || hole.hole_shape === "rotated_pill") {
241
+ } else if (hole.hole_shape === "oval") {
242
+ elementStrings.push(
243
+ `<hole pcbX="${mmStr2(hole.x)}" pcbY="${mmStr2(hole.y)}" width="${mmStr2(hole.hole_width)}" height="${mmStr2(hole.hole_height)}" shape="oval" />`
244
+ );
245
+ } else if (hole.hole_shape === "pill" || hole.hole_shape === "rotated_pill") {
242
246
  elementStrings.push(
243
247
  `<hole pcbX="${mmStr2(hole.x)}" pcbY="${mmStr2(hole.y)}" width="${mmStr2(hole.hole_width)}" height="${mmStr2(hole.hole_height)}" shape="pill"${formatPcbRotationAttr("ccw_rotation" in hole ? hole.ccw_rotation : void 0)} />`
244
248
  );
@@ -247,14 +251,35 @@ var convertHoles = (circuitJson) => {
247
251
  return elementStrings;
248
252
  };
249
253
 
250
- // lib/generate-footprint-tsx/convert-notes.ts
254
+ // lib/generate-footprint-tsx/convert-keepouts.ts
251
255
  import { su as su6 } from "@tscircuit/soup-util";
256
+ var convertKeepouts = (circuitJson) => {
257
+ const pcbKeepouts = su6(circuitJson).pcb_keepout.list();
258
+ const elementStrings = [];
259
+ for (const keepout of pcbKeepouts) {
260
+ if (keepout.shape === "rect") {
261
+ elementStrings.push(
262
+ `<keepout shape="rect" pcbX="${formatMm(keepout.center.x)}" pcbY="${formatMm(keepout.center.y)}" width="${formatMm(keepout.width)}" height="${formatMm(keepout.height)}" />`
263
+ );
264
+ } else if (keepout.shape === "circle") {
265
+ elementStrings.push(
266
+ `<keepout shape="circle" pcbX="${formatMm(keepout.center.x)}" pcbY="${formatMm(keepout.center.y)}" radius="${formatMm(keepout.radius)}" />`
267
+ );
268
+ } else {
269
+ console.warn(`Unhandled pcb_keepout shape: ${keepout.shape}`);
270
+ }
271
+ }
272
+ return elementStrings;
273
+ };
274
+
275
+ // lib/generate-footprint-tsx/convert-notes.ts
276
+ import { su as su7 } from "@tscircuit/soup-util";
252
277
  var convertNotes = (circuitJson) => {
253
- const noteTexts = su6(circuitJson).pcb_note_text.list();
254
- const noteRects = su6(circuitJson).pcb_note_rect.list();
255
- const notePaths = su6(circuitJson).pcb_note_path.list();
256
- const noteLines = su6(circuitJson).pcb_note_line.list();
257
- const noteDimensions = su6(circuitJson).pcb_note_dimension.list();
278
+ const noteTexts = su7(circuitJson).pcb_note_text.list();
279
+ const noteRects = su7(circuitJson).pcb_note_rect.list();
280
+ const notePaths = su7(circuitJson).pcb_note_path.list();
281
+ const noteLines = su7(circuitJson).pcb_note_line.list();
282
+ const noteDimensions = su7(circuitJson).pcb_note_dimension.list();
258
283
  const elementStrings = [];
259
284
  for (const noteText of noteTexts) {
260
285
  const anchorPosition = noteText.anchor_position ?? { x: 0, y: 0 };
@@ -344,14 +369,14 @@ var convertNotes = (circuitJson) => {
344
369
  };
345
370
 
346
371
  // lib/generate-footprint-tsx/convert-plated-holes.ts
347
- import { su as su7 } from "@tscircuit/soup-util";
372
+ import { su as su8 } from "@tscircuit/soup-util";
348
373
  import { mmStr as mmStr3 } from "@tscircuit/mm";
349
374
  var formatOptionalMmAttr = (attrName, value) => {
350
375
  if (value === void 0) return "";
351
376
  return ` ${attrName}="${mmStr3(value)}"`;
352
377
  };
353
378
  var convertPlatedHoles = (circuitJson) => {
354
- const platedHoles = su7(circuitJson).pcb_plated_hole.list();
379
+ const platedHoles = su8(circuitJson).pcb_plated_hole.list();
355
380
  const elementStrings = [];
356
381
  for (const platedHole of platedHoles) {
357
382
  if (platedHole.shape === "oval" || platedHole.shape === "pill") {
@@ -381,12 +406,12 @@ var convertPlatedHoles = (circuitJson) => {
381
406
  };
382
407
 
383
408
  // lib/generate-footprint-tsx/convert-silkscreen.ts
384
- import { su as su8 } from "@tscircuit/soup-util";
409
+ import { su as su9 } from "@tscircuit/soup-util";
385
410
  var convertSilkscreen = (circuitJson) => {
386
- const silkscreenLines = su8(circuitJson).pcb_silkscreen_line.list();
387
- const silkscreenPaths = su8(circuitJson).pcb_silkscreen_path.list();
388
- const silkscreenRects = su8(circuitJson).pcb_silkscreen_rect.list();
389
- const silkscreenCircles = su8(circuitJson).pcb_silkscreen_circle.list();
411
+ const silkscreenLines = su9(circuitJson).pcb_silkscreen_line.list();
412
+ const silkscreenPaths = su9(circuitJson).pcb_silkscreen_path.list();
413
+ const silkscreenRects = su9(circuitJson).pcb_silkscreen_rect.list();
414
+ const silkscreenCircles = su9(circuitJson).pcb_silkscreen_circle.list();
390
415
  const elementStrings = [];
391
416
  for (const silkscreenPath of silkscreenPaths) {
392
417
  elementStrings.push(
@@ -448,9 +473,9 @@ var convertSilkscreen = (circuitJson) => {
448
473
  };
449
474
 
450
475
  // lib/generate-footprint-tsx/convert-silkscreen-text.ts
451
- import { su as su9 } from "@tscircuit/soup-util";
476
+ import { su as su10 } from "@tscircuit/soup-util";
452
477
  var convertSilkscreenText = (circuitJson) => {
453
- const silkscreenTexts = su9(circuitJson).pcb_silkscreen_text.list();
478
+ const silkscreenTexts = su10(circuitJson).pcb_silkscreen_text.list();
454
479
  const elementStrings = [];
455
480
  for (const silkscreenText of silkscreenTexts) {
456
481
  const pcbX = silkscreenText.anchor_position?.x ?? 0;
@@ -463,10 +488,10 @@ var convertSilkscreenText = (circuitJson) => {
463
488
  };
464
489
 
465
490
  // lib/generate-footprint-tsx/convert-smt-pads.ts
466
- import { su as su10 } from "@tscircuit/soup-util";
491
+ import { su as su11 } from "@tscircuit/soup-util";
467
492
  import { mmStr as mmStr4 } from "@tscircuit/mm";
468
493
  var convertSmtPads = (circuitJson) => {
469
- const smtPads = su10(circuitJson).pcb_smtpad.list();
494
+ const smtPads = su11(circuitJson).pcb_smtpad.list();
470
495
  const elementStrings = [];
471
496
  for (const smtPad of smtPads) {
472
497
  if (smtPad.shape === "circle") {
@@ -504,6 +529,7 @@ var generateFootprintTsx = (circuitJson) => {
504
529
  convertFabrication,
505
530
  convertSilkscreenText,
506
531
  convertCopperText,
532
+ convertKeepouts,
507
533
  convertCutouts,
508
534
  convertNotes,
509
535
  convertCourtyard
@@ -520,15 +546,15 @@ var generateFootprintTsx = (circuitJson) => {
520
546
  };
521
547
 
522
548
  // lib/generate-symbol-tsx.ts
523
- import { su as su11 } from "@tscircuit/soup-util";
549
+ import { su as su12 } from "@tscircuit/soup-util";
524
550
  var generateSymbolTsx = (circuitJson) => {
525
- const schematicArcs = su11(circuitJson).schematic_arc.list();
526
- const schematicLines = su11(circuitJson).schematic_line.list();
527
- const schematicPaths = su11(circuitJson).schematic_path.list();
528
- const schematicTexts = su11(circuitJson).schematic_text.list();
529
- const schematicCircles = su11(circuitJson).schematic_circle.list();
530
- const schematicBoxes = su11(circuitJson).schematic_box.list();
531
- const schematicRects = su11(circuitJson).schematic_rect.list();
551
+ const schematicArcs = su12(circuitJson).schematic_arc.list();
552
+ const schematicLines = su12(circuitJson).schematic_line.list();
553
+ const schematicPaths = su12(circuitJson).schematic_path.list();
554
+ const schematicTexts = su12(circuitJson).schematic_text.list();
555
+ const schematicCircles = su12(circuitJson).schematic_circle.list();
556
+ const schematicBoxes = su12(circuitJson).schematic_box.list();
557
+ const schematicRects = su12(circuitJson).schematic_rect.list();
532
558
  const elementStrings = [];
533
559
  for (const arc of schematicArcs) {
534
560
  const center = arc.center ?? { x: 0, y: 0 };
package/dist/cli/main.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  convertCircuitJsonToTscircuit
4
- } from "../chunk-N6A3XIVV.js";
4
+ } from "../chunk-Y7MQ2KXU.js";
5
5
 
6
6
  // cli/main.ts
7
7
  import { Command } from "commander";
@@ -16,7 +16,7 @@ var package_default = {
16
16
  "./cli": "./dist/cli/main.js"
17
17
  },
18
18
  type: "module",
19
- version: "0.0.27",
19
+ version: "0.0.29",
20
20
  scripts: {
21
21
  build: "tsup-node lib/index.ts cli/main.ts --format esm --dts",
22
22
  test: "bun test",
@@ -31,10 +31,10 @@ var package_default = {
31
31
  "@types/react": "18",
32
32
  "@types/react-dom": "18",
33
33
  "bun-match-svg": "^0.0.15",
34
- "circuit-json": "^0.0.423",
35
- "circuit-to-svg": "^0.0.333",
34
+ "circuit-json": "^0.0.433",
35
+ "circuit-to-svg": "^0.0.353",
36
36
  commander: "^13.1.0",
37
- tscircuit: "^0.0.1444",
37
+ tscircuit: "^0.0.1837",
38
38
  tsup: "^8.3.5"
39
39
  },
40
40
  peerDependencies: {
package/dist/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  convertCircuitJsonToTscircuit
3
- } from "../chunk-N6A3XIVV.js";
3
+ } from "../chunk-Y7MQ2KXU.js";
4
4
  export {
5
5
  convertCircuitJsonToTscircuit
6
6
  };
@@ -16,8 +16,11 @@ export const convertHoles: FootprintElementConverter = (circuitJson) => {
16
16
  elementStrings.push(
17
17
  `<hole pcbX="${mmStr(hole.x)}" pcbY="${mmStr(hole.y)}" width="${mmStr(hole.hole_width)}" height="${mmStr(hole.hole_height)}" shape="rect" />`,
18
18
  )
19
+ } else if (hole.hole_shape === "oval") {
20
+ elementStrings.push(
21
+ `<hole pcbX="${mmStr(hole.x)}" pcbY="${mmStr(hole.y)}" width="${mmStr(hole.hole_width)}" height="${mmStr(hole.hole_height)}" shape="oval" />`,
22
+ )
19
23
  } else if (
20
- hole.hole_shape === "oval" ||
21
24
  hole.hole_shape === "pill" ||
22
25
  hole.hole_shape === "rotated_pill"
23
26
  ) {
@@ -0,0 +1,24 @@
1
+ import { su } from "@tscircuit/soup-util"
2
+ import type { FootprintElementConverter } from "./converter-types"
3
+ import { formatMm } from "./helpers"
4
+
5
+ export const convertKeepouts: FootprintElementConverter = (circuitJson) => {
6
+ const pcbKeepouts = su(circuitJson).pcb_keepout.list()
7
+ const elementStrings: string[] = []
8
+
9
+ for (const keepout of pcbKeepouts) {
10
+ if (keepout.shape === "rect") {
11
+ elementStrings.push(
12
+ `<keepout shape="rect" pcbX="${formatMm(keepout.center.x)}" pcbY="${formatMm(keepout.center.y)}" width="${formatMm(keepout.width)}" height="${formatMm(keepout.height)}" />`,
13
+ )
14
+ } else if (keepout.shape === "circle") {
15
+ elementStrings.push(
16
+ `<keepout shape="circle" pcbX="${formatMm(keepout.center.x)}" pcbY="${formatMm(keepout.center.y)}" radius="${formatMm(keepout.radius)}" />`,
17
+ )
18
+ } else {
19
+ console.warn(`Unhandled pcb_keepout shape: ${(keepout as any).shape}`)
20
+ }
21
+ }
22
+
23
+ return elementStrings
24
+ }
@@ -5,6 +5,7 @@ import { convertCourtyard } from "./generate-footprint-tsx/convert-courtyard"
5
5
  import { convertCutouts } from "./generate-footprint-tsx/convert-cutouts"
6
6
  import { convertFabrication } from "./generate-footprint-tsx/convert-fabrication"
7
7
  import { convertHoles } from "./generate-footprint-tsx/convert-holes"
8
+ import { convertKeepouts } from "./generate-footprint-tsx/convert-keepouts"
8
9
  import { convertNotes } from "./generate-footprint-tsx/convert-notes"
9
10
  import { convertPlatedHoles } from "./generate-footprint-tsx/convert-plated-holes"
10
11
  import { convertSilkscreen } from "./generate-footprint-tsx/convert-silkscreen"
@@ -22,6 +23,7 @@ export const generateFootprintTsx = (
22
23
  convertFabrication,
23
24
  convertSilkscreenText,
24
25
  convertCopperText,
26
+ convertKeepouts,
25
27
  convertCutouts,
26
28
  convertNotes,
27
29
  convertCourtyard,
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "./cli": "./dist/cli/main.js"
7
7
  },
8
8
  "type": "module",
9
- "version": "0.0.28",
9
+ "version": "0.0.30",
10
10
  "scripts": {
11
11
  "build": "tsup-node lib/index.ts cli/main.ts --format esm --dts",
12
12
  "test": "bun test",
@@ -21,10 +21,10 @@
21
21
  "@types/react": "18",
22
22
  "@types/react-dom": "18",
23
23
  "bun-match-svg": "^0.0.15",
24
- "circuit-json": "^0.0.423",
25
- "circuit-to-svg": "^0.0.333",
24
+ "circuit-json": "^0.0.433",
25
+ "circuit-to-svg": "^0.0.353",
26
26
  "commander": "^13.1.0",
27
- "tscircuit": "^0.0.1444",
27
+ "tscircuit": "^0.0.1837",
28
28
  "tsup": "^8.3.5"
29
29
  },
30
30
  "peerDependencies": {
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.1090"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><path d="M-5.113440000000001 -0.07632000000000005L-5.241276000000001 -0.142146 M-5.241276000000001 -0.142146L-5.367204000000001 -0.17458200000000001 M-5.367204000000001 -0.17458200000000001L-5.558004 -0.17458200000000001 M-5.558004 -0.17458200000000001L-5.685840000000001 -0.142146 M-5.685840000000001 -0.142146L-5.813676000000001 -0.07632000000000005 M-5.813676000000001 -0.07632000000000005L-5.876640000000001 0.022895999999999916 M-5.876640000000001 0.022895999999999916L-5.876640000000001 0.08872200000000008 M-5.876640000000001 0.08872200000000008L-5.813676000000001 0.18698400000000004 M-5.813676000000001 0.18698400000000004L-5.685840000000001 0.25281 M-5.685840000000001 0.25281L-5.558004 0.2862 M-5.558004 0.2862L-5.367204000000001 0.2862 M-5.367204000000001 0.2862L-5.241276000000001 0.25281 M-5.241276000000001 0.25281L-5.113440000000001 0.18698400000000004 M-4.438008000000001 -0.17458200000000001L-4.555350000000001 -0.142146 M-4.555350000000001 -0.142146L-4.6726920000000005 -0.07632000000000005 M-4.6726920000000005 -0.07632000000000005L-4.731840000000001 0.022895999999999916 M-4.731840000000001 0.022895999999999916L-4.731840000000001 0.08872200000000008 M-4.731840000000001 0.08872200000000008L-4.6726920000000005 0.18698400000000004 M-4.6726920000000005 0.18698400000000004L-4.555350000000001 0.25281 M-4.555350000000001 0.25281L-4.438008000000001 0.2862 M-4.438008000000001 0.2862L-4.262472000000001 0.2862 M-4.262472000000001 0.2862L-4.145130000000001 0.25281 M-4.145130000000001 0.25281L-4.027788000000001 0.18698400000000004 M-4.027788000000001 0.18698400000000004L-3.9686400000000006 0.08872200000000008 M-3.9686400000000006 0.08872200000000008L-3.9686400000000006 0.022895999999999916 M-3.9686400000000006 0.022895999999999916L-4.027788000000001 -0.07632000000000005 M-4.027788000000001 -0.07632000000000005L-4.145130000000001 -0.142146 M-4.145130000000001 -0.142146L-4.262472000000001 -0.17458200000000001 M-4.262472000000001 -0.17458200000000001L-4.438008000000001 -0.17458200000000001 M-3.5870400000000005 -0.17553600000000003L-3.5870400000000005 0.51516 M-3.5870400000000005 -0.07727400000000006L-3.4592040000000006 -0.1431 M-3.4592040000000006 -0.1431L-3.3332760000000006 -0.17553600000000003 M-3.3332760000000006 -0.17553600000000003L-3.1424760000000007 -0.17553600000000003 M-3.1424760000000007 -0.17553600000000003L-3.0146400000000004 -0.1431 M-3.0146400000000004 -0.1431L-2.8868040000000006 -0.07727400000000006 M-2.8868040000000006 -0.07727400000000006L-2.8238400000000006 0.021942000000000017 M-2.8238400000000006 0.021942000000000017L-2.8238400000000006 0.08776800000000007 M-2.8238400000000006 0.08776800000000007L-2.8868040000000006 0.18603000000000003 M-2.8868040000000006 0.18603000000000003L-3.0146400000000004 0.25185599999999997 M-3.0146400000000004 0.25185599999999997L-3.1424760000000007 0.285246 M-3.1424760000000007 0.285246L-3.3332760000000006 0.285246 M-3.3332760000000006 0.285246L-3.4592040000000006 0.25185599999999997 M-3.4592040000000006 0.25185599999999997L-3.5870400000000005 0.18603000000000003 M-2.4422400000000004 -0.17553600000000003L-2.4422400000000004 0.51516 M-2.4422400000000004 -0.07727400000000006L-2.3144040000000006 -0.1431 M-2.3144040000000006 -0.1431L-2.1884760000000005 -0.17553600000000003 M-2.1884760000000005 -0.17553600000000003L-1.9976760000000007 -0.17553600000000003 M-1.9976760000000007 -0.17553600000000003L-1.8698400000000004 -0.1431 M-1.8698400000000004 -0.1431L-1.7420040000000006 -0.07727400000000006 M-1.7420040000000006 -0.07727400000000006L-1.6790400000000005 0.021942000000000017 M-1.6790400000000005 0.021942000000000017L-1.6790400000000005 0.08776800000000007 M-1.6790400000000005 0.08776800000000007L-1.7420040000000006 0.18603000000000003 M-1.7420040000000006 0.18603000000000003L-1.8698400000000004 0.25185599999999997 M-1.8698400000000004 0.25185599999999997L-1.9976760000000007 0.285246 M-1.9976760000000007 0.285246L-2.1884760000000005 0.285246 M-2.1884760000000005 0.285246L-2.3144040000000006 0.25185599999999997 M-2.3144040000000006 0.25185599999999997L-2.4422400000000004 0.18603000000000003 M-1.2974400000000006 0.022895999999999916L-0.5342400000000005 0.022895999999999916 M-0.5342400000000005 -0.042930000000000024L-0.5972040000000005 -0.10875600000000007 M-0.5972040000000005 -0.10875600000000007L-0.6620760000000004 -0.142146 M-0.6620760000000004 -0.142146L-0.7880040000000005 -0.17458200000000001 M-0.7880040000000005 -0.17458200000000001L-0.9788040000000005 -0.17458200000000001 M-0.9788040000000005 -0.17458200000000001L-1.1066400000000005 -0.142146 M-1.1066400000000005 -0.142146L-1.2344760000000006 -0.07632000000000005 M-1.2344760000000006 -0.07632000000000005L-1.2974400000000006 0.022895999999999916 M-1.2974400000000006 0.022895999999999916L-1.2974400000000006 0.08872200000000008 M-1.2974400000000006 0.08872200000000008L-1.2344760000000006 0.18698400000000004 M-1.2344760000000006 0.18698400000000004L-1.1066400000000005 0.25281 M-1.1066400000000005 0.25281L-0.9788040000000005 0.2862 M-0.9788040000000005 0.2862L-0.7880040000000005 0.2862 M-0.7880040000000005 0.2862L-0.6620760000000004 0.25281 M-0.6620760000000004 0.25281L-0.5342400000000005 0.18698400000000004 M-0.15264000000000047 -0.17458200000000001L-0.15264000000000047 0.2862 M-0.15264000000000047 0.022895999999999916L-0.05724000000000046 -0.07632000000000005 M-0.05724000000000046 -0.07632000000000005L0.13355999999999957 -0.142146 M0.13355999999999957 -0.142146L0.32435999999999954 -0.17458200000000001 M0.32435999999999954 -0.17458200000000001L0.6105599999999995 -0.17458200000000001 M1.9652399999999997 -0.40545000000000003L1.9652399999999997 0.15454800000000002 M1.9652399999999997 0.15454800000000002L2.0606399999999994 0.25281 M2.0606399999999994 0.25281L2.2514399999999997 0.2862 M2.2514399999999997 0.2862L2.4422399999999995 0.2862 M1.6790399999999994 -0.17458200000000001L2.3468399999999994 -0.17458200000000001 M2.8238399999999997 0.022895999999999916L3.5870399999999996 0.022895999999999916 M3.5870399999999996 -0.042930000000000024L3.5240759999999995 -0.10875600000000007 M3.5240759999999995 -0.10875600000000007L3.4592039999999997 -0.142146 M3.4592039999999997 -0.142146L3.3332759999999997 -0.17458200000000001 M3.3332759999999997 -0.17458200000000001L3.1424759999999994 -0.17458200000000001 M3.1424759999999994 -0.17458200000000001L3.0146399999999995 -0.142146 M3.0146399999999995 -0.142146L2.8868039999999997 -0.07632000000000005 M2.8868039999999997 -0.07632000000000005L2.8238399999999997 0.022895999999999916 M2.8238399999999997 0.022895999999999916L2.8238399999999997 0.08872200000000008 M2.8238399999999997 0.08872200000000008L2.8868039999999997 0.18698400000000004 M2.8868039999999997 0.18698400000000004L3.0146399999999995 0.25281 M3.0146399999999995 0.25281L3.1424759999999994 0.2862 M3.1424759999999994 0.2862L3.3332759999999997 0.2862 M3.3332759999999997 0.2862L3.4592039999999997 0.25281 M3.4592039999999997 0.25281L3.5870399999999996 0.18698400000000004 M3.9686399999999997 -0.17458200000000001L4.73184 0.2862 M4.73184 -0.17458200000000001L3.9686399999999997 0.2862 M5.399639999999999 -0.40545000000000003L5.399639999999999 0.15454800000000002 M5.399639999999999 0.15454800000000002L5.4950399999999995 0.25281 M5.4950399999999995 0.25281L5.685839999999999 0.2862 M5.685839999999999 0.2862L5.876639999999999 0.2862 M5.113439999999999 -0.17458200000000001L5.7812399999999995 -0.17458200000000001" fill="none" stroke="rgb(200, 52, 52)" stroke-width="0.1431" stroke-linecap="round" stroke-linejoin="round" transform="matrix(27.272727272727273,0,0,27.272727272727273,365.0629490909091,362.0314363636364)" class="pcb-copper-text pcb-copper-top" data-type="pcb_copper_text" data-pcb-copper-text-id="pcb_copper_text_0"/><path d="M-5.113440000000001 -0.07632000000000005L-5.241276000000001 -0.142146 M-5.241276000000001 -0.142146L-5.367204000000001 -0.17458200000000001 M-5.367204000000001 -0.17458200000000001L-5.558004 -0.17458200000000001 M-5.558004 -0.17458200000000001L-5.685840000000001 -0.142146 M-5.685840000000001 -0.142146L-5.813676000000001 -0.07632000000000005 M-5.813676000000001 -0.07632000000000005L-5.876640000000001 0.022895999999999916 M-5.876640000000001 0.022895999999999916L-5.876640000000001 0.08872200000000008 M-5.876640000000001 0.08872200000000008L-5.813676000000001 0.18698400000000004 M-5.813676000000001 0.18698400000000004L-5.685840000000001 0.25281 M-5.685840000000001 0.25281L-5.558004 0.2862 M-5.558004 0.2862L-5.367204000000001 0.2862 M-5.367204000000001 0.2862L-5.241276000000001 0.25281 M-5.241276000000001 0.25281L-5.113440000000001 0.18698400000000004 M-4.438008000000001 -0.17458200000000001L-4.555350000000001 -0.142146 M-4.555350000000001 -0.142146L-4.6726920000000005 -0.07632000000000005 M-4.6726920000000005 -0.07632000000000005L-4.731840000000001 0.022895999999999916 M-4.731840000000001 0.022895999999999916L-4.731840000000001 0.08872200000000008 M-4.731840000000001 0.08872200000000008L-4.6726920000000005 0.18698400000000004 M-4.6726920000000005 0.18698400000000004L-4.555350000000001 0.25281 M-4.555350000000001 0.25281L-4.438008000000001 0.2862 M-4.438008000000001 0.2862L-4.262472000000001 0.2862 M-4.262472000000001 0.2862L-4.145130000000001 0.25281 M-4.145130000000001 0.25281L-4.027788000000001 0.18698400000000004 M-4.027788000000001 0.18698400000000004L-3.9686400000000006 0.08872200000000008 M-3.9686400000000006 0.08872200000000008L-3.9686400000000006 0.022895999999999916 M-3.9686400000000006 0.022895999999999916L-4.027788000000001 -0.07632000000000005 M-4.027788000000001 -0.07632000000000005L-4.145130000000001 -0.142146 M-4.145130000000001 -0.142146L-4.262472000000001 -0.17458200000000001 M-4.262472000000001 -0.17458200000000001L-4.438008000000001 -0.17458200000000001 M-3.5870400000000005 -0.17553600000000003L-3.5870400000000005 0.51516 M-3.5870400000000005 -0.07727400000000006L-3.4592040000000006 -0.1431 M-3.4592040000000006 -0.1431L-3.3332760000000006 -0.17553600000000003 M-3.3332760000000006 -0.17553600000000003L-3.1424760000000007 -0.17553600000000003 M-3.1424760000000007 -0.17553600000000003L-3.0146400000000004 -0.1431 M-3.0146400000000004 -0.1431L-2.8868040000000006 -0.07727400000000006 M-2.8868040000000006 -0.07727400000000006L-2.8238400000000006 0.021942000000000017 M-2.8238400000000006 0.021942000000000017L-2.8238400000000006 0.08776800000000007 M-2.8238400000000006 0.08776800000000007L-2.8868040000000006 0.18603000000000003 M-2.8868040000000006 0.18603000000000003L-3.0146400000000004 0.25185599999999997 M-3.0146400000000004 0.25185599999999997L-3.1424760000000007 0.285246 M-3.1424760000000007 0.285246L-3.3332760000000006 0.285246 M-3.3332760000000006 0.285246L-3.4592040000000006 0.25185599999999997 M-3.4592040000000006 0.25185599999999997L-3.5870400000000005 0.18603000000000003 M-2.4422400000000004 -0.17553600000000003L-2.4422400000000004 0.51516 M-2.4422400000000004 -0.07727400000000006L-2.3144040000000006 -0.1431 M-2.3144040000000006 -0.1431L-2.1884760000000005 -0.17553600000000003 M-2.1884760000000005 -0.17553600000000003L-1.9976760000000007 -0.17553600000000003 M-1.9976760000000007 -0.17553600000000003L-1.8698400000000004 -0.1431 M-1.8698400000000004 -0.1431L-1.7420040000000006 -0.07727400000000006 M-1.7420040000000006 -0.07727400000000006L-1.6790400000000005 0.021942000000000017 M-1.6790400000000005 0.021942000000000017L-1.6790400000000005 0.08776800000000007 M-1.6790400000000005 0.08776800000000007L-1.7420040000000006 0.18603000000000003 M-1.7420040000000006 0.18603000000000003L-1.8698400000000004 0.25185599999999997 M-1.8698400000000004 0.25185599999999997L-1.9976760000000007 0.285246 M-1.9976760000000007 0.285246L-2.1884760000000005 0.285246 M-2.1884760000000005 0.285246L-2.3144040000000006 0.25185599999999997 M-2.3144040000000006 0.25185599999999997L-2.4422400000000004 0.18603000000000003 M-1.2974400000000006 0.022895999999999916L-0.5342400000000005 0.022895999999999916 M-0.5342400000000005 -0.042930000000000024L-0.5972040000000005 -0.10875600000000007 M-0.5972040000000005 -0.10875600000000007L-0.6620760000000004 -0.142146 M-0.6620760000000004 -0.142146L-0.7880040000000005 -0.17458200000000001 M-0.7880040000000005 -0.17458200000000001L-0.9788040000000005 -0.17458200000000001 M-0.9788040000000005 -0.17458200000000001L-1.1066400000000005 -0.142146 M-1.1066400000000005 -0.142146L-1.2344760000000006 -0.07632000000000005 M-1.2344760000000006 -0.07632000000000005L-1.2974400000000006 0.022895999999999916 M-1.2974400000000006 0.022895999999999916L-1.2974400000000006 0.08872200000000008 M-1.2974400000000006 0.08872200000000008L-1.2344760000000006 0.18698400000000004 M-1.2344760000000006 0.18698400000000004L-1.1066400000000005 0.25281 M-1.1066400000000005 0.25281L-0.9788040000000005 0.2862 M-0.9788040000000005 0.2862L-0.7880040000000005 0.2862 M-0.7880040000000005 0.2862L-0.6620760000000004 0.25281 M-0.6620760000000004 0.25281L-0.5342400000000005 0.18698400000000004 M-0.15264000000000047 -0.17458200000000001L-0.15264000000000047 0.2862 M-0.15264000000000047 0.022895999999999916L-0.05724000000000046 -0.07632000000000005 M-0.05724000000000046 -0.07632000000000005L0.13355999999999957 -0.142146 M0.13355999999999957 -0.142146L0.32435999999999954 -0.17458200000000001 M0.32435999999999954 -0.17458200000000001L0.6105599999999995 -0.17458200000000001 M1.9652399999999997 -0.40545000000000003L1.9652399999999997 0.15454800000000002 M1.9652399999999997 0.15454800000000002L2.0606399999999994 0.25281 M2.0606399999999994 0.25281L2.2514399999999997 0.2862 M2.2514399999999997 0.2862L2.4422399999999995 0.2862 M1.6790399999999994 -0.17458200000000001L2.3468399999999994 -0.17458200000000001 M2.8238399999999997 0.022895999999999916L3.5870399999999996 0.022895999999999916 M3.5870399999999996 -0.042930000000000024L3.5240759999999995 -0.10875600000000007 M3.5240759999999995 -0.10875600000000007L3.4592039999999997 -0.142146 M3.4592039999999997 -0.142146L3.3332759999999997 -0.17458200000000001 M3.3332759999999997 -0.17458200000000001L3.1424759999999994 -0.17458200000000001 M3.1424759999999994 -0.17458200000000001L3.0146399999999995 -0.142146 M3.0146399999999995 -0.142146L2.8868039999999997 -0.07632000000000005 M2.8868039999999997 -0.07632000000000005L2.8238399999999997 0.022895999999999916 M2.8238399999999997 0.022895999999999916L2.8238399999999997 0.08872200000000008 M2.8238399999999997 0.08872200000000008L2.8868039999999997 0.18698400000000004 M2.8868039999999997 0.18698400000000004L3.0146399999999995 0.25281 M3.0146399999999995 0.25281L3.1424759999999994 0.2862 M3.1424759999999994 0.2862L3.3332759999999997 0.2862 M3.3332759999999997 0.2862L3.4592039999999997 0.25281 M3.4592039999999997 0.25281L3.5870399999999996 0.18698400000000004 M3.9686399999999997 -0.17458200000000001L4.73184 0.2862 M4.73184 -0.17458200000000001L3.9686399999999997 0.2862 M5.399639999999999 -0.40545000000000003L5.399639999999999 0.15454800000000002 M5.399639999999999 0.15454800000000002L5.4950399999999995 0.25281 M5.4950399999999995 0.25281L5.685839999999999 0.2862 M5.685839999999999 0.2862L5.876639999999999 0.2862 M5.113439999999999 -0.17458200000000001L5.7812399999999995 -0.17458200000000001" fill="none" stroke="rgb(200, 52, 52)" stroke-width="0.1431" stroke-linecap="round" stroke-linejoin="round" transform="matrix(27.272727272727273,0,0,27.272727272727273,365.0629490909091,362.0314363636364)" class="pcb-copper-text pcb-copper-top" data-type="pcb_copper_text" data-pcb-copper-text-id="pcb_copper_text_1"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.1306"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><path d="M0.4034008079999998 0.24419633399999996L0.33583089600000005 0.17141758200000007 M0.33583089600000005 0.17141758200000007L0.26927031600000007 0.13555290600000003 M0.26927031600000007 0.13555290600000003L0.16841916 0.13555290600000003 M0.16841916 0.13555290600000003L0.10084924799999939 0.17141758200000007 M0.10084924799999939 0.17141758200000007L0.03328124399999943 0.24419633399999996 M0.03328124399999943 0.24419633399999996L0 0.35389202399999997 M0 0.35389202399999997L0 0.426673638 M0 0.426673638L0.03328124399999943 0.5353151580000001 M0.03328124399999943 0.5353151580000001L0.10084924799999939 0.6080967720000001 M0.10084924799999939 0.6080967720000001L0.16841916 0.645011802 M0.16841916 0.645011802L0.26927031600000007 0.645011802 M0.26927031600000007 0.645011802L0.33583089600000005 0.6080967720000001 M0.33583089600000005 0.6080967720000001L0.4034008079999998 0.5353151580000001 M1.29512655 0.13555290600000003L1.2264414119999998 0.17141758200000007 M1.2264414119999998 0.17141758200000007L1.157761044 0.24419633399999996 M1.157761044 0.24419633399999996L1.1231394299999993 0.35389202399999997 M1.1231394299999993 0.35389202399999997L1.1231394299999993 0.426673638 M1.1231394299999993 0.426673638L1.157761044 0.5353151580000001 M1.157761044 0.5353151580000001L1.2264414119999998 0.6080967720000001 M1.2264414119999998 0.6080967720000001L1.29512655 0.645011802 M1.29512655 0.645011802L1.3978713959999993 0.645011802 M1.3978713959999993 0.645011802L1.4665574879999994 0.6080967720000001 M1.4665574879999994 0.6080967720000001L1.535239764 0.5353151580000001 M1.535239764 0.5353151580000001L1.5698613779999997 0.426673638 M1.5698613779999997 0.426673638L1.5698613779999997 0.35389202399999997 M1.5698613779999997 0.35389202399999997L1.535239764 0.24419633399999996 M1.535239764 0.24419633399999996L1.4665574879999994 0.17141758200000007 M1.4665574879999994 0.17141758200000007L1.3978713959999993 0.13555290600000003 M1.3978713959999993 0.13555290600000003L1.29512655 0.13555290600000003 M2.2774880159999995 0.13555290600000003L2.2774880159999995 0.816997968 M2.2774880159999995 0.23250029400000005L2.3491162439999997 0.16755578999999998 M2.3491162439999997 0.16755578999999998L2.4196721759999997 0.13555290600000003 M2.4196721759999997 0.13555290600000003L2.5265783699999997 0.13555290600000003 M2.5265783699999997 0.13555290600000003L2.5982065979999995 0.16755578999999998 M2.5982065979999995 0.16755578999999998L2.6698319639999997 0.23250029400000005 M2.6698319639999997 0.23250029400000005L2.7051127919999995 0.330386418 M2.7051127919999995 0.330386418L2.7051127919999995 0.3953318760000001 M2.7051127919999995 0.3953318760000001L2.6698319639999997 0.492277356 M2.6698319639999997 0.492277356L2.5982065979999995 0.5572218600000001 M2.5982065979999995 0.5572218600000001L2.5265783699999997 0.5901625260000001 M2.5265783699999997 0.5901625260000001L2.4196721759999997 0.5901625260000001 M2.4196721759999997 0.5901625260000001L2.3491162439999997 0.5572218600000001 M2.3491162439999997 0.5572218600000001L2.2774880159999995 0.492277356 M3.4222880159999995 0.13555290600000003L3.4222880159999995 0.816997968 M3.4222880159999995 0.23250029400000005L3.493916244 0.16755578999999998 M3.493916244 0.16755578999999998L3.5644721759999998 0.13555290600000003 M3.5644721759999998 0.13555290600000003L3.67137837 0.13555290600000003 M3.67137837 0.13555290600000003L3.7430065979999996 0.16755578999999998 M3.7430065979999996 0.16755578999999998L3.8146319639999997 0.23250029400000005 M3.8146319639999997 0.23250029400000005L3.8499127919999996 0.330386418 M3.8499127919999996 0.330386418L3.8499127919999996 0.3953318760000001 M3.8499127919999996 0.3953318760000001L3.8146319639999997 0.492277356 M3.8146319639999997 0.492277356L3.7430065979999996 0.5572218600000001 M3.7430065979999996 0.5572218600000001L3.67137837 0.5901625260000001 M3.67137837 0.5901625260000001L3.5644721759999998 0.5901625260000001 M3.5644721759999998 0.5901625260000001L3.493916244 0.5572218600000001 M3.493916244 0.5572218600000001L3.4222880159999995 0.492277356 M4.550552334 0.35389202399999997L5.011249428 0.35389202399999997 M5.011249428 0.281114226L4.9732411139999995 0.20833356600000003 M4.9732411139999995 0.20833356600000003L4.934082276 0.17141758200000007 M4.934082276 0.17141758200000007L4.858067556 0.13555290600000003 M4.858067556 0.13555290600000003L4.742893044 0.13555290600000003 M4.742893044 0.13555290600000003L4.665726846 0.17141758200000007 M4.665726846 0.17141758200000007L4.588560648 0.24419633399999996 M4.588560648 0.24419633399999996L4.550552334 0.35389202399999997 M4.550552334 0.35389202399999997L4.550552334 0.426673638 M4.550552334 0.426673638L4.588560648 0.5353151580000001 M4.588560648 0.5353151580000001L4.665726846 0.6080967720000001 M4.665726846 0.6080967720000001L4.742893044 0.645011802 M4.742893044 0.645011802L4.858067556 0.645011802 M4.858067556 0.645011802L4.934082276 0.6080967720000001 M4.934082276 0.6080967720000001L5.011249428 0.5353151580000001 M5.7410021879999995 0.13555290600000003L5.7410021879999995 0.632448576 M5.7410021879999995 0.348507648L5.787177696 0.241516548 M5.787177696 0.241516548L5.879526804 0.17053226999999999 M5.879526804 0.17053226999999999L5.971875912 0.13555290600000003 M5.971875912 0.13555290600000003L6.11039862 0.13555290600000003 M7.704916128 0L7.704916128 0.504376938 M7.704916128 0.504376938L7.7573775419999995 0.592883334 M7.7573775419999995 0.592883334L7.862306094 0.622958184 M7.862306094 0.622958184L7.967232738 0.622958184 M7.54752807 0.20792143800000001L7.914769416 0.20792143800000001 M8.671832334 0.35389202399999997L9.132529428 0.35389202399999997 M9.132529428 0.281114226L9.094521113999999 0.20833356600000003 M9.094521113999999 0.20833356600000003L9.055362276 0.17141758200000007 M9.055362276 0.17141758200000007L8.979347556 0.13555290600000003 M8.979347556 0.13555290600000003L8.864173044 0.13555290600000003 M8.864173044 0.13555290600000003L8.787006846 0.17141758200000007 M8.787006846 0.17141758200000007L8.709840648 0.24419633399999996 M8.709840648 0.24419633399999996L8.671832334 0.35389202399999997 M8.671832334 0.35389202399999997L8.671832334 0.426673638 M8.671832334 0.426673638L8.709840648 0.5353151580000001 M8.709840648 0.5353151580000001L8.787006846 0.6080967720000001 M8.787006846 0.6080967720000001L8.864173044 0.645011802 M8.864173044 0.645011802L8.979347556 0.645011802 M8.979347556 0.645011802L9.055362276 0.6080967720000001 M9.055362276 0.6080967720000001L9.132529428 0.5353151580000001 M9.79520454 0.14813044199999997L10.298757221999999 0.633329118 M10.298757221999999 0.14813044199999997L9.79520454 0.633329118 M11.139316127999999 0L11.139316127999999 0.504376938 M11.139316127999999 0.504376938L11.191777542 0.592883334 M11.191777542 0.592883334L11.296706094 0.622958184 M11.296706094 0.622958184L11.401632738 0.622958184 M10.981928069999999 0.20792143800000001L11.349169415999999 0.20792143800000001" fill="none" stroke="rgb(200, 52, 52)" stroke-width="0.1431" stroke-linecap="round" stroke-linejoin="round" transform="matrix(27.272727272727273,0,0,27.272727272727273,359.0909090909091,361.3636363636364)" class="pcb-copper-text pcb-copper-top" data-type="pcb_copper_text" data-pcb-copper-text-id="pcb_copper_text_0"/><path d="M0.4034008079999998 0.24419633399999996L0.33583089600000005 0.17141758200000007 M0.33583089600000005 0.17141758200000007L0.26927031600000007 0.13555290600000003 M0.26927031600000007 0.13555290600000003L0.16841916 0.13555290600000003 M0.16841916 0.13555290600000003L0.10084924799999939 0.17141758200000007 M0.10084924799999939 0.17141758200000007L0.03328124399999943 0.24419633399999996 M0.03328124399999943 0.24419633399999996L0 0.35389202399999997 M0 0.35389202399999997L0 0.426673638 M0 0.426673638L0.03328124399999943 0.5353151580000001 M0.03328124399999943 0.5353151580000001L0.10084924799999939 0.6080967720000001 M0.10084924799999939 0.6080967720000001L0.16841916 0.645011802 M0.16841916 0.645011802L0.26927031600000007 0.645011802 M0.26927031600000007 0.645011802L0.33583089600000005 0.6080967720000001 M0.33583089600000005 0.6080967720000001L0.4034008079999998 0.5353151580000001 M1.29512655 0.13555290600000003L1.2264414119999998 0.17141758200000007 M1.2264414119999998 0.17141758200000007L1.157761044 0.24419633399999996 M1.157761044 0.24419633399999996L1.1231394299999993 0.35389202399999997 M1.1231394299999993 0.35389202399999997L1.1231394299999993 0.426673638 M1.1231394299999993 0.426673638L1.157761044 0.5353151580000001 M1.157761044 0.5353151580000001L1.2264414119999998 0.6080967720000001 M1.2264414119999998 0.6080967720000001L1.29512655 0.645011802 M1.29512655 0.645011802L1.3978713959999993 0.645011802 M1.3978713959999993 0.645011802L1.4665574879999994 0.6080967720000001 M1.4665574879999994 0.6080967720000001L1.535239764 0.5353151580000001 M1.535239764 0.5353151580000001L1.5698613779999997 0.426673638 M1.5698613779999997 0.426673638L1.5698613779999997 0.35389202399999997 M1.5698613779999997 0.35389202399999997L1.535239764 0.24419633399999996 M1.535239764 0.24419633399999996L1.4665574879999994 0.17141758200000007 M1.4665574879999994 0.17141758200000007L1.3978713959999993 0.13555290600000003 M1.3978713959999993 0.13555290600000003L1.29512655 0.13555290600000003 M2.2774880159999995 0.13555290600000003L2.2774880159999995 0.816997968 M2.2774880159999995 0.23250029400000005L2.3491162439999997 0.16755578999999998 M2.3491162439999997 0.16755578999999998L2.4196721759999997 0.13555290600000003 M2.4196721759999997 0.13555290600000003L2.5265783699999997 0.13555290600000003 M2.5265783699999997 0.13555290600000003L2.5982065979999995 0.16755578999999998 M2.5982065979999995 0.16755578999999998L2.6698319639999997 0.23250029400000005 M2.6698319639999997 0.23250029400000005L2.7051127919999995 0.330386418 M2.7051127919999995 0.330386418L2.7051127919999995 0.3953318760000001 M2.7051127919999995 0.3953318760000001L2.6698319639999997 0.492277356 M2.6698319639999997 0.492277356L2.5982065979999995 0.5572218600000001 M2.5982065979999995 0.5572218600000001L2.5265783699999997 0.5901625260000001 M2.5265783699999997 0.5901625260000001L2.4196721759999997 0.5901625260000001 M2.4196721759999997 0.5901625260000001L2.3491162439999997 0.5572218600000001 M2.3491162439999997 0.5572218600000001L2.2774880159999995 0.492277356 M3.4222880159999995 0.13555290600000003L3.4222880159999995 0.816997968 M3.4222880159999995 0.23250029400000005L3.493916244 0.16755578999999998 M3.493916244 0.16755578999999998L3.5644721759999998 0.13555290600000003 M3.5644721759999998 0.13555290600000003L3.67137837 0.13555290600000003 M3.67137837 0.13555290600000003L3.7430065979999996 0.16755578999999998 M3.7430065979999996 0.16755578999999998L3.8146319639999997 0.23250029400000005 M3.8146319639999997 0.23250029400000005L3.8499127919999996 0.330386418 M3.8499127919999996 0.330386418L3.8499127919999996 0.3953318760000001 M3.8499127919999996 0.3953318760000001L3.8146319639999997 0.492277356 M3.8146319639999997 0.492277356L3.7430065979999996 0.5572218600000001 M3.7430065979999996 0.5572218600000001L3.67137837 0.5901625260000001 M3.67137837 0.5901625260000001L3.5644721759999998 0.5901625260000001 M3.5644721759999998 0.5901625260000001L3.493916244 0.5572218600000001 M3.493916244 0.5572218600000001L3.4222880159999995 0.492277356 M4.550552334 0.35389202399999997L5.011249428 0.35389202399999997 M5.011249428 0.281114226L4.9732411139999995 0.20833356600000003 M4.9732411139999995 0.20833356600000003L4.934082276 0.17141758200000007 M4.934082276 0.17141758200000007L4.858067556 0.13555290600000003 M4.858067556 0.13555290600000003L4.742893044 0.13555290600000003 M4.742893044 0.13555290600000003L4.665726846 0.17141758200000007 M4.665726846 0.17141758200000007L4.588560648 0.24419633399999996 M4.588560648 0.24419633399999996L4.550552334 0.35389202399999997 M4.550552334 0.35389202399999997L4.550552334 0.426673638 M4.550552334 0.426673638L4.588560648 0.5353151580000001 M4.588560648 0.5353151580000001L4.665726846 0.6080967720000001 M4.665726846 0.6080967720000001L4.742893044 0.645011802 M4.742893044 0.645011802L4.858067556 0.645011802 M4.858067556 0.645011802L4.934082276 0.6080967720000001 M4.934082276 0.6080967720000001L5.011249428 0.5353151580000001 M5.7410021879999995 0.13555290600000003L5.7410021879999995 0.632448576 M5.7410021879999995 0.348507648L5.787177696 0.241516548 M5.787177696 0.241516548L5.879526804 0.17053226999999999 M5.879526804 0.17053226999999999L5.971875912 0.13555290600000003 M5.971875912 0.13555290600000003L6.11039862 0.13555290600000003 M7.704916128 0L7.704916128 0.504376938 M7.704916128 0.504376938L7.7573775419999995 0.592883334 M7.7573775419999995 0.592883334L7.862306094 0.622958184 M7.862306094 0.622958184L7.967232738 0.622958184 M7.54752807 0.20792143800000001L7.914769416 0.20792143800000001 M8.671832334 0.35389202399999997L9.132529428 0.35389202399999997 M9.132529428 0.281114226L9.094521113999999 0.20833356600000003 M9.094521113999999 0.20833356600000003L9.055362276 0.17141758200000007 M9.055362276 0.17141758200000007L8.979347556 0.13555290600000003 M8.979347556 0.13555290600000003L8.864173044 0.13555290600000003 M8.864173044 0.13555290600000003L8.787006846 0.17141758200000007 M8.787006846 0.17141758200000007L8.709840648 0.24419633399999996 M8.709840648 0.24419633399999996L8.671832334 0.35389202399999997 M8.671832334 0.35389202399999997L8.671832334 0.426673638 M8.671832334 0.426673638L8.709840648 0.5353151580000001 M8.709840648 0.5353151580000001L8.787006846 0.6080967720000001 M8.787006846 0.6080967720000001L8.864173044 0.645011802 M8.864173044 0.645011802L8.979347556 0.645011802 M8.979347556 0.645011802L9.055362276 0.6080967720000001 M9.055362276 0.6080967720000001L9.132529428 0.5353151580000001 M9.79520454 0.14813044199999997L10.298757221999999 0.633329118 M10.298757221999999 0.14813044199999997L9.79520454 0.633329118 M11.139316127999999 0L11.139316127999999 0.504376938 M11.139316127999999 0.504376938L11.191777542 0.592883334 M11.191777542 0.592883334L11.296706094 0.622958184 M11.296706094 0.622958184L11.401632738 0.622958184 M10.981928069999999 0.20792143800000001L11.349169415999999 0.20792143800000001" fill="none" stroke="rgb(200, 52, 52)" stroke-width="0.1431" stroke-linecap="round" stroke-linejoin="round" transform="matrix(27.272727272727273,0,0,27.272727272727273,359.0909090909091,361.3636363636364)" class="pcb-copper-text pcb-copper-top" data-type="pcb_copper_text" data-pcb-copper-text-id="pcb_copper_text_1"/></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.1090"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><circle class="pcb-hole" cx="318.1818181818182" cy="368.1818181818182" r="10.90909090909091" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><rect class="pcb-hole" x="356.3636363636364" y="249.5454545454546" width="32.72727272727273" height="19.09090909090909" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M425.90909090909093,324.5454545454545 h24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,21.81818181818182 h-24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,-21.81818181818182 z" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M-12.272727272727273,-12.272727272727273 h24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,24.545454545454547 h-24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,-24.545454545454547 z" transform="translate(470.9090909090909 245.45454545454544) rotate(-90)" data-type="pcb_hole" data-pcb-layer="drill"/><circle class="pcb-hole" cx="318.1818181818182" cy="368.1818181818182" r="10.90909090909091" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><rect class="pcb-hole" x="356.3636363636364" y="249.5454545454546" width="32.72727272727273" height="19.09090909090909" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M425.90909090909093,324.5454545454545 h24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,21.81818181818182 h-24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,-21.81818181818182 z" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M-12.272727272727273,-12.272727272727273 h24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,24.545454545454547 h-24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,-24.545454545454547 z" transform="translate(470.9090909090909 245.45454545454544) rotate(-90)" data-type="pcb_hole" data-pcb-layer="drill"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.1306"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><circle class="pcb-hole" cx="318.1818181818182" cy="368.1818181818182" r="10.90909090909091" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><rect class="pcb-hole" x="356.3636363636364" y="249.5454545454546" width="32.72727272727273" height="19.09090909090909" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><ellipse class="pcb-hole" cx="405.45454545454544" cy="289.09090909090907" rx="20.454545454545453" ry="10.227272727272727" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M425.90909090909093,324.5454545454545 h24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,21.81818181818182 h-24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,-21.81818181818182 z" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M-12.272727272727273,-12.272727272727273 h24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,24.545454545454547 h-24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,-24.545454545454547 z" transform="translate(470.9090909090909 245.45454545454544) rotate(-90)" data-type="pcb_hole" data-pcb-layer="drill"/><circle class="pcb-hole" cx="318.1818181818182" cy="368.1818181818182" r="10.90909090909091" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><rect class="pcb-hole" x="356.3636363636364" y="249.5454545454546" width="32.72727272727273" height="19.09090909090909" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><ellipse class="pcb-hole" cx="405.45454545454544" cy="289.09090909090907" rx="20.454545454545453" ry="10.227272727272727" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M425.90909090909093,324.5454545454545 h24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,21.81818181818182 h-24.545454545454547 a10.90909090909091,10.90909090909091 0 0 1 0,-21.81818181818182 z" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M-12.272727272727273,-12.272727272727273 h24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,24.545454545454547 h-24.545454545454547 a12.272727272727273,12.272727272727273 0 0 1 0,-24.545454545454547 z" transform="translate(470.9090909090909 245.45454545454544) rotate(-90)" data-type="pcb_hole" data-pcb-layer="drill"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.1090"><style></style><defs><pattern id="pcb-keepout-pattern" width="20" height="20" patternUnits="userSpaceOnUse"><line x1="-20" y1="0" x2="0" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="-15" y1="0" x2="5" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="-10" y1="0" x2="10" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="-5" y1="0" x2="15" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="0" y1="0" x2="20" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="5" y1="0" x2="25" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="10" y1="0" x2="30" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="15" y1="0" x2="35" y2="20" stroke="#FF6B6B" stroke-width="1"/><line x1="20" y1="0" x2="40" y2="20" stroke="#FF6B6B" stroke-width="1"/></pattern></defs><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-keepout pcb-keepout-rect pcb-keepout-background" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_0" stroke="none" x="-43.63636363636364" y="-19.09090909090909" width="87.27272727272728" height="38.18181818181818" fill="rgba(255, 107, 107, 0.2)" transform="matrix(1,0,0,1,359.0909090909091,245.45454545454544)"/><rect class="pcb-keepout pcb-keepout-rect pcb-keepout-pattern" fill="url(#pcb-keepout-pattern)" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_0" stroke="none" x="-43.63636363636364" y="-19.09090909090909" width="87.27272727272728" height="38.18181818181818" transform="matrix(1,0,0,1,359.0909090909091,245.45454545454544)"/><circle class="pcb-keepout pcb-keepout-circle pcb-keepout-background" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_1" stroke="none" cx="468.1818181818182" cy="327.27272727272725" r="24.545454545454547" fill="rgba(255, 107, 107, 0.2)"/><circle class="pcb-keepout pcb-keepout-circle pcb-keepout-pattern" fill="url(#pcb-keepout-pattern)" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_1" stroke="none" cx="468.1818181818182" cy="327.27272727272725" r="24.545454545454547"/><rect class="pcb-keepout pcb-keepout-rect pcb-keepout-background" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_2" stroke="none" x="-43.63636363636364" y="-19.09090909090909" width="87.27272727272728" height="38.18181818181818" fill="rgba(255, 107, 107, 0.2)" transform="matrix(1,0,0,1,359.0909090909091,245.45454545454544)"/><rect class="pcb-keepout pcb-keepout-rect pcb-keepout-pattern" fill="url(#pcb-keepout-pattern)" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_2" stroke="none" x="-43.63636363636364" y="-19.09090909090909" width="87.27272727272728" height="38.18181818181818" transform="matrix(1,0,0,1,359.0909090909091,245.45454545454544)"/><circle class="pcb-keepout pcb-keepout-circle pcb-keepout-background" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_3" stroke="none" cx="468.1818181818182" cy="327.27272727272725" r="24.545454545454547" fill="rgba(255, 107, 107, 0.2)"/><circle class="pcb-keepout pcb-keepout-circle pcb-keepout-pattern" fill="url(#pcb-keepout-pattern)" data-type="pcb_keepout" data-pcb-layer="top" data-pcb-keepout-id="pcb_keepout_3" stroke="none" cx="468.1818181818182" cy="327.27272727272725" r="24.545454545454547"/></svg>
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.1090"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><g data-type="pcb_plated_hole" data-pcb-layer="through"><path class="pcb-hole-outer" fill="rgb(200, 52, 52)" d="M-15,-16.363636363636363 h30 a16.363636363636363,16.363636363636363 0 0 1 0,32.72727272727273 h-30 a16.363636363636363,16.363636363636363 0 0 1 0,-32.72727272727273 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><path class="pcb-hole-inner" fill="#FF26E2" d="M-11.59090909090909,-8.863636363636363 h23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,17.727272727272727 h-23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,-17.727272727272727 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><ellipse class="pcb-hole-outer" fill="rgb(200, 52, 52)" cx="0" cy="0" rx="32.72727272727273" ry="19.09090909090909" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="0" cy="0" rx="20.454545454545453" ry="10.90909090909091" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="475.27272727272725" y="278.1818181818182" width="57.27272727272727" height="43.63636363636364" rx="6.818181818181818" ry="6.818181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><circle class="pcb-hole-inner" fill="#FF26E2" cx="503.9090909090909" cy="300" r="13.636363636363637" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="315.45454545454544" y="211.63636363636363" width="65.45454545454545" height="38.18181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><rect class="pcb-hole-inner" fill="#FF26E2" x="331.8181818181818" y="221.1818181818182" width="43.63636363636364" height="19.09090909090909" rx="9.545454545454545" ry="9.545454545454545" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><polygon class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" points="419.09090909090907,230.72727272727272 442.27272727272725,208.9090909090909 470.9090909090909,208.9090909090909 484.5454545454545,230.72727272727272 470.9090909090909,252.54545454545456 442.27272727272725,252.54545454545456" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="451.8181818181818" cy="230.72727272727272" rx="19.09090909090909" ry="10.227272727272727" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><path class="pcb-hole-outer" fill="rgb(200, 52, 52)" d="M-15,-16.363636363636363 h30 a16.363636363636363,16.363636363636363 0 0 1 0,32.72727272727273 h-30 a16.363636363636363,16.363636363636363 0 0 1 0,-32.72727272727273 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><path class="pcb-hole-inner" fill="#FF26E2" d="M-11.59090909090909,-8.863636363636363 h23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,17.727272727272727 h-23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,-17.727272727272727 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><ellipse class="pcb-hole-outer" fill="rgb(200, 52, 52)" cx="0" cy="0" rx="32.72727272727273" ry="19.09090909090909" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="0" cy="0" rx="20.454545454545453" ry="10.90909090909091" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="475.27272727272725" y="278.1818181818182" width="57.27272727272727" height="43.63636363636364" rx="6.818181818181818" ry="6.818181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><circle class="pcb-hole-inner" fill="#FF26E2" cx="503.9090909090909" cy="300" r="13.636363636363637" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="315.45454545454544" y="211.63636363636363" width="65.45454545454545" height="38.18181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><rect class="pcb-hole-inner" fill="#FF26E2" x="331.8181818181818" y="221.1818181818182" width="43.63636363636364" height="19.09090909090909" rx="9.545454545454545" ry="9.545454545454545" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><polygon class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" points="419.09090909090907,230.72727272727272 442.27272727272725,208.9090909090909 470.9090909090909,208.9090909090909 484.5454545454545,230.72727272727272 470.9090909090909,252.54545454545456 442.27272727272725,252.54545454545456" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="451.8181818181818" cy="230.72727272727272" rx="19.09090909090909" ry="10.227272727272727" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.1300"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><g data-type="pcb_plated_hole" data-pcb-layer="through"><path class="pcb-hole-outer" fill="rgb(200, 52, 52)" d="M-15,-16.363636363636363 h30 a16.363636363636363,16.363636363636363 0 0 1 0,32.72727272727273 h-30 a16.363636363636363,16.363636363636363 0 0 1 0,-32.72727272727273 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><path class="pcb-hole-inner" fill="#FF26E2" d="M-11.59090909090909,-8.863636363636363 h23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,17.727272727272727 h-23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,-17.727272727272727 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><ellipse class="pcb-hole-outer" fill="rgb(200, 52, 52)" cx="0" cy="0" rx="32.72727272727273" ry="19.09090909090909" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="0" cy="0" rx="20.454545454545453" ry="10.90909090909091" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="475.27272727272725" y="278.1818181818182" width="57.27272727272727" height="43.63636363636364" rx="6.818181818181818" ry="6.818181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><circle class="pcb-hole-inner" fill="#FF26E2" cx="503.9090909090909" cy="300" r="13.636363636363637" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="315.45454545454544" y="211.63636363636363" width="65.45454545454545" height="38.18181818181818" rx="6.818181818181818" ry="6.818181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><rect class="pcb-hole-inner" fill="#FF26E2" x="331.8181818181818" y="221.1818181818182" width="43.63636363636364" height="19.09090909090909" rx="9.545454545454545" ry="9.545454545454545" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><polygon class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" points="419.09090909090907,230.72727272727272 442.27272727272725,208.9090909090909 470.9090909090909,208.9090909090909 484.5454545454545,230.72727272727272 470.9090909090909,252.54545454545456 442.27272727272725,252.54545454545456" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="451.8181818181818" cy="230.72727272727272" rx="19.09090909090909" ry="10.227272727272727" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><path class="pcb-hole-outer" fill="rgb(200, 52, 52)" d="M-15,-16.363636363636363 h30 a16.363636363636363,16.363636363636363 0 0 1 0,32.72727272727273 h-30 a16.363636363636363,16.363636363636363 0 0 1 0,-32.72727272727273 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><path class="pcb-hole-inner" fill="#FF26E2" d="M-11.59090909090909,-8.863636363636363 h23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,17.727272727272727 h-23.18181818181818 a8.863636363636363,8.863636363636363 0 0 1 0,-17.727272727272727 z" transform="translate(296.0909090909091 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><ellipse class="pcb-hole-outer" fill="rgb(200, 52, 52)" cx="0" cy="0" rx="32.72727272727273" ry="19.09090909090909" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="0" cy="0" rx="20.454545454545453" ry="10.90909090909091" transform="translate(400 300) rotate(-90)" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="475.27272727272725" y="278.1818181818182" width="57.27272727272727" height="43.63636363636364" rx="6.818181818181818" ry="6.818181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><circle class="pcb-hole-inner" fill="#FF26E2" cx="503.9090909090909" cy="300" r="13.636363636363637" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><rect class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" x="315.45454545454544" y="211.63636363636363" width="65.45454545454545" height="38.18181818181818" rx="6.818181818181818" ry="6.818181818181818" data-type="pcb_plated_hole" data-pcb-layer="top"/><rect class="pcb-hole-inner" fill="#FF26E2" x="331.8181818181818" y="221.1818181818182" width="43.63636363636364" height="19.09090909090909" rx="9.545454545454545" ry="9.545454545454545" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><g data-type="pcb_plated_hole" data-pcb-layer="through"><polygon class="pcb-hole-outer-pad" fill="rgb(200, 52, 52)" points="419.09090909090907,230.72727272727272 442.27272727272725,208.9090909090909 470.9090909090909,208.9090909090909 484.5454545454545,230.72727272727272 470.9090909090909,252.54545454545456 442.27272727272725,252.54545454545456" data-type="pcb_plated_hole" data-pcb-layer="top"/><ellipse class="pcb-hole-inner" fill="#FF26E2" cx="451.8181818181818" cy="230.72727272727272" rx="19.09090909090909" ry="10.227272727272727" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g></svg>
@@ -15,6 +15,7 @@ test("test15 support pcb holes", async () => {
15
15
  footprint={<footprint>
16
16
  <hole pcbX="-3mm" pcbY="-2.5mm" diameter="0.8mm" />
17
17
  <hole pcbX="-1mm" pcbY="1.5mm" width="1.2mm" height="0.7mm" shape="rect" />
18
+ <hole pcbX="0.2mm" pcbY="0.4mm" width="1.5mm" height="0.75mm" shape="oval" />
18
19
  <hole pcbX="1.4mm" pcbY="-1.3mm" width="1.7mm" height="0.8mm" shape="pill" />
19
20
  <hole pcbX="2.6mm" pcbY="2mm" width="1.8mm" height="0.9mm" shape="pill" pcbRotation="90deg" />
20
21
  </footprint>}
@@ -80,6 +81,16 @@ const circuitJson: any = [
80
81
  hole_width: 1.2,
81
82
  hole_height: 0.7,
82
83
  },
84
+ {
85
+ type: "pcb_hole",
86
+ pcb_hole_id: "hole_oval",
87
+ pcb_component_id: "pcb_generic_component_0",
88
+ hole_shape: "oval",
89
+ x: 0.2,
90
+ y: 0.4,
91
+ hole_width: 1.5,
92
+ hole_height: 0.75,
93
+ },
83
94
  {
84
95
  type: "pcb_hole",
85
96
  pcb_hole_id: "hole_pill",
@@ -0,0 +1,82 @@
1
+ import { expect, test } from "bun:test"
2
+ import { convertCircuitJsonToPcbSvg } from "circuit-to-svg"
3
+ import type { AnyCircuitElement } from "circuit-json"
4
+ import { convertCircuitJsonToTscircuit } from "lib"
5
+ import { runTscircuitCode } from "tscircuit"
6
+
7
+ test("test17 support pcb keepouts", async () => {
8
+ const tscircuit = convertCircuitJsonToTscircuit(circuitJson, {
9
+ componentName: "Test17Component",
10
+ })
11
+
12
+ expect(tscircuit).toMatchInlineSnapshot(`
13
+ "import { type ChipProps } from "tscircuit"
14
+ export const Test17Component = (props: ChipProps) => (
15
+ <chip
16
+ footprint={<footprint>
17
+ <keepout shape="rect" pcbX="-1.5mm" pcbY="2mm" width="3.2mm" height="1.4mm" />
18
+ <keepout shape="circle" pcbX="2.5mm" pcbY="-1mm" radius="0.9mm" />
19
+ </footprint>}
20
+ {...props}
21
+ />
22
+ )"
23
+ `)
24
+
25
+ const renderedCircuitJson = (await runTscircuitCode(`
26
+ ${tscircuit}
27
+
28
+ circuit.add(
29
+ <board width="20mm" height="20mm">
30
+ <Test17Component />
31
+ </board>,
32
+ )
33
+ `)) as AnyCircuitElement[]
34
+
35
+ const renderedKeepouts = renderedCircuitJson.filter(
36
+ (elm) => elm.type === "pcb_keepout",
37
+ )
38
+
39
+ expect(renderedKeepouts.length).toBeGreaterThanOrEqual(2)
40
+ expect(renderedKeepouts).toEqual(
41
+ expect.arrayContaining([
42
+ expect.objectContaining({
43
+ type: "pcb_keepout",
44
+ layers: ["top"],
45
+ shape: "rect",
46
+ width: 3.2,
47
+ height: 1.4,
48
+ center: { x: -1.5, y: 2 },
49
+ }),
50
+ expect.objectContaining({
51
+ type: "pcb_keepout",
52
+ layers: ["top"],
53
+ shape: "circle",
54
+ radius: 0.9,
55
+ center: { x: 2.5, y: -1 },
56
+ }),
57
+ ]),
58
+ )
59
+
60
+ const pcbSvg = convertCircuitJsonToPcbSvg(renderedCircuitJson)
61
+ await expect(pcbSvg).toMatchSvgSnapshot(import.meta.path, "pcb")
62
+ })
63
+
64
+ const circuitJson: AnyCircuitElement[] = [
65
+ {
66
+ type: "pcb_keepout",
67
+ pcb_keepout_id: "keepout_rect",
68
+ shape: "rect",
69
+ center: { x: -1.5, y: 2 },
70
+ width: 3.2,
71
+ height: 1.4,
72
+ layers: ["top"],
73
+ },
74
+ {
75
+ type: "pcb_keepout",
76
+ pcb_keepout_id: "keepout_circle",
77
+ shape: "circle",
78
+ center: { x: 2.5, y: -1 },
79
+ radius: 0.9,
80
+ layers: ["top"],
81
+ },
82
+ ]
@@ -61,6 +61,7 @@ const circuitJson: AnyCircuitElement[] = [
61
61
  { x: 4, y: 4 },
62
62
  ],
63
63
  fill_color: "blue",
64
+ is_dashed: false,
64
65
  },
65
66
  {
66
67
  type: "schematic_text",