easyeda 0.0.210 → 0.0.211

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 @@
1
+ {"version":3,"sources":["../../node_modules/svgson/dist/svgson.umd.js","../../node_modules/transformation-matrix/src/applyToPoint.js","../../node_modules/transformation-matrix/src/translate.js","../../node_modules/transformation-matrix/src/transform.js","../../node_modules/transformation-matrix/src/utils.js","../../node_modules/transformation-matrix/src/rotate.js","../../node_modules/transformation-matrix/src/scale.js","../../node_modules/transformation-matrix/src/toString.js","../../node_modules/transformation-matrix/src/inverse.js","../../node_modules/transformation-matrix/src/smoothMatrix.js","../../node_modules/transformation-matrix/src/fromTriangles.js","../../node_modules/transformation-matrix/src/identity.js","../../node_modules/transformation-matrix/src/skew.js","../../node_modules/transformation-matrix/src/fromTransformAttribute.autogenerated.js","../../node_modules/transformation-matrix/src/decompose.js","../../node_modules/transformation-matrix/src/flip.js","../../node_modules/circuit-json/src/utils/convert-si-unit-to-number.ts","../../node_modules/circuit-json/src/units/index.ts","../../node_modules/circuit-json/src/common/point.ts","../../node_modules/circuit-json/src/utils/expect-types-match.ts","../../node_modules/circuit-json/src/common/point3.ts","../../node_modules/circuit-json/src/common/size.ts","../../node_modules/circuit-json/src/common/getZodPrefixedIdWithDefault.ts","../../node_modules/circuit-json/src/common/NinePointAnchor.ts","../../node_modules/circuit-json/src/source/source_simple_capacitor.ts","../../node_modules/circuit-json/src/pcb/properties/supplier_name.ts","../../node_modules/circuit-json/src/source/base/source_component_base.ts","../../node_modules/circuit-json/src/source/source_simple_resistor.ts","../../node_modules/circuit-json/src/source/source_simple_diode.ts","../../node_modules/circuit-json/src/source/source_simple_led.ts","../../node_modules/circuit-json/src/source/source_simple_ground.ts","../../node_modules/circuit-json/src/source/source_simple_chip.ts","../../node_modules/circuit-json/src/source/source_simple_power_source.ts","../../node_modules/circuit-json/src/source/any_source_component.ts","../../node_modules/circuit-json/src/source/source_simple_fuse.ts","../../node_modules/circuit-json/src/source/source_simple_battery.ts","../../node_modules/circuit-json/src/source/source_simple_inductor.ts","../../node_modules/circuit-json/src/source/source_simple_push_button.ts","../../node_modules/circuit-json/src/source/source_simple_potentiometer.ts","../../node_modules/circuit-json/src/source/source_simple_crystal.ts","../../node_modules/circuit-json/src/source/source_simple_pin_header.ts","../../node_modules/circuit-json/src/source/source_simple_resonator.ts","../../node_modules/circuit-json/src/source/source_simple_transistor.ts","../../node_modules/circuit-json/src/source/source_simple_test_point.ts","../../node_modules/circuit-json/src/source/source_simple_mosfet.ts","../../node_modules/circuit-json/src/source/source_simple_switch.ts","../../node_modules/circuit-json/src/source/source_project_metadata.ts","../../node_modules/circuit-json/src/source/source_missing_property_error.ts","../../node_modules/circuit-json/src/source/source_failed_to_create_component_error.ts","../../node_modules/circuit-json/src/source/source_port.ts","../../node_modules/circuit-json/src/source/source_trace.ts","../../node_modules/circuit-json/src/source/source_group.ts","../../node_modules/circuit-json/src/source/source_net.ts","../../node_modules/circuit-json/src/source/source_pcb_ground_plane.ts","../../node_modules/circuit-json/src/schematic/schematic_box.ts","../../node_modules/circuit-json/src/schematic/schematic_path.ts","../../node_modules/circuit-json/src/schematic/schematic_component.ts","../../node_modules/circuit-json/src/schematic/schematic_line.ts","../../node_modules/circuit-json/src/schematic/schematic_trace.ts","../../node_modules/circuit-json/src/schematic/schematic_text.ts","../../node_modules/circuit-json/src/common/FivePointAnchor.ts","../../node_modules/circuit-json/src/schematic/schematic_port.ts","../../node_modules/circuit-json/src/schematic/schematic_net_label.ts","../../node_modules/circuit-json/src/schematic/schematic_error.ts","../../node_modules/circuit-json/src/schematic/schematic_layout_error.ts","../../node_modules/circuit-json/src/schematic/schematic_debug_object.ts","../../node_modules/circuit-json/src/schematic/schematic_voltage_probe.ts","../../node_modules/circuit-json/src/schematic/schematic_manual_edit_conflict_warning.ts","../../node_modules/circuit-json/src/schematic/schematic_group.ts","../../node_modules/circuit-json/src/pcb/properties/layer_ref.ts","../../node_modules/circuit-json/src/pcb/properties/pcb_route_hints.ts","../../node_modules/circuit-json/src/pcb/properties/route_hint_point.ts","../../node_modules/circuit-json/src/pcb/pcb_component.ts","../../node_modules/circuit-json/src/pcb/pcb_hole.ts","../../node_modules/circuit-json/src/pcb/pcb_plated_hole.ts","../../node_modules/circuit-json/src/pcb/pcb_port.ts","../../node_modules/circuit-json/src/pcb/pcb_smtpad.ts","../../node_modules/circuit-json/src/pcb/pcb_solder_paste.ts","../../node_modules/circuit-json/src/pcb/pcb_text.ts","../../node_modules/circuit-json/src/pcb/pcb_trace.ts","../../node_modules/circuit-json/src/pcb/pcb_trace_error.ts","../../node_modules/circuit-json/src/pcb/pcb_port_not_matched_error.ts","../../node_modules/circuit-json/src/pcb/pcb_via.ts","../../node_modules/circuit-json/src/pcb/pcb_board.ts","../../node_modules/circuit-json/src/pcb/pcb_placement_error.ts","../../node_modules/circuit-json/src/pcb/pcb_trace_hint.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_line.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_path.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_text.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_rect.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_circle.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_oval.ts","../../node_modules/circuit-json/src/pcb/pcb_fabrication_note_text.ts","../../node_modules/circuit-json/src/pcb/pcb_fabrication_note_path.ts","../../node_modules/circuit-json/src/pcb/pcb_keepout.ts","../../node_modules/circuit-json/src/pcb/pcb_cutout.ts","../../node_modules/circuit-json/src/pcb/pcb_missing_footprint_error.ts","../../node_modules/circuit-json/src/pcb/pcb_group.ts","../../node_modules/circuit-json/src/pcb/pcb_autorouting_error.ts","../../node_modules/circuit-json/src/pcb/pcb_manual_edit_conflict_warning.ts","../../node_modules/circuit-json/src/pcb/pcb_breakout_point.ts","../../node_modules/circuit-json/src/pcb/pcb_ground_plane.ts","../../node_modules/circuit-json/src/pcb/pcb_ground_plane_region.ts","../../node_modules/circuit-json/src/pcb/pcb_thermal_spoke.ts","../../node_modules/circuit-json/src/cad/cad_component.ts","../../node_modules/circuit-json/src/any_circuit_element.ts","../../node_modules/nanoid/url-alphabet/index.js","../../node_modules/nanoid/index.browser.js","../../node_modules/@tscircuit/circuit-json-util/lib/cju.ts","../../node_modules/@tscircuit/circuit-json-util/lib/subtree.ts","../../node_modules/@tscircuit/circuit-json-util/lib/cju-indexed.ts","../../node_modules/@tscircuit/circuit-json-util/lib/transform-soup-elements.ts","../../node_modules/@tscircuit/circuit-json-util/lib/direction-to-vec.ts","../../node_modules/@tscircuit/circuit-json-util/lib/apply-selector.ts","../../node_modules/@tscircuit/circuit-json-util/lib/convert-abbreviation-to-soup-element-type.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-element-id.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-element-by-id.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-pcb-trace.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-pcb-port.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-pcb-smtpad.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-element.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-bounds-of-pcb-elements.ts","../../node_modules/@tscircuit/circuit-json-util/lib/utils/string-hash.ts","../../node_modules/@tscircuit/circuit-json-util/lib/utils/get-layout-debug-object.ts","../../node_modules/@tscircuit/circuit-json-util/lib/utils/is-truthy.ts","../../node_modules/@tscircuit/circuit-json-util/lib/find-bounds-and-center.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-primary-id.ts","../../node_modules/@tscircuit/circuit-json-util/lib/reposition-pcb-component.ts","../../node_modules/@tscircuit/circuit-json-util/lib/getCircuitJsonTree.ts","../../node_modules/@tscircuit/circuit-json-util/lib/getStringFromCircuitJsonTree.ts","../../node_modules/schematic-symbols/drawing/utils/getBoundsOfPrimitives.ts","../../node_modules/schematic-symbols/drawing/defineSymbol.ts","../../node_modules/schematic-symbols/assets/generated/ac_voltmeter.json","../../node_modules/schematic-symbols/symbols/ac_voltmeter_horz.ts","../../node_modules/schematic-symbols/drawing/rotateSymbol.ts","../../node_modules/schematic-symbols/symbols/ac_voltmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/avalanche_diode.json","../../node_modules/schematic-symbols/symbols/avalanche_diode_horz.ts","../../node_modules/schematic-symbols/symbols/avalanche_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/backward_diode.json","../../node_modules/schematic-symbols/drawing/modify-symbol/modify-symbol.ts","../../node_modules/schematic-symbols/symbols/backward_diode_down.ts","../../node_modules/schematic-symbols/symbols/backward_diode_left.ts","../../node_modules/schematic-symbols/symbols/backward_diode_right.ts","../../node_modules/schematic-symbols/symbols/backward_diode_up.ts","../../node_modules/schematic-symbols/assets/generated/battery.json","../../node_modules/schematic-symbols/symbols/battery_horz.ts","../../node_modules/schematic-symbols/symbols/battery_vert.ts","../../node_modules/schematic-symbols/assets/generated/boxresistor.json","../../node_modules/schematic-symbols/symbols/boxresistor_down.ts","../../node_modules/schematic-symbols/symbols/boxresistor_left.ts","../../node_modules/schematic-symbols/symbols/boxresistor_right.ts","../../node_modules/schematic-symbols/assets/generated/boxresistor_small.json","../../node_modules/schematic-symbols/symbols/boxresistor_small_down.ts","../../node_modules/schematic-symbols/symbols/boxresistor_small_left.ts","../../node_modules/schematic-symbols/symbols/boxresistor_small_right.ts","../../node_modules/schematic-symbols/symbols/boxresistor_small_up.ts","../../node_modules/schematic-symbols/symbols/boxresistor_up.ts","../../node_modules/schematic-symbols/assets/generated/bridged_ground.json","../../node_modules/schematic-symbols/symbols/bridged_ground_down.ts","../../node_modules/schematic-symbols/symbols/bridged_ground_right.ts","../../node_modules/schematic-symbols/symbols/bridged_ground_left.ts","../../node_modules/schematic-symbols/symbols/bridged_ground_up.ts","../../node_modules/schematic-symbols/assets/generated/capacitor.json","../../node_modules/schematic-symbols/symbols/capacitor_down.ts","../../node_modules/schematic-symbols/symbols/capacitor_left.ts","../../node_modules/schematic-symbols/assets/generated/capacitor_polarized.json","../../node_modules/schematic-symbols/symbols/capacitor_polarized_down.ts","../../node_modules/schematic-symbols/symbols/capacitor_polarized_left.ts","../../node_modules/schematic-symbols/symbols/capacitor_polarized_right.ts","../../node_modules/schematic-symbols/symbols/capacitor_polarized_up.ts","../../node_modules/schematic-symbols/symbols/capacitor_right.ts","../../node_modules/schematic-symbols/symbols/capacitor_up.ts","../../node_modules/schematic-symbols/assets/generated/constant_current_diode.json","../../node_modules/schematic-symbols/symbols/constant_current_diode_horz.ts","../../node_modules/schematic-symbols/symbols/constant_current_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/crystal_4pin.json","../../node_modules/schematic-symbols/symbols/crystal_4pin_horz.ts","../../node_modules/schematic-symbols/symbols/crystal_4pin_vert.ts","../../node_modules/schematic-symbols/assets/generated/crystal.json","../../node_modules/schematic-symbols/symbols/crystal_down.ts","../../node_modules/schematic-symbols/symbols/crystal_left.ts","../../node_modules/schematic-symbols/symbols/crystal_right.ts","../../node_modules/schematic-symbols/symbols/crystal_up.ts","../../node_modules/schematic-symbols/assets/generated/darlington_pair_transistor.json","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/dc_ammeter.json","../../node_modules/schematic-symbols/symbols/dc_ammeter_horz.ts","../../node_modules/schematic-symbols/symbols/dc_ammeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/dc_voltmeter.json","../../node_modules/schematic-symbols/symbols/dc_voltmeter_horz.ts","../../node_modules/schematic-symbols/symbols/dc_voltmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/diac.json","../../node_modules/schematic-symbols/symbols/diac_horz.ts","../../node_modules/schematic-symbols/symbols/diac_vert.ts","../../node_modules/schematic-symbols/assets/generated/diode.json","../../node_modules/schematic-symbols/symbols/diode_right.ts","../../node_modules/schematic-symbols/symbols/diode_down.ts","../../node_modules/schematic-symbols/symbols/diode_left.ts","../../node_modules/schematic-symbols/symbols/diode_up.ts","../../node_modules/schematic-symbols/assets/generated/dpdt_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/dpdt_switch.json","../../node_modules/schematic-symbols/symbols/dpdt_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpdt_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpdt_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpdt_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/dpst_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/dpst_switch.json","../../node_modules/schematic-symbols/symbols/dpst_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpst_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpst_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpst_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/ferrite_bead.json","../../node_modules/schematic-symbols/symbols/ferrite_bead_up.ts","../../node_modules/schematic-symbols/symbols/ferrite_bead_down.ts","../../node_modules/schematic-symbols/symbols/ferrite_bead_right.ts","../../node_modules/schematic-symbols/symbols/ferrite_bead_left.ts","../../node_modules/schematic-symbols/assets/generated/filled_diode.json","../../node_modules/schematic-symbols/symbols/filled_diode_horz.ts","../../node_modules/schematic-symbols/symbols/filled_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/frequency_meter.json","../../node_modules/schematic-symbols/symbols/frequency_meter_horz.ts","../../node_modules/schematic-symbols/symbols/frequency_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/fuse.json","../../node_modules/schematic-symbols/symbols/fuse_horz.ts","../../node_modules/schematic-symbols/symbols/fuse_vert.ts","../../node_modules/schematic-symbols/assets/generated/ground.json","../../node_modules/schematic-symbols/symbols/ground_down.ts","../../node_modules/schematic-symbols/symbols/ground_horz.ts","../../node_modules/schematic-symbols/symbols/ground_left.ts","../../node_modules/schematic-symbols/symbols/ground_right.ts","../../node_modules/schematic-symbols/symbols/ground_up.ts","../../node_modules/schematic-symbols/symbols/ground_vert.ts","../../node_modules/schematic-symbols/assets/generated/ground2.json","../../node_modules/schematic-symbols/symbols/ground2_down.ts","../../node_modules/schematic-symbols/symbols/ground2_left.ts","../../node_modules/schematic-symbols/symbols/ground2_right.ts","../../node_modules/schematic-symbols/symbols/ground2_up.ts","../../node_modules/schematic-symbols/assets/generated/gunn_diode.json","../../node_modules/schematic-symbols/symbols/gunn_diode_horz.ts","../../node_modules/schematic-symbols/symbols/gunn_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/icled.json","../../node_modules/schematic-symbols/symbols/icled_right.ts","../../node_modules/schematic-symbols/symbols/icled_down.ts","../../node_modules/schematic-symbols/symbols/icled_left.ts","../../node_modules/schematic-symbols/symbols/icled_up.ts","../../node_modules/schematic-symbols/assets/generated/igbt_transistor.json","../../node_modules/schematic-symbols/symbols/igbt_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/igbt_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/illuminated_push_button_normally_open.json","../../node_modules/schematic-symbols/symbols/illuminated_push_button_normally_open_horz.ts","../../node_modules/schematic-symbols/symbols/illuminated_push_button_normally_open_vert.ts","../../node_modules/schematic-symbols/assets/generated/inductor.json","../../node_modules/schematic-symbols/symbols/inductor_right.ts","../../node_modules/schematic-symbols/symbols/inductor_up.ts","../../node_modules/schematic-symbols/symbols/inductor_down.ts","../../node_modules/schematic-symbols/symbols/inductor_left.ts","../../node_modules/schematic-symbols/assets/generated/laser_diode.json","../../node_modules/schematic-symbols/symbols/laser_diode_horz.ts","../../node_modules/schematic-symbols/symbols/laser_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/led.json","../../node_modules/schematic-symbols/symbols/led_right.ts","../../node_modules/schematic-symbols/symbols/led_up.ts","../../node_modules/schematic-symbols/symbols/led_down.ts","../../node_modules/schematic-symbols/symbols/led_left.ts","../../node_modules/schematic-symbols/assets/generated/light_dependent_resistor.json","../../node_modules/schematic-symbols/symbols/light_dependent_resistor_horz.ts","../../node_modules/schematic-symbols/symbols/light_dependent_resistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/mosfet_depletion_normally_on.json","../../node_modules/schematic-symbols/symbols/mosfet_depletion_normally_on_horz.ts","../../node_modules/schematic-symbols/symbols/mosfet_depletion_normally_on_vert.ts","../../node_modules/schematic-symbols/assets/generated/mushroom_head_normally_open_momentary.json","../../node_modules/schematic-symbols/symbols/mushroom_head_normally_open_momentary_horz.ts","../../node_modules/schematic-symbols/symbols/mushroom_head_normally_open_momentary_vert.ts","../../node_modules/schematic-symbols/assets/generated/n_channel_d_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/n_channel_d_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/n_channel_d_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/n_channel_e_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/n_channel_e_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/n_channel_e_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/njfet_transistor.json","../../node_modules/schematic-symbols/symbols/njfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/njfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/npn_bipolar_transistor.json","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/opamp_no_power.json","../../node_modules/schematic-symbols/symbols/opamp_no_power_right.ts","../../node_modules/schematic-symbols/symbols/opamp_no_power_down.ts","../../node_modules/schematic-symbols/symbols/opamp_no_power_left.ts","../../node_modules/schematic-symbols/symbols/opamp_no_power_up.ts","../../node_modules/schematic-symbols/assets/generated/opamp_with_power.json","../../node_modules/schematic-symbols/symbols/opamp_with_power_right.ts","../../node_modules/schematic-symbols/symbols/opamp_with_power_down.ts","../../node_modules/schematic-symbols/symbols/opamp_with_power_left.ts","../../node_modules/schematic-symbols/symbols/opamp_with_power_up.ts","../../node_modules/schematic-symbols/assets/generated/p_channel_d_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/p_channel_d_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/p_channel_d_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/p_channel_e_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/p_channel_e_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/p_channel_e_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/photodiode.json","../../node_modules/schematic-symbols/symbols/photodiode_horz.ts","../../node_modules/schematic-symbols/symbols/photodiode_vert.ts","../../node_modules/schematic-symbols/assets/generated/pjfet_transistor.json","../../node_modules/schematic-symbols/symbols/pjfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/pjfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/pnp_bipolar_transistor.json","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/potentiometer.json","../../node_modules/schematic-symbols/symbols/potentiometer_horz.ts","../../node_modules/schematic-symbols/symbols/potentiometer_vert.ts","../../node_modules/schematic-symbols/assets/generated/potentiometer2.json","../../node_modules/schematic-symbols/symbols/potentiometer2_right.ts","../../node_modules/schematic-symbols/symbols/potentiometer2_down.ts","../../node_modules/schematic-symbols/symbols/potentiometer2_left.ts","../../node_modules/schematic-symbols/symbols/potentiometer2_up.ts","../../node_modules/schematic-symbols/assets/generated/potentiometer3.json","../../node_modules/schematic-symbols/symbols/potentiometer3_right.ts","../../node_modules/schematic-symbols/symbols/potentiometer3_down.ts","../../node_modules/schematic-symbols/symbols/potentiometer3_left.ts","../../node_modules/schematic-symbols/symbols/potentiometer3_up.ts","../../node_modules/schematic-symbols/assets/generated/power_factor_meter.json","../../node_modules/schematic-symbols/symbols/power_factor_meter_horz.ts","../../node_modules/schematic-symbols/symbols/power_factor_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/push_button_normally_closed_momentary.json","../../node_modules/schematic-symbols/symbols/push_button_normally_closed_momentary_horz.ts","../../node_modules/schematic-symbols/symbols/push_button_normally_closed_momentary_vert.ts","../../node_modules/schematic-symbols/assets/generated/push_button_normally_open_momentary.json","../../node_modules/schematic-symbols/symbols/push_button_normally_open_momentary_horz.ts","../../node_modules/schematic-symbols/symbols/push_button_normally_open_momentary_vert.ts","../../node_modules/schematic-symbols/assets/generated/rectifier_diode.json","../../node_modules/schematic-symbols/symbols/rectifier_diode_horz.ts","../../node_modules/schematic-symbols/symbols/rectifier_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/resistor.json","../../node_modules/schematic-symbols/symbols/resistor_down.ts","../../node_modules/schematic-symbols/symbols/resistor_left.ts","../../node_modules/schematic-symbols/symbols/resistor_right.ts","../../node_modules/schematic-symbols/symbols/resistor_up.ts","../../node_modules/schematic-symbols/assets/generated/resonator.json","../../node_modules/schematic-symbols/symbols/resonator_horz.ts","../../node_modules/schematic-symbols/symbols/resonator_vert.ts","../../node_modules/schematic-symbols/assets/generated/schottky_diode.json","../../node_modules/schematic-symbols/symbols/schottky_diode_right.ts","../../node_modules/schematic-symbols/symbols/schottky_diode_down.ts","../../node_modules/schematic-symbols/symbols/schottky_diode_left.ts","../../node_modules/schematic-symbols/symbols/schottky_diode_up.ts","../../node_modules/schematic-symbols/assets/generated/silicon_controlled_rectifier.json","../../node_modules/schematic-symbols/symbols/silicon_controlled_rectifier_horz.ts","../../node_modules/schematic-symbols/symbols/silicon_controlled_rectifier_vert.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper2_bridged12.json","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper2.json","../../node_modules/schematic-symbols/symbols/solderjumper2_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3_bridged12.json","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3_bridged123.json","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3_bridged23.json","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3.json","../../node_modules/schematic-symbols/symbols/solderjumper3_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_up.ts","../../node_modules/schematic-symbols/assets/generated/spdt_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/spdt_switch.json","../../node_modules/schematic-symbols/symbols/spdt_switch_right.ts","../../node_modules/schematic-symbols/symbols/spdt_switch_down.ts","../../node_modules/schematic-symbols/symbols/spdt_switch_left.ts","../../node_modules/schematic-symbols/symbols/spdt_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/spst_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/spst_switch.json","../../node_modules/schematic-symbols/symbols/spst_switch_right.ts","../../node_modules/schematic-symbols/symbols/spst_switch_down.ts","../../node_modules/schematic-symbols/symbols/spst_switch_left.ts","../../node_modules/schematic-symbols/symbols/spst_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/step_recovery_diode.json","../../node_modules/schematic-symbols/symbols/step_recovery_diode_horz.ts","../../node_modules/schematic-symbols/symbols/step_recovery_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/tachometer.json","../../node_modules/schematic-symbols/symbols/tachometer_horz.ts","../../node_modules/schematic-symbols/symbols/tachometer_vert.ts","../../node_modules/schematic-symbols/symbols/testpoint_right.ts","../../node_modules/schematic-symbols/symbols/testpoint_down.ts","../../node_modules/schematic-symbols/symbols/testpoint_left.ts","../../node_modules/schematic-symbols/symbols/testpoint_up.ts","../../node_modules/schematic-symbols/assets/generated/tilted_ground.json","../../node_modules/schematic-symbols/symbols/tilted_ground_right.ts","../../node_modules/schematic-symbols/symbols/tilted_ground_up.ts","../../node_modules/schematic-symbols/symbols/tilted_ground_down.ts","../../node_modules/schematic-symbols/symbols/tilted_ground_left.ts","../../node_modules/schematic-symbols/assets/generated/triac.json","../../node_modules/schematic-symbols/symbols/triac_horz.ts","../../node_modules/schematic-symbols/symbols/triac_vert.ts","../../node_modules/schematic-symbols/assets/generated/tunnel_diode.json","../../node_modules/schematic-symbols/symbols/tunnel_diode_horz.ts","../../node_modules/schematic-symbols/symbols/tunnel_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/unijunction_transistor.json","../../node_modules/schematic-symbols/symbols/unijunction_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/unijunction_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/var_meter.json","../../node_modules/schematic-symbols/symbols/var_meter_horz.ts","../../node_modules/schematic-symbols/symbols/var_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/varactor_diode.json","../../node_modules/schematic-symbols/symbols/varactor_diode_horz.ts","../../node_modules/schematic-symbols/symbols/varactor_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/varistor.json","../../node_modules/schematic-symbols/symbols/varistor_horz.ts","../../node_modules/schematic-symbols/symbols/varistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/varmeter.json","../../node_modules/schematic-symbols/symbols/varmeter_horz.ts","../../node_modules/schematic-symbols/symbols/varmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/vcc.json","../../node_modules/schematic-symbols/symbols/vcc_down.ts","../../node_modules/schematic-symbols/symbols/vcc_left.ts","../../node_modules/schematic-symbols/symbols/vcc_right.ts","../../node_modules/schematic-symbols/symbols/vcc_up.ts","../../node_modules/schematic-symbols/assets/generated/volt_meter.json","../../node_modules/schematic-symbols/symbols/volt_meter_horz.ts","../../node_modules/schematic-symbols/symbols/volt_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/watt_hour_meter.json","../../node_modules/schematic-symbols/symbols/watt_hour_meter_horz.ts","../../node_modules/schematic-symbols/symbols/watt_hour_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/wattmeter.json","../../node_modules/schematic-symbols/symbols/wattmeter_horz.ts","../../node_modules/schematic-symbols/symbols/wattmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/zener_diode.json","../../node_modules/schematic-symbols/symbols/zener_diode_horz.ts","../../node_modules/schematic-symbols/symbols/zener_diode_vert.ts","../../node_modules/schematic-symbols/generated/symbols-index.ts","../../node_modules/schematic-symbols/drawing/utils/makeYUpPositive.ts","../../node_modules/schematic-symbols/drawing/mapColor.ts","../../node_modules/schematic-symbols/drawing/pathToSvgD.ts","../../node_modules/schematic-symbols/drawing/getSvg.ts","../../node_modules/schematic-symbols/drawing/resizeSymbol.ts","../../node_modules/schematic-symbols/index.ts","../../node_modules/circuit-json-to-connectivity-map/node_modules/@tscircuit/math-utils/src/line-intersections.ts","../../node_modules/circuit-json-to-connectivity-map/src/findConnectedNetworks.ts","../../node_modules/circuit-json-to-connectivity-map/src/ConnectivityMap.ts","../../node_modules/circuit-json-to-connectivity-map/src/getSourcePortConnectivityMapFromCircuitJson.ts","../../node_modules/circuit-json-to-connectivity-map/src/getFullConnectivityMapFromCircuitJson.ts","../../node_modules/circuit-json-to-connectivity-map/src/PcbConnectivityMap.ts"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.svgson = factory());\n})(this, (function () { 'use strict';\n\n /*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n // The _isBuffer check is for Safari 5-7 support, because it's missing\n // Object.prototype.constructor. Remove this eventually\n var isBuffer_1 = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n };\n\n function isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n }\n\n // For Node v0.10 support. Remove this eventually.\n function isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n }\n\n var toString = Object.prototype.toString;\n\n /**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\n var kindOf = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer_1(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n };\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var renameKeys = createCommonjsModule(function (module) {\n (function() {\n\n function rename(obj, fn) {\n if (typeof fn !== 'function') {\n return obj;\n }\n\n var res = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[fn(key, obj[key]) || key] = obj[key];\n }\n }\n return res;\n }\n\n if (module.exports) {\n module.exports = rename;\n } else {\n {\n window.rename = rename;\n }\n }\n })();\n });\n\n /**\n * Expose `renameDeep`\n */\n\n var deepRenameKeys = function renameDeep(obj, cb) {\n var type = kindOf(obj);\n\n if (type !== 'object' && type !== 'array') {\n throw new Error('expected an object');\n }\n\n var res = [];\n if (type === 'object') {\n obj = renameKeys(obj, cb);\n res = {};\n }\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var val = obj[key];\n if (kindOf(val) === 'object' || kindOf(val) === 'array') {\n res[key] = renameDeep(val, cb);\n } else {\n res[key] = val;\n }\n }\n }\n return res;\n };\n\n var eventemitter3 = createCommonjsModule(function (module) {\n\n var has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n /**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\n function Events() {}\n\n //\n // We try to not inherit from `Object.prototype`. In some engines creating an\n // instance in this way is faster than calling `Object.create(null)` directly.\n // If `Object.create(null)` is not supported we prefix the event names with a\n // character to make sure that the built-in object properties are not\n // overridden or used as an attack vector.\n //\n if (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n }\n\n /**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\n function EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n }\n\n /**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\n function EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n /**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\n EventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n };\n\n /**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\n EventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n };\n\n /**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\n EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n };\n\n /**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n };\n\n /**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n };\n\n /**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n };\n\n /**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n };\n\n //\n // Alias methods names because people roll like that.\n //\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n //\n // This function doesn't apply anymore.\n //\n EventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n };\n\n //\n // Expose the prefix.\n //\n EventEmitter.prefixed = prefix;\n\n //\n // Allow `EventEmitter` to be imported as module namespace.\n //\n EventEmitter.EventEmitter = EventEmitter;\n\n //\n // Expose the module.\n //\n {\n module.exports = EventEmitter;\n }\n });\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n var noop = function noop() {};\n\n var State = {\n data: 'state-data',\n cdata: 'state-cdata',\n tagBegin: 'state-tag-begin',\n tagName: 'state-tag-name',\n tagEnd: 'state-tag-end',\n attributeNameStart: 'state-attribute-name-start',\n attributeName: 'state-attribute-name',\n attributeNameEnd: 'state-attribute-name-end',\n attributeValueBegin: 'state-attribute-value-begin',\n attributeValue: 'state-attribute-value'\n };\n\n var Action = {\n lt: 'action-lt',\n gt: 'action-gt',\n space: 'action-space',\n equal: 'action-equal',\n quote: 'action-quote',\n slash: 'action-slash',\n char: 'action-char',\n error: 'action-error'\n };\n\n var Type$1 = {\n text: 'text',\n openTag: 'open-tag',\n closeTag: 'close-tag',\n attributeName: 'attribute-name',\n attributeValue: 'attribute-value'\n };\n\n var charToAction = {\n ' ': Action.space,\n '\\t': Action.space,\n '\\n': Action.space,\n '\\r': Action.space,\n '<': Action.lt,\n '>': Action.gt,\n '\"': Action.quote,\n \"'\": Action.quote,\n '=': Action.equal,\n '/': Action.slash\n };\n\n var getAction = function getAction(char) {\n return charToAction[char] || Action.char;\n };\n\n /**\n * @param {Object} options\n * @param {Boolean} options.debug\n * @return {Object}\n */\n var create$1 = function create(options) {\n var _State$data, _State$tagBegin, _State$tagName, _State$tagEnd, _State$attributeNameS, _State$attributeName, _State$attributeNameE, _State$attributeValue, _State$attributeValue2, _lexer$stateMachine;\n\n options = Object.assign({ debug: false }, options);\n var lexer = new eventemitter3();\n var state = State.data;\n var data = '';\n var tagName = '';\n var attrName = '';\n var attrValue = '';\n var isClosing = '';\n var openingQuote = '';\n\n var emit = function emit(type, value) {\n // for now, ignore tags like: '?xml', '!DOCTYPE' or comments\n if (tagName[0] === '?' || tagName[0] === '!') {\n return;\n }\n var event = { type: type, value: value };\n if (options.debug) {\n console.log('emit:', event);\n }\n lexer.emit('data', event);\n };\n\n lexer.stateMachine = (_lexer$stateMachine = {}, _defineProperty(_lexer$stateMachine, State.data, (_State$data = {}, _defineProperty(_State$data, Action.lt, function () {\n if (data.trim()) {\n emit(Type$1.text, data);\n }\n tagName = '';\n isClosing = false;\n state = State.tagBegin;\n }), _defineProperty(_State$data, Action.char, function (char) {\n data += char;\n }), _State$data)), _defineProperty(_lexer$stateMachine, State.cdata, _defineProperty({}, Action.char, function (char) {\n data += char;\n if (data.substr(-3) === ']]>') {\n emit(Type$1.text, data.slice(0, -3));\n data = '';\n state = State.data;\n }\n })), _defineProperty(_lexer$stateMachine, State.tagBegin, (_State$tagBegin = {}, _defineProperty(_State$tagBegin, Action.space, noop), _defineProperty(_State$tagBegin, Action.char, function (char) {\n tagName = char;\n state = State.tagName;\n }), _defineProperty(_State$tagBegin, Action.slash, function () {\n tagName = '';\n isClosing = true;\n }), _State$tagBegin)), _defineProperty(_lexer$stateMachine, State.tagName, (_State$tagName = {}, _defineProperty(_State$tagName, Action.space, function () {\n if (isClosing) {\n state = State.tagEnd;\n } else {\n state = State.attributeNameStart;\n emit(Type$1.openTag, tagName);\n }\n }), _defineProperty(_State$tagName, Action.gt, function () {\n if (isClosing) {\n emit(Type$1.closeTag, tagName);\n } else {\n emit(Type$1.openTag, tagName);\n }\n data = '';\n state = State.data;\n }), _defineProperty(_State$tagName, Action.slash, function () {\n state = State.tagEnd;\n emit(Type$1.openTag, tagName);\n }), _defineProperty(_State$tagName, Action.char, function (char) {\n tagName += char;\n if (tagName === '![CDATA[') {\n state = State.cdata;\n data = '';\n tagName = '';\n }\n }), _State$tagName)), _defineProperty(_lexer$stateMachine, State.tagEnd, (_State$tagEnd = {}, _defineProperty(_State$tagEnd, Action.gt, function () {\n emit(Type$1.closeTag, tagName);\n data = '';\n state = State.data;\n }), _defineProperty(_State$tagEnd, Action.char, noop), _State$tagEnd)), _defineProperty(_lexer$stateMachine, State.attributeNameStart, (_State$attributeNameS = {}, _defineProperty(_State$attributeNameS, Action.char, function (char) {\n attrName = char;\n state = State.attributeName;\n }), _defineProperty(_State$attributeNameS, Action.gt, function () {\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeNameS, Action.space, noop), _defineProperty(_State$attributeNameS, Action.slash, function () {\n isClosing = true;\n state = State.tagEnd;\n }), _State$attributeNameS)), _defineProperty(_lexer$stateMachine, State.attributeName, (_State$attributeName = {}, _defineProperty(_State$attributeName, Action.space, function () {\n state = State.attributeNameEnd;\n }), _defineProperty(_State$attributeName, Action.equal, function () {\n emit(Type$1.attributeName, attrName);\n state = State.attributeValueBegin;\n }), _defineProperty(_State$attributeName, Action.gt, function () {\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeName, Action.slash, function () {\n isClosing = true;\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n state = State.tagEnd;\n }), _defineProperty(_State$attributeName, Action.char, function (char) {\n attrName += char;\n }), _State$attributeName)), _defineProperty(_lexer$stateMachine, State.attributeNameEnd, (_State$attributeNameE = {}, _defineProperty(_State$attributeNameE, Action.space, noop), _defineProperty(_State$attributeNameE, Action.equal, function () {\n emit(Type$1.attributeName, attrName);\n state = State.attributeValueBegin;\n }), _defineProperty(_State$attributeNameE, Action.gt, function () {\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeNameE, Action.char, function (char) {\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n attrName = char;\n state = State.attributeName;\n }), _State$attributeNameE)), _defineProperty(_lexer$stateMachine, State.attributeValueBegin, (_State$attributeValue = {}, _defineProperty(_State$attributeValue, Action.space, noop), _defineProperty(_State$attributeValue, Action.quote, function (char) {\n openingQuote = char;\n attrValue = '';\n state = State.attributeValue;\n }), _defineProperty(_State$attributeValue, Action.gt, function () {\n attrValue = '';\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeValue, Action.char, function (char) {\n openingQuote = '';\n attrValue = char;\n state = State.attributeValue;\n }), _State$attributeValue)), _defineProperty(_lexer$stateMachine, State.attributeValue, (_State$attributeValue2 = {}, _defineProperty(_State$attributeValue2, Action.space, function (char) {\n if (openingQuote) {\n attrValue += char;\n } else {\n emit(Type$1.attributeValue, attrValue);\n state = State.attributeNameStart;\n }\n }), _defineProperty(_State$attributeValue2, Action.quote, function (char) {\n if (openingQuote === char) {\n emit(Type$1.attributeValue, attrValue);\n state = State.attributeNameStart;\n } else {\n attrValue += char;\n }\n }), _defineProperty(_State$attributeValue2, Action.gt, function (char) {\n if (openingQuote) {\n attrValue += char;\n } else {\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }\n }), _defineProperty(_State$attributeValue2, Action.slash, function (char) {\n if (openingQuote) {\n attrValue += char;\n } else {\n emit(Type$1.attributeValue, attrValue);\n isClosing = true;\n state = State.tagEnd;\n }\n }), _defineProperty(_State$attributeValue2, Action.char, function (char) {\n attrValue += char;\n }), _State$attributeValue2)), _lexer$stateMachine);\n\n var step = function step(char) {\n if (options.debug) {\n console.log(state, char);\n }\n var actions = lexer.stateMachine[state];\n var action = actions[getAction(char)] || actions[Action.error] || actions[Action.char];\n action(char);\n };\n\n lexer.write = function (str) {\n var len = str.length;\n for (var i = 0; i < len; i++) {\n step(str[i]);\n }\n };\n\n return lexer;\n };\n\n var lexer = {\n State: State,\n Action: Action,\n Type: Type$1,\n create: create$1\n };\n\n var Type = lexer.Type;\n\n var NodeType = {\n element: 'element',\n text: 'text'\n };\n\n var createNode = function createNode(params) {\n return Object.assign({\n name: '',\n type: NodeType.element,\n value: '',\n parent: null,\n attributes: {},\n children: []\n }, params);\n };\n\n var create = function create(options) {\n options = Object.assign({\n stream: false,\n parentNodes: true,\n doneEvent: 'done',\n tagPrefix: 'tag:',\n emitTopLevelOnly: false,\n debug: false\n }, options);\n\n var lexer$1 = void 0,\n rootNode = void 0,\n current = void 0,\n attrName = void 0;\n\n var reader = new eventemitter3();\n\n var handleLexerData = function handleLexerData(data) {\n switch (data.type) {\n\n case Type.openTag:\n if (current === null) {\n current = rootNode;\n current.name = data.value;\n } else {\n var node = createNode({\n name: data.value,\n parent: current\n });\n current.children.push(node);\n current = node;\n }\n break;\n\n case Type.closeTag:\n var parent = current.parent;\n if (!options.parentNodes) {\n current.parent = null;\n }\n if (current.name !== data.value) {\n // ignore unexpected closing tag\n break;\n }\n if (options.stream && parent === rootNode) {\n rootNode.children = [];\n // do not expose parent node in top level nodes\n current.parent = null;\n }\n if (!options.emitTopLevelOnly || parent === rootNode) {\n reader.emit(options.tagPrefix + current.name, current);\n reader.emit('tag', current.name, current);\n }\n if (current === rootNode) {\n // end of document, stop listening\n lexer$1.removeAllListeners('data');\n reader.emit(options.doneEvent, current);\n rootNode = null;\n }\n current = parent;\n break;\n\n case Type.text:\n if (current) {\n current.children.push(createNode({\n type: NodeType.text,\n value: data.value,\n parent: options.parentNodes ? current : null\n }));\n }\n break;\n\n case Type.attributeName:\n attrName = data.value;\n current.attributes[attrName] = '';\n break;\n\n case Type.attributeValue:\n current.attributes[attrName] = data.value;\n break;\n }\n };\n\n reader.reset = function () {\n lexer$1 = lexer.create({ debug: options.debug });\n lexer$1.on('data', handleLexerData);\n rootNode = createNode();\n current = null;\n attrName = '';\n reader.parse = lexer$1.write;\n };\n\n reader.reset();\n return reader;\n };\n\n var parseSync = function parseSync(xml, options) {\n options = Object.assign({}, options, { stream: false, tagPrefix: ':' });\n var reader = create(options);\n var res = void 0;\n reader.on('done', function (ast) {\n res = ast;\n });\n reader.parse(xml);\n return res;\n };\n\n var reader = {\n parseSync: parseSync,\n create: create,\n NodeType: NodeType\n };\n var reader_1 = reader.parseSync;\n\n var parseInput = function parseInput(input) {\n var parsed = reader_1(\"<root>\".concat(input, \"</root>\"), {\n parentNodes: false\n });\n var isValid = parsed.children && parsed.children.length > 0 && parsed.children.every(function (node) {\n return node.name === 'svg';\n });\n if (isValid) {\n return parsed.children.length === 1 ? parsed.children[0] : parsed.children;\n } else {\n throw Error('nothing to parse');\n }\n };\n var camelize = function camelize(node) {\n return deepRenameKeys(node, function (key) {\n if (!notCamelcase(key)) {\n return toCamelCase(key);\n }\n return key;\n });\n };\n var toCamelCase = function toCamelCase(prop) {\n return prop.replace(/[-|:]([a-z])/gi, function (all, letter) {\n return letter.toUpperCase();\n });\n };\n var notCamelcase = function notCamelcase(prop) {\n return /^(data|aria)(-\\w+)/.test(prop);\n };\n var escapeText = function escapeText(text) {\n if (text) {\n var str = String(text);\n return /[&<>]/.test(str) ? \"<![CDATA[\".concat(str.replace(/]]>/, ']]]]><![CDATA[>'), \"]]>\") : str;\n }\n return '';\n };\n var escapeAttr = function escapeAttr(attr) {\n return String(attr).replace(/&/g, '&amp;').replace(/'/g, '&apos;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n };\n\n var svgsonSync = function svgsonSync(input) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$transformNode = _ref.transformNode,\n transformNode = _ref$transformNode === void 0 ? function (node) {\n return node;\n } : _ref$transformNode,\n _ref$camelcase = _ref.camelcase,\n camelcase = _ref$camelcase === void 0 ? false : _ref$camelcase;\n var applyFilters = function applyFilters(input) {\n var n;\n n = transformNode(input);\n if (camelcase) {\n n = camelize(n);\n }\n return n;\n };\n return applyFilters(parseInput(input));\n };\n function svgson() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise(function (resolve, reject) {\n try {\n var res = svgsonSync.apply(void 0, args);\n resolve(res);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n var stringify = function stringify(_ast) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$transformAttr = _ref.transformAttr,\n transformAttr = _ref$transformAttr === void 0 ? function (key, value, escape) {\n return \"\".concat(key, \"=\\\"\").concat(escape(value), \"\\\"\");\n } : _ref$transformAttr,\n _ref$transformNode = _ref.transformNode,\n transformNode = _ref$transformNode === void 0 ? function (node) {\n return node;\n } : _ref$transformNode,\n _ref$selfClose = _ref.selfClose,\n selfClose = _ref$selfClose === void 0 ? true : _ref$selfClose;\n if (Array.isArray(_ast)) {\n return _ast.map(function (ast) {\n return stringify(ast, {\n transformAttr: transformAttr,\n selfClose: selfClose,\n transformNode: transformNode\n });\n }).join('');\n }\n var ast = transformNode(_ast);\n if (ast.type === 'text') {\n return escapeText(ast.value);\n }\n var attributes = '';\n for (var attr in ast.attributes) {\n var attrStr = transformAttr(attr, ast.attributes[attr], escapeAttr, ast.name);\n attributes += attrStr ? \" \".concat(attrStr) : '';\n }\n return ast.children && ast.children.length > 0 || !selfClose ? \"<\".concat(ast.name).concat(attributes, \">\").concat(stringify(ast.children, {\n transformAttr: transformAttr,\n transformNode: transformNode,\n selfClose: selfClose\n }), \"</\").concat(ast.name, \">\") : \"<\".concat(ast.name).concat(attributes, \"/>\");\n };\n\n var indexUmd = Object.assign({}, {\n parse: svgson,\n parseSync: svgsonSync,\n stringify: stringify\n });\n\n return indexUmd;\n\n}));\n","/**\n * Calculate a point transformed with an affine matrix\n * @param matrix {Matrix} Affine Matrix\n * @param point {Point} Point\n * @returns {Point} Point\n */\nexport function applyToPoint (matrix, point) {\n return Array.isArray(point)\n ? [\n matrix.a * point[0] + matrix.c * point[1] + matrix.e,\n matrix.b * point[0] + matrix.d * point[1] + matrix.f\n ]\n : {\n x: matrix.a * point.x + matrix.c * point.y + matrix.e,\n y: matrix.b * point.x + matrix.d * point.y + matrix.f\n }\n}\n\n/**\n * Calculate an array of points transformed with an affine matrix\n * @param matrix {Matrix} Affine Matrix\n * @param points {Point[]} Array of point\n * @returns {Point[]} Array of point\n */\nexport function applyToPoints (matrix, points) {\n return points.map(point => applyToPoint(matrix, point))\n}\n","/**\n * Calculate a translate matrix\n * @param tx {number} Translation on axis x\n * @param [ty = 0] {number} Translation on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function translate (tx, ty = 0) {\n return {\n a: 1,\n c: 0,\n e: tx,\n b: 0,\n d: 1,\n f: ty\n }\n}\n","/**\n * Merge multiple matrices into one\n * @param matrices {...Matrix | Matrix[]} Matrices listed as separate parameters or in an array\n * @returns {Matrix} Affine Matrix\n */\nexport function transform (...matrices) {\n matrices = Array.isArray(matrices[0]) ? matrices[0] : matrices\n\n const multiply = (m1, m2) => {\n return {\n a: m1.a * m2.a + m1.c * m2.b,\n c: m1.a * m2.c + m1.c * m2.d,\n e: m1.a * m2.e + m1.c * m2.f + m1.e,\n b: m1.b * m2.a + m1.d * m2.b,\n d: m1.b * m2.c + m1.d * m2.d,\n f: m1.b * m2.e + m1.d * m2.f + m1.f\n }\n }\n\n switch (matrices.length) {\n case 0:\n throw new Error('no matrices provided')\n\n case 1:\n return matrices[0]\n\n case 2:\n return multiply(matrices[0], matrices[1])\n\n default: {\n const [m1, m2, ...rest] = matrices\n const m = multiply(m1, m2)\n return transform(m, ...rest)\n }\n }\n}\n\n/**\n * Merge multiple matrices into one\n * @param matrices {...Matrix | Matrix[]} Matrices listed as separate parameters or in an array\n * @returns {Matrix} Affine Matrix\n */\nexport function compose (...matrices) {\n return transform(...matrices)\n}\n","export function isUndefined (val) {\n return typeof val === 'undefined'\n}\n\nexport function isNumeric (n) {\n return typeof n === 'number' &&\n !Number.isNaN(n) &&\n Number.isFinite(n)\n}\n\nexport function isObject (obj) {\n return typeof obj === 'object' &&\n obj !== null &&\n !Array.isArray(obj)\n}\n\nexport function matchesShape (obj, keys) {\n return keys.every(key => key in obj)\n}\n","import { isUndefined } from './utils'\nimport { translate } from './translate'\nimport { transform } from './transform'\n\nconst { cos, sin, PI } = Math\n/**\n * Calculate a rotation matrix\n * @param angle {number} Angle in radians\n * @param [cx] {number} If (cx,cy) are supplied the rotate is about this point\n * @param [cy] {number} If (cx,cy) are supplied the rotate is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function rotate (angle, cx, cy) {\n const cosAngle = cos(angle)\n const sinAngle = sin(angle)\n const rotationMatrix = {\n a: cosAngle,\n c: -sinAngle,\n e: 0,\n b: sinAngle,\n d: cosAngle,\n f: 0\n }\n if (isUndefined(cx) || isUndefined(cy)) {\n return rotationMatrix\n }\n\n return transform([\n translate(cx, cy),\n rotationMatrix,\n translate(-cx, -cy)\n ])\n}\n\n/**\n * Calculate a rotation matrix with a DEG angle\n * @param angle {number} Angle in degree\n * @param [cx] {number} If (cx,cy) are supplied the rotate is about this point\n * @param [cy] {number} If (cx,cy) are supplied the rotate is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function rotateDEG (angle, cx = undefined, cy = undefined) {\n return rotate(angle * PI / 180, cx, cy)\n}\n","import { isUndefined } from './utils'\nimport { translate } from './translate'\nimport { transform } from './transform'\n\n/**\n * Calculate a scaling matrix\n * @param sx {number} Scaling on axis x\n * @param [sy = sx] {number} Scaling on axis y (default sx)\n * @param [cx] {number} If (cx,cy) are supplied the scaling is about this point\n * @param [cy] {number} If (cx,cy) are supplied the scaling is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function scale (sx, sy = undefined, cx = undefined, cy = undefined) {\n if (isUndefined(sy)) sy = sx\n\n const scaleMatrix = {\n a: sx,\n c: 0,\n e: 0,\n b: 0,\n d: sy,\n f: 0\n }\n\n if (isUndefined(cx) || isUndefined(cy)) {\n return scaleMatrix\n }\n\n return transform([\n translate(cx, cy),\n scaleMatrix,\n translate(-cx, -cy)\n ])\n}\n","/**\n * Serialize an affine matrix to a string that can be used with CSS or SVG\n * @param matrix {Matrix} Affine Matrix\n * @returns {string} String that contains an affine matrix formatted as matrix(a,b,c,d,e,f)\n */\nexport function toCSS (matrix) {\n return toString(matrix)\n}\n\n/**\n * Serialize an affine matrix to a string that can be used with CSS or SVG\n * @param matrix {Matrix} Affine Matrix\n * @returns {string} String that contains an affine matrix formatted as matrix(a,b,c,d,e,f)\n */\nexport function toSVG (matrix) {\n return toString(matrix)\n}\n\n/**\n * Serialize an affine matrix to a string that can be used with CSS or SVG\n * @param matrix {Matrix} Affine Matrix\n * @returns {string} String that contains an affine matrix formatted as matrix(a,b,c,d,e,f)\n */\nexport function toString (matrix) {\n return `matrix(${matrix.a},${matrix.b},${matrix.c},${matrix.d},${matrix.e},${matrix.f})`\n}\n","/**\n * Calculate a matrix that is the inverse of the provided matrix\n * @param matrix {Matrix} Affine Matrix\n * @returns {Matrix} Inverted Affine Matrix\n */\nexport function inverse (matrix) {\n // http://www.wolframalpha.com/input/?i=Inverse+%5B%7B%7Ba,c,e%7D,%7Bb,d,f%7D,%7B0,0,1%7D%7D%5D\n\n const { a, b, c, d, e, f } = matrix\n\n const denom = a * d - b * c\n\n return {\n a: d / denom,\n b: b / -denom,\n c: c / -denom,\n d: a / denom,\n e: (d * e - c * f) / -denom,\n f: (b * e - a * f) / denom\n }\n}\n","/**\n * Rounds all elements of the given matrix using the given precision\n * @param matrix {Matrix} An affine matrix to round\n * @param [precision] {number} A precision to use for Math.round. Defaults to 10000000000 (meaning which rounds to the 10th digit after the comma).\n * @returns {Matrix} The rounded Affine Matrix\n */\nexport function smoothMatrix (matrix, precision = 10000000000) {\n return {\n a: Math.round(matrix.a * precision) / precision,\n b: Math.round(matrix.b * precision) / precision,\n c: Math.round(matrix.c * precision) / precision,\n d: Math.round(matrix.d * precision) / precision,\n e: Math.round(matrix.e * precision) / precision,\n f: Math.round(matrix.f * precision) / precision\n }\n}\n","import { inverse } from './inverse'\nimport { transform } from './transform'\nimport { smoothMatrix } from './smoothMatrix'\n\n/**\n * Returns a matrix that transforms a triangle t1 into another triangle t2, or throws an exception if it is impossible.\n * @param t1 {Point[]} Array of points containing the three points for the first triangle\n * @param t2 {Point[]} Array of points containing the three points for the second triangle\n * @returns {Matrix} Matrix which transforms t1 to t2\n * @throws Exception if the matrix becomes not invertible\n */\nexport function fromTriangles (t1, t2) {\n // point p = first point of the triangle\n const px1 = t1[0].x != null ? t1[0].x : t1[0][0]\n const py1 = t1[0].y != null ? t1[0].y : t1[0][1]\n const px2 = t2[0].x != null ? t2[0].x : t2[0][0]\n const py2 = t2[0].y != null ? t2[0].y : t2[0][1]\n\n // point q = second point of the triangle\n const qx1 = t1[1].x != null ? t1[1].x : t1[1][0]\n const qy1 = t1[1].y != null ? t1[1].y : t1[1][1]\n const qx2 = t2[1].x != null ? t2[1].x : t2[1][0]\n const qy2 = t2[1].y != null ? t2[1].y : t2[1][1]\n\n // point r = third point of the triangle\n const rx1 = t1[2].x != null ? t1[2].x : t1[2][0]\n const ry1 = t1[2].y != null ? t1[2].y : t1[2][1]\n const rx2 = t2[2].x != null ? t2[2].x : t2[2][0]\n const ry2 = t2[2].y != null ? t2[2].y : t2[2][1]\n\n const r1 = {\n a: px1 - rx1,\n b: py1 - ry1,\n c: qx1 - rx1,\n d: qy1 - ry1,\n e: rx1,\n f: ry1\n }\n const r2 = {\n a: px2 - rx2,\n b: py2 - ry2,\n c: qx2 - rx2,\n d: qy2 - ry2,\n e: rx2,\n f: ry2\n }\n\n const inverseR1 = inverse(r1)\n const affineMatrix = transform([r2, inverseR1])\n\n // round the matrix elements to smooth the finite inversion\n return smoothMatrix(affineMatrix)\n}\n","/**\n * Identity matrix\n * @returns {Matrix} Affine Matrix\n */\nexport function identity () {\n return {\n a: 1,\n c: 0,\n e: 0,\n b: 0,\n d: 1,\n f: 0\n }\n}\n","// https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\nconst { tan } = Math\n\n/**\n * Calculate a skew matrix\n * @param ax {number} Skew on axis x\n * @param ay {number} Skew on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function skew (ax, ay) {\n return {\n a: 1,\n c: tan(ax),\n e: 0,\n b: tan(ay),\n d: 1,\n f: 0\n }\n}\n\n/**\n * Calculate a skew matrix using DEG angles\n * @param ax {number} Skew on axis x\n * @param ay {number} Skew on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function skewDEG (ax, ay) {\n return skew(ax * Math.PI / 180, ay * Math.PI / 180)\n}\n","// Generated by Peggy 3.0.2.\n//\n// https://peggyjs.org/\n\nfunction peg$subclass(child, parent) {\n function C() { this.constructor = child; }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = \"SyntaxError\";\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || \" \";\n if (str.length > targetLength) { return str; }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n var str = \"Error: \" + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n + peg$padEnd(\"\", hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class: function(expectation) {\n var escapedParts = expectation.parts.map(function(part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n },\n\n any: function() {\n return \"any character\";\n },\n\n end: function() {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { transformList: peg$parsetransformList };\n var peg$startRuleFunction = peg$parsetransformList;\n\n var peg$c0 = \"matrix\";\n var peg$c1 = \"(\";\n var peg$c2 = \")\";\n var peg$c3 = \"translate\";\n var peg$c4 = \"scale\";\n var peg$c5 = \"rotate\";\n var peg$c6 = \"skewX\";\n var peg$c7 = \"skewY\";\n var peg$c8 = \",\";\n var peg$c9 = \".\";\n\n var peg$r0 = /^[eE]/;\n var peg$r1 = /^[+\\-]/;\n var peg$r2 = /^[0-9]/;\n var peg$r3 = /^[ \\t\\r\\n]/;\n\n var peg$e0 = peg$literalExpectation(\"matrix\", false);\n var peg$e1 = peg$literalExpectation(\"(\", false);\n var peg$e2 = peg$literalExpectation(\")\", false);\n var peg$e3 = peg$literalExpectation(\"translate\", false);\n var peg$e4 = peg$literalExpectation(\"scale\", false);\n var peg$e5 = peg$literalExpectation(\"rotate\", false);\n var peg$e6 = peg$literalExpectation(\"skewX\", false);\n var peg$e7 = peg$literalExpectation(\"skewY\", false);\n var peg$e8 = peg$literalExpectation(\",\", false);\n var peg$e9 = peg$otherExpectation(\"fractionalConstant\");\n var peg$e10 = peg$literalExpectation(\".\", false);\n var peg$e11 = peg$classExpectation([\"e\", \"E\"], false, false);\n var peg$e12 = peg$classExpectation([\"+\", \"-\"], false, false);\n var peg$e13 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$e14 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false);\n\n var peg$f0 = function(ts) { return ts; };\n var peg$f1 = function(t, ts) { return t.concat(ts) };\n var peg$f2 = function(a, b, c, d, e, f) {\n return [{type: 'matrix', a: a, b: b, c: c, d: d, e: e, f: f}];\n };\n var peg$f3 = function(tx, ty) {\n var t = {type: 'translate', tx: tx};\n if (ty) t.ty = ty;\n return [t];\n };\n var peg$f4 = function(sx, sy) {\n var s = {type:'scale', sx: sx};\n if (sy) s.sy = sy;\n return [s];\n };\n var peg$f5 = function(angle, c) {\n var r = {type:'rotate', angle: angle};\n if (c) {\n r.cx = c[0];\n r.cy = c[1];\n }\n return [r];\n };\n var peg$f6 = function(angle) {\n return [{type: 'skewX', angle: angle}];\n };\n var peg$f7 = function(angle) {\n return [{type: 'skewY', angle: angle}];\n };\n var peg$f8 = function(f) { return parseFloat(f.join(\"\")); };\n var peg$f9 = function(i) { return parseInt(i.join(\"\")); };\n var peg$f10 = function(n) { return n; };\n var peg$f11 = function(n1, n2) { return [n1, n2]; };\n var peg$f12 = function(ds) { return ds.join(\"\"); };\n var peg$f13 = function(f, e) { return [f, e || null].join(\"\")};\n var peg$f14 = function(d, e) { return [d, e].join(\"\")};\n var peg$f15 = function(d1, d2) { return [d1 ? d1.join(\"\") : null, \".\", d2.join(\"\")].join(\"\"); };\n var peg$f16 = function(d) { return d.join(\"\"); };\n var peg$f17 = function(s, d) { return ['e', s, d.join(\"\")].join(\"\") };\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n\n var peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsetransformList() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n s2 = peg$parsetransforms();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n peg$savedPos = s0;\n s0 = peg$f0(s2);\n\n return s0;\n }\n\n function peg$parsetransforms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsetransform();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsecommaWsp();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetransforms();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f1(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsetransform();\n }\n\n return s0;\n }\n\n function peg$parsetransform() {\n var s0;\n\n s0 = peg$parsematrix();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetranslate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsescale();\n if (s0 === peg$FAILED) {\n s0 = peg$parserotate();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewY();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsematrix() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c0) {\n s1 = peg$c0;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWsp();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsenumber();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsecommaWsp();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenumber();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsecommaWsp();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsenumber();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsecommaWsp();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsenumber();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsecommaWsp();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsenumber();\n if (s15 !== peg$FAILED) {\n s16 = [];\n s17 = peg$parsewsp();\n while (s17 !== peg$FAILED) {\n s16.push(s17);\n s17 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s17 = peg$c2;\n peg$currPos++;\n } else {\n s17 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s17 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f2(s5, s7, s9, s11, s13, s15);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetranslate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9) === peg$c3) {\n s1 = peg$c3;\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f3(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsescale() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c4) {\n s1 = peg$c4;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f4(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parserotate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c5) {\n s1 = peg$c5;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspTwoNumbers();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewX() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c6) {\n s1 = peg$c6;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6(s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewY() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c7) {\n s1 = peg$c7;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f7(s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parsefloatingPointConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f8(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parseintegerConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f9(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspNumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f10(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspTwoNumbers() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsenumber();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f11(s2, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWsp() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsecomma();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecomma();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecomma() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 44) {\n s0 = peg$c8;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n\n return s0;\n }\n\n function peg$parseintegerConstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f12(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsefloatingPointConstant() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsefractionalConstant();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexponent();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f13(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexponent();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f14(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsefractionalConstant() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f15(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f16(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n\n return s0;\n }\n\n function peg$parseexponent() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$r0.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f17(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsesign() {\n var s0;\n\n if (peg$r1.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n\n return s0;\n }\n\n function peg$parsedigitSequence() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsedigit();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedigit();\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n\n return s0;\n }\n\n function peg$parsewsp() {\n var s0;\n\n if (peg$r3.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nexport {\n peg$SyntaxError as SyntaxError,\n\n peg$parse as parse\n};\n","import { scale } from './scale'\nimport { compose } from './transform'\n/**\n * Decompose a matrix into translation, scaling and rotation components, optionally\n * take horizontal and vertical flip in to consideration.\n * Note this function decomposes a matrix in rotation -> scaling -> translation order. I.e. for\n * certain translation T {tx, ty}, rotation R and scaling S { sx, sy }, it's only true for:\n * decomposeTSR(compose(T, S, R)) === { translate: T, rotation: R, scale: S }\n * composing in a different order may yield a different decomposition result.\n * @param matrix {Matrix} Affine Matrix\n * @param flipX {boolean} Whether the matrix contains vertical flip, i.e. mirrors on x-axis\n * @param flipY {boolean} Whether the matrix contains horizontal flip, i.e. mirrors on y-axis\n * @returns {Transform} A transform object consisted by its translation, scaling\n * and rotation components.\n */\nexport function decomposeTSR (matrix, flipX = false, flipY = false) {\n // Remove flip from the matrix first - flip could be incorrectly interpreted as\n // rotations (e.g. flipX + flipY = rotate by 180 degrees).\n // Note flipX is a vertical flip, and flipY is a horizontal flip.\n if (flipX) {\n if (flipY) {\n matrix = compose(matrix, scale(-1, -1))\n } else {\n matrix = compose(matrix, scale(1, -1))\n }\n } else if (flipY) {\n matrix = compose(matrix, scale(-1, 1))\n }\n\n const a = matrix.a; const b = matrix.b\n const c = matrix.c; const d = matrix.d\n let scaleX, scaleY, rotation\n\n if (a !== 0 || c !== 0) {\n const hypotAc = Math.hypot(a, c)\n scaleX = hypotAc\n scaleY = (a * d - b * c) / hypotAc\n const acos = Math.acos(a / hypotAc)\n rotation = c > 0 ? -acos : acos\n } else if (b !== 0 || d !== 0) {\n const hypotBd = Math.hypot(b, d)\n scaleX = (a * d - b * c) / hypotBd\n scaleY = hypotBd\n const acos = Math.acos(b / hypotBd)\n rotation = Math.PI / 2 + (d > 0 ? -acos : acos)\n } else {\n scaleX = 0\n scaleY = 0\n rotation = 0\n }\n\n // put the flip factors back\n if (flipY) {\n scaleX = -scaleX\n }\n\n if (flipX) {\n scaleY = -scaleY\n }\n\n return {\n translate: { tx: matrix.e, ty: matrix.f },\n scale: { sx: scaleX, sy: scaleY },\n rotation: { angle: rotation }\n }\n}\n","/**\n * Tranformation matrix that mirrors on x-axis\n * @returns {Matrix} Affine Matrix\n */\nexport function flipX () {\n return {\n a: 1,\n c: 0,\n e: 0,\n b: 0,\n d: -1,\n f: 0\n }\n}\n\n/**\n * Tranformation matrix that mirrors on y-axis\n * @returns {Matrix} Affine Matrix\n */\nexport function flipY () {\n return {\n a: -1,\n c: 0,\n e: 0,\n b: 0,\n d: 1,\n f: 0\n }\n}\n\n/**\n * Tranformation matrix that mirrors on origin\n * @returns {Matrix} Affine Matrix\n */\nexport function flipOrigin () {\n return {\n a: -1,\n c: 0,\n e: 0,\n b: 0,\n d: -1,\n f: 0\n }\n}\n","type UnitInfo = {\n baseUnit: BaseTscircuitUnit\n conversionFactor: number\n}\n\nconst unitMappings: Record<\n string,\n { baseUnit: BaseTscircuitUnit; variants: Record<string, number> }\n> = {\n Hz: {\n baseUnit: \"Hz\",\n variants: {\n MHz: 1e6,\n kHz: 1e3,\n Hz: 1,\n },\n },\n g: {\n baseUnit: \"g\",\n variants: {\n kg: 1e3,\n g: 1,\n },\n },\n Ω: {\n baseUnit: \"Ω\",\n variants: {\n mΩ: 1e-3,\n Ω: 1,\n kΩ: 1e3,\n KΩ: 1e3,\n kohm: 1e3,\n MΩ: 1e6,\n GΩ: 1e9,\n TΩ: 1e12,\n },\n },\n V: {\n baseUnit: \"V\",\n variants: {\n mV: 1e-3,\n V: 1,\n kV: 1e3,\n KV: 1e3,\n MV: 1e6,\n GV: 1e9,\n TV: 1e12,\n },\n },\n A: {\n baseUnit: \"A\",\n variants: {\n µA: 1e-6,\n mA: 1e-3,\n ma: 1e-3,\n A: 1,\n kA: 1e3,\n MA: 1e6,\n },\n },\n F: {\n baseUnit: \"F\",\n variants: {\n pF: 1e-12,\n nF: 1e-9,\n µF: 1e-6,\n uF: 1e-6,\n mF: 1e-3,\n F: 1,\n },\n },\n ml: {\n baseUnit: \"ml\",\n variants: {\n ml: 1,\n mL: 1,\n l: 1e3,\n L: 1e3,\n },\n },\n deg: {\n baseUnit: \"deg\",\n variants: {\n rad: 180 / Math.PI,\n },\n },\n ms: {\n baseUnit: \"ms\",\n variants: {\n s: 1000,\n },\n },\n mm: {\n baseUnit: \"mm\",\n variants: {\n nm: 1e-6,\n µm: 1e-3,\n um: 1e-3,\n mm: 1,\n cm: 10,\n dm: 100,\n m: 1000,\n km: 1e6,\n in: 25.4,\n ft: 304.8,\n IN: 25.4,\n FT: 304.8,\n yd: 914.4,\n mi: 1.609344e6,\n mil: 0.0254,\n },\n },\n}\n\nconst unitMappingAndVariantSuffixes = new Set()\nfor (const [baseUnit, info] of Object.entries(unitMappings)) {\n unitMappingAndVariantSuffixes.add(baseUnit)\n for (const variant of Object.keys(info.variants)) {\n unitMappingAndVariantSuffixes.add(variant)\n }\n}\n\nfunction getBaseTscircuitUnit(unit: string): UnitInfo {\n for (const [baseUnit, info] of Object.entries(unitMappings)) {\n if (unit in info.variants) {\n return {\n baseUnit: info.baseUnit,\n conversionFactor: info.variants[unit]!,\n }\n }\n }\n return {\n baseUnit: unit as BaseTscircuitUnit,\n conversionFactor: 1,\n }\n}\n\nconst si_prefix_multiplier = {\n tera: 1e12,\n T: 1e12,\n giga: 1e9,\n G: 1e9,\n mega: 1e6,\n M: 1e6,\n kilo: 1e3,\n k: 1e3,\n deci: 1e-1,\n d: 1e-1,\n centi: 1e-2,\n c: 1e-2,\n milli: 1e-3,\n m: 1e-3,\n micro: 1e-6,\n u: 1e-6,\n µ: 1e-6,\n nano: 1e-9,\n n: 1e-9,\n pico: 1e-12,\n p: 1e-12,\n}\ntype BaseTscircuitUnit =\n | \"ms\"\n | \"mm\"\n | \"g\"\n | \"deg\"\n | \"Hz\"\n | \"ml\"\n | \"V\"\n | \"A\"\n | \"Ω\"\n | \"F\"\n | \"H\"\n\nexport const parseAndConvertSiUnit = <\n T extends\n | string\n | number\n | undefined\n | { x: string | number; y: string | number },\n>(\n v: T,\n): {\n parsedUnit: string | null\n unitOfValue: BaseTscircuitUnit | null\n value: T extends { x: string | number; y: string | number }\n ? null | { x: number; y: number }\n : null | number\n} => {\n if (typeof v === \"undefined\")\n return { parsedUnit: null, unitOfValue: null, value: null }\n if (typeof v === \"string\" && v.match(/^-?[\\d\\.]+$/))\n return {\n value: Number.parseFloat(v) as any,\n parsedUnit: null,\n unitOfValue: null,\n }\n if (typeof v === \"number\")\n return { value: v as any, parsedUnit: null, unitOfValue: null }\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\n const { parsedUnit, unitOfValue } = parseAndConvertSiUnit(v.x)\n return {\n parsedUnit: parsedUnit,\n unitOfValue: unitOfValue,\n value: {\n x: parseAndConvertSiUnit(v.x as any).value as number,\n y: parseAndConvertSiUnit(v.y as any).value as number,\n } as any,\n }\n }\n const reversed_input_string = v.toString().split(\"\").reverse().join(\"\")\n const unit_reversed = reversed_input_string.match(/[^\\d\\s]+/)?.[0]\n if (!unit_reversed) {\n throw new Error(`Could not determine unit: \"${v}\"`)\n }\n const unit = unit_reversed.split(\"\").reverse().join(\"\")\n\n const numberPart = v.slice(0, -unit.length)\n if (\n unit in si_prefix_multiplier &&\n !unitMappingAndVariantSuffixes.has(unit)\n ) {\n const siMultiplier =\n si_prefix_multiplier[unit as keyof typeof si_prefix_multiplier]\n return {\n parsedUnit: null,\n unitOfValue: null,\n value: (Number.parseFloat(numberPart) * siMultiplier) as any,\n }\n }\n\n const { baseUnit, conversionFactor } = getBaseTscircuitUnit(unit)\n\n return {\n parsedUnit: unit,\n unitOfValue: baseUnit,\n value: (conversionFactor * Number.parseFloat(numberPart)) as any,\n }\n}\n","import { parseAndConvertSiUnit } from \"src/utils/convert-si-unit-to-number\"\nimport { z } from \"zod\"\n\n// // Currently, removing uncommon SI Prefixes for type simplicity.\n// export type SIPrefix =\n// // | \"y\"\n// // | \"yocto\"\n// // | \"z\"\n// // | \"zepto\"\n// // | \"atto\"\n// // | \"a\"\n// | \"femto\"\n// | \"f\"\n// | \"u\"\n// | \"micro\"\n// // | \"d\"\n// // | \"deci\"\n// | \"c\"\n// | \"centi\"\n// | \"m\"\n// | \"milli\"\n// | \"k\"\n// | \"kilo\"\n// | \"M\"\n// | \"mega\"\n// // | \"G\"\n// // | \"T\"\n// // | \"P\"\n// // | \"E\"\n// // | \"Z\"\n// // | \"Y\"\n\n// export type UnitAbbreviations = {\n// farad: \"F\"\n// ohm: \"Ω\"\n// henry: \"H\"\n// meter: \"m\"\n// volt: \"V\"\n// inch: \"in\"\n// foot: \"ft\"\n// }\n\n// export type Unit = keyof UnitAbbreviations\n// export type NumberWithUnit<T extends Unit> =\n// | `${number}${T | UnitAbbreviations[T]}`\n// | `${number} ${T | UnitAbbreviations[T]}`\n// | `${number}${SIPrefix}${T | UnitAbbreviations[T]}`\n// | `${number} ${SIPrefix}${T | UnitAbbreviations[T]}`\n// export type NumberWithAnyUnit =\n// | `${number}${UnitOrAbbreviation}`\n// | `${number} ${UnitOrAbbreviation}`\n// | `${number}${SIPrefix}${UnitOrAbbreviation}`\n// | `${number} ${SIPrefix}${UnitOrAbbreviation}`\n\n// TODO lots of validation to make sure the unit is valid etc.\nexport const resistance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const capacitance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n .transform((value) => {\n return Number.parseFloat(value.toPrecision(12)) // Round to 12 significant digits\n })\n\nexport const inductance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const voltage = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const length = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const frequency = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\n/**\n * Length in meters\n */\nexport type Length = number\nexport type Distance = number\n\nexport const distance = length\n\nexport const current = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const time = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\n/**\n * Rotation is always converted to degrees\n */\nexport const rotation = z\n .string()\n .or(z.number())\n .transform((arg): number => {\n if (typeof arg === \"number\") return arg\n if (arg.endsWith(\"deg\")) {\n return Number.parseFloat(arg.split(\"deg\")[0]!)\n }\n if (arg.endsWith(\"rad\")) {\n return (Number.parseFloat(arg.split(\"rad\")[0]!) * 180) / Math.PI\n }\n return Number.parseFloat(arg)\n })\n\nexport const battery_capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport type InputRotation = number | string\nexport type Rotation = number\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport const position = point\n\nexport type InputPoint = z.input<typeof point>\nexport type InputPosition = z.input<typeof position>\ntype InferredPoint = z.infer<typeof point>\ntype InferredPosition = z.infer<typeof position>\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface Position {\n x: number\n y: number\n}\n\nexpectTypesMatch<Point, InferredPoint>(true)\nexpectTypesMatch<Position, InferredPosition>(true)\n","import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `mismatched prop types: ${T5 extends string ? T5 : \"\"}`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"mismatched prop types: a\")\n\n// ------ String Union Matching -------\n\nexport type ExpectStringUnionsMatch<\n T1 extends string,\n T2 extends string,\n Diff1 = Exclude<T1, T2>,\n Diff2 = Exclude<T2, T1>,\n> = IsNever<Diff1> extends true\n ? IsNever<Diff2> extends true\n ? true // Unions are identical\n : `T2 has extra: \"${Diff2 extends string ? Diff2 : \"\"}\"` // T2 has elements not in T1\n : IsNever<Diff2> extends true\n ? `T1 has extra: \"${Diff1 extends string ? Diff1 : \"\"}\"` // T1 has elements not in T2\n : `T1 has extra: \"${Diff1 extends string\n ? Diff1\n : \"\"}\", T2 has extra: \"${Diff2 extends string ? Diff2 : \"\"}\"` // Both have differences\n\nexport const expectStringUnionsMatch = <\n const T1 extends string,\n const T2 extends string,\n ShouldBeTrue = ExpectStringUnionsMatch<T1, T2>,\n>(\n shouldBe: ShouldBeTrue,\n): void => {}\n\n// ------ TESTS -------\n\ntype TestUnion1 = \"a\" | \"b\" | \"c\"\ntype TestUnion2 = \"a\" | \"b\" | \"c\"\ntype TestUnion3 = \"a\" | \"b\" | \"d\"\ntype TestUnion4 = \"a\" | \"b\"\n\nexpectStringUnionsMatch<TestUnion1, TestUnion2>(true)\nexpectStringUnionsMatch<TestUnion1, TestUnion3>(\n 'T1 has extra: \"c\", T2 has extra: \"d\"',\n)\nexpectStringUnionsMatch<TestUnion1, TestUnion4>('T1 has extra: \"c\"')\nexpectStringUnionsMatch<TestUnion4, TestUnion1>('T2 has extra: \"c\"')\nexpectStringUnionsMatch<TestUnion3, TestUnion1>(\n 'T1 has extra: \"d\", T2 has extra: \"c\"',\n)\n\n// Example of using @ts-expect-error for expected failures\n// @ts-expect-error Type '\"T2 has extra: \\\"d\\\"\"' is not assignable to type 'true'.\nexpectStringUnionsMatch<TestUnion1, TestUnion3>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n\nexport const position3 = point3\n\ntype InferredPoint3 = z.infer<typeof point3>\n\nexport interface Point3 {\n x: number\n y: number\n z: number\n}\n\nexpectTypesMatch<Point3, InferredPoint3>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const size = z.object({\n width: z.number(),\n height: z.number(),\n})\n\nexport type SizeInput = z.input<typeof size>\ntype InferredSize = z.infer<typeof size>\n\nexport interface Size {\n width: number\n height: number\n}\n\nexpectTypesMatch<Size, InferredSize>(true)\n","import { z } from \"zod\"\nimport { nanoid } from \"nanoid\"\n\n/**\n * Use this for primary keys for any circuit element\n */\nexport const getZodPrefixedIdWithDefault = (prefix: string) => {\n return z\n .string()\n .optional()\n .default(() => `${prefix}_${nanoid(10)}`)\n}\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport type NinePointAnchor =\n | \"top_left\"\n | \"top_center\"\n | \"top_right\"\n | \"center_left\"\n | \"center\"\n | \"center_right\"\n | \"bottom_left\"\n | \"bottom_center\"\n | \"bottom_right\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n\ntype InferredNinePointAnchor = z.infer<typeof ninePointAnchor>\n\nexpectTypesMatch<NinePointAnchor, InferredNinePointAnchor>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { capacitance, distance, voltage } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_capacitor = source_component_base.extend({\n ftype: z.literal(\"simple_capacitor\"),\n capacitance,\n max_voltage_rating: voltage.optional(),\n display_capacitance: z.string().optional(),\n max_decoupling_trace_length: distance.optional(),\n})\n\nexport type SourceSimpleCapacitorInput = z.input<typeof source_simple_capacitor>\ntype InferredSourceSimpleCapacitor = z.infer<typeof source_simple_capacitor>\n\n/**\n * Defines a simple capacitor component\n */\nexport interface SourceSimpleCapacitor extends SourceComponentBase {\n ftype: \"simple_capacitor\"\n capacitance: number\n max_voltage_rating?: number\n display_capacitance?: string\n max_decoupling_trace_length?: number\n}\n\nexpectTypesMatch<SourceSimpleCapacitor, InferredSourceSimpleCapacitor>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const supplier_name = z.enum([\n \"jlcpcb\",\n \"macrofab\",\n \"pcbway\",\n \"digikey\",\n \"mouser\",\n \"lcsc\",\n])\n\ntype InferredSupplierName = z.infer<typeof supplier_name>\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\n\nexpectTypesMatch<SupplierName, InferredSupplierName>(true)\n","import {\n supplier_name,\n type SupplierName,\n} from \"src/pcb/properties/supplier_name\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { z } from \"zod\"\n\nexport interface SourceComponentBase {\n type: \"source_component\"\n ftype?: string\n source_component_id: string\n name: string\n manufacturer_part_number?: string\n supplier_part_numbers?: Partial<Record<SupplierName, string[]>>\n display_value?: string\n are_pins_interchangeable?: boolean\n internally_connected_source_port_ids?: string[][]\n source_group_id?: string\n subcircuit_id?: string\n}\n\nexport const source_component_base = z.object({\n type: z.literal(\"source_component\"),\n ftype: z.string().optional(),\n source_component_id: z.string(),\n name: z.string(),\n manufacturer_part_number: z.string().optional(),\n supplier_part_numbers: z\n .record(supplier_name, z.array(z.string()))\n .optional(),\n display_value: z.string().optional(),\n are_pins_interchangeable: z.boolean().optional(),\n internally_connected_source_port_ids: z.array(z.array(z.string())).optional(),\n source_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n})\n\ntype InferredSourceComponentBase = z.infer<typeof source_component_base>\n\nexpectTypesMatch<SourceComponentBase, InferredSourceComponentBase>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_resistor = source_component_base.extend({\n ftype: z.literal(\"simple_resistor\"),\n resistance,\n display_resistance: z.string().optional(),\n})\n\nexport type SourceSimpleResistorInput = z.input<typeof source_simple_resistor>\ntype InferredSourceSimpleResistor = z.infer<typeof source_simple_resistor>\n\n/**\n * Defines a simple resistor component\n */\nexport interface SourceSimpleResistor extends SourceComponentBase {\n ftype: \"simple_resistor\"\n resistance: number\n display_resistance?: string\n}\n\nexpectTypesMatch<SourceSimpleResistor, InferredSourceSimpleResistor>(true)\n","import {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_diode = source_component_base.extend({\n ftype: z.literal(\"simple_diode\"),\n})\n\nexport type SourceSimpleDiodeInput = z.input<typeof source_simple_diode>\ntype InferredSourceSimpleDiode = z.infer<typeof source_simple_diode>\n\n/**\n * Defines a simple diode component\n */\nexport interface SourceSimpleDiode extends SourceComponentBase {\n ftype: \"simple_diode\"\n}\n\nexpectTypesMatch<SourceSimpleDiode, InferredSourceSimpleDiode>(true)\n","import {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport {\n source_simple_diode,\n type SourceSimpleDiode,\n} from \"./source_simple_diode\"\n\nexport const source_simple_led = source_simple_diode.extend({\n ftype: z.literal(\"simple_led\"),\n color: z.string().optional(),\n wavelength: z.string().optional(),\n})\n\nexport type SourceSimpleLedInput = z.input<typeof source_simple_led>\ntype InferredSourceSimpleLed = z.infer<typeof source_simple_led>\n\n/**\n * Defines a simple led component\n */\nexport interface SourceSimpleLed extends Omit<SourceSimpleDiode, \"ftype\"> {\n ftype: \"simple_led\"\n color?: string\n wavelength?: string\n}\n\nexpectTypesMatch<SourceSimpleLed, InferredSourceSimpleLed>(true)\n","import {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_ground = source_component_base.extend({\n ftype: z.literal(\"simple_ground\"),\n})\n\nexport type SourceSimpleGroundInput = z.input<typeof source_simple_ground>\ntype InferredSourceSimpleGround = z.infer<typeof source_simple_ground>\n\n/**\n * Defines a simple ground component\n */\nexport interface SourceSimpleGround extends SourceComponentBase {\n ftype: \"simple_ground\"\n}\n\nexpectTypesMatch<SourceSimpleGround, InferredSourceSimpleGround>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_chip = source_component_base.extend({\n ftype: z.literal(\"simple_chip\"),\n})\n\nexport type SourceSimpleChipInput = z.input<typeof source_simple_chip>\ntype InferredSourceSimpleChip = z.infer<typeof source_simple_chip>\n\n/**\n * Defines a simple integrated circuit component\n */\nexport interface SourceSimpleChip extends SourceComponentBase {\n ftype: \"simple_chip\"\n}\n\nexpectTypesMatch<SourceSimpleChip, InferredSourceSimpleChip>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { voltage } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_power_source = source_component_base.extend({\n ftype: z.literal(\"simple_power_source\"),\n voltage,\n})\n\nexport type SourceSimplePowerSourceInput = z.input<\n typeof source_simple_power_source\n>\ntype InferredSourceSimplePowerSource = z.infer<\n typeof source_simple_power_source\n>\n\n/**\n * Defines a simple power source component\n */\nexport interface SourceSimplePowerSource extends SourceComponentBase {\n ftype: \"simple_power_source\"\n voltage: number\n}\n\nexpectTypesMatch<SourceSimplePowerSource, InferredSourceSimplePowerSource>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport {\n source_simple_resistor,\n type SourceSimpleResistor,\n} from \"./source_simple_resistor\"\nimport {\n source_simple_capacitor,\n type SourceSimpleCapacitor,\n} from \"./source_simple_capacitor\"\nimport { source_simple_fuse, type SourceSimpleFuse } from \"./source_simple_fuse\"\nimport {\n source_simple_diode,\n type SourceSimpleDiode,\n} from \"./source_simple_diode\"\nimport { source_simple_led, type SourceSimpleLed } from \"./source_simple_led\"\nimport {\n source_simple_ground,\n type SourceSimpleGround,\n} from \"./source_simple_ground\"\nimport { source_simple_chip, type SourceSimpleChip } from \"./source_simple_chip\"\nimport {\n source_simple_power_source,\n type SourceSimplePowerSource,\n} from \"./source_simple_power_source\"\nimport {\n source_simple_battery,\n type SourceSimpleBattery,\n} from \"./source_simple_battery\"\nimport {\n source_simple_inductor,\n type SourceSimpleInductor,\n} from \"./source_simple_inductor\"\nimport {\n source_simple_push_button,\n type SourceSimplePushButton,\n} from \"./source_simple_push_button\"\nimport {\n source_simple_potentiometer,\n type SourceSimplePotentiometer,\n} from \"./source_simple_potentiometer\"\nimport {\n source_simple_crystal,\n type SourceSimpleCrystal,\n} from \"./source_simple_crystal\"\nimport {\n source_simple_pin_header,\n type SourceSimplePinHeader,\n} from \"./source_simple_pin_header\"\nimport {\n source_simple_resonator,\n type SourceSimpleResonator,\n} from \"./source_simple_resonator\"\nimport {\n source_simple_transistor,\n type SourceSimpleTransistor,\n} from \"./source_simple_transistor\"\nimport {\n source_simple_test_point,\n type SourceSimpleTestPoint,\n} from \"./source_simple_test_point\"\nimport {\n source_simple_mosfet,\n type SourceSimpleMosfet,\n} from \"./source_simple_mosfet\"\nimport {\n source_simple_switch,\n type SourceSimpleSwitch,\n} from \"./source_simple_switch\"\nimport {\n source_project_metadata,\n type SourceProjectMetadata,\n} from \"./source_project_metadata\"\nimport {\n source_missing_property_error,\n type SourceMissingPropertyError,\n} from \"./source_missing_property_error\"\nimport {\n source_failed_to_create_component_error,\n type SourceFailedToCreateComponentError,\n} from \"./source_failed_to_create_component_error\"\n\nexport const any_source_component = z.union([\n source_simple_resistor,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_led,\n source_simple_ground,\n source_simple_chip,\n source_simple_power_source,\n source_simple_battery,\n source_simple_inductor,\n source_simple_push_button,\n source_simple_potentiometer,\n source_simple_crystal,\n source_simple_pin_header,\n source_simple_resonator,\n source_simple_switch,\n source_simple_transistor,\n source_simple_test_point,\n source_simple_mosfet,\n source_simple_fuse,\n source_project_metadata,\n source_missing_property_error,\n source_failed_to_create_component_error,\n])\n\n/**\n * Deprecated: use `AnySourceElement` instead\n */\nexport type AnySourceComponent = z.infer<typeof any_source_component>\n\nexport type AnySourceElement =\n | SourceSimpleResistor\n | SourceSimpleCapacitor\n | SourceSimpleDiode\n | SourceSimpleLed\n | SourceSimpleGround\n | SourceSimpleChip\n | SourceSimplePowerSource\n | SourceSimpleBattery\n | SourceSimpleInductor\n | SourceSimplePushButton\n | SourceSimplePotentiometer\n | SourceSimpleCrystal\n | SourceSimplePinHeader\n | SourceSimpleResonator\n | SourceSimpleSwitch\n | SourceSimpleTransistor\n | SourceSimpleTestPoint\n | SourceSimpleMosfet\n | SourceSimpleFuse\n | SourceProjectMetadata\n | SourceMissingPropertyError\n | SourceFailedToCreateComponentError\n\nexpectTypesMatch<AnySourceElement, AnySourceComponent>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"./base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_fuse = source_component_base.extend({\n ftype: z.literal(\"simple_fuse\"),\n\n current_rating_amps: z\n .number()\n .describe(\"Nominal current in amps the fuse is rated for\"),\n\n voltage_rating_volts: z\n .number()\n .describe(\"Voltage rating in volts, e.g. ±5V would be 5\"),\n})\n\nexport interface SourceSimpleFuse extends SourceComponentBase {\n ftype: \"simple_fuse\"\n current_rating_amps: number\n voltage_rating_volts: number\n}\n\nexport type SourceSimpleFuseInput = z.input<typeof source_simple_fuse>\ntype InferredSourceSimpleFuse = z.infer<typeof source_simple_fuse>\n\nexpectTypesMatch<SourceSimpleFuse, InferredSourceSimpleFuse>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { battery_capacity } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_battery = source_component_base.extend({\n ftype: z.literal(\"simple_battery\"),\n capacity: battery_capacity,\n})\n\nexport type SourceSimpleBatteryInput = z.input<typeof source_simple_battery>\ntype InferredSourceSimpleBattery = z.infer<typeof source_simple_battery>\n\n/**\n * Defines a simple battery component\n */\nexport interface SourceSimpleBattery extends SourceComponentBase {\n ftype: \"simple_battery\"\n capacity: number\n}\n\nexpectTypesMatch<SourceSimpleBattery, InferredSourceSimpleBattery>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { inductance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_inductor = source_component_base.extend({\n ftype: z.literal(\"simple_inductor\"),\n inductance,\n max_current_rating: z.number().optional(),\n})\n\nexport type SourceSimpleInductorInput = z.input<typeof source_simple_inductor>\ntype InferredSourceSimpleInductor = z.infer<typeof source_simple_inductor>\n\n/**\n * Defines a simple inductor component\n */\nexport interface SourceSimpleInductor extends SourceComponentBase {\n ftype: \"simple_inductor\"\n inductance: number\n max_current_rating?: number\n}\n\nexpectTypesMatch<SourceSimpleInductor, InferredSourceSimpleInductor>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_push_button = source_component_base.extend({\n ftype: z.literal(\"simple_push_button\"),\n})\n\nexport type SourceSimplePushButtonInput = z.input<\n typeof source_simple_push_button\n>\ntype InferredSourceSimplePushButton = z.infer<typeof source_simple_push_button>\n\n/**\n * Defines a simple push button component\n */\nexport interface SourceSimplePushButton extends SourceComponentBase {\n ftype: \"simple_push_button\"\n}\n\nexpectTypesMatch<SourceSimplePushButton, InferredSourceSimplePushButton>(true)\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_potentiometer = source_component_base.extend({\n ftype: z.literal(\"simple_potentiometer\"),\n max_resistance: resistance,\n})\n\nexport type SourceSimplePotentiometerInput = z.input<\n typeof source_simple_potentiometer\n>\ntype InferredSourceSimplePotentiometer = z.infer<\n typeof source_simple_potentiometer\n>\n\nexport interface SourceSimplePotentiometer\n extends SourceSimplePotentiometerInput {\n ftype: \"simple_potentiometer\"\n max_resistance: number\n}\n\nexpectTypesMatch<SourceSimplePotentiometer, InferredSourceSimplePotentiometer>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_crystal = source_component_base.extend({\n ftype: z.literal(\"simple_crystal\"),\n frequency: z.number().describe(\"Frequency in Hz\"),\n load_capacitance: z.number().optional().describe(\"Load capacitance in pF\"),\n})\n\nexport type SourceSimpleCrystalInput = z.input<typeof source_simple_crystal>\ntype InferredSourceSimpleCrystal = z.infer<typeof source_simple_crystal>\n\n/**\n * Defines a simple crystal oscillator component\n */\nexport interface SourceSimpleCrystal extends SourceComponentBase {\n ftype: \"simple_crystal\"\n frequency: number\n load_capacitance?: number\n}\n\nexpectTypesMatch<SourceSimpleCrystal, InferredSourceSimpleCrystal>(true)\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_pin_header = source_component_base.extend({\n ftype: z.literal(\"simple_pin_header\"),\n pin_count: z.number(),\n gender: z.enum([\"male\", \"female\"]).optional().default(\"male\"),\n})\n\nexport type SourceSimplePinHeaderInput = z.input<\n typeof source_simple_pin_header\n>\ntype InferredSourceSimplePinHeader = z.infer<typeof source_simple_pin_header>\n\nexport interface SourceSimplePinHeader extends SourceSimplePinHeaderInput {\n ftype: \"simple_pin_header\"\n pin_count: number\n gender: \"male\" | \"female\"\n}\n\nexpectTypesMatch<SourceSimplePinHeader, InferredSourceSimplePinHeader>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { capacitance, resistance, frequency } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_resonator = source_component_base.extend({\n ftype: z.literal(\"simple_resonator\"),\n load_capacitance: capacitance,\n equivalent_series_resistance: resistance.optional(),\n frequency: frequency,\n})\n\nexport type SourceSimpleResonatorInput = z.input<typeof source_simple_resonator>\ntype InferredSourceSimpleResonator = z.infer<typeof source_simple_resonator>\n\n/**\n * Defines a simple resonator component\n */\nexport interface SourceSimpleResonator extends SourceComponentBase {\n ftype: \"simple_resonator\"\n load_capacitance: number\n equivalent_series_resistance?: number\n frequency: number\n}\n\nexpectTypesMatch<SourceSimpleResonator, InferredSourceSimpleResonator>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_transistor = source_component_base.extend({\n ftype: z.literal(\"simple_transistor\"),\n transistor_type: z.enum([\"npn\", \"pnp\"]),\n})\n\nexport type SourceSimpleTransistorInput = z.input<\n typeof source_simple_transistor\n>\ntype InferredSourceSimpleTransistor = z.infer<typeof source_simple_transistor>\n\n/**\n * Defines a simple transistor component\n * This is a three-pin semiconductor device (emitter, base, collector)\n * Pin configuration is handled by the schematic port system\n */\n\nexport interface SourceSimpleTransistor extends SourceComponentBase {\n ftype: \"simple_transistor\"\n transistor_type: \"npn\" | \"pnp\"\n}\n\nexpectTypesMatch<SourceSimpleTransistor, InferredSourceSimpleTransistor>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_test_point = source_component_base.extend({\n ftype: z.literal(\"simple_test_point\"),\n footprint_variant: z.enum([\"pad\", \"through_hole\"]).optional(),\n pad_shape: z.enum([\"rect\", \"circle\"]).optional(),\n pad_diameter: z.union([z.number(), z.string()]).optional(),\n hole_diameter: z.union([z.number(), z.string()]).optional(),\n width: z.union([z.number(), z.string()]).optional(),\n height: z.union([z.number(), z.string()]).optional(),\n})\n\nexport type SourceSimpleTestPointInput = z.input<\n typeof source_simple_test_point\n>\ntype InferredSourceSimpleTestPoint = z.infer<typeof source_simple_test_point>\n\n/**\n * Defines a simple test point component\n * Can be surface-mount or through-hole.\n * Pad shape and dimensions configurable for different use cases.\n */\nexport interface SourceSimpleTestPoint extends SourceComponentBase {\n ftype: \"simple_test_point\"\n footprint_variant?: \"pad\" | \"through_hole\"\n pad_shape?: \"rect\" | \"circle\"\n pad_diameter?: number | string\n hole_diameter?: number | string\n width?: number | string\n height?: number | string\n}\n\nexpectTypesMatch<SourceSimpleTestPoint, InferredSourceSimpleTestPoint>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_mosfet = source_component_base.extend({\n ftype: z.literal(\"simple_mosfet\"),\n channel_type: z.enum([\"n\", \"p\"]),\n mosfet_mode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport type SourceSimpleMosfetInput = z.input<typeof source_simple_mosfet>\ntype InferredSourceSimpleMosfet = z.infer<typeof source_simple_mosfet>\n\n/**\n * Defines a simple mosfet component\n * This is a three-pin semiconductor device (source, gate, drain)\n * Pin configuration is handled by the schematic port system\n */\n\nexport interface SourceSimpleMosfet extends SourceComponentBase {\n ftype: \"simple_mosfet\"\n channel_type: \"n\" | \"p\"\n mosfet_mode: \"enhancement\" | \"depletion\"\n}\n\nexpectTypesMatch<SourceSimpleMosfet, InferredSourceSimpleMosfet>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_switch = source_component_base.extend({\n ftype: z.literal(\"simple_switch\"),\n})\nexport type SourceSimpleSwitchInput = z.input<typeof source_simple_switch>\ntype InferredSourceSimpleSwitch = z.infer<typeof source_simple_switch>\n\n/**\n * Defines a simple switch component\n */\nexport interface SourceSimpleSwitch extends SourceComponentBase {\n ftype: \"simple_switch\"\n}\n\nexpectTypesMatch<SourceSimpleSwitch, InferredSourceSimpleSwitch>(true)\n","import { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { z } from \"zod\"\n\nexport interface SourceProjectMetadata {\n type: \"source_project_metadata\"\n name?: string\n software_used_string?: string\n project_url?: string\n created_at?: string // ISO8601 timestamp\n}\n\nexport const source_project_metadata = z.object({\n type: z.literal(\"source_project_metadata\"),\n name: z.string().optional(),\n software_used_string: z.string().optional(),\n project_url: z.string().optional(),\n created_at: z.string().datetime().optional(),\n})\n\nexport type InferredProjectMetadata = z.infer<typeof source_project_metadata>\nexpectTypesMatch<SourceProjectMetadata, InferredProjectMetadata>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_missing_property_error = z\n .object({\n type: z.literal(\"source_missing_property_error\"),\n source_missing_property_error_id: getZodPrefixedIdWithDefault(\n \"source_missing_property_error\",\n ),\n source_component_id: z.string(),\n property_name: z.string(),\n subcircuit_id: z.string().optional(),\n error_type: z\n .literal(\"source_missing_property_error\")\n .default(\"source_missing_property_error\"),\n message: z.string(),\n })\n .describe(\"The source code is missing a property\")\n\nexport type SourceMissingPropertyErrorInput = z.input<\n typeof source_missing_property_error\n>\ntype InferredSourceMissingPropertyError = z.infer<\n typeof source_missing_property_error\n>\n\n/**\n * The source code is missing a property\n */\nexport interface SourceMissingPropertyError {\n type: \"source_missing_property_error\"\n source_missing_property_error_id: string\n source_component_id: string\n property_name: string\n subcircuit_id?: string\n error_type: \"source_missing_property_error\"\n message: string\n}\n\nexpectTypesMatch<\n SourceMissingPropertyError,\n InferredSourceMissingPropertyError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_failed_to_create_component_error = z\n .object({\n type: z.literal(\"source_failed_to_create_component_error\"),\n source_failed_to_create_component_error_id: getZodPrefixedIdWithDefault(\n \"source_failed_to_create_component_error\",\n ),\n error_type: z\n .literal(\"source_failed_to_create_component_error\")\n .default(\"source_failed_to_create_component_error\"),\n component_name: z.string().optional(),\n subcircuit_id: z.string().optional(),\n parent_source_component_id: z.string().optional(),\n message: z.string(),\n pcb_center: z\n .object({\n x: z.number().optional(),\n y: z.number().optional(),\n })\n .optional(),\n schematic_center: z\n .object({\n x: z.number().optional(),\n y: z.number().optional(),\n })\n .optional(),\n })\n .describe(\"Error emitted when a component fails to be constructed\")\n\nexport type SourceFailedToCreateComponentErrorInput = z.input<\n typeof source_failed_to_create_component_error\n>\ntype InferredSourceFailedToCreateComponentError = z.infer<\n typeof source_failed_to_create_component_error\n>\n\n/**\n * Error emitted when a component fails to be constructed.\n * Contains details about the failure and prevents the component from being rendered.\n */\nexport interface SourceFailedToCreateComponentError {\n type: \"source_failed_to_create_component_error\"\n source_failed_to_create_component_error_id: string\n error_type: \"source_failed_to_create_component_error\"\n message: string\n component_name?: string\n subcircuit_id?: string\n parent_source_component_id?: string\n pcb_center?: {\n x?: number\n y?: number\n }\n schematic_center?: {\n x?: number\n y?: number\n }\n}\n\nexpectTypesMatch<\n SourceFailedToCreateComponentError,\n InferredSourceFailedToCreateComponentError\n>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_port = z.object({\n type: z.literal(\"source_port\"),\n pin_number: z.number().optional(),\n port_hints: z.array(z.string()).optional(),\n name: z.string(),\n source_port_id: z.string(),\n source_component_id: z.string(),\n subcircuit_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n})\n\nexport type SourcePortInput = z.input<typeof source_port>\ntype InferredSourcePort = z.infer<typeof source_port>\n\n/**\n * Defines a source port that can be connected to other components\n */\nexport interface SourcePort {\n type: \"source_port\"\n pin_number?: number\n port_hints?: string[]\n name: string\n source_port_id: string\n source_component_id: string\n subcircuit_id?: string\n subcircuit_connectivity_map_key?: string\n}\n\nexpectTypesMatch<SourcePort, InferredSourcePort>(true)\n","import { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { z } from \"zod\"\n\nexport interface SourceTrace {\n type: \"source_trace\"\n source_trace_id: string\n connected_source_port_ids: string[]\n connected_source_net_ids: string[]\n subcircuit_id?: string\n subcircuit_connectivity_map_key?: string\n max_length?: number\n display_name?: string\n min_trace_thickness?: number\n}\n\nexport const source_trace = z.object({\n type: z.literal(\"source_trace\"),\n source_trace_id: z.string(),\n connected_source_port_ids: z.array(z.string()),\n connected_source_net_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n max_length: z.number().optional(),\n min_trace_thickness: z.number().optional(),\n display_name: z.string().optional(),\n})\n\ntype InferredSourceTrace = z.infer<typeof source_trace>\n\nexpectTypesMatch<SourceTrace, InferredSourceTrace>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_group = z.object({\n type: z.literal(\"source_group\"),\n source_group_id: z.string(),\n subcircuit_id: z.string().optional(),\n parent_subcircuit_id: z.string().optional(),\n is_subcircuit: z.boolean().optional(),\n name: z.string().optional(),\n})\n\nexport type SourceGroupInput = z.input<typeof source_group>\ntype InferredSourceGroup = z.infer<typeof source_group>\n\nexport interface SourceGroup {\n type: \"source_group\"\n source_group_id: string\n subcircuit_id?: string\n parent_subcircuit_id?: string\n is_subcircuit?: boolean\n name?: string\n}\n\nexpectTypesMatch<SourceGroup, InferredSourceGroup>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_net = z.object({\n type: z.literal(\"source_net\"),\n source_net_id: z.string(),\n name: z.string(),\n member_source_group_ids: z.array(z.string()),\n is_power: z.boolean().optional(),\n is_ground: z.boolean().optional(),\n is_digital_signal: z.boolean().optional(),\n is_analog_signal: z.boolean().optional(),\n trace_width: z.number().optional(),\n subcircuit_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n})\n\nexport type SourceNetInput = z.input<typeof source_net>\ntype InferredSourceNet = z.infer<typeof source_net>\n\nexport interface SourceNet {\n type: \"source_net\"\n source_net_id: string\n name: string\n member_source_group_ids: string[]\n is_power?: boolean\n is_ground?: boolean\n is_digital_signal?: boolean\n is_analog_signal?: boolean\n trace_width?: number\n subcircuit_id?: string\n subcircuit_connectivity_map_key?: string\n}\n\nexpectTypesMatch<SourceNet, InferredSourceNet>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_pcb_ground_plane = z\n .object({\n type: z.literal(\"source_pcb_ground_plane\"),\n source_pcb_ground_plane_id: z.string(),\n source_group_id: z.string(),\n source_net_id: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a ground plane in the source domain\")\n\nexport type SourcePcbGroundPlaneInput = z.input<typeof source_pcb_ground_plane>\ntype InferredSourcePcbGroundPlane = z.infer<typeof source_pcb_ground_plane>\n\n/**\n * Defines a ground plane in the source domain\n */\nexport interface SourcePcbGroundPlane {\n type: \"source_pcb_ground_plane\"\n source_pcb_ground_plane_id: string\n source_group_id: string\n source_net_id: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<SourcePcbGroundPlane, InferredSourcePcbGroundPlane>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicBox {\n type: \"schematic_box\"\n schematic_component_id?: string\n width: number\n height: number\n is_dashed: boolean\n x: number\n y: number\n subcircuit_id?: string\n}\n\nexport const schematic_box = z\n .object({\n type: z.literal(\"schematic_box\"),\n schematic_component_id: z.string().optional(),\n width: distance,\n height: distance,\n is_dashed: z.boolean().default(false),\n x: distance,\n y: distance,\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Draws a box on the schematic\")\n\nexport type SchematicBoxInput = z.input<typeof schematic_box>\ntype InferredSchematicBox = z.infer<typeof schematic_box>\n\nexpectTypesMatch<SchematicBox, InferredSchematicBox>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicPath {\n type: \"schematic_path\"\n schematic_component_id: string\n fill_color?: \"red\" | \"blue\"\n is_filled?: boolean\n points: Point[]\n subcircuit_id?: string\n}\n\nexport const schematic_path = z.object({\n type: z.literal(\"schematic_path\"),\n schematic_component_id: z.string(),\n fill_color: z.enum([\"red\", \"blue\"]).optional(),\n is_filled: z.boolean().optional(),\n points: z.array(point),\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicPathInput = z.input<typeof schematic_path>\ntype InferredSchematicPath = z.infer<typeof schematic_path>\n\nexpectTypesMatch<SchematicPath, InferredSchematicPath>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { size, type Size } from \"../common/size\"\nimport { length } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_pin_styles = z.record(\n z.object({\n left_margin: length.optional(),\n right_margin: length.optional(),\n top_margin: length.optional(),\n bottom_margin: length.optional(),\n }),\n)\n\nexport interface SchematicPortArrangementBySize {\n left_size: number\n right_size: number\n top_size?: number\n bottom_size?: number\n}\n\nexport interface SchematicPortArrangementBySides {\n left_side?: { pins: number[]; direction?: \"top-to-bottom\" | \"bottom-to-top\" }\n right_side?: { pins: number[]; direction?: \"top-to-bottom\" | \"bottom-to-top\" }\n top_side?: { pins: number[]; direction?: \"left-to-right\" | \"right-to-left\" }\n bottom_side?: {\n pins: number[]\n direction?: \"left-to-right\" | \"right-to-left\"\n }\n}\n\nexport type SchematicPortArrangement =\n | SchematicPortArrangementBySize\n | SchematicPortArrangementBySides\n\nexport interface SchematicComponent {\n type: \"schematic_component\"\n size: Size\n center: Point\n source_component_id: string\n schematic_component_id: string\n pin_spacing?: number\n pin_styles?: Record<\n string,\n {\n left_margin?: number\n right_margin?: number\n top_margin?: number\n bottom_margin?: number\n }\n >\n box_width?: number\n symbol_name?: string\n port_arrangement?: SchematicPortArrangement\n port_labels?: Record<string, string>\n symbol_display_value?: string\n subcircuit_id?: string\n schematic_group_id?: string\n}\n\nexport const schematic_component_port_arrangement_by_size = z.object({\n left_size: z.number(),\n right_size: z.number(),\n top_size: z.number().optional(),\n bottom_size: z.number().optional(),\n})\n\nexpectTypesMatch<\n SchematicPortArrangementBySize,\n z.infer<typeof schematic_component_port_arrangement_by_size>\n>(true)\n\nexport const schematic_component_port_arrangement_by_sides = z.object({\n left_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n right_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n top_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n bottom_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n})\n\nexpectTypesMatch<\n SchematicPortArrangementBySides,\n z.infer<typeof schematic_component_port_arrangement_by_sides>\n>(true)\n\nexport const port_arrangement = z.union([\n schematic_component_port_arrangement_by_size,\n schematic_component_port_arrangement_by_sides,\n])\n\nexport const schematic_component = z.object({\n type: z.literal(\"schematic_component\"),\n size,\n center: point,\n source_component_id: z.string(),\n schematic_component_id: z.string(),\n pin_spacing: length.optional(),\n pin_styles: schematic_pin_styles.optional(),\n box_width: length.optional(),\n symbol_name: z.string().optional(),\n port_arrangement: port_arrangement.optional(),\n port_labels: z.record(z.string()).optional(),\n symbol_display_value: z.string().optional(),\n subcircuit_id: z.string().optional(),\n schematic_group_id: z.string().optional(),\n})\n\nexport type SchematicComponentInput = z.input<typeof schematic_component>\ntype InferredSchematicComponent = z.infer<typeof schematic_component>\n\nexpectTypesMatch<SchematicComponent, InferredSchematicComponent>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/**\n * Defines a line on the schematic, this can be used for adding arbitrary lines\n * to a schematic, but don't use it for drawing traces, schematic boxes or where\n * other schematic elements are more appropriate.\n */\nexport interface SchematicLine {\n type: \"schematic_line\"\n schematic_component_id: string\n x1: number\n x2: number\n y1: number\n y2: number\n subcircuit_id?: string\n}\n\nexport const schematic_line = z.object({\n type: z.literal(\"schematic_line\"),\n schematic_component_id: z.string(),\n x1: distance,\n x2: distance,\n y1: distance,\n y2: distance,\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicLineInput = z.input<typeof schematic_line>\ntype InferredSchematicLine = z.infer<typeof schematic_line>\n\nexpectTypesMatch<SchematicLine, InferredSchematicLine>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicTraceEdge {\n from: {\n x: number\n y: number\n }\n to: {\n x: number\n y: number\n }\n is_crossing?: boolean\n from_schematic_port_id?: string\n to_schematic_port_id?: string\n}\n\nexport interface SchematicTrace {\n type: \"schematic_trace\"\n schematic_trace_id: string\n source_trace_id: string\n junctions: {\n x: number\n y: number\n }[]\n edges: SchematicTraceEdge[]\n subcircuit_id?: string\n}\n\nexport const schematic_trace = z.object({\n type: z.literal(\"schematic_trace\"),\n schematic_trace_id: z.string(),\n source_trace_id: z.string(),\n junctions: z.array(\n z.object({\n x: z.number(),\n y: z.number(),\n }),\n ),\n edges: z.array(\n z.object({\n from: z.object({\n x: z.number(),\n y: z.number(),\n }),\n to: z.object({\n x: z.number(),\n y: z.number(),\n }),\n is_crossing: z.boolean().optional(),\n from_schematic_port_id: z.string().optional(),\n to_schematic_port_id: z.string().optional(),\n }),\n ),\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicTraceInput = z.input<typeof schematic_trace>\ntype InferredSchematicTrace = z.infer<typeof schematic_trace>\n\nexpectTypesMatch<SchematicTraceInput, InferredSchematicTrace>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { ninePointAnchor } from \"src/common/NinePointAnchor\"\nimport type { NinePointAnchor } from \"src/common/NinePointAnchor\"\nimport type { FivePointAnchor } from \"src/common/FivePointAnchor\"\nimport { fivePointAnchor } from \"src/common/FivePointAnchor\"\n\nexport interface SchematicText {\n type: \"schematic_text\"\n schematic_component_id?: string\n schematic_text_id: string\n text: string\n font_size: number\n position: {\n x: number\n y: number\n }\n rotation: number\n anchor: NinePointAnchor | FivePointAnchor\n color: string\n subcircuit_id?: string\n}\n\nexport const schematic_text = z.object({\n type: z.literal(\"schematic_text\"),\n schematic_component_id: z.string().optional(),\n schematic_text_id: z.string(),\n text: z.string(),\n font_size: z.number().default(0.18),\n position: z.object({\n x: distance,\n y: distance,\n }),\n rotation: z.number().default(0),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicTextInput = z.input<typeof schematic_text>\ntype InferredSchematicText = z.infer<typeof schematic_text>\n\nexpectTypesMatch<SchematicText, InferredSchematicText>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport type FivePointAnchor = \"center\" | \"left\" | \"right\" | \"top\" | \"bottom\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n\ntype InferredFivePointAnchor = z.infer<typeof fivePointAnchor>\n\nexpectTypesMatch<FivePointAnchor, InferredFivePointAnchor>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicPort {\n type: \"schematic_port\"\n schematic_port_id: string\n source_port_id: string\n schematic_component_id?: string\n center: Point\n facing_direction?: \"up\" | \"down\" | \"left\" | \"right\"\n distance_from_component_edge?: number\n side_of_component?: \"top\" | \"bottom\" | \"left\" | \"right\"\n true_ccw_index?: number\n pin_number?: number\n display_pin_label?: string\n subcircuit_id?: string\n is_connected?: boolean\n}\n\nexport const schematic_port = z\n .object({\n type: z.literal(\"schematic_port\"),\n schematic_port_id: z.string(),\n source_port_id: z.string(),\n schematic_component_id: z.string().optional(),\n center: point,\n facing_direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n distance_from_component_edge: z.number().optional(),\n side_of_component: z.enum([\"top\", \"bottom\", \"left\", \"right\"]).optional(),\n true_ccw_index: z.number().optional(),\n pin_number: z.number().optional(),\n display_pin_label: z.string().optional(),\n subcircuit_id: z.string().optional(),\n is_connected: z.boolean().optional(),\n })\n .describe(\"Defines a port on a schematic component\")\n\nexport type SchematicPortInput = z.input<typeof schematic_port>\ntype InferredSchematicPort = z.infer<typeof schematic_port>\n\nexpectTypesMatch<SchematicPort, InferredSchematicPort>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\n\nexport interface SchematicNetLabel {\n type: \"schematic_net_label\"\n schematic_net_label_id: string\n schematic_trace_id?: string\n source_trace_id?: string\n source_net_id: string\n center: Point\n anchor_position?: Point | undefined\n anchor_side: \"top\" | \"bottom\" | \"left\" | \"right\"\n text: string\n symbol_name?: string | undefined\n /**\n * When true the net label can be repositioned. When false the label's\n * position is fixed by the element it is attached to.\n */\n is_movable?: boolean\n subcircuit_id?: string\n}\n\nexport const schematic_net_label = z.object({\n type: z.literal(\"schematic_net_label\"),\n schematic_net_label_id: getZodPrefixedIdWithDefault(\"schematic_net_label\"),\n schematic_trace_id: z.string().optional(),\n source_trace_id: z.string().optional(),\n source_net_id: z.string(),\n center: point,\n anchor_position: point.optional(),\n anchor_side: z.enum([\"top\", \"bottom\", \"left\", \"right\"]),\n text: z.string(),\n symbol_name: z.string().optional(),\n is_movable: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicNetLabelInput = z.input<typeof schematic_net_label>\nexport type InferredSchematicNetLabel = z.infer<typeof schematic_net_label>\n\nexpectTypesMatch<SchematicNetLabel, InferredSchematicNetLabel>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicError {\n type: \"schematic_error\"\n schematic_error_id: string\n error_type: \"schematic_port_not_found\"\n message: string\n subcircuit_id?: string\n}\n\nexport const schematic_error = z\n .object({\n type: z.literal(\"schematic_error\"),\n schematic_error_id: z.string(),\n // eventually each error type should be broken out into a dir of files\n error_type: z\n .literal(\"schematic_port_not_found\")\n .default(\"schematic_port_not_found\"),\n message: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a schematic error on the schematic\")\n\nexport type SchematicErrorInput = z.input<typeof schematic_error>\ntype InferredSchematicError = z.infer<typeof schematic_error>\n\nexpectTypesMatch<SchematicError, InferredSchematicError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_layout_error = z\n .object({\n type: z.literal(\"schematic_layout_error\"),\n schematic_layout_error_id: getZodPrefixedIdWithDefault(\n \"schematic_layout_error\",\n ),\n error_type: z\n .literal(\"schematic_layout_error\")\n .default(\"schematic_layout_error\"),\n message: z.string(),\n source_group_id: z.string(),\n schematic_group_id: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Error emitted when schematic layout fails for a group\")\n\nexport type SchematicLayoutErrorInput = z.input<typeof schematic_layout_error>\ntype InferredSchematicLayoutError = z.infer<typeof schematic_layout_error>\n\nexport interface SchematicLayoutError {\n type: \"schematic_layout_error\"\n schematic_layout_error_id: string\n error_type: \"schematic_layout_error\"\n message: string\n source_group_id: string\n schematic_group_id: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<SchematicLayoutError, InferredSchematicLayoutError>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { size, type Size } from \"../common/size\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_debug_object_base = z.object({\n type: z.literal(\"schematic_debug_object\"),\n label: z.string().optional(),\n subcircuit_id: z.string().optional(),\n})\n\nexport const schematic_debug_rect = schematic_debug_object_base.extend({\n shape: z.literal(\"rect\"),\n center: point,\n size: size,\n})\n\nexport const schematic_debug_line = schematic_debug_object_base.extend({\n shape: z.literal(\"line\"),\n start: point,\n end: point,\n})\n\nexport const schematic_debug_point = schematic_debug_object_base.extend({\n shape: z.literal(\"point\"),\n center: point,\n})\n\nexport const schematic_debug_object = z.discriminatedUnion(\"shape\", [\n schematic_debug_rect,\n schematic_debug_line,\n schematic_debug_point,\n])\ntype InferredSchematicDebugObject = z.infer<typeof schematic_debug_object>\n\nexport interface SchematicDebugRect {\n type: \"schematic_debug_object\"\n label?: string\n shape: \"rect\"\n center: Point\n size: Size\n subcircuit_id?: string\n}\n\nexport interface SchematicDebugLine {\n type: \"schematic_debug_object\"\n label?: string\n shape: \"line\"\n start: Point\n end: Point\n subcircuit_id?: string\n}\n\nexport interface SchematicDebugPoint {\n type: \"schematic_debug_object\"\n label?: string\n shape: \"point\"\n center: Point\n subcircuit_id?: string\n}\n\nexport type SchematicDebugObject =\n | SchematicDebugRect\n | SchematicDebugLine\n | SchematicDebugPoint\n\nexpectTypesMatch<SchematicDebugObject, InferredSchematicDebugObject>(true)\nexport type SchematicDebugObjectInput = z.input<typeof schematic_debug_object>\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { voltage } from \"src/units\"\n\nexport interface SchematicVoltageProbe {\n type: \"schematic_voltage_probe\"\n schematic_voltage_probe_id: string\n position: Point\n schematic_trace_id: string\n voltage?: number\n subcircuit_id?: string\n}\n\nexport const schematic_voltage_probe = z\n .object({\n type: z.literal(\"schematic_voltage_probe\"),\n schematic_voltage_probe_id: z.string(),\n position: point,\n schematic_trace_id: z.string(),\n voltage: voltage.optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a voltage probe measurement point on a schematic trace\")\n\nexport type SchematicVoltageProbeInput = z.input<typeof schematic_voltage_probe>\ntype InferredSchematicVoltageProbe = z.infer<typeof schematic_voltage_probe>\n\nexpectTypesMatch<SchematicVoltageProbe, InferredSchematicVoltageProbe>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"../common\"\nimport { expectTypesMatch } from \"../utils/expect-types-match\"\n\nexport const schematic_manual_edit_conflict_warning = z\n .object({\n type: z.literal(\"schematic_manual_edit_conflict_warning\"),\n schematic_manual_edit_conflict_warning_id: getZodPrefixedIdWithDefault(\n \"schematic_manual_edit_conflict_warning\",\n ),\n warning_type: z\n .literal(\"schematic_manual_edit_conflict_warning\")\n .default(\"schematic_manual_edit_conflict_warning\"),\n message: z.string(),\n schematic_component_id: z.string(),\n schematic_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n source_component_id: z.string(),\n })\n .describe(\n \"Warning emitted when a component has both manual placement and explicit schX/schY coordinates\",\n )\n\nexport type SchematicManualEditConflictWarningInput = z.input<\n typeof schematic_manual_edit_conflict_warning\n>\ntype InferredSchematicManualEditConflictWarning = z.infer<\n typeof schematic_manual_edit_conflict_warning\n>\n\n/**\n * Warning emitted when a component has both manual placement (via manualEdits) and explicit schX/schY coordinates\n */\nexport interface SchematicManualEditConflictWarning {\n type: \"schematic_manual_edit_conflict_warning\"\n schematic_manual_edit_conflict_warning_id: string\n warning_type: \"schematic_manual_edit_conflict_warning\"\n message: string\n schematic_component_id: string\n schematic_group_id?: string\n subcircuit_id?: string\n source_component_id: string\n}\n\nexpectTypesMatch<\n SchematicManualEditConflictWarning,\n InferredSchematicManualEditConflictWarning\n>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_group = z\n .object({\n type: z.literal(\"schematic_group\"),\n schematic_group_id: getZodPrefixedIdWithDefault(\"schematic_group\"),\n source_group_id: z.string(),\n is_subcircuit: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n width: length,\n height: length,\n center: point,\n schematic_component_ids: z.array(z.string()),\n name: z.string().optional(),\n description: z.string().optional(),\n })\n .describe(\"Defines a group of components on the schematic\")\n\nexport type SchematicGroupInput = z.input<typeof schematic_group>\ntype InferredSchematicGroup = z.infer<typeof schematic_group>\n\n/**\n * Defines a group of components on the schematic\n */\nexport interface SchematicGroup {\n type: \"schematic_group\"\n schematic_group_id: string\n source_group_id: string\n is_subcircuit?: boolean\n subcircuit_id?: string\n width: Length\n height: Length\n center: Point\n schematic_component_ids: string[]\n name?: string\n description?: string\n}\n\nexpectTypesMatch<SchematicGroup, InferredSchematicGroup>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const all_layers = [\n \"top\",\n \"bottom\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n] as const\n\nexport const layer_string = z.enum(all_layers)\n\nexport const layer_ref = layer_string\n .or(\n z.object({\n name: layer_string,\n }),\n )\n .transform((layer) => {\n if (typeof layer === \"string\") {\n return layer\n }\n return layer.name\n })\n\nexport type LayerRefInput = z.input<typeof layer_ref>\ntype InferredLayerRef = z.output<typeof layer_ref>\nexport type LayerRef = (typeof all_layers)[number]\n\nexpectTypesMatch<LayerRef, InferredLayerRef>(true)\n\nexport const visible_layer = z.enum([\"top\", \"bottom\"])\nexport type VisibleLayerRef = z.infer<typeof visible_layer>\nexport type VisibleLayer = z.infer<typeof visible_layer>\n","import { z } from \"zod\"\nimport { distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"./layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n// x: string | number\n// y: string | number\n// via?: boolean\n// via_to_layer?: string\nexport const pcb_route_hint = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n via_to_layer: layer_ref.optional(),\n})\nexport const pcb_route_hints = z.array(pcb_route_hint)\n\nexport type PcbRouteHintInput = z.input<typeof pcb_route_hint>\nexport type PcbRouteHintsInput = z.input<typeof pcb_route_hints>\ntype InferredPcbRouteHint = z.output<typeof pcb_route_hint>\ntype InferredPcbRouteHints = z.output<typeof pcb_route_hints>\n\nexport interface PcbRouteHint {\n x: number\n y: number\n via?: boolean\n via_to_layer?: LayerRef\n}\n\nexport type PcbRouteHints = PcbRouteHint[]\n\nexpectTypesMatch<PcbRouteHint, InferredPcbRouteHint>(true)\nexpectTypesMatch<PcbRouteHints, InferredPcbRouteHints>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../../units\"\nimport { layer_ref, type LayerRef } from \"./layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const route_hint_point = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n to_layer: layer_ref.optional(),\n trace_width: distance.optional(),\n})\n\nexport type RouteHintPointInput = z.input<typeof route_hint_point>\ntype InferredRouteHintPoint = z.infer<typeof route_hint_point>\n\nexport interface RouteHintPoint {\n x: number\n y: number\n via?: boolean\n to_layer?: LayerRef\n trace_width?: number\n}\n\nexpectTypesMatch<RouteHintPoint, InferredRouteHintPoint>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { rotation, length, type Rotation, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_component = z\n .object({\n type: z.literal(\"pcb_component\"),\n pcb_component_id: getZodPrefixedIdWithDefault(\"pcb_component\"),\n source_component_id: z.string(),\n center: point,\n layer: layer_ref,\n rotation: rotation,\n width: length,\n height: length,\n subcircuit_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type PcbComponentInput = z.input<typeof pcb_component>\ntype InferredPcbComponent = z.infer<typeof pcb_component>\n\n/**\n * Defines a component on the PCB\n */\nexport interface PcbComponent {\n type: \"pcb_component\"\n pcb_component_id: string\n source_component_id: string\n subcircuit_id?: string\n center: Point\n layer: LayerRef\n rotation: Rotation\n width: Length\n height: Length\n pcb_group_id?: string\n}\n\n/**\n * @deprecated use PcbComponent\n */\nexport type PCBComponent = PcbComponent\n\nexpectTypesMatch<PcbComponent, InferredPcbComponent>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_hole_circle_or_square = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.enum([\"circle\", \"square\"]),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_circle_or_square_shape =\n pcb_hole_circle_or_square.describe(\n \"Defines a circular or square hole on the PCB\",\n )\n\nexport type PcbHoleCircleOrSquareInput = z.input<\n typeof pcb_hole_circle_or_square\n>\ntype InferredPcbHoleCircleOrSquare = z.infer<typeof pcb_hole_circle_or_square>\n\n/**\n * Defines a circular or square hole on the PCB\n */\nexport interface PcbHoleCircleOrSquare {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"circle\" | \"square\"\n hole_diameter: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleCircleOrSquare, InferredPcbHoleCircleOrSquare>(true)\n\nconst pcb_hole_oval = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"oval\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_oval_shape = pcb_hole_oval.describe(\n \"Defines an oval hole on the PCB\",\n)\n\nexport type PcbHoleOvalInput = z.input<typeof pcb_hole_oval>\ntype InferredPcbHoleOval = z.infer<typeof pcb_hole_oval>\n\n/**\n * Defines an oval hole on the PCB\n */\nexport interface PcbHoleOval {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"oval\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleOval, InferredPcbHoleOval>(true)\n\nexport const pcb_hole = pcb_hole_circle_or_square.or(pcb_hole_oval)\n\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHoleInput = z.input<typeof pcb_hole>\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHole = z.infer<typeof pcb_hole>\n\nexport type PcbHole = PcbHoleCircleOrSquare | PcbHoleOval\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_plated_hole_circle = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circle\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n outer_diameter: z.number(),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines a circular plated hole on the PCB\n */\nexport interface PcbPlatedHoleCircle {\n type: \"pcb_plated_hole\"\n shape: \"circle\"\n pcb_group_id?: string\n subcircuit_id?: string\n outer_diameter: number\n hole_diameter: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nconst pcb_plated_hole_oval = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.enum([\"oval\", \"pill\"]),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n outer_width: z.number(),\n outer_height: z.number(),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines an oval or pill-shaped plated hole on the PCB\n */\nexport interface PcbPlatedHoleOval {\n type: \"pcb_plated_hole\"\n shape: \"oval\" | \"pill\"\n pcb_group_id?: string\n subcircuit_id?: string\n outer_width: number\n outer_height: number\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nconst pcb_circular_hole_with_rect_pad = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"circle\"),\n pad_shape: z.literal(\"rect\"),\n hole_diameter: z.number(),\n rect_pad_width: z.number(),\n rect_pad_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\nconst pcb_pill_hole_with_rect_pad = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"pill\"),\n pad_shape: z.literal(\"rect\"),\n hole_width: z.number(),\n hole_height: z.number(),\n rect_pad_width: z.number(),\n rect_pad_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\nexport interface PcbHolePillWithRectPad {\n type: \"pcb_plated_hole\"\n shape: \"pill_hole_with_rect_pad\"\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"pill\"\n pad_shape: \"rect\"\n hole_width: number\n hole_height: number\n rect_pad_width: number\n rect_pad_height: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nexport interface PcbHoleCircularWithRectPad {\n type: \"pcb_plated_hole\"\n shape: \"circular_hole_with_rect_pad\"\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"circle\"\n pad_shape: \"rect\"\n hole_diameter: number\n rect_pad_width: number\n rect_pad_height: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nexport const pcb_plated_hole = z.union([\n pcb_plated_hole_circle,\n pcb_plated_hole_oval,\n pcb_circular_hole_with_rect_pad,\n pcb_pill_hole_with_rect_pad,\n])\nexport type PcbPlatedHole =\n | PcbPlatedHoleCircle\n | PcbPlatedHoleOval\n | PcbHoleCircularWithRectPad\n | PcbHolePillWithRectPad\n\nexpectTypesMatch<PcbPlatedHoleCircle, z.infer<typeof pcb_plated_hole_circle>>(\n true,\n)\nexpectTypesMatch<PcbPlatedHoleOval, z.infer<typeof pcb_plated_hole_oval>>(true)\nexpectTypesMatch<\n PcbHoleCircularWithRectPad,\n z.infer<typeof pcb_circular_hole_with_rect_pad>\n>(true)\nexpectTypesMatch<\n PcbHolePillWithRectPad,\n z.infer<typeof pcb_pill_hole_with_rect_pad>\n>(true)\n/**\n * @deprecated use PcbPlatedHole\n */\nexport type PCBPlatedHole = PcbPlatedHole\n\n/**\n * @deprecated use PcbPlatedHoleInput\n */\nexport type PCBPlatedHoleInput = z.input<typeof pcb_plated_hole>\nexport type PcbPlatedHoleInput = z.input<typeof pcb_plated_hole>\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port = z\n .object({\n type: z.literal(\"pcb_port\"),\n pcb_port_id: getZodPrefixedIdWithDefault(\"pcb_port\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n source_port_id: z.string(),\n pcb_component_id: z.string(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n })\n .describe(\"Defines a port on the PCB\")\n\nexport type PcbPortInput = z.input<typeof pcb_port>\ntype InferredPcbPort = z.infer<typeof pcb_port>\n\n/**\n * Defines a port on the PCB\n */\nexport interface PcbPort {\n type: \"pcb_port\"\n pcb_port_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n source_port_id: string\n pcb_component_id: string\n x: Distance\n y: Distance\n layers: LayerRef[]\n}\n\n/**\n * @deprecated use PcbPort\n */\nexport type PCBPort = PcbPort\n\n/**\n * @deprecated use PcbPortInput\n */\nexport type PCBPortInput = PcbPortInput\n\nexpectTypesMatch<PcbPort, InferredPcbPort>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance, rotation, type Rotation } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault, point, type Point } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_smtpad_circle = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"circle\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nconst pcb_smtpad_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nconst pcb_smtpad_rotated_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rotated_rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n ccw_rotation: rotation,\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nexport const pcb_smtpad_pill = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"pill\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nconst pcb_smtpad_polygon = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"polygon\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n points: z.array(point),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nexport const pcb_smtpad = z\n .discriminatedUnion(\"shape\", [\n pcb_smtpad_circle,\n pcb_smtpad_rect,\n pcb_smtpad_rotated_rect,\n pcb_smtpad_pill,\n pcb_smtpad_polygon,\n ])\n .describe(\"Defines an SMT pad on the PCB\")\n\nexport type PCBSMTPadInput = z.input<typeof pcb_smtpad>\ntype PCBSMTPadCircle = z.infer<typeof pcb_smtpad_circle>\ntype PCBSMTPadRect = z.infer<typeof pcb_smtpad_rect>\ntype PCBSMTPadRotatedRect = z.infer<typeof pcb_smtpad_rotated_rect>\ntype PCBSMTPadPill = z.infer<typeof pcb_smtpad_pill>\ntype PCBSMTPadPolygon = z.infer<typeof pcb_smtpad_polygon>\n\n/**\n * Defines a circular SMT pad on the PCB\n */\nexport interface PcbSmtPadCircle {\n type: \"pcb_smtpad\"\n shape: \"circle\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n radius: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\n/**\n * Defines a rectangular SMT pad on the PCB\n */\nexport interface PcbSmtPadRect {\n type: \"pcb_smtpad\"\n shape: \"rect\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\n/**\n * Defines a rotated rectangular SMT pad on the PCB\n */\nexport interface PcbSmtPadRotatedRect {\n type: \"pcb_smtpad\"\n shape: \"rotated_rect\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n ccw_rotation: Rotation\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n/**\n * Defines a pill-shaped SMT pad on the PCB (rounded rectangle).\n */\nexport interface PcbSmtPadPill {\n type: \"pcb_smtpad\"\n shape: \"pill\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n radius: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\n/**\n * Defines a polygonal SMT pad on the PCB\n */\nexport interface PcbSmtPadPolygon {\n type: \"pcb_smtpad\"\n shape: \"polygon\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n points: Point[]\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\nexport type PcbSmtPad =\n | PcbSmtPadCircle\n | PcbSmtPadRect\n | PcbSmtPadRotatedRect\n | PcbSmtPadPill\n | PcbSmtPadPolygon\n\n/**\n * @deprecated use PcbSmtPad\n */\nexport type PCBSMTPad = PcbSmtPad\n\nexpectTypesMatch<PcbSmtPadCircle, PCBSMTPadCircle>(true)\nexpectTypesMatch<PcbSmtPadRect, PCBSMTPadRect>(true)\nexpectTypesMatch<PcbSmtPadRotatedRect, PCBSMTPadRotatedRect>(true)\nexpectTypesMatch<PcbSmtPadPill, PCBSMTPadPill>(true)\nexpectTypesMatch<PcbSmtPadPolygon, PCBSMTPadPolygon>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_solder_paste_circle = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"circle\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\n\nconst pcb_solder_paste_rect = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"rect\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\nconst pcb_solder_paste_pill = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"pill\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n radius: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\nconst pcb_solder_paste_rotated_rect = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"rotated_rect\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n ccw_rotation: distance,\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\n\nconst pcb_solder_paste_oval = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"oval\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\n\nexport const pcb_solder_paste = z\n .union([\n pcb_solder_paste_circle,\n pcb_solder_paste_rect,\n pcb_solder_paste_pill,\n pcb_solder_paste_rotated_rect,\n pcb_solder_paste_oval,\n ])\n .describe(\"Defines solderpaste on the PCB\")\n\nexport type PCBSolderPasteInput = z.input<typeof pcb_solder_paste>\ntype InferredPcbSolderPasteCircle = z.infer<typeof pcb_solder_paste_circle>\ntype InferredPcbSolderPasteRect = z.infer<typeof pcb_solder_paste_rect>\ntype InferredPcbSolderPastePill = z.infer<typeof pcb_solder_paste_pill>\ntype InferredPcbSolderPasteRotatedRect = z.infer<\n typeof pcb_solder_paste_rotated_rect\n>\ntype InferredPcbSolderPasteOval = z.infer<typeof pcb_solder_paste_oval>\n\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteCircle {\n type: \"pcb_solder_paste\"\n shape: \"circle\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n radius: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteRect {\n type: \"pcb_solder_paste\"\n shape: \"rect\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPastePill {\n type: \"pcb_solder_paste\"\n shape: \"pill\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n radius: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteRotatedRect {\n type: \"pcb_solder_paste\"\n shape: \"rotated_rect\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n ccw_rotation: Distance\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteOval {\n type: \"pcb_solder_paste\"\n shape: \"oval\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n\nexport type PcbSolderPaste =\n | PcbSolderPasteCircle\n | PcbSolderPasteRect\n | PcbSolderPastePill\n | PcbSolderPasteRotatedRect\n | PcbSolderPasteOval\n\nexpectTypesMatch<PcbSolderPasteCircle, InferredPcbSolderPasteCircle>(true)\nexpectTypesMatch<PcbSolderPasteRect, InferredPcbSolderPasteRect>(true)\nexpectTypesMatch<PcbSolderPastePill, InferredPcbSolderPastePill>(true)\nexpectTypesMatch<PcbSolderPasteRotatedRect, InferredPcbSolderPasteRotatedRect>(\n true,\n)\nexpectTypesMatch<PcbSolderPasteOval, InferredPcbSolderPasteOval>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_text = z\n .object({\n type: z.literal(\"pcb_text\"),\n pcb_text_id: getZodPrefixedIdWithDefault(\"pcb_text\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n text: z.string(),\n center: point,\n layer: layer_ref,\n width: length,\n height: length,\n lines: z.number(),\n // @ts-ignore\n align: z.enum([\"bottom-left\"]),\n })\n .describe(\"Defines text on the PCB\")\n\nexport type PcbTextInput = z.input<typeof pcb_text>\ntype InferredPcbText = z.infer<typeof pcb_text>\n\n/**\n * Defines text on the PCB\n */\nexport interface PcbText {\n type: \"pcb_text\"\n pcb_text_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n text: string\n center: Point\n layer: LayerRef\n width: Length\n height: Length\n lines: number\n // @ts-ignore\n align: \"bottom-left\"\n}\n\n/**\n * @deprecated use PcbText\n */\nexport type PCBText = PcbText\n\nexpectTypesMatch<PcbText, InferredPcbText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_route_point_wire = z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n})\n\nexport const pcb_trace_route_point_via = z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n hole_diameter: distance.optional(),\n outer_diameter: distance.optional(),\n from_layer: z.string(),\n to_layer: z.string(),\n})\n\nexport const pcb_trace_route_point = z.union([\n pcb_trace_route_point_wire,\n pcb_trace_route_point_via,\n])\ntype InferredPcbTraceRoutePoint = z.infer<typeof pcb_trace_route_point>\n\nexport const pcb_trace = z\n .object({\n type: z.literal(\"pcb_trace\"),\n source_trace_id: z.string().optional(),\n pcb_component_id: z.string().optional(),\n pcb_trace_id: getZodPrefixedIdWithDefault(\"pcb_trace\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n route_thickness_mode: z\n .enum([\"constant\", \"interpolated\"])\n .default(\"constant\")\n .optional(),\n route_order_index: z.number().optional(),\n should_round_corners: z.boolean().optional(),\n trace_length: z.number().optional(),\n route: z.array(pcb_trace_route_point),\n })\n .describe(\"Defines a trace on the PCB\")\n\nexport type PcbTraceInput = z.input<typeof pcb_trace>\ntype InferredPcbTrace = z.infer<typeof pcb_trace>\n\nexport interface PcbTraceRoutePointWire {\n route_type: \"wire\"\n x: Distance\n y: Distance\n width: Distance\n start_pcb_port_id?: string\n end_pcb_port_id?: string\n layer: LayerRef\n}\n\nexport interface PcbTraceRoutePointVia {\n route_type: \"via\"\n x: Distance\n y: Distance\n hole_diameter?: Distance\n outer_diameter?: Distance\n from_layer: string\n to_layer: string\n}\n\nexport type PcbTraceRoutePoint = PcbTraceRoutePointWire | PcbTraceRoutePointVia\n\n/**\n * Defines a trace on the PCB\n */\nexport interface PcbTrace {\n type: \"pcb_trace\"\n source_trace_id?: string\n pcb_component_id?: string\n pcb_group_id?: string\n subcircuit_id?: string\n pcb_trace_id: string\n /**\n * The order that this trace was routed in. This can be used to debug the\n * autorouter and to understand the trace path better\n *\n * The route_order_index should be relative to a subcircuit\n */\n route_order_index?: number\n route_thickness_mode?: \"constant\" | \"interpolated\"\n should_round_corners?: boolean\n trace_length?: number\n route: Array<PcbTraceRoutePoint>\n}\n\n/**\n * @deprecated use PcbTrace\n */\nexport type PCBTrace = PcbTrace\n\n/**\n * @deprecated use PcbTraceInput\n */\nexport type PCBTraceInput = PcbTraceInput\n\nexpectTypesMatch<PcbTraceRoutePoint, InferredPcbTraceRoutePoint>(true)\nexpectTypesMatch<PcbTrace, InferredPcbTrace>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_error = z\n .object({\n type: z.literal(\"pcb_trace_error\"),\n pcb_trace_error_id: getZodPrefixedIdWithDefault(\"pcb_trace_error\"),\n error_type: z.literal(\"pcb_trace_error\").default(\"pcb_trace_error\"),\n message: z.string(),\n center: point.optional(),\n pcb_trace_id: z.string(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a trace error on the PCB\")\n\nexport type PcbTraceErrorInput = z.input<typeof pcb_trace_error>\ntype InferredPcbTraceError = z.infer<typeof pcb_trace_error>\n\n/**\n * Defines a trace error on the PCB\n */\nexport interface PcbTraceError {\n type: \"pcb_trace_error\"\n pcb_trace_error_id: string\n error_type: \"pcb_trace_error\"\n message: string\n center?: Point\n pcb_trace_id: string\n source_trace_id: string\n pcb_component_ids: string[]\n pcb_port_ids: string[]\n subcircuit_id?: string\n}\n\n/**\n * @deprecated use PcbTraceError\n */\nexport type PCBTraceError = PcbTraceError\n\nexpectTypesMatch<PcbTraceError, InferredPcbTraceError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port_not_matched_error = z\n .object({\n type: z.literal(\"pcb_port_not_matched_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n error_type: z\n .literal(\"pcb_port_not_matched_error\")\n .default(\"pcb_port_not_matched_error\"),\n message: z.string(),\n pcb_component_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a trace error on the PCB where a port is not matched\")\n\nexport type PcbPortNotMatchedErrorInput = z.input<\n typeof pcb_port_not_matched_error\n>\ntype InferredPcbPortNotMatchedError = z.infer<typeof pcb_port_not_matched_error>\n\n/**\n * Defines a trace error on the PCB where a port is not matched\n */\nexport interface PcbPortNotMatchedError {\n type: \"pcb_port_not_matched_error\"\n pcb_error_id: string\n error_type: \"pcb_port_not_matched_error\"\n message: string\n pcb_component_ids: string[]\n subcircuit_id?: string\n}\n\n/**\n * @deprecated use PcbPortNotMatchedError\n */\nexport type PCBPortNotMatchedError = PcbPortNotMatchedError\n\nexpectTypesMatch<PcbPortNotMatchedError, InferredPcbPortNotMatchedError>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_via = z\n .object({\n type: z.literal(\"pcb_via\"),\n pcb_via_id: getZodPrefixedIdWithDefault(\"pcb_via\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n outer_diameter: distance.default(\"0.6mm\"),\n hole_diameter: distance.default(\"0.25mm\"),\n /** @deprecated */\n from_layer: layer_ref.optional(),\n /** @deprecated */\n to_layer: layer_ref.optional(),\n layers: z.array(layer_ref),\n pcb_trace_id: z.string().optional(),\n })\n .describe(\"Defines a via on the PCB\")\n\nexport type PcbViaInput = z.input<typeof pcb_via>\ntype InferredPcbVia = z.infer<typeof pcb_via>\n\n/**\n * Defines a via on the PCB\n */\nexport interface PcbVia {\n type: \"pcb_via\"\n pcb_via_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n outer_diameter: Distance\n hole_diameter: Distance\n /** @deprecated */\n from_layer?: LayerRef\n /** @deprecated */\n to_layer?: LayerRef\n layers: LayerRef[]\n pcb_trace_id?: string\n}\n\n/**\n * @deprecated use PcbVia\n */\nexport type PCBVia = PcbVia\n\nexpectTypesMatch<PcbVia, InferredPcbVia>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_board = z\n .object({\n type: z.literal(\"pcb_board\"),\n pcb_board_id: getZodPrefixedIdWithDefault(\"pcb_board\"),\n is_subcircuit: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n width: length,\n height: length,\n center: point,\n thickness: length.optional().default(1.4),\n num_layers: z.number().optional().default(4),\n outline: z.array(point).optional(),\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n })\n .describe(\"Defines the board outline of the PCB\")\n\n/**\n * Defines the board outline of the PCB\n */\nexport interface PcbBoard {\n type: \"pcb_board\"\n pcb_board_id: string\n is_subcircuit?: boolean\n subcircuit_id?: string\n width: Length\n height: Length\n thickness: Length\n num_layers: number\n center: Point\n outline?: Point[]\n material: \"fr4\" | \"fr1\"\n}\n\nexport type PcbBoardInput = z.input<typeof pcb_board>\ntype InferredPcbBoard = z.infer<typeof pcb_board>\n\n/**\n * @deprecated use PcbBoard\n */\nexport type PCBBoard = PcbBoard\n\nexpectTypesMatch<PcbBoard, InferredPcbBoard>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_placement_error = z\n .object({\n type: z.literal(\"pcb_placement_error\"),\n pcb_placement_error_id: getZodPrefixedIdWithDefault(\"pcb_placement_error\"),\n error_type: z.literal(\"pcb_placement_error\").default(\"pcb_placement_error\"),\n message: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a placement error on the PCB\")\n\nexport type PcbPlacementErrorInput = z.input<typeof pcb_placement_error>\ntype InferredPcbPlacementError = z.infer<typeof pcb_placement_error>\n\n/**\n * Defines a placement error on the PCB\n */\nexport interface PcbPlacementError {\n type: \"pcb_placement_error\"\n pcb_placement_error_id: string\n error_type: \"pcb_placement_error\"\n message: string\n subcircuit_id?: string\n}\n\n/**\n * @deprecated use PcbPlacementError\n */\nexport type PCBPlacementError = PcbPlacementError\n\nexpectTypesMatch<PcbPlacementError, InferredPcbPlacementError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { route_hint_point, type RouteHintPoint } from \"src/pcb\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/**\n * A hint that can be used during generation of a PCB trace.\n */\nexport interface PcbTraceHint {\n type: \"pcb_trace_hint\"\n pcb_trace_hint_id: string\n pcb_port_id: string\n pcb_component_id: string\n route: RouteHintPoint[]\n subcircuit_id?: string\n}\n\nexport const pcb_trace_hint = z\n .object({\n type: z.literal(\"pcb_trace_hint\"),\n pcb_trace_hint_id: getZodPrefixedIdWithDefault(\"pcb_trace_hint\"),\n pcb_port_id: z.string(),\n pcb_component_id: z.string(),\n route: z.array(route_hint_point),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"A hint that can be used during generation of a PCB trace\")\n\nexport type PcbTraceHintInput = z.input<typeof pcb_trace_hint>\ntype InferredPcbTraceHint = z.infer<typeof pcb_trace_hint>\n\n/**\n * @deprecated use PcbTraceHint\n */\nexport type PCBTraceHint = PcbTraceHint\n\nexpectTypesMatch<PcbTraceHint, InferredPcbTraceHint>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport {\n layer_ref,\n type LayerRef,\n type VisibleLayer,\n visible_layer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_line = z\n .object({\n type: z.literal(\"pcb_silkscreen_line\"),\n pcb_silkscreen_line_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_line\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n stroke_width: distance.default(\"0.1mm\"),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen line on the PCB\")\n\nexport type PcbSilkscreenLineInput = z.input<typeof pcb_silkscreen_line>\ntype InferredPcbSilkscreenLine = z.infer<typeof pcb_silkscreen_line>\n\n/**\n * Defines a silkscreen line on the PCB\n */\nexport interface PcbSilkscreenLine {\n type: \"pcb_silkscreen_line\"\n pcb_silkscreen_line_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n stroke_width: Distance\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenLine\n */\nexport type PCBSilkscreenLine = PcbSilkscreenLine\n\nexpectTypesMatch<PcbSilkscreenLine, InferredPcbSilkscreenLine>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n visible_layer,\n type VisibleLayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_path = z\n .object({\n type: z.literal(\"pcb_silkscreen_path\"),\n pcb_silkscreen_path_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_path\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length,\n })\n .describe(\"Defines a silkscreen path on the PCB\")\n\nexport type PcbSilkscreenPathInput = z.input<typeof pcb_silkscreen_path>\ntype InferredPcbSilkscreenPath = z.infer<typeof pcb_silkscreen_path>\n\n/**\n * Defines a silkscreen path on the PCB\n */\nexport interface PcbSilkscreenPath {\n type: \"pcb_silkscreen_path\"\n pcb_silkscreen_path_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n layer: VisibleLayerRef\n route: Point[]\n stroke_width: Length\n}\n\n/**\n * @deprecated use PcbSilkscreenPath\n */\nexport type PcbSilkscreenPathDeprecated = PcbSilkscreenPath\n\nexpectTypesMatch<PcbSilkscreenPath, InferredPcbSilkscreenPath>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { distance, length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport {\n ninePointAnchor,\n type NinePointAnchor,\n} from \"src/common/NinePointAnchor\"\n\nexport const pcb_silkscreen_text = z\n .object({\n type: z.literal(\"pcb_silkscreen_text\"),\n pcb_silkscreen_text_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_text\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n ccw_rotation: z.number().optional(),\n layer: layer_ref,\n is_mirrored: z.boolean().default(false).optional(),\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: ninePointAnchor.default(\"center\"),\n })\n .describe(\"Defines silkscreen text on the PCB\")\n\nexport type PcbSilkscreenTextInput = z.input<typeof pcb_silkscreen_text>\ntype InferredPcbSilkscreenText = z.infer<typeof pcb_silkscreen_text>\n\n/**\n * Defines silkscreen text on the PCB\n */\nexport interface PcbSilkscreenText {\n type: \"pcb_silkscreen_text\"\n pcb_silkscreen_text_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n ccw_rotation?: number\n layer: LayerRef\n is_mirrored?: boolean\n anchor_position: Point\n anchor_alignment: NinePointAnchor\n}\n\n/**\n * @deprecated use PcbSilkscreenText\n */\nexport type PCBSilkscreenText = PcbSilkscreenText\n\nexpectTypesMatch<PcbSilkscreenText, InferredPcbSilkscreenText>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_rect = z\n .object({\n type: z.literal(\"pcb_silkscreen_rect\"),\n pcb_silkscreen_rect_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_rect\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n width: length,\n height: length,\n layer: layer_ref,\n stroke_width: length.default(\"1mm\"),\n is_filled: z.boolean().default(true).optional(),\n has_stroke: z.boolean().optional(),\n is_stroke_dashed: z.boolean().optional(),\n })\n .describe(\"Defines a silkscreen rect on the PCB\")\n\nexport type PcbSilkscreenRectInput = z.input<typeof pcb_silkscreen_rect>\ntype InferredPcbSilkscreenRect = z.infer<typeof pcb_silkscreen_rect>\n\n/**\n * Defines a silkscreen rect on the PCB\n */\nexport interface PcbSilkscreenRect {\n type: \"pcb_silkscreen_rect\"\n pcb_silkscreen_rect_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n width: Length\n height: Length\n layer: LayerRef\n stroke_width: Length\n is_filled?: boolean\n has_stroke?: boolean\n is_stroke_dashed?: boolean\n}\n\n/**\n * @deprecated use PcbSilkscreenRect\n */\nexport type PcbSilkscreenRectOld = PcbSilkscreenRect\n\nexpectTypesMatch<PcbSilkscreenRect, InferredPcbSilkscreenRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_circle = z\n .object({\n type: z.literal(\"pcb_silkscreen_circle\"),\n pcb_silkscreen_circle_id: getZodPrefixedIdWithDefault(\n \"pcb_silkscreen_circle\",\n ),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n radius: length,\n layer: visible_layer,\n stroke_width: length.default(\"1mm\"),\n })\n .describe(\"Defines a silkscreen circle on the PCB\")\n\nexport type PcbSilkscreenCircleInput = z.input<typeof pcb_silkscreen_circle>\ntype InferredPcbSilkscreenCircle = z.infer<typeof pcb_silkscreen_circle>\n\n/**\n * Defines a silkscreen circle on the PCB\n */\nexport interface PcbSilkscreenCircle {\n type: \"pcb_silkscreen_circle\"\n pcb_silkscreen_circle_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n radius: Length\n layer: VisibleLayer\n stroke_width: Length\n}\n\nexpectTypesMatch<PcbSilkscreenCircle, InferredPcbSilkscreenCircle>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n type LayerRef,\n visible_layer,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_oval = z\n .object({\n type: z.literal(\"pcb_silkscreen_oval\"),\n pcb_silkscreen_oval_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_oval\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n radius_x: distance,\n radius_y: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen oval on the PCB\")\n\nexport type PcbSilkscreenOvalInput = z.input<typeof pcb_silkscreen_oval>\ntype InferredPcbSilkscreenOval = z.infer<typeof pcb_silkscreen_oval>\n\n/**\n * Defines a silkscreen oval on the PCB\n */\nexport interface PcbSilkscreenOval {\n type: \"pcb_silkscreen_oval\"\n pcb_silkscreen_oval_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n radius_x: Distance\n radius_y: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenOval\n */\nexport type PcbSilkscreenOvalDeprecated = PcbSilkscreenOval\n\nexpectTypesMatch<PcbSilkscreenOval, InferredPcbSilkscreenOval>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport {\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common/getZodPrefixedIdWithDefault\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_text = z\n .object({\n type: z.literal(\"pcb_fabrication_note_text\"),\n pcb_fabrication_note_text_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_text\",\n ),\n subcircuit_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\",\n )\n\nexport type PcbFabricationNoteTextInput = z.input<\n typeof pcb_fabrication_note_text\n>\ntype InferredPcbFabricationNoteText = z.infer<typeof pcb_fabrication_note_text>\n\n/**\n * Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\n */\nexport interface PcbFabricationNoteText {\n type: \"pcb_fabrication_note_text\"\n pcb_fabrication_note_text_id: string\n subcircuit_id?: string\n pcb_group_id?: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: VisibleLayer\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNoteText\n */\nexport type PCBFabricationNoteText = PcbFabricationNoteText\n\nexpectTypesMatch<PcbFabricationNoteText, InferredPcbFabricationNoteText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { point, type Point } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_path = z\n .object({\n type: z.literal(\"pcb_fabrication_note_path\"),\n pcb_fabrication_note_path_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_path\",\n ),\n pcb_component_id: z.string(),\n subcircuit_id: z.string().optional(),\n layer: layer_ref,\n route: z.array(point),\n stroke_width: length,\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication path on the PCB for fabricators or assemblers\",\n )\n\nexport type PcbFabricationNotePathInput = z.input<\n typeof pcb_fabrication_note_path\n>\ntype InferredPcbFabricationNotePath = z.infer<typeof pcb_fabrication_note_path>\n\n/**\n * Defines a fabrication path on the PCB for fabricators or assemblers\n */\nexport interface PcbFabricationNotePath {\n type: \"pcb_fabrication_note_path\"\n pcb_fabrication_note_path_id: string\n pcb_component_id: string\n subcircuit_id?: string\n layer: LayerRef\n route: Point[]\n stroke_width: Length\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNotePath\n */\nexport type PCBFabricationNotePath = PcbFabricationNotePath\n\nexpectTypesMatch<PcbFabricationNotePath, InferredPcbFabricationNotePath>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_keepout = z\n .object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"rect\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n width: distance,\n height: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n })\n .or(\n z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"circle\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n radius: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n }),\n )\n\nexport type PCBKeepoutInput = z.input<typeof pcb_keepout>\ntype InferredPCBKeepout = z.infer<typeof pcb_keepout>\n\nexport interface PCBKeepoutRect {\n type: \"pcb_keepout\"\n shape: \"rect\"\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n width: number\n height: number\n pcb_keepout_id: string\n layers: string[]\n description?: string\n}\n\nexport interface PCBKeepoutCircle {\n type: \"pcb_keepout\"\n shape: \"circle\"\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n radius: number\n pcb_keepout_id: string\n layers: string[]\n description?: string\n}\n\nexport type PCBKeepout = PCBKeepoutRect | PCBKeepoutCircle\n\nexpectTypesMatch<PCBKeepout, InferredPCBKeepout>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length, rotation, type Rotation } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n// Common properties base for all cutout shapes (internal)\nconst pcb_cutout_base = z.object({\n type: z.literal(\"pcb_cutout\"),\n pcb_cutout_id: getZodPrefixedIdWithDefault(\"pcb_cutout\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n})\n\n// Rectangular Cutout\nexport const pcb_cutout_rect = pcb_cutout_base.extend({\n shape: z.literal(\"rect\"),\n center: point,\n width: length,\n height: length,\n rotation: rotation.optional(),\n})\nexport type PcbCutoutRectInput = z.input<typeof pcb_cutout_rect>\ntype InferredPcbCutoutRect = z.infer<typeof pcb_cutout_rect>\n/**\n * Defines a rectangular cutout on the PCB.\n */\nexport interface PcbCutoutRect {\n type: \"pcb_cutout\"\n pcb_cutout_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n shape: \"rect\"\n center: Point\n width: Length\n height: Length\n rotation?: Rotation\n}\nexpectTypesMatch<PcbCutoutRect, InferredPcbCutoutRect>(true)\n\n// Circular Cutout\nexport const pcb_cutout_circle = pcb_cutout_base.extend({\n shape: z.literal(\"circle\"),\n center: point,\n radius: length,\n})\nexport type PcbCutoutCircleInput = z.input<typeof pcb_cutout_circle>\ntype InferredPcbCutoutCircle = z.infer<typeof pcb_cutout_circle>\n/**\n * Defines a circular cutout on the PCB.\n */\nexport interface PcbCutoutCircle {\n type: \"pcb_cutout\"\n pcb_cutout_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n shape: \"circle\"\n center: Point\n radius: Length\n}\nexpectTypesMatch<PcbCutoutCircle, InferredPcbCutoutCircle>(true)\n\n// Polygon Cutout\nexport const pcb_cutout_polygon = pcb_cutout_base.extend({\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n})\nexport type PcbCutoutPolygonInput = z.input<typeof pcb_cutout_polygon>\ntype InferredPcbCutoutPolygon = z.infer<typeof pcb_cutout_polygon>\n/**\n * Defines a polygonal cutout on the PCB, specified by a list of points.\n * The polygon should be closed (the last point implicitly connects to the first).\n */\nexport interface PcbCutoutPolygon {\n type: \"pcb_cutout\"\n pcb_cutout_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n shape: \"polygon\"\n points: Point[]\n}\nexpectTypesMatch<PcbCutoutPolygon, InferredPcbCutoutPolygon>(true)\n\n// Union of all cutout shapes\nexport const pcb_cutout = z\n .discriminatedUnion(\"shape\", [\n pcb_cutout_rect,\n pcb_cutout_circle,\n pcb_cutout_polygon,\n ])\n .describe(\"Defines a cutout on the PCB, removing board material.\")\n\nexport type PcbCutoutInput = z.input<typeof pcb_cutout>\nexport type PcbCutout = PcbCutoutRect | PcbCutoutCircle | PcbCutoutPolygon\n\ntype InferredPcbCutout = z.infer<typeof pcb_cutout>\nexpectTypesMatch<PcbCutout, InferredPcbCutout>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_missing_footprint_error = z\n .object({\n type: z.literal(\"pcb_missing_footprint_error\"),\n pcb_missing_footprint_error_id: getZodPrefixedIdWithDefault(\n \"pcb_missing_footprint_error\",\n ),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n error_type: z\n .literal(\"pcb_missing_footprint_error\")\n .default(\"pcb_missing_footprint_error\"),\n source_component_id: z.string(),\n message: z.string(),\n })\n .describe(\"Defines a missing footprint error on the PCB\")\n\nexport type PcbMissingFootprintErrorInput = z.input<\n typeof pcb_missing_footprint_error\n>\ntype InferredPcbMissingFootprintError = z.infer<\n typeof pcb_missing_footprint_error\n>\n\n/**\n * Defines a placement error on the PCB\n */\nexport interface PcbMissingFootprintError {\n type: \"pcb_missing_footprint_error\"\n pcb_missing_footprint_error_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n error_type: \"pcb_missing_footprint_error\"\n source_component_id: string\n message: string\n}\n\n/**\n * @deprecated use PcbMissingFootprintError\n */\nexport type PCBMissingFootprintError = PcbMissingFootprintError\n\nexpectTypesMatch<PcbMissingFootprintError, InferredPcbMissingFootprintError>(\n true,\n)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_group = z\n .object({\n type: z.literal(\"pcb_group\"),\n pcb_group_id: getZodPrefixedIdWithDefault(\"pcb_group\"),\n source_group_id: z.string(),\n is_subcircuit: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n width: length,\n height: length,\n center: point,\n pcb_component_ids: z.array(z.string()),\n name: z.string().optional(),\n description: z.string().optional(),\n autorouter_configuration: z\n .object({\n trace_clearance: length,\n })\n .optional(),\n autorouter_used_string: z.string().optional(),\n })\n .describe(\"Defines a group of components on the PCB\")\n\nexport type PcbGroupInput = z.input<typeof pcb_group>\ntype InferredPcbGroup = z.infer<typeof pcb_group>\n\n/**\n * Defines a group of components on the PCB\n */\nexport interface PcbGroup {\n type: \"pcb_group\"\n pcb_group_id: string\n source_group_id: string\n is_subcircuit?: boolean\n subcircuit_id?: string\n width: Length\n height: Length\n center: Point\n pcb_component_ids: string[]\n name?: string\n description?: string\n autorouter_configuration?: {\n trace_clearance: Length\n }\n autorouter_used_string?: string\n}\n\nexpectTypesMatch<PcbGroup, InferredPcbGroup>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_autorouting_error = z\n .object({\n type: z.literal(\"pcb_autorouting_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_autorouting_error\"),\n error_type: z\n .literal(\"pcb_autorouting_error\")\n .default(\"pcb_autorouting_error\"),\n message: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"The autorouting has failed to route a portion of the board\")\n\nexport type PcbAutoroutingErrorInput = z.input<typeof pcb_autorouting_error>\ntype PcbInferredAutoroutingError = z.infer<typeof pcb_autorouting_error>\n\nexport interface PcbAutoroutingErrorInterface {\n type: \"pcb_autorouting_error\"\n pcb_error_id: string\n error_type: \"pcb_autorouting_error\"\n message: string\n subcircuit_id?: string\n}\n\nexport type PcbAutoroutingError = PcbAutoroutingErrorInterface\n\nexpectTypesMatch<PcbAutoroutingError, PcbInferredAutoroutingError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"../common\"\nimport { expectTypesMatch } from \"../utils/expect-types-match\"\n\nexport const pcb_manual_edit_conflict_warning = z\n .object({\n type: z.literal(\"pcb_manual_edit_conflict_warning\"),\n pcb_manual_edit_conflict_warning_id: getZodPrefixedIdWithDefault(\n \"pcb_manual_edit_conflict_warning\",\n ),\n warning_type: z\n .literal(\"pcb_manual_edit_conflict_warning\")\n .default(\"pcb_manual_edit_conflict_warning\"),\n message: z.string(),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n source_component_id: z.string(),\n })\n .describe(\n \"Warning emitted when a component has both manual placement and explicit pcbX/pcbY coordinates\",\n )\n\nexport type PcbManualEditConflictWarningInput = z.input<\n typeof pcb_manual_edit_conflict_warning\n>\ntype InferredPcbManualEditConflictWarning = z.infer<\n typeof pcb_manual_edit_conflict_warning\n>\n\n/**\n * Warning emitted when a component has both manual placement (via manualEdits) and explicit pcbX/pcbY coordinates\n */\nexport interface PcbManualEditConflictWarning {\n type: \"pcb_manual_edit_conflict_warning\"\n pcb_manual_edit_conflict_warning_id: string\n warning_type: \"pcb_manual_edit_conflict_warning\"\n message: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n source_component_id: string\n}\n\nexpectTypesMatch<\n PcbManualEditConflictWarning,\n InferredPcbManualEditConflictWarning\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_breakout_point = z\n .object({\n type: z.literal(\"pcb_breakout_point\"),\n pcb_breakout_point_id: getZodPrefixedIdWithDefault(\"pcb_breakout_point\"),\n pcb_group_id: z.string(),\n subcircuit_id: z.string().optional(),\n source_trace_id: z.string().optional(),\n source_port_id: z.string().optional(),\n source_net_id: z.string().optional(),\n x: distance,\n y: distance,\n })\n .describe(\n \"Defines a routing target within a pcb_group for a source_trace or source_net\",\n )\n\nexport type PcbBreakoutPointInput = z.input<typeof pcb_breakout_point>\ntype InferredPcbBreakoutPoint = z.infer<typeof pcb_breakout_point>\n\n/**\n * Defines a routing target within a pcb_group for a source_trace or source_net\n */\nexport interface PcbBreakoutPoint {\n type: \"pcb_breakout_point\"\n pcb_breakout_point_id: string\n pcb_group_id: string\n subcircuit_id?: string\n source_trace_id?: string\n source_port_id?: string\n source_net_id?: string\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbBreakoutPoint, InferredPcbBreakoutPoint>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_ground_plane = z\n .object({\n type: z.literal(\"pcb_ground_plane\"),\n pcb_ground_plane_id: getZodPrefixedIdWithDefault(\"pcb_ground_plane\"),\n source_pcb_ground_plane_id: z.string(),\n source_net_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a ground plane on the PCB\")\n\nexport type PcbGroundPlaneInput = z.input<typeof pcb_ground_plane>\ntype InferredPcbGroundPlane = z.infer<typeof pcb_ground_plane>\n\n/**\n * Defines a ground plane on the PCB\n */\nexport interface PcbGroundPlane {\n type: \"pcb_ground_plane\"\n pcb_ground_plane_id: string\n source_pcb_ground_plane_id: string\n source_net_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<PcbGroundPlane, InferredPcbGroundPlane>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_ground_plane_region = z\n .object({\n type: z.literal(\"pcb_ground_plane_region\"),\n pcb_ground_plane_region_id: getZodPrefixedIdWithDefault(\n \"pcb_ground_plane_region\",\n ),\n pcb_ground_plane_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: layer_ref,\n points: z.array(point),\n })\n .describe(\"Defines a polygon region of a ground plane\")\n\nexport type PcbGroundPlaneRegionInput = z.input<typeof pcb_ground_plane_region>\ntype InferredPcbGroundPlaneRegion = z.infer<typeof pcb_ground_plane_region>\n\n/**\n * Defines a polygon region of a ground plane\n */\nexport interface PcbGroundPlaneRegion {\n type: \"pcb_ground_plane_region\"\n pcb_ground_plane_region_id: string\n pcb_ground_plane_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n layer: LayerRef\n points: Point[]\n}\n\nexpectTypesMatch<PcbGroundPlaneRegion, InferredPcbGroundPlaneRegion>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_thermal_spoke = z\n .object({\n type: z.literal(\"pcb_thermal_spoke\"),\n pcb_thermal_spoke_id: getZodPrefixedIdWithDefault(\"pcb_thermal_spoke\"),\n pcb_ground_plane_id: z.string(),\n shape: z.string(),\n spoke_count: z.number(),\n spoke_thickness: distance,\n spoke_inner_diameter: distance,\n spoke_outer_diameter: distance,\n pcb_plated_hole_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Pattern for connecting a ground plane to a plated hole\")\n\nexport type PcbThermalSpokeInput = z.input<typeof pcb_thermal_spoke>\ntype InferredPcbThermalSpoke = z.infer<typeof pcb_thermal_spoke>\n\n/**\n * Pattern for connecting a ground plane to a plated hole\n */\nexport interface PcbThermalSpoke {\n type: \"pcb_thermal_spoke\"\n pcb_thermal_spoke_id: string\n pcb_ground_plane_id: string\n shape: string\n spoke_count: number\n spoke_thickness: Distance\n spoke_inner_diameter: Distance\n spoke_outer_diameter: Distance\n pcb_plated_hole_id?: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<PcbThermalSpoke, InferredPcbThermalSpoke>(true)\n","import { z } from \"zod\"\nimport { point3, type Point3 } from \"../common\"\nimport { rotation, length, type Rotation, type Length } from \"../units\"\nimport { layer_ref, type LayerRef } from \"src/pcb\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const cad_component = z\n .object({\n type: z.literal(\"cad_component\"),\n cad_component_id: z.string(),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n position: point3,\n rotation: point3.optional(),\n size: point3.optional(),\n layer: layer_ref.optional(),\n subcircuit_id: z.string().optional(),\n\n // These are all ways to generate/load the 3d model\n footprinter_string: z.string().optional(),\n model_obj_url: z.string().optional(),\n model_stl_url: z.string().optional(),\n model_3mf_url: z.string().optional(),\n model_jscad: z.any().optional(),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type CadComponentInput = z.input<typeof cad_component>\ntype InferredCadComponent = z.infer<typeof cad_component>\n\nexport interface CadComponent {\n type: \"cad_component\"\n cad_component_id: string\n pcb_component_id: string\n source_component_id: string\n position: Point3\n rotation?: Point3\n size?: Point3\n layer?: LayerRef\n subcircuit_id?: string\n footprinter_string?: string\n model_obj_url?: string\n model_stl_url?: string\n model_3mf_url?: string\n model_jscad?: any\n}\n\nexpectTypesMatch<CadComponent, InferredCadComponent>(true)\n","import { z } from \"zod\"\nimport * as pcb from \"./pcb\"\nimport * as sch from \"./schematic\"\nimport * as src from \"./source\"\nimport * as cad from \"./cad\"\nimport {\n expectStringUnionsMatch,\n expectTypesMatch,\n} from \"./utils/expect-types-match\"\n\nexport const any_circuit_element = z.union([\n // TODO source_config\n // TODO pcb_config\n // TODO schematic_config\n // TODO schematic_group\n src.source_trace,\n src.source_port,\n src.any_source_component,\n src.source_net,\n src.source_group,\n src.source_simple_chip,\n src.source_simple_capacitor,\n src.source_simple_diode,\n src.source_simple_led,\n src.source_simple_resistor,\n src.source_simple_power_source,\n src.source_simple_battery,\n src.source_simple_inductor,\n src.source_simple_pin_header,\n src.source_simple_resonator,\n src.source_simple_switch,\n src.source_simple_transistor,\n src.source_simple_test_point,\n src.source_simple_mosfet,\n src.source_simple_potentiometer,\n src.source_simple_push_button,\n src.source_pcb_ground_plane,\n src.source_project_metadata,\n pcb.pcb_component,\n pcb.pcb_hole,\n pcb.pcb_missing_footprint_error,\n pcb.pcb_manual_edit_conflict_warning,\n pcb.pcb_plated_hole,\n pcb.pcb_keepout,\n pcb.pcb_port,\n pcb.pcb_text,\n pcb.pcb_trace,\n pcb.pcb_via,\n pcb.pcb_smtpad,\n pcb.pcb_solder_paste,\n pcb.pcb_board,\n pcb.pcb_group,\n pcb.pcb_trace_hint,\n pcb.pcb_silkscreen_line,\n pcb.pcb_silkscreen_path,\n pcb.pcb_silkscreen_text,\n pcb.pcb_silkscreen_rect,\n pcb.pcb_silkscreen_circle,\n pcb.pcb_silkscreen_oval,\n pcb.pcb_trace_error,\n pcb.pcb_placement_error,\n pcb.pcb_port_not_matched_error,\n pcb.pcb_fabrication_note_path,\n pcb.pcb_fabrication_note_text,\n pcb.pcb_autorouting_error,\n pcb.pcb_breakout_point,\n pcb.pcb_cutout,\n pcb.pcb_ground_plane,\n pcb.pcb_ground_plane_region,\n pcb.pcb_thermal_spoke,\n sch.schematic_box,\n sch.schematic_text,\n sch.schematic_line,\n sch.schematic_component,\n sch.schematic_port,\n sch.schematic_trace,\n sch.schematic_path,\n sch.schematic_error,\n sch.schematic_layout_error,\n sch.schematic_net_label,\n sch.schematic_debug_object,\n sch.schematic_voltage_probe,\n sch.schematic_manual_edit_conflict_warning,\n sch.schematic_group,\n cad.cad_component,\n])\n\n/**\n * @deprecated use any_circuit_element instead\n */\nexport const any_soup_element = any_circuit_element\n\nexport type AnyCircuitElement = z.infer<typeof any_circuit_element>\nexport type AnyCircuitElementInput = z.input<typeof any_circuit_element>\n/**\n * @deprecated use AnyCircuitElement instead\n */\nexport type AnySoupElement = AnyCircuitElement\n\n/**\n * @deprecated use AnyCircuitElementInput instead\n */\nexport type AnySoupElementInput = AnyCircuitElementInput\n\n/**\n * Type representing a complete Circuit JSON document, which is an array of circuit elements.\n * This is the primary type used when working with circuit-json files or API responses.\n */\nexport type CircuitJson = AnyCircuitElement[]\n\n// ------------------- SAFETY CHECKS -------------------\n\n// SAFETY CHECK: Every element has a type\nexpectTypesMatch<\n AnyCircuitElement extends { type: string } ? AnyCircuitElement : never,\n AnyCircuitElement\n>(true)\n\n// SAFETY CHECK: Every element has an id with the key name `${type}_id`\ntype FindMissingId<T extends AnyCircuitElement> = T extends {\n type: infer U extends string\n}\n ? T extends { [K in `${U}_id`]: infer V }\n ? V extends string\n ? never\n : `${U} DOES NOT HAVE AN ${U}_id PROPERTY`\n : `${U} DOES NOT HAVE AN ${U}_id PROPERTY`\n : never\n\nexpectStringUnionsMatch<\n FindMissingId<AnyCircuitElement>,\n // EXCEPTIONS TO THE RULE\n // THIS IS FOR LEGACY REASONS, DO NOT ADD MORE EXCEPTIONS\n | \"source_project_metadata DOES NOT HAVE AN source_project_metadata_id PROPERTY\"\n | \"pcb_port_not_matched_error DOES NOT HAVE AN pcb_port_not_matched_error_id PROPERTY\"\n | \"pcb_autorouting_error DOES NOT HAVE AN pcb_autorouting_error_id PROPERTY\"\n | \"schematic_debug_object DOES NOT HAVE AN schematic_debug_object_id PROPERTY\"\n | \"schematic_box DOES NOT HAVE AN schematic_box_id PROPERTY\"\n | \"schematic_line DOES NOT HAVE AN schematic_line_id PROPERTY\"\n | \"schematic_path DOES NOT HAVE AN schematic_path_id PROPERTY\"\n>(true)\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","import type {\n AnyCircuitElement,\n AnyCircuitElementInput,\n SourceComponentBase,\n SourcePort,\n} from \"circuit-json\"\nimport * as Soup from \"circuit-json\"\nimport type { SubtreeOptions } from \"./subtree\"\nimport { buildSubtree } from \"./subtree\"\n\nexport type CircuitJsonOps<\n K extends AnyCircuitElement[\"type\"],\n T extends AnyCircuitElement | AnyCircuitElementInput,\n> = {\n get: (id: string) => Extract<T, { type: K }> | null\n select: (selector: string) => Extract<T, { type: K }> | null\n getWhere: (where: any) => Extract<T, { type: K }> | null\n getUsing: (using: {\n [key: `${string}_id`]: string\n }) => Extract<T, { type: K }> | null\n insert: (\n elm: Omit<Extract<T, { type: K }>, \"type\" | `${K}_id`>,\n ) => Extract<T, { type: K }>\n update: (\n id: string,\n newProps: Partial<Extract<T, { type: K }>>,\n ) => Extract<T, { type: K }>\n delete: (id: string) => void\n list: (where?: any) => Extract<T, { type: K }>[]\n}\n\nexport type CircuitJsonUtilObjects = {\n [K in AnyCircuitElement[\"type\"]]: CircuitJsonOps<K, AnyCircuitElement>\n} & {\n subtree: (where?: any) => CircuitJsonUtilObjects\n toArray: () => AnyCircuitElement[]\n editCount: number\n}\nexport type CircuitJsonInputUtilObjects = {\n [K in AnyCircuitElementInput[\"type\"]]: CircuitJsonOps<\n K,\n AnyCircuitElementInput\n >\n}\n\nexport type CircuitJsonUtilOptions = {\n validateInserts?: boolean\n}\n\nexport type GetCircuitJsonUtilFn = ((\n soup: AnyCircuitElement[],\n options?: CircuitJsonUtilOptions,\n) => CircuitJsonUtilObjects) & {\n unparsed: (soup: AnyCircuitElementInput[]) => CircuitJsonInputUtilObjects\n}\n\ninterface InternalStore {\n counts: Record<string, number>\n editCount: number\n}\n\nexport const cju: GetCircuitJsonUtilFn = ((\n circuitJsonInput: any[],\n options: CircuitJsonUtilOptions = {},\n) => {\n const circuitJson = circuitJsonInput as AnyCircuitElement[]\n let internalStore: InternalStore = (circuitJson as any)._internal_store\n if (!internalStore) {\n internalStore = {\n counts: {},\n editCount: 0,\n } as InternalStore\n ;(circuitJson as any)._internal_store = internalStore\n\n // Initialize counts\n for (const elm of circuitJson) {\n const type = elm.type\n const idVal = (elm as any)[`${type}_id`]\n if (!idVal) continue\n const idNum = Number.parseInt(idVal.split(\"_\").pop())\n if (!Number.isNaN(idNum)) {\n internalStore.counts[type] = Math.max(\n internalStore.counts[type] ?? 0,\n idNum,\n )\n }\n }\n }\n const su = new Proxy(\n {},\n {\n get: (proxy_target: any, prop: string) => {\n if (prop === \"toArray\") {\n return () => {\n ;(circuitJson as any).editCount = internalStore.editCount\n return circuitJson\n }\n }\n if (prop === \"editCount\") {\n return internalStore.editCount\n }\n\n if (prop === \"subtree\") {\n return (opts: SubtreeOptions) =>\n cju(buildSubtree(circuitJson, opts), options)\n }\n\n const component_type = prop\n\n return {\n get: (id: string) =>\n circuitJson.find(\n (e: any) =>\n e.type === component_type && e[`${component_type}_id`] === id,\n ),\n getUsing: (using: any) => {\n const keys = Object.keys(using)\n if (keys.length !== 1) {\n throw new Error(\n \"getUsing requires exactly one key, e.g. { pcb_component_id }\",\n )\n }\n const join_key = keys[0] as string\n const join_type = join_key.replace(\"_id\", \"\")\n const joiner: any = circuitJson.find(\n (e: any) =>\n e.type === join_type && e[join_key] === using[join_key],\n )\n if (!joiner) return null\n return circuitJson.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joiner[`${component_type}_id`],\n )\n },\n getWhere: (where: any) => {\n const keys = Object.keys(where)\n return circuitJson.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n )\n },\n list: (where?: any) => {\n const keys = !where ? [] : Object.keys(where)\n return circuitJson.filter(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n )\n },\n insert: (elm: any) => {\n internalStore.counts[component_type] ??= -1\n internalStore.counts[component_type]++\n const index = internalStore.counts[component_type]\n const newElm = {\n type: component_type,\n [`${component_type}_id`]: `${component_type}_${index}`,\n ...elm,\n }\n\n if (options.validateInserts) {\n const parser =\n (Soup as any)[component_type] ?? Soup.any_soup_element\n parser.parse(newElm)\n }\n\n circuitJson.push(newElm)\n internalStore.editCount++\n return newElm\n },\n delete: (id: string) => {\n const elm = circuitJson.find(\n (e) => (e as any)[`${component_type}_id`] === id,\n )\n if (!elm) return\n circuitJson.splice(circuitJson.indexOf(elm), 1)\n internalStore.editCount++\n },\n update: (id: string, newProps: any) => {\n const elm = circuitJson.find(\n (e) =>\n e.type === component_type &&\n (e as any)[`${component_type}_id`] === id,\n )\n if (!elm) return null\n Object.assign(elm, newProps)\n internalStore.editCount++\n return elm\n },\n select: (selector: string) => {\n // TODO when applySelector is isolated we can use it, until then we\n // do a poor man's selector implementation for two common cases\n if (component_type === \"source_component\") {\n return circuitJson.find(\n (e) =>\n e.type === \"source_component\" &&\n e.name === selector.replace(/\\./g, \"\"),\n )\n } else if (\n component_type === \"pcb_port\" ||\n component_type === \"source_port\" ||\n component_type === \"schematic_port\"\n ) {\n const [component_name, port_selector] = selector\n .replace(/\\./g, \"\")\n .split(/[\\s\\>]+/)\n const source_component = circuitJson.find(\n (e) =>\n e.type === \"source_component\" && e.name === component_name,\n ) as SourceComponentBase\n if (!source_component) return null\n const source_port = circuitJson.find(\n (e) =>\n e.type === \"source_port\" &&\n e.source_component_id ===\n source_component.source_component_id &&\n (e.name === port_selector ||\n (e.port_hints ?? []).includes(port_selector!)),\n ) as SourcePort\n if (!source_port) return null\n if (component_type === \"source_port\") return source_port\n\n if (component_type === \"pcb_port\") {\n return circuitJson.find(\n (e) =>\n e.type === \"pcb_port\" &&\n e.source_port_id === source_port.source_port_id,\n )\n } else if (component_type === \"schematic_port\") {\n return circuitJson.find(\n (e) =>\n e.type === \"schematic_port\" &&\n e.source_port_id === source_port.source_port_id,\n )\n }\n }\n },\n }\n },\n },\n )\n\n return su\n}) as any\ncju.unparsed = cju as any\n\nexport const su = cju\n\nexport default cju\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport type SubtreeOptions = {\n subcircuit_id?: string\n source_group_id?: string\n}\n\nfunction connect(\n map: Map<AnyCircuitElement, Set<AnyCircuitElement>>,\n a: AnyCircuitElement | undefined,\n b: AnyCircuitElement | undefined,\n) {\n if (!a || !b) return\n let setA = map.get(a)\n if (!setA) {\n setA = new Set()\n map.set(a, setA)\n }\n setA.add(b)\n let setB = map.get(b)\n if (!setB) {\n setB = new Set()\n map.set(b, setB)\n }\n setB.add(a)\n}\n\nexport function buildSubtree(\n soup: AnyCircuitElement[],\n opts: SubtreeOptions,\n): AnyCircuitElement[] {\n if (!opts.subcircuit_id && !opts.source_group_id) return [...soup]\n\n const idMap = new Map<string, AnyCircuitElement>()\n for (const elm of soup) {\n const idVal = (elm as any)[`${elm.type}_id`]\n if (typeof idVal === \"string\") {\n idMap.set(idVal, elm)\n }\n }\n\n const adj = new Map<AnyCircuitElement, Set<AnyCircuitElement>>()\n for (const elm of soup) {\n const entries = Object.entries(elm as any)\n for (const [key, val] of entries) {\n if (key === \"parent_source_group_id\") continue\n if (key.endsWith(\"_id\") && typeof val === \"string\") {\n const other = idMap.get(val)\n connect(adj, elm, other)\n } else if (key.endsWith(\"_ids\") && Array.isArray(val)) {\n for (const v of val) {\n if (typeof v === \"string\") {\n const other = idMap.get(v)\n connect(adj, elm, other)\n }\n }\n }\n }\n }\n\n const queue: AnyCircuitElement[] = []\n const included = new Set<AnyCircuitElement>()\n\n for (const elm of soup) {\n if (\n (opts.subcircuit_id &&\n (elm as any).subcircuit_id === opts.subcircuit_id) ||\n (opts.source_group_id &&\n ((elm as any).source_group_id === opts.source_group_id ||\n (Array.isArray((elm as any).member_source_group_ids) &&\n (elm as any).member_source_group_ids.includes(\n opts.source_group_id,\n ))))\n ) {\n queue.push(elm)\n included.add(elm)\n }\n }\n\n while (queue.length > 0) {\n const elm = queue.shift()!\n const neighbors = adj.get(elm)\n if (!neighbors) continue\n for (const n of neighbors) {\n if (!included.has(n)) {\n included.add(n)\n queue.push(n)\n }\n }\n }\n\n return soup.filter((e) => included.has(e))\n}\n","import type {\n AnyCircuitElement,\n AnyCircuitElementInput,\n SourceComponentBase,\n SourcePort,\n} from \"circuit-json\"\nimport * as Soup from \"circuit-json\"\nimport type {\n CircuitJsonOps,\n CircuitJsonUtilObjects as CircuitJsonUtilObjects,\n CircuitJsonInputUtilObjects as CircuitJsonInputUtilObjects,\n} from \"./cju\"\n\nexport type IndexedCircuitJsonUtilOptions = {\n validateInserts?: boolean\n indexConfig?: {\n // Enable specific indexes for faster lookups\n byId?: boolean\n byType?: boolean\n byRelation?: boolean\n bySubcircuit?: boolean\n byCustomField?: string[]\n }\n}\n\nexport type GetIndexedCircuitJsonUtilFn = ((\n soup: AnyCircuitElement[],\n options?: IndexedCircuitJsonUtilOptions,\n) => CircuitJsonUtilObjects) & {\n unparsed: (soup: AnyCircuitElementInput[]) => CircuitJsonInputUtilObjects\n}\n\ninterface InternalStore {\n counts: Record<string, number>\n editCount: number\n // Indexes for faster lookups\n indexes: {\n byId?: Map<string, AnyCircuitElement>\n byType?: Map<string, AnyCircuitElement[]>\n // Maps relation fields (like component_id) to elements\n byRelation?: Map<string, Map<string, AnyCircuitElement[]>>\n // Maps subcircuit_id to elements\n bySubcircuit?: Map<string, AnyCircuitElement[]>\n // Custom field indexes\n byCustomField?: Map<string, Map<string, AnyCircuitElement[]>>\n }\n}\n\n// Creates a unique key for the ID index\nfunction createIdKey(element: AnyCircuitElement): string {\n const type = element.type\n return `${type}:${(element as any)[`${type}_id`]}`\n}\n\nexport const cjuIndexed: GetIndexedCircuitJsonUtilFn = ((\n soup: AnyCircuitElement[],\n options: IndexedCircuitJsonUtilOptions = {},\n) => {\n let internalStore: InternalStore = (soup as any)._internal_store_indexed\n\n if (!internalStore) {\n internalStore = {\n counts: {},\n editCount: 0,\n indexes: {},\n } as InternalStore\n\n // Initialize counts\n for (const elm of soup) {\n const type = elm.type\n const idVal = (elm as any)[`${type}_id`]\n if (!idVal) continue\n const idNum = Number.parseInt(idVal.split(\"_\").pop() || \"\")\n if (!Number.isNaN(idNum)) {\n internalStore.counts[type] = Math.max(\n internalStore.counts[type] ?? 0,\n idNum,\n )\n }\n }\n\n // Build indexes\n const indexConfig = options.indexConfig || {}\n const indexes = internalStore.indexes\n\n // Reset indexes before rebuilding\n if (indexConfig.byId) {\n indexes.byId = new Map()\n }\n\n if (indexConfig.byType) {\n indexes.byType = new Map()\n }\n\n if (indexConfig.byRelation) {\n indexes.byRelation = new Map()\n }\n\n if (indexConfig.bySubcircuit) {\n indexes.bySubcircuit = new Map()\n }\n\n if (indexConfig.byCustomField && indexConfig.byCustomField.length > 0) {\n indexes.byCustomField = new Map()\n for (const field of indexConfig.byCustomField) {\n indexes.byCustomField.set(field, new Map())\n }\n }\n\n // Build indexes\n for (const element of soup) {\n // Index by ID\n if (indexConfig.byId) {\n const idKey = createIdKey(element)\n indexes.byId!.set(idKey, element)\n }\n\n // Index by type\n if (indexConfig.byType) {\n const elementsOfType = indexes.byType!.get(element.type) || []\n elementsOfType.push(element)\n indexes.byType!.set(element.type, elementsOfType)\n }\n\n // Index by relation fields (fields ending with _id)\n if (indexConfig.byRelation) {\n const elementEntries = Object.entries(element)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${element.type}_id` &&\n typeof value === \"string\"\n ) {\n const relationTypeMap = indexes.byRelation!.get(key) || new Map()\n const relatedElements = relationTypeMap.get(value as string) || []\n relatedElements.push(element)\n relationTypeMap.set(value as string, relatedElements)\n indexes.byRelation!.set(key, relationTypeMap)\n }\n }\n }\n\n // Index by subcircuit_id\n if (indexConfig.bySubcircuit && \"subcircuit_id\" in element) {\n const subcircuitId = (element as any).subcircuit_id\n if (subcircuitId && typeof subcircuitId === \"string\") {\n const subcircuitElements =\n indexes.bySubcircuit!.get(subcircuitId) || []\n subcircuitElements.push(element)\n indexes.bySubcircuit!.set(subcircuitId, subcircuitElements)\n }\n }\n\n // Index by custom fields\n if (indexConfig.byCustomField && indexes.byCustomField) {\n for (const field of indexConfig.byCustomField) {\n if (field in element) {\n const fieldValue = (element as any)[field]\n if (\n fieldValue !== undefined &&\n (typeof fieldValue === \"string\" || typeof fieldValue === \"number\")\n ) {\n const fieldValueStr = String(fieldValue)\n const fieldMap = indexes.byCustomField.get(field)!\n const elementsWithFieldValue = fieldMap.get(fieldValueStr) || []\n elementsWithFieldValue.push(element)\n fieldMap.set(fieldValueStr, elementsWithFieldValue)\n }\n }\n }\n }\n }\n // Store internal state\n ;(soup as any)._internal_store_indexed = internalStore\n }\n\n const suIndexed = new Proxy(\n {},\n {\n get: (proxy_target: any, prop: string) => {\n if (prop === \"toArray\") {\n return () => {\n ;(soup as any).editCount = internalStore.editCount\n return soup\n }\n }\n if (prop === \"editCount\") {\n return internalStore.editCount\n }\n\n const component_type = prop\n\n return {\n get: (id: string) => {\n const indexConfig = options.indexConfig || {}\n\n // Use ID index if available\n if (indexConfig.byId && internalStore.indexes.byId) {\n return (\n (internalStore.indexes.byId.get(\n `${component_type}:${id}`,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Use type index if available\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n return (\n (elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Fallback to regular search\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type && e[`${component_type}_id`] === id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n },\n\n getUsing: (using: any) => {\n const indexConfig = options.indexConfig || {}\n const keys = Object.keys(using)\n\n if (keys.length !== 1) {\n throw new Error(\n \"getUsing requires exactly one key, e.g. { pcb_component_id }\",\n )\n }\n\n const join_key = keys[0] as string\n const join_type = join_key.replace(\"_id\", \"\")\n\n // Use relation index if available\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n const relationMap = internalStore.indexes.byRelation.get(join_key)\n if (relationMap) {\n const relatedElements = relationMap.get(using[join_key]) || []\n const joiner = relatedElements.find((e) => e.type === join_type)\n\n if (!joiner) return null\n\n // Now find the element of component_type with matching ID\n const joinerId =\n joiner[`${component_type}_id` as keyof typeof joiner]\n\n if (indexConfig.byId && internalStore.indexes.byId) {\n return (\n (internalStore.indexes.byId.get(\n `${component_type}:${joinerId}`,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n return (\n (elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === joinerId,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joinerId,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n }\n\n // Fallback to regular approach\n const joiner: any = soup.find(\n (e: any) =>\n e.type === join_type && e[join_key] === using[join_key],\n )\n\n if (!joiner) return null\n\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joiner[`${component_type}_id`],\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n },\n\n getWhere: (where: any) => {\n const indexConfig = options.indexConfig || {}\n const keys = Object.keys(where)\n\n // If we're looking by a single property and it's indexed as a custom field\n if (\n keys.length === 1 &&\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n const field = keys[0]\n const fieldMap = internalStore.indexes.byCustomField.get(field!)\n\n if (fieldMap) {\n const fieldValue = String(where[field!])\n const elementsWithFieldValue = fieldMap.get(fieldValue) || []\n\n return (\n (elementsWithFieldValue.find(\n (e: any) => e.type === component_type,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n }\n\n // If we're looking by subcircuit_id and it's indexed\n if (\n \"subcircuit_id\" in where &&\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit\n ) {\n const subcircuitId = where.subcircuit_id\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n\n return (\n (subcircuitElements.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Use type index if available to reduce search space\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n\n return (\n (elementsOfType.find((e: any) =>\n keys.every((key) => e[key] === where[key]),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Fallback to regular approach\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n },\n\n list: (where?: any) => {\n const indexConfig = options.indexConfig || {}\n const keys = !where ? [] : Object.keys(where)\n\n // If no filters, just return all elements of this type using the type index\n if (\n keys.length === 0 &&\n indexConfig.byType &&\n internalStore.indexes.byType\n ) {\n return (internalStore.indexes.byType.get(component_type) ||\n []) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >[]\n }\n\n // If filtering by subcircuit_id and it's the only filter\n if (\n keys.length === 1 &&\n keys[0] === \"subcircuit_id\" &&\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit\n ) {\n const subcircuitId = where.subcircuit_id\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n\n return subcircuitElements.filter(\n (e: any) => e.type === component_type,\n ) as Extract<AnyCircuitElement, { type: typeof component_type }>[]\n }\n\n // Start with all elements of this type to reduce search space\n let elementsToFilter: AnyCircuitElement[]\n\n if (indexConfig.byType && internalStore.indexes.byType) {\n elementsToFilter =\n internalStore.indexes.byType.get(component_type) || []\n } else {\n elementsToFilter = soup.filter((e) => e.type === component_type)\n }\n\n // Apply remaining filters\n if (keys.length > 0) {\n return elementsToFilter.filter((e: any) =>\n keys.every((key) => e[key] === where[key]),\n ) as Extract<AnyCircuitElement, { type: typeof component_type }>[]\n }\n\n return elementsToFilter as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >[]\n },\n\n insert: (elm: any) => {\n internalStore.counts[component_type] ??= -1\n internalStore.counts[component_type]++\n const index = internalStore.counts[component_type]\n const newElm = {\n type: component_type,\n [`${component_type}_id`]: `${component_type}_${index}`,\n ...elm,\n }\n\n if (options.validateInserts) {\n const parser =\n (Soup as any)[component_type] ?? Soup.any_soup_element\n parser.parse(newElm)\n }\n\n soup.push(newElm)\n internalStore.editCount++\n\n // Update indexes with the new element\n const indexConfig = options.indexConfig || {}\n\n // Update ID index\n if (indexConfig.byId && internalStore.indexes.byId) {\n const idKey = createIdKey(newElm)\n internalStore.indexes.byId.set(idKey, newElm)\n }\n\n // Update type index\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n elementsOfType.push(newElm)\n internalStore.indexes.byType.set(component_type, elementsOfType)\n }\n\n // Update relation index\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n const elementEntries = Object.entries(newElm)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${newElm.type}_id` &&\n typeof value === \"string\"\n ) {\n const relationTypeMap =\n internalStore.indexes.byRelation.get(key) || new Map()\n const relatedElements =\n relationTypeMap.get(value as string) || []\n relatedElements.push(newElm)\n relationTypeMap.set(value as string, relatedElements)\n internalStore.indexes.byRelation.set(key, relationTypeMap)\n }\n }\n }\n\n // Update subcircuit index\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in newElm\n ) {\n const subcircuitId = (newElm as any).subcircuit_id\n if (subcircuitId && typeof subcircuitId === \"string\") {\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n subcircuitElements.push(newElm)\n internalStore.indexes.bySubcircuit.set(\n subcircuitId,\n subcircuitElements,\n )\n }\n }\n\n // Update custom field indexes\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const field of indexConfig.byCustomField) {\n if (field in newElm) {\n const fieldValue = (newElm as any)[field]\n if (\n fieldValue !== undefined &&\n (typeof fieldValue === \"string\" ||\n typeof fieldValue === \"number\")\n ) {\n const fieldValueStr = String(fieldValue)\n const fieldMap =\n internalStore.indexes.byCustomField.get(field)!\n const elementsWithFieldValue =\n fieldMap.get(fieldValueStr) || []\n elementsWithFieldValue.push(newElm)\n fieldMap.set(fieldValueStr, elementsWithFieldValue)\n }\n }\n }\n }\n\n return newElm\n },\n\n delete: (id: string) => {\n const indexConfig = options.indexConfig || {}\n let elm: AnyCircuitElement | undefined\n\n // Find the element to delete\n if (indexConfig.byId && internalStore.indexes.byId) {\n elm = internalStore.indexes.byId.get(`${component_type}:${id}`)\n } else if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n elm = elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === id,\n )\n } else {\n elm = soup.find((e) => (e as any)[`${component_type}_id`] === id)\n }\n\n if (!elm) return\n\n // Remove from array\n const elmIndex = soup.indexOf(elm)\n if (elmIndex >= 0) {\n soup.splice(elmIndex, 1)\n internalStore.editCount++\n }\n\n // Remove from indexes\n if (indexConfig.byId && internalStore.indexes.byId) {\n const idKey = createIdKey(elm)\n internalStore.indexes.byId.delete(idKey)\n }\n\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n const filteredElements = elementsOfType.filter(\n (e: any) => e[`${component_type}_id`] !== id,\n )\n internalStore.indexes.byType.set(component_type, filteredElements)\n }\n\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n // This is more complex - we need to find and remove from all relation maps\n // where this element appears\n for (const [\n relationKey,\n relationMap,\n ] of internalStore.indexes.byRelation.entries()) {\n for (const [relationValue, elements] of relationMap.entries()) {\n const updatedElements = elements.filter((e) => e !== elm)\n\n if (updatedElements.length === 0) {\n relationMap.delete(relationValue)\n } else {\n relationMap.set(relationValue, updatedElements)\n }\n }\n }\n }\n\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in elm\n ) {\n const subcircuitId = (elm as any).subcircuit_id\n if (subcircuitId) {\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n const updatedElements = subcircuitElements.filter(\n (e) => e !== elm,\n )\n\n if (updatedElements.length === 0) {\n internalStore.indexes.bySubcircuit.delete(subcircuitId)\n } else {\n internalStore.indexes.bySubcircuit.set(\n subcircuitId,\n updatedElements,\n )\n }\n }\n }\n\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const fieldMap of internalStore.indexes.byCustomField.values()) {\n for (const [fieldValue, elements] of fieldMap.entries()) {\n const updatedElements = elements.filter((e) => e !== elm)\n\n if (updatedElements.length === 0) {\n fieldMap.delete(fieldValue)\n } else {\n fieldMap.set(fieldValue, updatedElements)\n }\n }\n }\n }\n },\n\n update: (id: string, newProps: any) => {\n const indexConfig = options.indexConfig || {}\n let elm: AnyCircuitElement | undefined | null\n\n // Find the element to update\n if (indexConfig.byId && internalStore.indexes.byId) {\n elm = internalStore.indexes.byId.get(`${component_type}:${id}`)\n } else if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n elm = elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === id,\n )\n } else {\n elm = soup.find(\n (e) =>\n e.type === component_type &&\n (e as any)[`${component_type}_id`] === id,\n )\n }\n\n if (!elm) return null\n\n // Need to remove from indexes before updating\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n // Remove from relation indexes\n const elementEntries = Object.entries(elm)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${elm.type}_id` &&\n typeof value === \"string\"\n ) {\n if (key in newProps && newProps[key] !== value) {\n const relationTypeMap =\n internalStore.indexes.byRelation.get(key)\n if (relationTypeMap) {\n const relatedElements =\n relationTypeMap.get(value as string) || []\n const updatedElements = relatedElements.filter(\n (e) => e !== elm,\n )\n\n if (updatedElements.length === 0) {\n relationTypeMap.delete(value as string)\n } else {\n relationTypeMap.set(value as string, updatedElements)\n }\n }\n }\n }\n }\n }\n\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in elm &&\n \"subcircuit_id\" in newProps\n ) {\n const oldSubcircuitId = (elm as any).subcircuit_id\n const newSubcircuitId = newProps.subcircuit_id\n\n if (oldSubcircuitId !== newSubcircuitId) {\n // Remove from old subcircuit index\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(oldSubcircuitId) || []\n const updatedElements = subcircuitElements.filter(\n (e) => e !== elm,\n )\n\n if (updatedElements.length === 0) {\n internalStore.indexes.bySubcircuit.delete(oldSubcircuitId)\n } else {\n internalStore.indexes.bySubcircuit.set(\n oldSubcircuitId,\n updatedElements,\n )\n }\n }\n }\n\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const field of indexConfig.byCustomField) {\n if (\n field in elm &&\n field in newProps &&\n (elm as any)[field] !== newProps[field]\n ) {\n const fieldMap =\n internalStore.indexes.byCustomField.get(field)\n if (fieldMap) {\n const oldValue = String((elm as any)[field])\n const elements = fieldMap.get(oldValue) || []\n const updatedElements = elements.filter((e) => e !== elm)\n\n if (updatedElements.length === 0) {\n fieldMap.delete(oldValue)\n } else {\n fieldMap.set(oldValue, updatedElements)\n }\n }\n }\n }\n }\n\n // Update the element\n Object.assign(elm, newProps)\n internalStore.editCount++\n\n // Add to indexes with updated values\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n const elementEntries = Object.entries(elm)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${elm.type}_id` &&\n typeof value === \"string\"\n ) {\n if (key in newProps) {\n const relationTypeMap: any =\n internalStore.indexes.byRelation.get(key) || new Map()\n const relatedElements: any =\n relationTypeMap.get(value as string) || []\n\n if (!relatedElements.includes(elm)) {\n relatedElements.push(elm)\n relationTypeMap.set(value as string, relatedElements)\n internalStore.indexes.byRelation.set(key, relationTypeMap)\n }\n }\n }\n }\n }\n\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in elm &&\n \"subcircuit_id\" in newProps\n ) {\n const subcircuitId = (elm as any).subcircuit_id\n if (subcircuitId && typeof subcircuitId === \"string\") {\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n\n if (!subcircuitElements.includes(elm)) {\n subcircuitElements.push(elm)\n internalStore.indexes.bySubcircuit.set(\n subcircuitId,\n subcircuitElements,\n )\n }\n }\n }\n\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const field of indexConfig.byCustomField) {\n if (field in elm && field in newProps) {\n const fieldValue: any = (elm as any)[field]\n if (\n fieldValue !== undefined &&\n (typeof fieldValue === \"string\" ||\n typeof fieldValue === \"number\")\n ) {\n const fieldValueStr = String(fieldValue)\n const fieldMap =\n internalStore.indexes.byCustomField.get(field)!\n const elementsWithFieldValue =\n fieldMap.get(fieldValueStr) || []\n\n if (!elementsWithFieldValue.includes(elm)) {\n elementsWithFieldValue.push(elm)\n fieldMap.set(fieldValueStr, elementsWithFieldValue)\n }\n }\n }\n }\n }\n\n return elm as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >\n },\n\n select: (selector: string) => {\n // Selection by selector is specialized enough that we don't use indexes here\n // TODO when applySelector is isolated we can use it, until then we\n // do a poor man's selector implementation for two common cases\n if (component_type === \"source_component\") {\n return (\n (soup.find(\n (e) =>\n e.type === \"source_component\" &&\n e.name === selector.replace(/\\./g, \"\"),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n } else if (\n component_type === \"pcb_port\" ||\n component_type === \"source_port\" ||\n component_type === \"schematic_port\"\n ) {\n const [component_name, port_selector] = selector\n .replace(/\\./g, \"\")\n .split(/[\\s\\>]+/)\n const source_component = soup.find(\n (e) =>\n e.type === \"source_component\" && e.name === component_name,\n ) as SourceComponentBase\n if (!source_component) return null\n const source_port = soup.find(\n (e) =>\n e.type === \"source_port\" &&\n e.source_component_id ===\n source_component.source_component_id &&\n (e.name === port_selector ||\n (e.port_hints ?? []).includes(port_selector!)),\n ) as SourcePort\n if (!source_port) return null\n if (component_type === \"source_port\")\n return source_port as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >\n\n if (component_type === \"pcb_port\") {\n return (\n (soup.find(\n (e) =>\n e.type === \"pcb_port\" &&\n e.source_port_id === source_port.source_port_id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n } else if (component_type === \"schematic_port\") {\n return (\n (soup.find(\n (e) =>\n e.type === \"schematic_port\" &&\n e.source_port_id === source_port.source_port_id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n }\n\n return null\n },\n }\n },\n },\n )\n\n return suIndexed\n}) as any\n\ncjuIndexed.unparsed = cjuIndexed as any\n\nexport default cjuIndexed\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { type Matrix, applyToPoint, decomposeTSR } from \"transformation-matrix\"\nimport {\n directionToVec,\n rotateDirection,\n vecToDirection,\n} from \"./direction-to-vec\"\n\nexport const transformSchematicElement = (\n elm: AnyCircuitElement,\n matrix: Matrix,\n) => {\n if (elm.type === \"schematic_component\") {\n // TODO handle rotation\n elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_port\") {\n elm.center = applyToPoint(matrix, elm.center)\n\n if (elm.facing_direction) {\n elm.facing_direction = rotateDirection(\n elm.facing_direction,\n -(Math.atan2(matrix.b, matrix.a) / Math.PI) * 2,\n )\n }\n } else if (elm.type === \"schematic_text\") {\n elm.position = applyToPoint(matrix, elm.position)\n // } else if (elm.type === \"schematic_group\") {\n // elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_trace\") {\n } else if (elm.type === \"schematic_box\") {\n const { x, y } = applyToPoint(matrix, { x: elm.x, y: elm.y })\n elm.x = x\n elm.y = y\n } else if (elm.type === \"schematic_line\") {\n const { x: x1, y: y1 } = applyToPoint(matrix, { x: elm.x1, y: elm.y1 })\n const { x: x2, y: y2 } = applyToPoint(matrix, { x: elm.x2, y: elm.y2 })\n elm.x1 = x1\n elm.y1 = y1\n elm.x2 = x2\n elm.y2 = y2\n }\n return elm\n}\n\nexport const transformSchematicElements = (\n elms: AnyCircuitElement[],\n matrix: Matrix,\n) => {\n return elms.map((elm) => transformSchematicElement(elm, matrix))\n}\n\nexport const transformPCBElement = (elm: AnyCircuitElement, matrix: Matrix) => {\n const tsr = decomposeTSR(matrix)\n const flipPadWidthHeight =\n Math.round(tsr.rotation.angle / (Math.PI / 2)) % 2 === 1\n if (\n elm.type === \"pcb_plated_hole\" ||\n elm.type === \"pcb_hole\" ||\n elm.type === \"pcb_via\" ||\n elm.type === \"pcb_smtpad\" ||\n elm.type === \"pcb_port\"\n ) {\n const { x, y } = applyToPoint(matrix, {\n x: Number((elm as any).x),\n y: Number((elm as any).y),\n })\n ;(elm as any).x = x\n ;(elm as any).y = y\n } else if (elm.type === \"pcb_keepout\" || elm.type === \"pcb_board\") {\n // TODO adjust size/rotation\n elm.center = applyToPoint(matrix, elm.center)\n } else if (\n elm.type === \"pcb_silkscreen_text\" ||\n elm.type === \"pcb_fabrication_note_text\"\n ) {\n elm.anchor_position = applyToPoint(matrix, elm.anchor_position)\n } else if (\n elm.type === \"pcb_silkscreen_circle\" ||\n elm.type === \"pcb_silkscreen_rect\"\n ) {\n elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"pcb_component\") {\n elm.center = applyToPoint(matrix, elm.center)\n elm.rotation = elm.rotation + (tsr.rotation.angle / Math.PI) * 180\n elm.rotation = elm.rotation % 360\n if (flipPadWidthHeight) {\n ;[elm.width, elm.height] = [elm.height, elm.width]\n }\n } else if (\n elm.type === \"pcb_silkscreen_path\" ||\n elm.type === \"pcb_trace\" ||\n elm.type === \"pcb_fabrication_note_path\"\n ) {\n elm.route = elm.route.map((rp) => {\n const tp = applyToPoint(matrix, rp) as { x: number; y: number }\n rp.x = tp.x\n rp.y = tp.y\n return rp\n })\n } else if (elm.type === \"pcb_silkscreen_line\") {\n const p1 = { x: elm.x1, y: elm.y1 }\n const p2 = { x: elm.x2, y: elm.y2 }\n const p1t = applyToPoint(matrix, p1)\n const p2t = applyToPoint(matrix, p2)\n elm.x1 = p1t.x\n elm.y1 = p1t.y\n elm.x2 = p2t.x\n elm.y2 = p2t.y\n } else if (elm.type === \"cad_component\") {\n const newPos = applyToPoint(matrix, {\n x: elm.position.x,\n y: elm.position.y,\n })\n elm.position.x = newPos.x\n elm.position.y = newPos.y\n }\n return elm\n}\n\nexport const transformPCBElements = (\n elms: AnyCircuitElement[],\n matrix: Matrix,\n) => {\n const tsr = decomposeTSR(matrix)\n const flipPadWidthHeight =\n Math.round(tsr.rotation.angle / (Math.PI / 2)) % 2 === 1\n let transformedElms = elms.map((elm) => transformPCBElement(elm, matrix))\n if (flipPadWidthHeight) {\n transformedElms = transformedElms.map((elm) => {\n if (elm.type === \"pcb_smtpad\" && elm.shape === \"rect\") {\n ;[elm.width, elm.height] = [elm.height, elm.width]\n }\n return elm\n })\n }\n return transformedElms\n}\n","export const directionToVec = (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n if (direction === \"up\") return { x: 0, y: 1 }\n else if (direction === \"down\") return { x: 0, y: -1 }\n else if (direction === \"left\") return { x: -1, y: 0 }\n else if (direction === \"right\") return { x: 1, y: 0 }\n else throw new Error(\"Invalid direction\")\n}\n\nexport const vecToDirection = ({ x, y }: { x: number; y: number }) => {\n if (x > y) y = 0\n if (y > x) x = 0\n if (x > 0 && y === 0) return \"right\"\n else if (x < 0 && y === 0) return \"left\"\n else if (x === 0 && y > 0) return \"up\"\n else if (x === 0 && y < 0) return \"down\"\n else throw new Error(`Invalid vector for direction conversion (${x}, ${y})`)\n}\n\nexport const rotateClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"right\"\n else if (direction === \"right\") return \"down\"\n else if (direction === \"down\") return \"left\"\n else if (direction === \"left\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateCounterClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"left\"\n else if (direction === \"left\") return \"down\"\n else if (direction === \"down\") return \"right\"\n else if (direction === \"right\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n num90DegreeClockwiseTurns: number\n) => {\n while (num90DegreeClockwiseTurns > 0) {\n direction = rotateClockwise(direction)\n num90DegreeClockwiseTurns--\n }\n while (num90DegreeClockwiseTurns < 0) {\n direction = rotateCounterClockwise(direction)\n num90DegreeClockwiseTurns++\n }\n return direction\n}\n\nexport const oppositeDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"down\"\n else if (direction === \"down\") return \"up\"\n else if (direction === \"left\") return \"right\"\n else if (direction === \"right\") return \"left\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const oppositeSide = (\n sideOrDir: \"up\" | \"down\" | \"top\" | \"bottom\" | \"left\" | \"right\"\n) => {\n if (sideOrDir === \"top\" || sideOrDir === \"up\") return \"bottom\"\n else if (sideOrDir === \"bottom\" || sideOrDir === \"down\") return \"top\"\n else if (sideOrDir === \"left\") return \"right\"\n else if (sideOrDir === \"right\") return \"left\"\n throw new Error(`Invalid sideOrDir: ${sideOrDir}`)\n}\n","import * as parsel from \"parsel-js\"\nimport { convertAbbrToType } from \"./convert-abbreviation-to-soup-element-type\"\nimport type { AnyCircuitElement } from \"circuit-json\"\n\nconst filterByType = (\n elements: AnyCircuitElement[],\n type: string\n): AnyCircuitElement[] => {\n type = convertAbbrToType(type)\n return elements.filter(\n (elm) => (\"ftype\" in elm && elm.ftype === type) || elm.type === type\n )\n}\n\n/**\n * Filter elements to match the selector, e.g. to access the left port of a\n * resistor you can do \".R1 > port.left\"\n */\nexport const applySelector = (\n elements: AnyCircuitElement[],\n selectorRaw: string\n): AnyCircuitElement[] => {\n const selectorAST = parsel.parse(selectorRaw)\n return applySelectorAST(elements, selectorAST!)\n}\n\nconst doesElmMatchClassName = (elm: AnyCircuitElement, className: string) =>\n (\"name\" in elm && elm.name === className) ||\n (\"port_hints\" in elm && elm.port_hints?.includes(className))\n\nexport const applySelectorAST = (\n elements: AnyCircuitElement[],\n selectorAST: parsel.AST\n): AnyCircuitElement[] => {\n switch (selectorAST.type) {\n case \"complex\": {\n switch (selectorAST.combinator) {\n case \" \": // TODO technically should do a deep search\n case \">\": {\n const { left, right } = selectorAST\n if (left.type === \"class\" || left.type === \"type\") {\n // TODO should also check if content matches any element tags\n let matchElms: AnyCircuitElement[]\n if (left.type === \"class\") {\n matchElms = elements.filter((elm) =>\n doesElmMatchClassName(elm, left.name)\n )\n } else if (left.type === \"type\") {\n matchElms = filterByType(elements, left.name)\n } else {\n matchElms = []\n }\n\n const childrenOfMatchingElms = matchElms.flatMap((matchElm) =>\n elements.filter(\n (elm: any) =>\n elm[`${matchElm.type}_id`] ===\n (matchElm as any)[`${matchElm.type}_id`] && elm !== matchElm\n )\n )\n return applySelectorAST(childrenOfMatchingElms, right)\n } else {\n throw new Error(`unsupported selector type \"${left.type}\" `)\n }\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for complex combinator \"${selectorAST.combinator}\"`\n )\n }\n }\n return []\n }\n case \"compound\": {\n const conditionsToMatch = selectorAST.list.map((part) => {\n switch (part.type) {\n case \"class\": {\n return (elm: any) => doesElmMatchClassName(elm, part.name)\n }\n case \"type\": {\n const name = convertAbbrToType(part.name)\n return (elm: any) => elm.type === name\n }\n }\n })\n\n return elements.filter((elm) =>\n conditionsToMatch.every((condFn) => condFn?.(elm))\n )\n }\n case \"type\": {\n return filterByType(elements, selectorAST.name) as AnyCircuitElement[]\n }\n case \"class\": {\n return elements.filter((elm) =>\n doesElmMatchClassName(elm, selectorAST.name)\n )\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for type: \"${\n selectorAST.type\n }\" ${JSON.stringify(selectorAST, null, \" \")}`\n )\n }\n }\n}\n","export const convertAbbrToType = (abbr: string): string => {\n switch (abbr) {\n case \"port\":\n return \"source_port\"\n case \"net\":\n return \"source_net\"\n case \"power\":\n return \"simple_power_source\"\n }\n return abbr\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport const getElementId = (elm: AnyCircuitElement): string => {\n const type = elm.type\n const id = (elm as any)[`${type}_id`]\n return id\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { getElementId } from \"./get-element-id\"\n\nexport const getElementById = (\n soup: AnyCircuitElement[],\n id: string,\n): AnyCircuitElement | null => {\n return soup.find((elm) => getElementId(elm) === id) ?? null\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { cju } from \"../cju\"\n\nexport function getReadableNameForPcbTrace(\n soup: AnyCircuitElement[],\n pcb_trace_id: string,\n) {\n // Find the pcb_trace object\n const pcbTrace = cju(soup).pcb_trace.get(pcb_trace_id)\n\n if (!pcbTrace) {\n return `trace[${pcb_trace_id}]`\n }\n\n // Get the connected ports\n const connectedPcbPortIds: string[] = pcbTrace.route\n .flatMap((point: any) => [point.start_pcb_port_id, point.end_pcb_port_id])\n .filter(Boolean)\n\n if (connectedPcbPortIds.length === 0) {\n return `trace[${pcb_trace_id}]`\n }\n\n // Function to get component name and port hint\n function getComponentAndPortInfo(pcb_port_id: string) {\n const pcbPort = cju(soup).pcb_port.get(pcb_port_id)\n if (!pcbPort) return null\n\n const pcbComponent = cju(soup).pcb_component.get(pcbPort.pcb_component_id)\n if (!pcbComponent) return null\n const sourceComponent = cju(soup).source_component.get(\n pcbComponent.source_component_id,\n )\n if (!sourceComponent) return null\n\n const sourcePort = cju(soup).source_port.get(pcbPort.source_port_id)\n const portHint = sourcePort?.port_hints ? sourcePort.port_hints[1] : \"\"\n\n return {\n componentName: sourceComponent.name,\n portHint: portHint,\n }\n }\n\n // Generate the readable selector\n const selectorParts = connectedPcbPortIds.map((portId) => {\n const info = getComponentAndPortInfo(portId)\n if (info) {\n return `.${info.componentName} > port.${info.portHint}`\n }\n return `port[${portId}]`\n })\n\n return `trace[${selectorParts.join(\", \")}]`\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { cju } from \"../cju\"\n\nexport const getReadableNameForPcbPort = (\n soup: AnyCircuitElement[],\n pcb_port_id: string,\n): string => {\n const pcbPort = cju(soup).pcb_port.get(pcb_port_id)\n if (!pcbPort) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Get the component information\n const pcbComponent = cju(soup).pcb_component.get(pcbPort?.pcb_component_id)\n\n if (!pcbComponent) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Get the source component information\n const sourceComponent = cju(soup).source_component.get(\n pcbComponent.source_component_id,\n )\n\n if (!sourceComponent) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Get the source port information\n const sourcePort = cju(soup).source_port.get(pcbPort.source_port_id)\n\n if (!sourcePort) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Determine the pad number or hint\n let padIdentifier: string\n if (sourcePort?.port_hints && sourcePort.port_hints.length > 0) {\n padIdentifier = sourcePort.port_hints[0]!\n } else if (sourcePort.port_hints && sourcePort.port_hints.length > 0) {\n padIdentifier = sourcePort.port_hints[0]!\n } else {\n padIdentifier = pcb_port_id\n }\n\n return `pcb_port[.${sourceComponent.name} > .${padIdentifier}]`\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { cju } from \"../cju\"\nimport { getReadableNameForPcbPort } from \"./get-readable-name-for-pcb-port\"\n\nexport function getReadableNameForPcbSmtpad(\n soup: AnyCircuitElement[],\n pcb_smtpad_id: string,\n): string {\n // Find the pcb_smtpad object\n const pcbSmtpad = cju(soup).pcb_smtpad.get(pcb_smtpad_id)\n\n if (!pcbSmtpad || !pcbSmtpad.pcb_port_id) {\n return `smtpad[${pcb_smtpad_id}]`\n }\n\n return getReadableNameForPcbPort(soup, pcbSmtpad.pcb_port_id)\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { getReadableNameForPcbTrace } from \"./get-readable-name-for-pcb-trace\"\nimport { getReadableNameForPcbSmtpad } from \"./get-readable-name-for-pcb-smtpad\"\nimport { getReadableNameForPcbPort } from \"./get-readable-name-for-pcb-port\"\nimport { getElementById } from \"lib/get-element-by-id\"\nimport { getElementId } from \"lib/get-element-id\"\n\nexport const getReadableNameForElement = (\n soup: AnyCircuitElement[],\n elm: AnyCircuitElement | string,\n): string => {\n if (typeof elm === \"string\") {\n const elmObj = getElementById(soup, elm)\n if (!elmObj) `unknown (could not find element with id ${elm})`\n return getReadableNameForElement(soup, elmObj as any)\n }\n switch (elm.type) {\n case \"pcb_port\":\n return getReadableNameForPcbPort(soup, elm.pcb_port_id)\n case \"pcb_smtpad\":\n return getReadableNameForPcbSmtpad(soup, elm.pcb_smtpad_id)\n case \"pcb_trace\":\n return getReadableNameForPcbTrace(soup, elm.pcb_trace_id)\n case \"source_component\":\n return `source_component[${elm.name}]`\n default:\n return `${elm.type}[#${getElementId(elm)}]`\n }\n}\n\nexport {\n getReadableNameForPcbPort,\n getReadableNameForPcbSmtpad,\n getReadableNameForPcbTrace,\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport const getBoundsOfPcbElements = (\n elements: AnyCircuitElement[],\n): { minX: number; minY: number; maxX: number; maxY: number } => {\n let minX = Number.POSITIVE_INFINITY\n let minY = Number.POSITIVE_INFINITY\n let maxX = Number.NEGATIVE_INFINITY\n let maxY = Number.NEGATIVE_INFINITY\n\n for (const elm of elements) {\n if (!elm.type.startsWith(\"pcb_\")) continue\n\n let centerX: number | undefined\n let centerY: number | undefined\n\n let width: number | undefined\n let height: number | undefined\n\n if (\"x\" in elm && \"y\" in elm) {\n centerX = Number((elm as any).x)\n centerY = Number((elm as any).y)\n }\n\n if (\"outer_diameter\" in elm) {\n width = Number((elm as any).outer_diameter)\n height = Number((elm as any).outer_diameter)\n }\n\n if (\"width\" in elm) {\n width = Number((elm as any).width)\n }\n\n if (\"height\" in elm) {\n height = Number((elm as any).height)\n }\n\n if (\"center\" in elm) {\n // @ts-ignore\n centerX = elm.center.x\n // @ts-ignore\n centerY = elm.center.y\n }\n\n if (centerX !== undefined && centerY !== undefined) {\n minX = Math.min(minX, centerX)\n minY = Math.min(minY, centerY)\n maxX = Math.max(maxX, centerX)\n maxY = Math.max(maxY, centerY)\n\n if (width !== undefined && height !== undefined) {\n minX = Math.min(minX, centerX - width / 2)\n minY = Math.min(minY, centerY - height / 2)\n maxX = Math.max(maxX, centerX + width / 2)\n maxY = Math.max(maxY, centerY + height / 2)\n }\n\n if (\"radius\" in elm) {\n minX = Math.min(minX, centerX - elm.radius)\n minY = Math.min(minY, centerY - elm.radius)\n maxX = Math.max(maxX, centerX + elm.radius)\n maxY = Math.max(maxY, centerY + elm.radius)\n }\n } else if (elm.type === \"pcb_trace\") {\n for (const point of elm.route) {\n // TODO add trace thickness support\n minX = Math.min(minX, point.x)\n minY = Math.min(minY, point.y)\n maxX = Math.max(maxX, point.x)\n maxY = Math.max(maxY, point.y)\n }\n }\n }\n\n return { minX, minY, maxX, maxY }\n}\n","export function stringHash(str: string) {\n let hash = 0\n if (str.length == 0) return hash\n for (var i = 0; i < str.length; i++) {\n var char = str.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32bit integer\n }\n return Math.abs(hash)\n}\n","import { stringHash } from \"./string-hash\"\n\nexport type LayoutDebugObject = {\n x: number\n y: number\n width: number\n height: number\n bg_color: string\n title: string\n content: Object\n secondary?: boolean\n}\n\n/**\n * Vendored from \"nice-color-palettes\" package\n */\nconst nice_color_palettes = [\n [\"#69d2e7\", \"#a7dbd8\", \"#e0e4cc\", \"#f38630\", \"#fa6900\"],\n [\"#fe4365\", \"#fc9d9a\", \"#f9cdad\", \"#c8c8a9\", \"#83af9b\"],\n [\"#ecd078\", \"#d95b43\", \"#c02942\", \"#542437\", \"#53777a\"],\n [\"#556270\", \"#4ecdc4\", \"#c7f464\", \"#ff6b6b\", \"#c44d58\"],\n [\"#774f38\", \"#e08e79\", \"#f1d4af\", \"#ece5ce\", \"#c5e0dc\"],\n [\"#e8ddcb\", \"#cdb380\", \"#036564\", \"#033649\", \"#031634\"],\n [\"#490a3d\", \"#bd1550\", \"#e97f02\", \"#f8ca00\", \"#8a9b0f\"],\n [\"#594f4f\", \"#547980\", \"#45ada8\", \"#9de0ad\", \"#e5fcc2\"],\n [\"#00a0b0\", \"#6a4a3c\", \"#cc333f\", \"#eb6841\", \"#edc951\"],\n [\"#e94e77\", \"#d68189\", \"#c6a49a\", \"#c6e5d9\", \"#f4ead5\"],\n [\"#3fb8af\", \"#7fc7af\", \"#dad8a7\", \"#ff9e9d\", \"#ff3d7f\"],\n [\"#d9ceb2\", \"#948c75\", \"#d5ded9\", \"#7a6a53\", \"#99b2b7\"],\n [\"#ffffff\", \"#cbe86b\", \"#f2e9e1\", \"#1c140d\", \"#cbe86b\"],\n [\"#efffcd\", \"#dce9be\", \"#555152\", \"#2e2633\", \"#99173c\"],\n [\"#343838\", \"#005f6b\", \"#008c9e\", \"#00b4cc\", \"#00dffc\"],\n [\"#413e4a\", \"#73626e\", \"#b38184\", \"#f0b49e\", \"#f7e4be\"],\n [\"#ff4e50\", \"#fc913a\", \"#f9d423\", \"#ede574\", \"#e1f5c4\"],\n [\"#99b898\", \"#fecea8\", \"#ff847c\", \"#e84a5f\", \"#2a363b\"],\n [\"#655643\", \"#80bca3\", \"#f6f7bd\", \"#e6ac27\", \"#bf4d28\"],\n [\"#00a8c6\", \"#40c0cb\", \"#f9f2e7\", \"#aee239\", \"#8fbe00\"],\n [\"#351330\", \"#424254\", \"#64908a\", \"#e8caa4\", \"#cc2a41\"],\n [\"#554236\", \"#f77825\", \"#d3ce3d\", \"#f1efa5\", \"#60b99a\"],\n [\"#5d4157\", \"#838689\", \"#a8caba\", \"#cad7b2\", \"#ebe3aa\"],\n [\"#8c2318\", \"#5e8c6a\", \"#88a65e\", \"#bfb35a\", \"#f2c45a\"],\n [\"#fad089\", \"#ff9c5b\", \"#f5634a\", \"#ed303c\", \"#3b8183\"],\n [\"#ff4242\", \"#f4fad2\", \"#d4ee5e\", \"#e1edb9\", \"#f0f2eb\"],\n [\"#f8b195\", \"#f67280\", \"#c06c84\", \"#6c5b7b\", \"#355c7d\"],\n [\"#d1e751\", \"#ffffff\", \"#000000\", \"#4dbce9\", \"#26ade4\"],\n [\"#1b676b\", \"#519548\", \"#88c425\", \"#bef202\", \"#eafde6\"],\n [\"#5e412f\", \"#fcebb6\", \"#78c0a8\", \"#f07818\", \"#f0a830\"],\n [\"#bcbdac\", \"#cfbe27\", \"#f27435\", \"#f02475\", \"#3b2d38\"],\n [\"#452632\", \"#91204d\", \"#e4844a\", \"#e8bf56\", \"#e2f7ce\"],\n [\"#eee6ab\", \"#c5bc8e\", \"#696758\", \"#45484b\", \"#36393b\"],\n [\"#f0d8a8\", \"#3d1c00\", \"#86b8b1\", \"#f2d694\", \"#fa2a00\"],\n [\"#2a044a\", \"#0b2e59\", \"#0d6759\", \"#7ab317\", \"#a0c55f\"],\n [\"#f04155\", \"#ff823a\", \"#f2f26f\", \"#fff7bd\", \"#95cfb7\"],\n [\"#b9d7d9\", \"#668284\", \"#2a2829\", \"#493736\", \"#7b3b3b\"],\n [\"#bbbb88\", \"#ccc68d\", \"#eedd99\", \"#eec290\", \"#eeaa88\"],\n [\"#b3cc57\", \"#ecf081\", \"#ffbe40\", \"#ef746f\", \"#ab3e5b\"],\n [\"#a3a948\", \"#edb92e\", \"#f85931\", \"#ce1836\", \"#009989\"],\n [\"#300030\", \"#480048\", \"#601848\", \"#c04848\", \"#f07241\"],\n [\"#67917a\", \"#170409\", \"#b8af03\", \"#ccbf82\", \"#e33258\"],\n [\"#aab3ab\", \"#c4cbb7\", \"#ebefc9\", \"#eee0b7\", \"#e8caaf\"],\n [\"#e8d5b7\", \"#0e2430\", \"#fc3a51\", \"#f5b349\", \"#e8d5b9\"],\n [\"#ab526b\", \"#bca297\", \"#c5ceae\", \"#f0e2a4\", \"#f4ebc3\"],\n [\"#607848\", \"#789048\", \"#c0d860\", \"#f0f0d8\", \"#604848\"],\n [\"#b6d8c0\", \"#c8d9bf\", \"#dadabd\", \"#ecdbbc\", \"#fedcba\"],\n [\"#a8e6ce\", \"#dcedc2\", \"#ffd3b5\", \"#ffaaa6\", \"#ff8c94\"],\n [\"#3e4147\", \"#fffedf\", \"#dfba69\", \"#5a2e2e\", \"#2a2c31\"],\n [\"#fc354c\", \"#29221f\", \"#13747d\", \"#0abfbc\", \"#fcf7c5\"],\n [\"#cc0c39\", \"#e6781e\", \"#c8cf02\", \"#f8fcc1\", \"#1693a7\"],\n [\"#1c2130\", \"#028f76\", \"#b3e099\", \"#ffeaad\", \"#d14334\"],\n [\"#a7c5bd\", \"#e5ddcb\", \"#eb7b59\", \"#cf4647\", \"#524656\"],\n [\"#dad6ca\", \"#1bb0ce\", \"#4f8699\", \"#6a5e72\", \"#563444\"],\n [\"#5c323e\", \"#a82743\", \"#e15e32\", \"#c0d23e\", \"#e5f04c\"],\n [\"#edebe6\", \"#d6e1c7\", \"#94c7b6\", \"#403b33\", \"#d3643b\"],\n [\"#fdf1cc\", \"#c6d6b8\", \"#987f69\", \"#e3ad40\", \"#fcd036\"],\n [\"#230f2b\", \"#f21d41\", \"#ebebbc\", \"#bce3c5\", \"#82b3ae\"],\n [\"#b9d3b0\", \"#81bda4\", \"#b28774\", \"#f88f79\", \"#f6aa93\"],\n [\"#3a111c\", \"#574951\", \"#83988e\", \"#bcdea5\", \"#e6f9bc\"],\n [\"#5e3929\", \"#cd8c52\", \"#b7d1a3\", \"#dee8be\", \"#fcf7d3\"],\n [\"#1c0113\", \"#6b0103\", \"#a30006\", \"#c21a01\", \"#f03c02\"],\n [\"#000000\", \"#9f111b\", \"#b11623\", \"#292c37\", \"#cccccc\"],\n [\"#382f32\", \"#ffeaf2\", \"#fcd9e5\", \"#fbc5d8\", \"#f1396d\"],\n [\"#e3dfba\", \"#c8d6bf\", \"#93ccc6\", \"#6cbdb5\", \"#1a1f1e\"],\n [\"#f6f6f6\", \"#e8e8e8\", \"#333333\", \"#990100\", \"#b90504\"],\n [\"#1b325f\", \"#9cc4e4\", \"#e9f2f9\", \"#3a89c9\", \"#f26c4f\"],\n [\"#a1dbb2\", \"#fee5ad\", \"#faca66\", \"#f7a541\", \"#f45d4c\"],\n [\"#c1b398\", \"#605951\", \"#fbeec2\", \"#61a6ab\", \"#accec0\"],\n [\"#5e9fa3\", \"#dcd1b4\", \"#fab87f\", \"#f87e7b\", \"#b05574\"],\n [\"#951f2b\", \"#f5f4d7\", \"#e0dfb1\", \"#a5a36c\", \"#535233\"],\n [\"#8dccad\", \"#988864\", \"#fea6a2\", \"#f9d6ac\", \"#ffe9af\"],\n [\"#2d2d29\", \"#215a6d\", \"#3ca2a2\", \"#92c7a3\", \"#dfece6\"],\n [\"#413d3d\", \"#040004\", \"#c8ff00\", \"#fa023c\", \"#4b000f\"],\n [\"#eff3cd\", \"#b2d5ba\", \"#61ada0\", \"#248f8d\", \"#605063\"],\n [\"#ffefd3\", \"#fffee4\", \"#d0ecea\", \"#9fd6d2\", \"#8b7a5e\"],\n [\"#cfffdd\", \"#b4dec1\", \"#5c5863\", \"#a85163\", \"#ff1f4c\"],\n [\"#9dc9ac\", \"#fffec7\", \"#f56218\", \"#ff9d2e\", \"#919167\"],\n [\"#4e395d\", \"#827085\", \"#8ebe94\", \"#ccfc8e\", \"#dc5b3e\"],\n [\"#a8a7a7\", \"#cc527a\", \"#e8175d\", \"#474747\", \"#363636\"],\n [\"#f8edd1\", \"#d88a8a\", \"#474843\", \"#9d9d93\", \"#c5cfc6\"],\n [\"#046d8b\", \"#309292\", \"#2fb8ac\", \"#93a42a\", \"#ecbe13\"],\n [\"#f38a8a\", \"#55443d\", \"#a0cab5\", \"#cde9ca\", \"#f1edd0\"],\n [\"#a70267\", \"#f10c49\", \"#fb6b41\", \"#f6d86b\", \"#339194\"],\n [\"#ff003c\", \"#ff8a00\", \"#fabe28\", \"#88c100\", \"#00c176\"],\n [\"#ffedbf\", \"#f7803c\", \"#f54828\", \"#2e0d23\", \"#f8e4c1\"],\n [\"#4e4d4a\", \"#353432\", \"#94ba65\", \"#2790b0\", \"#2b4e72\"],\n [\"#0ca5b0\", \"#4e3f30\", \"#fefeeb\", \"#f8f4e4\", \"#a5b3aa\"],\n [\"#4d3b3b\", \"#de6262\", \"#ffb88c\", \"#ffd0b3\", \"#f5e0d3\"],\n [\"#fffbb7\", \"#a6f6af\", \"#66b6ab\", \"#5b7c8d\", \"#4f2958\"],\n [\"#edf6ee\", \"#d1c089\", \"#b3204d\", \"#412e28\", \"#151101\"],\n [\"#9d7e79\", \"#ccac95\", \"#9a947c\", \"#748b83\", \"#5b756c\"],\n [\"#fcfef5\", \"#e9ffe1\", \"#cdcfb7\", \"#d6e6c3\", \"#fafbe3\"],\n [\"#9cddc8\", \"#bfd8ad\", \"#ddd9ab\", \"#f7af63\", \"#633d2e\"],\n [\"#30261c\", \"#403831\", \"#36544f\", \"#1f5f61\", \"#0b8185\"],\n [\"#aaff00\", \"#ffaa00\", \"#ff00aa\", \"#aa00ff\", \"#00aaff\"],\n [\"#d1313d\", \"#e5625c\", \"#f9bf76\", \"#8eb2c5\", \"#615375\"],\n [\"#ffe181\", \"#eee9e5\", \"#fad3b2\", \"#ffba7f\", \"#ff9c97\"],\n [\"#73c8a9\", \"#dee1b6\", \"#e1b866\", \"#bd5532\", \"#373b44\"],\n [\"#805841\", \"#dcf7f3\", \"#fffcdd\", \"#ffd8d8\", \"#f5a2a2\"],\n]\n\nexport const getDebugLayoutObject = (lo: any): LayoutDebugObject | null => {\n let {\n x,\n y,\n width,\n height,\n }: { x: number; y: number; width?: number; height?: number } = {\n ...lo,\n ...(lo as any).size,\n ...(lo as any).center,\n ...(lo as any).position,\n }\n\n if (\n lo.x1 !== undefined &&\n lo.x2 !== undefined &&\n lo.y1 !== undefined &&\n lo.y2 !== undefined\n ) {\n x = (lo.x1 + lo.x2) / 2\n y = (lo.y1 + lo.y2) / 2\n width = Math.abs(lo.x1 - lo.x2)\n height = Math.abs(lo.y1 - lo.y2)\n }\n\n if (lo.points && Array.isArray(lo.points) && lo.points.length > 0) {\n const xCoords = lo.points.map((point: { x: number }) => point.x)\n const yCoords = lo.points.map((point: { y: number }) => point.y)\n \n const minX = Math.min(...xCoords)\n const maxX = Math.max(...xCoords)\n const minY = Math.min(...yCoords)\n const maxY = Math.max(...yCoords)\n \n x = (minX + maxX) / 2\n y = (minY + maxY) / 2\n width = maxX - minX\n height = maxY - minY\n }\n\n const title = lo.text || lo.name || lo.source?.text || lo.source?.name || \"?\"\n const content = lo\n\n if (x === undefined || y === undefined) return null\n\n if (width === undefined) {\n if (\"outer_diameter\" in lo) {\n width = lo.outer_diameter\n height = lo.outer_diameter\n }\n }\n\n if (width === undefined || height === undefined) {\n width = 0.1\n height = 0.1\n }\n\n return {\n x,\n y,\n width,\n height,\n title,\n content,\n bg_color:\n nice_color_palettes[\n stringHash((lo as any).type || title) % nice_color_palettes.length\n ]?.[4] ?? \"#f00\",\n }\n}\n","export const isTruthy = <T>(value: T): value is NonNullable<T> => Boolean(value)\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { getDebugLayoutObject } from \"./utils/get-layout-debug-object\"\nimport { isTruthy } from \"./utils/is-truthy\"\n\nexport const findBoundsAndCenter = (\n elements: AnyCircuitElement[],\n): { center: { x: number; y: number }; width: number; height: number } => {\n const debugObjects = elements\n .filter((elm) => elm.type.startsWith(\"pcb_\"))\n .concat(\n elements\n .filter((elm) => elm.type === \"pcb_trace\")\n // @ts-ignore\n .flatMap((elm: PcbTrace) => elm.route),\n )\n .map((elm) => getDebugLayoutObject(elm))\n .filter(isTruthy)\n\n if (debugObjects.length === 0)\n return { center: { x: 0, y: 0 }, width: 0, height: 0 }\n\n let minX = debugObjects[0]!.x - debugObjects[0]!.width / 2\n let maxX = debugObjects[0]!.x + debugObjects[0]!.width / 2\n let minY = debugObjects[0]!.y - debugObjects[0]!.height / 2\n let maxY = debugObjects[0]!.y + debugObjects[0]!.height / 2\n\n for (const obj of debugObjects.slice(1)) {\n minX = Math.min(minX, obj.x - obj.width / 2)\n maxX = Math.max(maxX, obj.x + obj.width / 2)\n minY = Math.min(minY, obj.y - obj.height / 2)\n maxY = Math.max(maxY, obj.y + obj.height / 2)\n }\n\n const width = maxX - minX\n const height = maxY - minY\n const center = { x: minX + width / 2, y: minY + height / 2 }\n\n return { center, width, height }\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport const getPrimaryId = (element: AnyCircuitElement): string => {\n // @ts-ignore\n return element[`${element.type}_id`]\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { transformPCBElements } from \"./transform-soup-elements\"\nimport { translate } from \"transformation-matrix\"\n\nexport const repositionPcbComponentTo = (\n circuitJson: AnyCircuitElement[],\n pcb_component_id: string,\n newCenter: { x: number; y: number },\n) => {\n const pcbComponent = circuitJson.find(\n (e) =>\n e.type === \"pcb_component\" &&\n (e as any).pcb_component_id === pcb_component_id,\n )\n if (!pcbComponent) return\n\n const currentCenter =\n \"center\" in pcbComponent\n ? (pcbComponent as any).center\n : { x: (pcbComponent as any).x, y: (pcbComponent as any).y }\n\n const dx = newCenter.x - currentCenter.x\n const dy = newCenter.y - currentCenter.y\n\n const portIds = circuitJson\n .filter(\n (e) =>\n e.type === \"pcb_port\" &&\n (e as any).pcb_component_id === pcb_component_id,\n )\n .map((e) => (e as any).pcb_port_id)\n\n const elementsToMove = circuitJson.filter((elm) => {\n if (elm === pcbComponent) return true\n const anyElm: any = elm\n if (anyElm.pcb_component_id === pcb_component_id) return true\n if (\n Array.isArray(anyElm.pcb_component_ids) &&\n anyElm.pcb_component_ids.includes(pcb_component_id)\n )\n return true\n if (anyElm.pcb_port_id && portIds.includes(anyElm.pcb_port_id)) return true\n if (\n Array.isArray(anyElm.pcb_port_ids) &&\n anyElm.pcb_port_ids.some((id: string) => portIds.includes(id))\n )\n return true\n if (anyElm.start_pcb_port_id && portIds.includes(anyElm.start_pcb_port_id))\n return true\n if (anyElm.end_pcb_port_id && portIds.includes(anyElm.end_pcb_port_id))\n return true\n if (\n Array.isArray(anyElm.route) &&\n anyElm.route.some(\n (pt: any) =>\n (pt.start_pcb_port_id && portIds.includes(pt.start_pcb_port_id)) ||\n (pt.end_pcb_port_id && portIds.includes(pt.end_pcb_port_id)),\n )\n )\n return true\n return false\n })\n\n const matrix = translate(dx, dy)\n transformPCBElements(elementsToMove, matrix)\n}\n","import type {\n AnyCircuitElement,\n SourceComponentBase,\n SourceGroup,\n} from \"circuit-json\"\n\n/**\n * A tree of circuit elements. This is often used for layout because you want\n * to consider only the top-level elements of a group for layout (child groups\n * move together)\n */\nexport interface CircuitJsonTreeNode {\n nodeType: \"group\" | \"component\"\n sourceGroup?: SourceGroup\n sourceComponent?: SourceComponentBase\n childNodes: Array<CircuitJsonTreeNode>\n otherChildElements: Array<AnyCircuitElement>\n}\n\nexport const getCircuitJsonTree = (\n circuitJson: AnyCircuitElement[],\n opts?: {\n source_group_id?: string\n },\n): CircuitJsonTreeNode => {\n type ChildGroupId = string\n type ParentGroupId = string\n type GroupId = string\n const groupChildMap: Map<ParentGroupId, ChildGroupId[]> = new Map()\n\n for (const elm of circuitJson) {\n if (elm.type === \"source_group\" && elm.parent_source_group_id) {\n const parentId = elm.parent_source_group_id\n const childId = elm.source_group_id\n const children = groupChildMap.get(parentId) ?? []\n children.push(childId)\n groupChildMap.set(parentId, children)\n if (!groupChildMap.has(childId)) {\n groupChildMap.set(childId, [])\n }\n }\n }\n\n // Ensure that every source_group, including root-level groups that have no parent,\n // is present in the groupChildMap. This guarantees that even standalone boards\n // (with no nested groups) are processed and appear at the top of the tree.\n for (const elm of circuitJson) {\n if (elm.type === \"source_group\" && !groupChildMap.has(elm.source_group_id)) {\n groupChildMap.set(elm.source_group_id, [])\n }\n }\n\n const groupNodes = new Map<GroupId, CircuitJsonTreeNode>()\n\n const getNextGroupId = () => {\n for (const [parentId, children] of groupChildMap) {\n if (groupNodes.has(parentId)) continue\n if (children.every((childId) => groupNodes.has(childId))) {\n return parentId\n }\n }\n return null\n }\n\n // Compute any node we have the dependencies for until we've computed all of\n // them\n let lastGroupId: GroupId | null = null\n while (true) {\n const nextGroupId = getNextGroupId()\n if (!nextGroupId) break\n\n const sourceGroup = circuitJson.find(\n (elm) =>\n elm.type === \"source_group\" && elm.source_group_id === nextGroupId,\n ) as SourceGroup\n\n // Create the tree node for this group\n const node: CircuitJsonTreeNode = {\n nodeType: \"group\",\n sourceGroup,\n otherChildElements: [],\n childNodes: [\n ...(groupChildMap\n .get(nextGroupId)\n ?.map((childId) => groupNodes.get(childId)!) ?? []),\n ...circuitJson\n .filter(\n (elm) =>\n elm.type === \"source_component\" &&\n elm.source_group_id === nextGroupId,\n )\n .map((elm) => {\n return {\n nodeType: \"component\",\n sourceComponent: elm,\n childNodes: [],\n otherChildElements: [\n ...circuitJson.filter(\n (e) =>\n e.type === \"pcb_component\" &&\n e.source_component_id ===\n (elm as SourceComponentBase).source_component_id,\n ),\n ], // TODO populate\n } as CircuitJsonTreeNode\n }),\n ],\n }\n\n groupNodes.set(nextGroupId, node)\n lastGroupId = nextGroupId\n }\n\n if (!lastGroupId) {\n console.warn(\"No groups were processed, returning tree without sourceGroup\")\n return {\n nodeType: \"group\",\n childNodes: [], // TODO populate\n otherChildElements: circuitJson,\n }\n }\n\n return groupNodes.get(opts?.source_group_id ?? lastGroupId)!\n}\n","import type { CircuitJsonTreeNode } from \"./getCircuitJsonTree\"\n\nexport const getStringFromCircuitJsonTree = (\n circuitJsonTree: CircuitJsonTreeNode,\n indent = 0,\n): string => {\n if (circuitJsonTree.nodeType === \"component\") {\n return `${\" \".repeat(indent)}${circuitJsonTree.sourceComponent?.name ?? circuitJsonTree.sourceComponent?.source_component_id}`\n }\n const lines = []\n\n lines.push(\n `${\" \".repeat(indent)}${circuitJsonTree.sourceGroup?.name ?? circuitJsonTree.sourceGroup?.source_group_id}`,\n )\n for (const child of circuitJsonTree.childNodes) {\n lines.push(getStringFromCircuitJsonTree(child, indent + 2))\n }\n return lines.join(\"\\n\")\n}\n","import { Primitive, Point } from \"../types\"\n\nexport function getBoundsOfPrimitives(primitives: Primitive[]): {\n minX: number\n maxX: number\n minY: number\n maxY: number\n} {\n if (primitives.length === 0) {\n return { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n }\n\n let minX = Infinity\n let maxX = -Infinity\n let minY = Infinity\n let maxY = -Infinity\n\n const updateBounds = (point: Point) => {\n minX = Math.min(minX, point.x)\n maxX = Math.max(maxX, point.x)\n minY = Math.min(minY, point.y)\n maxY = Math.max(maxY, point.y)\n }\n\n primitives.forEach((primitive) => {\n switch (primitive.type) {\n case \"path\":\n primitive.points.forEach(updateBounds)\n break\n case \"text\":\n updateBounds({ x: primitive.x, y: primitive.y })\n break\n case \"circle\": {\n const { x, y, radius } = primitive\n updateBounds({ x: x - radius, y: y - radius })\n updateBounds({ x: x + radius, y: y + radius })\n break\n }\n case \"box\": {\n const { x, y, width, height } = primitive\n const halfWidth = width / 2\n const halfHeight = height / 2\n updateBounds({ x: x - halfWidth, y: y - halfHeight })\n updateBounds({ x: x + halfWidth, y: y + halfHeight })\n break\n }\n }\n })\n\n return { minX, maxX, minY, maxY }\n}\n","import type { SchSymbol } from \"./types\"\nimport { getBoundsOfPrimitives } from \"./utils/getBoundsOfPrimitives\"\n\nexport function defineSymbol(\n symbol: Omit<SchSymbol, \"size\"> & Partial<Pick<SchSymbol, \"size\">>,\n): SchSymbol {\n let size = symbol.size\n if (!size) {\n const bounds = getBoundsOfPrimitives(symbol.primitives)\n size = {\n width: bounds.maxX - bounds.minX,\n height: bounds.maxY - bounds.minY,\n }\n }\n return { ...symbol, size }\n}\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5274831500000005,\n \"y\": 0.03018695000000049\n },\n {\n \"x\": -0.30105415000000013,\n \"y\": 0.03018695000000049\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2932119499999999,\n \"y\": 0.03018695000000049\n },\n {\n \"x\": 0.5339524499999997,\n \"y\": 0.03018695000000049\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09765764999999949,\n \"y\": 0.12845085000000034\n },\n {\n \"x\": -0.0011297500000011507,\n \"y\": -0.06303624999999946\n },\n {\n \"x\": -0.10778645000000164,\n \"y\": 0.12845085000000034\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path17\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.002934749999999875,\n \"y\": -0.13606674999999946\n },\n {\n \"x\": 0.06869635000000063,\n \"y\": -0.11019914999999947\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path18\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.06869635000000063,\n \"y\": -0.11019914999999947\n },\n {\n \"x\": 0.1403274500000009,\n \"y\": -0.13606674999999946\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path19\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1461968499999997,\n \"y\": -0.13606674999999946\n },\n {\n \"x\": -0.07456574999999921,\n \"y\": -0.11019914999999947\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path20\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07456575000000054,\n \"y\": -0.11019914999999947\n },\n {\n \"x\": -0.0029346500000002607,\n \"y\": -0.13606674999999946\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17328624999999942,\n \"y\": 0.39216264999999995\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00661455000000033,\n \"y\": -0.40216264999999995\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5413984499999998,\n \"y\": 0.029334149999999948\n },\n \"right1\": {\n \"x\": 0.54139845,\n \"y\": 0.030330549999999734\n }\n },\n \"bounds\": {\n \"minX\": -0.5695568909999997,\n \"maxX\": 0.569556891,\n \"minY\": -0.5021626499999999,\n \"maxY\": 0.39216264999999995,\n \"width\": 1.1391137819999997,\n \"height\": 0.5443252999999999,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 0.05499999999999999\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000000895,\n \"y\": 0.03731525000000002,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/ac_voltmeter.json\"\n\nconst { paths, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotate, applyToPoint, transform, scale } from \"transformation-matrix\"\nimport type {\n SchSymbol,\n Primitive,\n Point,\n Port,\n NinePointAnchor,\n} from \"./types\"\nimport { getBoundsOfPrimitives } from \"./utils/getBoundsOfPrimitives\"\n\n// Update rotateAnchor to handle all anchor rotations based on orientation\nconst rotateRightFacingAnchor = (\n anchor: NinePointAnchor,\n newOrientation: \"up\" | \"down\" | \"left\" | \"right\" = \"right\",\n): NinePointAnchor => {\n switch (newOrientation) {\n case \"down\":\n switch (anchor) {\n case \"middle_top\":\n return \"middle_right\"\n case \"middle_bottom\":\n return \"middle_left\"\n case \"middle_left\":\n return \"middle_bottom\"\n case \"middle_right\":\n return \"middle_top\"\n }\n break\n case \"up\":\n switch (anchor) {\n case \"middle_top\":\n return \"middle_left\"\n case \"middle_bottom\":\n return \"middle_right\"\n case \"middle_left\":\n return \"middle_top\"\n case \"middle_right\":\n return \"middle_bottom\"\n }\n break\n case \"left\":\n switch (anchor) {\n case \"middle_top\":\n return \"middle_bottom\"\n case \"middle_bottom\":\n return \"middle_top\"\n case \"middle_left\":\n return \"middle_right\"\n case \"middle_right\":\n return \"middle_left\"\n }\n break\n case \"right\":\n return anchor // No change if orientation is \"right\"\n }\n return anchor\n}\n\nexport const flipSymbolOverXAxis = (\n symbol: SchSymbol,\n overrides?: Partial<SchSymbol>,\n): SchSymbol => {\n const { primitives, center, ports, size } = symbol\n const transformMatrix = transform({\n a: 1,\n b: 0,\n c: 0,\n d: -1,\n e: 0,\n f: 2 * center.y,\n })\n\n const flippedPrimitives = primitives.map((primitive): Primitive => {\n primitive = { ...primitive }\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map(\n (point) => applyToPoint(transformMatrix, point) as Point,\n ),\n }\n case \"text\":\n const flippedPoint = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n\n // Flip text anchors vertically\n const anchorMap: Record<NinePointAnchor, NinePointAnchor> = {\n top_left: \"bottom_left\",\n top_right: \"bottom_right\",\n bottom_left: \"top_left\",\n bottom_right: \"top_right\",\n center: \"center\",\n middle_top: \"middle_bottom\",\n middle_bottom: \"middle_top\",\n middle_left: \"middle_left\",\n middle_right: \"middle_right\",\n }\n\n return {\n ...primitive,\n x: flippedPoint.x,\n y: flippedPoint.y,\n anchor: anchorMap[primitive.anchor],\n }\n case \"circle\":\n case \"box\":\n const flippedCenter = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: flippedCenter.x,\n y: flippedCenter.y,\n }\n }\n })\n\n const flippedPorts = ports.map(\n (port): Port => ({\n ...port,\n ...(applyToPoint(transformMatrix, port) as Point),\n }),\n )\n\n return {\n primitives: flippedPrimitives,\n center,\n ports: flippedPorts,\n size,\n ...overrides,\n }\n}\n\nexport const flipSymbolOverYAxis = (\n symbol: SchSymbol,\n overrides?: Partial<SchSymbol>,\n): SchSymbol => {\n const { primitives, center, ports, size } = symbol\n const transformMatrix = transform({\n a: -1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 2 * center.x,\n })\n\n const flippedPrimitives = primitives.map((primitive): Primitive => {\n primitive = { ...primitive }\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map(\n (point) => applyToPoint(transformMatrix, point) as Point,\n ),\n }\n case \"text\":\n const flippedPoint = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n\n // Flip text anchors horizontally\n const anchorMap: Record<NinePointAnchor, NinePointAnchor> = {\n top_left: \"top_right\",\n top_right: \"top_left\",\n bottom_left: \"bottom_right\",\n bottom_right: \"bottom_left\",\n center: \"center\",\n middle_top: \"middle_top\",\n middle_bottom: \"middle_bottom\",\n middle_left: \"middle_right\",\n middle_right: \"middle_left\",\n }\n\n return {\n ...primitive,\n x: flippedPoint.x,\n y: flippedPoint.y,\n anchor: anchorMap[primitive.anchor],\n }\n case \"circle\":\n case \"box\":\n const flippedCenter = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: flippedCenter.x,\n y: flippedCenter.y,\n }\n }\n })\n\n const flippedPorts = ports.map(\n (port): Port => ({\n ...port,\n ...(applyToPoint(transformMatrix, port) as Point),\n }),\n )\n\n return {\n primitives: flippedPrimitives,\n center,\n ports: flippedPorts,\n size,\n ...overrides,\n }\n}\n\nexport const rotateRightFacingSymbol = (\n symbol: SchSymbol,\n opts: {\n newOrientation?: \"up\" | \"down\" | \"left\" | \"right\"\n overrides?: Partial<SchSymbol>\n },\n): SchSymbol => {\n const { newOrientation, overrides } = opts\n // Assuming the default orientation is \"right\"\n const angleMap = {\n up: Math.PI / 2,\n right: 0,\n down: -Math.PI / 2,\n left: -Math.PI,\n }\n\n const transform = rotate(\n newOrientation ? angleMap[newOrientation] : Math.PI / 2,\n symbol.center.x,\n symbol.center.y,\n )\n\n const { primitives, center, size, ports } = symbol\n\n const rotatedPrimitives = primitives.map((primitive): Primitive => {\n primitive = { ...primitive }\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map(\n (point) => applyToPoint(transform, point) as Point,\n ),\n }\n case \"text\":\n const rotatedPoint = applyToPoint(transform, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n\n primitive.anchor = rotateRightFacingAnchor(\n primitive.anchor,\n newOrientation ?? \"right\",\n )\n\n return {\n ...primitive,\n x: rotatedPoint.x,\n y: rotatedPoint.y,\n }\n case \"circle\":\n const rotatedCenter = applyToPoint(transform, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: rotatedCenter.x,\n y: rotatedCenter.y,\n }\n case \"box\":\n const rotatedCorner = applyToPoint(transform, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: rotatedCorner.x,\n y: rotatedCorner.y,\n width: primitive.height,\n height: primitive.width,\n }\n }\n })\n\n const rotatedPorts = ports.map(\n (port): Port => ({\n ...port,\n ...(applyToPoint(transform, port) as Point),\n }),\n )\n\n const bounds = getBoundsOfPrimitives(rotatedPrimitives)\n\n return {\n primitives: rotatedPrimitives,\n center,\n ports: rotatedPorts,\n size: {\n width: bounds.maxX - bounds.minX,\n height: bounds.maxY - bounds.minY,\n },\n ...overrides,\n }\n}\n\n/**\n * @deprecated use rotateRightFacingSymbol instead\n */\nexport const rotateSymbol = (\n symbol: SchSymbol,\n orientation: \"up\" | \"down\" | \"left\" | \"right\" = \"down\",\n overrides: Partial<SchSymbol> = {},\n): SchSymbol =>\n rotateRightFacingSymbol(symbol, {\n newOrientation: orientation,\n overrides,\n })\n","import { rotateRightFacingSymbol } from \"drawing/rotateSymbol\"\nimport ac_voltmeter_horz from \"./ac_voltmeter_horz\"\n\nconst rotatedSymbol = rotateRightFacingSymbol(ac_voltmeter_horz, {\n newOrientation: \"up\",\n})\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.0390362999999998\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.09325540000000054\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.17132800000000015\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.0390362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.09325539999999921\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.17132800000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.17132800000000015\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": -0.09325539999999921\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12219909999999956,\n \"y\": 0.0390362999999998\n },\n {\n \"x\": -0.5168693999999996,\n \"y\": 0.0390362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5233797000000002,\n \"y\": 0.03895110000000024\n },\n {\n \"x\": 0.1496715999999998,\n \"y\": 0.03895110000000024\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14339119999999994,\n \"y\": 0.17181090000000032\n },\n {\n \"x\": 0.07768859999999966,\n \"y\": 0.19542900000000052\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.21083259999999981,\n \"y\": -0.1180321000000002\n },\n {\n \"x\": 0.14512999999999954,\n \"y\": -0.094414\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.26884529999999995\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999977319,\n \"y\": -0.27884529999999996\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471000000001,\n \"y\": 0.03992070000000081\n },\n \"right1\": {\n \"x\": 0.5191470999999999,\n \"y\": 0.03889609999999988\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055409999998,\n \"minY\": -0.37884529999999994,\n \"maxY\": 0.26884529999999995,\n \"width\": 1.094611082,\n \"height\": 0.2976905999999999,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 0.05499999999999999\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/avalanche_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateRightFacingSymbol, rotateSymbol } from \"drawing/rotateSymbol\"\nimport avalanche_diode_horz from \"./avalanche_diode_horz\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateRightFacingSymbol(avalanche_diode_horz, {\n newOrientation: \"down\",\n})\n\nexport default rotated\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458909999999947,\n \"y\": 0.04403610000000091\n },\n {\n \"x\": -0.11999420000000005,\n \"y\": -0.08825559999999877\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.11999420000000005,\n \"y\": 0.1763278000000006\n },\n {\n \"x\": 0.14458909999999947,\n \"y\": 0.04403610000000091\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.11999420000000005,\n \"y\": -0.08825559999999943\n },\n {\n \"x\": -0.11999420000000005,\n \"y\": 0.1763278000000006\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458909999999947,\n \"y\": 0.1763278000000006\n },\n {\n \"x\": 0.14458909999999947,\n \"y\": -0.08825559999999943\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13662260000000037,\n \"y\": 0.04307610000000106\n },\n {\n \"x\": -0.5168692000000001,\n \"y\": 0.04403610000000091\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5233801000000007,\n \"y\": 0.04395090000000068\n },\n {\n \"x\": 0.1496718000000008,\n \"y\": 0.04395090000000068\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1759700999999998,\n \"y\": 0.17681070000000076\n },\n {\n \"x\": 0.1098656999999994,\n \"y\": 0.17632070000000089\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.17769170000000045,\n \"y\": -0.09017559999999913\n },\n {\n \"x\": 0.11158730000000006,\n \"y\": -0.09066559999999924\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.27384529999999985\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999999524,\n \"y\": -0.27384530000000007\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471000000001,\n \"y\": 0.044920700000000036\n },\n \"right1\": {\n \"x\": 0.5191471000000001,\n \"y\": 0.04389609999999977\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055410000001,\n \"minY\": -0.27384530000000007,\n \"maxY\": 0.27384529999999985,\n \"width\": 1.0946110820000001,\n \"height\": 0.5476905999999999,\n \"centerX\": 0,\n \"centerY\": -1.1102230246251565e-16\n },\n \"circles\": {}\n}","import { NinePointAnchor, SchSymbol } from \"drawing/types\"\nimport { rotateRightFacingSymbol } from \"drawing/rotateSymbol\"\nimport { getBoundsOfPrimitives } from \"drawing/utils/getBoundsOfPrimitives\"\n\ninterface ModifySymbolBuilder {\n changeTextAnchor(\n text: \"{REF}\" | \"{VAL}\" | string,\n newAnchor: NinePointAnchor,\n ): ModifySymbolBuilder\n rotateRightFacingSymbol(\n newOrientation: \"up\" | \"down\" | \"left\" | \"right\",\n ): ModifySymbolBuilder\n labelPort(currentLabel: string, newLabels: string[]): ModifySymbolBuilder\n build(): SchSymbol\n}\n\nclass SymbolModifier implements ModifySymbolBuilder {\n private symbol: SchSymbol\n\n constructor(symbol: SchSymbol) {\n this.symbol = JSON.parse(JSON.stringify(symbol))\n this.symbol.size = this.computeSize()\n }\n\n changeTextAnchor(\n text: \"{REF}\" | \"{VAL}\" | string,\n newAnchor: NinePointAnchor,\n ): ModifySymbolBuilder {\n this.symbol = {\n ...this.symbol,\n primitives: this.symbol.primitives.map((primitive) => {\n if (primitive.type === \"text\" && primitive.text === text) {\n return {\n ...primitive,\n anchor: newAnchor,\n }\n }\n return primitive\n }),\n }\n return this\n }\n\n labelPort(currentLabel: string, newLabels: string[]): ModifySymbolBuilder {\n this.symbol = {\n ...this.symbol,\n ports: this.symbol.ports.map((port) => {\n return port.labels.includes(currentLabel)\n ? { ...port, labels: newLabels }\n : port\n }),\n }\n return this\n }\n\n rotateRightFacingSymbol(\n newOrientation: \"up\" | \"down\" | \"left\" | \"right\",\n ): ModifySymbolBuilder {\n this.symbol = rotateRightFacingSymbol(this.symbol, {\n newOrientation,\n })\n return this\n }\n\n computeSize(): { width: number; height: number } {\n const bounds = getBoundsOfPrimitives(this.symbol.primitives)\n return {\n width: bounds.maxX - bounds.minX,\n height: bounds.maxY - bounds.minY,\n }\n }\n\n build(): SchSymbol {\n return { ...this.symbol, size: this.computeSize() }\n }\n}\n\nexport const modifySymbol = (symbol: any): ModifySymbolBuilder => {\n const primitives = symbol.primitives ?? [\n ...Object.values(symbol.paths ?? {}),\n ...Object.values(symbol.texts ?? {}),\n ...Object.values(symbol.circles ?? {}),\n ...Object.values(symbol.rects ?? {}),\n ]\n\n const ports =\n symbol.ports ??\n Object.entries(symbol.refblocks).flatMap(([key, refblock]) => {\n return [{ ...(refblock as object), labels: [key] }]\n })\n\n let center = symbol.center ?? {\n x: symbol.bounds.centerX,\n y: symbol.bounds.centerY,\n }\n\n if (ports.length === 2) {\n center = {\n x: (ports[0].x + ports[1].x) / 2,\n y: (ports[0].y + ports[1].y) / 2,\n }\n }\n\n return new SymbolModifier({\n ...symbol,\n primitives,\n ports,\n center,\n })\n}\n","import svgJson from \"assets/generated/backward_diode.json\"\nimport { Primitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.16,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.16,\n y: 0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/backward_diode.json\"\nimport { Primitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.0001118,\n y: -0.18,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.0001118,\n y: 0.2738453,\n },\n ] as any[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"2\"])\n .labelPort(\"right1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/backward_diode.json\"\nimport { Primitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.0050250999999996715,\n y: 0.27384529999999985,\n anchor: \"middle_left\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.00011179999999999524,\n y: -0.27384530000000007,\n anchor: \"middle_left\",\n },\n ] as any[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"left1\", [\"1\"])\n\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/backward_diode.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nimport { rotateSymbol } from \"drawing/rotateSymbol\"\n\nimport type { TextPrimitive } from \"drawing\"\nimport tilted_digital_ground_right from \"./backward_diode_left\"\nimport backward_diode_left from \"./backward_diode_left\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nconst rotated = rotateSymbol(backward_diode_left, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.x = 0.25\nref.y += 0.21\nval.y -= 0.21\nval.x = 0.25\n\nexport default rotated\n","{\n \"paths\": {\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05901489999999909,\n \"y\": 0.18831315000000015\n },\n {\n \"x\": -0.05869489999999833,\n \"y\": -0.11814524999999954\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.015375000000000805,\n \"y\": 0.12533125000000034\n },\n {\n \"x\": 0.016669000000000933,\n \"y\": -0.05562075000000033\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06443049999999961,\n \"y\": 0.032673549999999496\n },\n {\n \"x\": -0.4368029,\n \"y\": 0.032673549999999496\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4350822999999997,\n \"y\": 0.03438825000000034\n },\n {\n \"x\": 0.028285099999999952,\n \"y\": 0.03438825000000034\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.027835099999999446,\n \"y\": 0.26564474999999943\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.028373699999999502,\n \"y\": -0.27564474999999966\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": 0.033557849999999334\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": 0.03343344999999931\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.37564474999999964,\n \"maxY\": 0.26564474999999943,\n \"width\": 0.947918482,\n \"height\": 0.2912894999999991,\n \"centerX\": 0,\n \"centerY\": 0.055000000000000104\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/battery.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateRightFacingSymbol } from \"drawing/rotateSymbol\"\nimport battery_horz from \"./battery_horz\"\n\nexport default rotateRightFacingSymbol(battery_horz, {\n newOrientation: \"up\",\n})\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.511850799999999,\n \"y\": 0.04616140000000257\n },\n {\n \"x\": -0.24726749999999953,\n \"y\": 0.04616140000000257\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2818991000000013,\n \"y\": 0.04616140000000257\n },\n {\n \"x\": 0.5464825000000006,\n \"y\": 0.04616140000000257\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0173157000000006,\n \"y\": 0.17845310000000225\n },\n {\n \"x\": 0.2818990000000001,\n \"y\": 0.17845310000000225\n },\n {\n \"x\": 0.2818990000000001,\n \"y\": -0.0861302999999971\n },\n {\n \"x\": -0.24726770000000053,\n \"y\": -0.0861302999999971\n },\n {\n \"x\": -0.24726770000000053,\n \"y\": 0.17845310000000225\n },\n {\n \"x\": 0.017315699999998824,\n \"y\": 0.17845310000000225\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0014247999999992267,\n \"y\": 0.2499980000000015\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.0004627999999997634,\n \"y\": -0.24999799999999972\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5337907000000002,\n \"y\": 0.04580520000000021\n },\n \"right1\": {\n \"x\": 0.5687907000000004,\n \"y\": 0.04525870000000154\n }\n },\n \"bounds\": {\n \"minX\": -0.5619491410000002,\n \"maxX\": 0.5619491410000004,\n \"minY\": -0.24999799999999972,\n \"maxY\": 0.2499980000000015,\n \"width\": 1.1238982820000005,\n \"height\": 0.4999960000000012,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 8.881784197001252e-16\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.16,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.16,\n y: 0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.1994553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.2694553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.1594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.15388670000000015,\n \"y\": -0.011659850000000915\n },\n {\n \"x\": 0.5624630000000006,\n \"y\": -0.011659850000000915\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15278139999999985,\n \"y\": 0.0631857500000006\n },\n {\n \"x\": 0.14088970000000023,\n \"y\": 0.0631857500000006\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1440984000000003,\n \"y\": 0.062027949999999166\n },\n {\n \"x\": 0.1440984000000003,\n \"y\": -0.07771874999999895\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1560009,\n \"y\": 0.061948649999999716\n },\n {\n \"x\": -0.1560009,\n \"y\": -0.0777064499999991\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15274009999999993,\n \"y\": -0.07931364999999957\n },\n {\n \"x\": 0.14080039999999983,\n \"y\": -0.07931364999999957\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5604024999999999,\n \"y\": -0.011417950000000232\n },\n {\n \"x\": -0.16549179999999986,\n \"y\": -0.011417950000000232\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.007722799999999808,\n \"y\": 0.17344284999999893\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.003756900000000396,\n \"y\": -0.1734428500000007\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5512093000000005,\n \"y\": -0.009974149999999682\n },\n \"right1\": {\n \"x\": 0.5512093,\n \"y\": -0.009427450000000448\n }\n },\n \"bounds\": {\n \"minX\": -0.5793677410000004,\n \"maxX\": 0.579367741,\n \"minY\": -0.1734428500000007,\n \"maxY\": 0.17344284999999893,\n \"width\": 1.1587354820000004,\n \"height\": 0.34688569999999963,\n \"centerX\": -2.220446049250313e-16,\n \"centerY\": -8.881784197001252e-16\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.1404553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.2,\n y: 0.1494553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.1704553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.1704553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.2,\n y: -0.1404553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.1494553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.16,\n y: -0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.16,\n y: -0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"horizontal-bar\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.4, \"y\": 0 },\n { \"x\": 0.4, \"y\": 0 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"middle-dash-1\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0, \"y\": 0.2 },\n { \"x\": 0, \"y\": 0.07 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"middle-dash-2\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0, \"y\": 0.01 },\n { \"x\": 0, \"y\": -0.12 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"middle-dash-3\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0, \"y\": -0.18 },\n { \"x\": 0, \"y\": -0.31 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"left-vertical\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.25, \"y\": 0 },\n { \"x\": -0.25, \"y\": -0.2 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"right-vertical\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0.25, \"y\": 0 },\n { \"x\": 0.25, \"y\": -0.2 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"left-ground\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.3, \"y\": -0.2 },\n { \"x\": -0.25, \"y\": -0.3 },\n { \"x\": -0.2, \"y\": -0.2 },\n { \"x\": -0.3, \"y\": -0.2 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"right-ground\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0.2, \"y\": -0.2 },\n { \"x\": 0.25, \"y\": -0.3 },\n { \"x\": 0.3, \"y\": -0.2 },\n { \"x\": 0.2, \"y\": -0.2 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.4,\n \"y\": 0\n }\n },\n \"texts\": {\n \"ref\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.35\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.4,\n \"maxY\": 0.35,\n \"width\": 0.8,\n \"height\": 0.75,\n \"centerX\": 0,\n \"centerY\": -0.025\n },\n \"circles\": {}\n}\n","import svgJson from \"assets/generated/bridged_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/bridged_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\nimport ground_bridge_right from \"./bridged_ground_right\"\n\nexport default flipSymbolOverYAxis(ground_bridge_right)\n","import svgJson from \"assets/generated/bridged_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5229378000000002,\n \"y\": 0.017283050000003186\n },\n {\n \"x\": 0.07314620000000005,\n \"y\": 0.017283050000003186\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0856037999999999,\n \"y\": 0.017283050000003186\n },\n {\n \"x\": -0.5353954999999999,\n \"y\": 0.017283050000003186\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0731461999999996,\n \"y\": 0.2818663500000014\n },\n {\n \"x\": 0.07314620000000005,\n \"y\": -0.24730024999999856\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0856037999999999,\n \"y\": 0.2818663500000014\n },\n {\n \"x\": -0.0856037999999999,\n \"y\": -0.24730024999999856\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.012864500000000056,\n \"y\": 0.4200086500000033\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.003850500000000423,\n \"y\": -0.42000864999999976\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5512093000000005,\n \"y\": 0.01638025000000276\n },\n \"right1\": {\n \"x\": 0.5512093,\n \"y\": 0.016926950000001995\n }\n },\n \"bounds\": {\n \"minX\": -0.5793677410000004,\n \"maxX\": 0.579367741,\n \"minY\": -0.42000864999999976,\n \"maxY\": 0.4200086500000033,\n \"width\": 1.1587354820000004,\n \"height\": 0.8400173000000031,\n \"centerX\": -2.220446049250313e-16,\n \"centerY\": 1.7763568394002505e-15\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/capacitor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.2094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.2,\n y: 0.2094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import { isPrimitive } from \"drawing/typeguards\"\nimport { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"../assets/generated/capacitor.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"2\", \"neg\"])\n .labelPort(\"right1\", [\"1\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path27-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4511331000000005,\n \"y\": 0.017283050000003186\n },\n {\n \"x\": 0.001333100000000531,\n \"y\": 0.017283050000003186\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08560379999999945,\n \"y\": 0.017283050000003186\n },\n {\n \"x\": -0.5353954999999995,\n \"y\": 0.017283050000003186\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0024798999999995353,\n \"y\": 0.28420285000000334\n },\n {\n \"x\": -0.0024798999999995353,\n \"y\": -0.247479349999999\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1433630999999993,\n \"y\": -0.24400714999999806\n },\n {\n \"x\": -0.1433630999999993,\n \"y\": -0.24400714999999806\n },\n {\n \"x\": -0.14262848833929928,\n \"y\": -0.24277205092349807\n },\n {\n \"x\": -0.1418975396743993,\n \"y\": -0.2415360290679981\n },\n {\n \"x\": -0.14117026348109932,\n \"y\": -0.24029908349449816\n },\n {\n \"x\": -0.14044666923519933,\n \"y\": -0.23906121326399818\n },\n {\n \"x\": -0.13972676641249931,\n \"y\": -0.2378224174374982\n },\n {\n \"x\": -0.1390105644887993,\n \"y\": -0.23658269507599822\n },\n {\n \"x\": -0.13829807293989932,\n \"y\": -0.2353420452404983\n },\n {\n \"x\": -0.13758930124159935,\n \"y\": -0.23410046699199832\n },\n {\n \"x\": -0.13688425886969938,\n \"y\": -0.23285795939149836\n },\n {\n \"x\": -0.13618295529999938,\n \"y\": -0.23161452149999842\n },\n {\n \"x\": -0.13548540000829937,\n \"y\": -0.23037015237849842\n },\n {\n \"x\": -0.13479160247039934,\n \"y\": -0.22912485108799843\n },\n {\n \"x\": -0.13410157216209936,\n \"y\": -0.22787861668949844\n },\n {\n \"x\": -0.1334153185591994,\n \"y\": -0.22663144824399842\n },\n {\n \"x\": -0.13273285113749936,\n \"y\": -0.22538334481249844\n },\n {\n \"x\": -0.13205417937279937,\n \"y\": -0.22413430545599844\n },\n {\n \"x\": -0.1313793127408994,\n \"y\": -0.2228843292354985\n },\n {\n \"x\": -0.1307082607175994,\n \"y\": -0.22163341521199847\n },\n {\n \"x\": -0.13004103277869938,\n \"y\": -0.2203815624464985\n },\n {\n \"x\": -0.1293776383999994,\n \"y\": -0.21912876999999853\n },\n {\n \"x\": -0.12871808705729942,\n \"y\": -0.21787503693349855\n },\n {\n \"x\": -0.12806238822639943,\n \"y\": -0.21662036230799855\n },\n {\n \"x\": -0.12741055138309942,\n \"y\": -0.21536474518449858\n },\n {\n \"x\": -0.12676258600319942,\n \"y\": -0.21410818462399858\n },\n {\n \"x\": -0.12611850156249946,\n \"y\": -0.21285067968749863\n },\n {\n \"x\": -0.12547830753679945,\n \"y\": -0.21159222943599865\n },\n {\n \"x\": -0.12484201340189946,\n \"y\": -0.21033283293049862\n },\n {\n \"x\": -0.12420962863359947,\n \"y\": -0.20907248923199864\n },\n {\n \"x\": -0.12358116270769948,\n \"y\": -0.20781119740149864\n },\n {\n \"x\": -0.12295662509999947,\n \"y\": -0.20654895649999866\n },\n {\n \"x\": -0.12233602528629947,\n \"y\": -0.20528576558849868\n },\n {\n \"x\": -0.12171937274239948,\n \"y\": -0.20402162372799865\n },\n {\n \"x\": -0.12110667694409948,\n \"y\": -0.20275652997949864\n },\n {\n \"x\": -0.12049794736719947,\n \"y\": -0.2014904834039986\n },\n {\n \"x\": -0.11989319348749948,\n \"y\": -0.20022348306249865\n },\n {\n \"x\": -0.11929242478079949,\n \"y\": -0.19895552801599864\n },\n {\n \"x\": -0.11869565072289952,\n \"y\": -0.19768661732549864\n },\n {\n \"x\": -0.11810288078959952,\n \"y\": -0.19641675005199866\n },\n {\n \"x\": -0.11751412445669952,\n \"y\": -0.19514592525649863\n },\n {\n \"x\": -0.1169293911999995,\n \"y\": -0.1938741419999986\n },\n {\n \"x\": -0.11634869049529953,\n \"y\": -0.19260139934349865\n },\n {\n \"x\": -0.11577203181839951,\n \"y\": -0.1913276963479986\n },\n {\n \"x\": -0.11519942464509951,\n \"y\": -0.1900530320744986\n },\n {\n \"x\": -0.11463087845119951,\n \"y\": -0.18877740558399858\n },\n {\n \"x\": -0.11406640271249952,\n \"y\": -0.1875008159374986\n },\n {\n \"x\": -0.11350600690479953,\n \"y\": -0.18622326219599858\n },\n {\n \"x\": -0.11294970050389953,\n \"y\": -0.18494474342049858\n },\n {\n \"x\": -0.11239749298559953,\n \"y\": -0.1836652586719986\n },\n {\n \"x\": -0.11184939382569953,\n \"y\": -0.18238480701149856\n },\n {\n \"x\": -0.11130541249999952,\n \"y\": -0.18110338749999852\n },\n {\n \"x\": -0.11076555848429954,\n \"y\": -0.17982099919849853\n },\n {\n \"x\": -0.11022984125439952,\n \"y\": -0.1785376411679985\n },\n {\n \"x\": -0.10969827028609953,\n \"y\": -0.1772533124694985\n },\n {\n \"x\": -0.10917085505519954,\n \"y\": -0.17596801216399852\n },\n {\n \"x\": -0.10864760503749954,\n \"y\": -0.17468173931249847\n },\n {\n \"x\": -0.10812852970879953,\n \"y\": -0.17339449297599843\n },\n {\n \"x\": -0.10761363854489954,\n \"y\": -0.17210627221549843\n },\n {\n \"x\": -0.10710294102159955,\n \"y\": -0.17081707609199845\n },\n {\n \"x\": -0.10659644661469955,\n \"y\": -0.16952690366649845\n },\n {\n \"x\": -0.10609416479999954,\n \"y\": -0.1682357539999984\n },\n {\n \"x\": -0.10559610505329955,\n \"y\": -0.1669436261534984\n },\n {\n \"x\": -0.10510227685039954,\n \"y\": -0.1656505191879984\n },\n {\n \"x\": -0.10461268966709955,\n \"y\": -0.16435643216449838\n },\n {\n \"x\": -0.10412735297919956,\n \"y\": -0.16306136414399838\n },\n {\n \"x\": -0.10364627626249956,\n \"y\": -0.16176531418749837\n },\n {\n \"x\": -0.10316946899279957,\n \"y\": -0.16046828135599833\n },\n {\n \"x\": -0.10269694064589956,\n \"y\": -0.15917026471049833\n },\n {\n \"x\": -0.10222870069759955,\n \"y\": -0.1578712633119983\n },\n {\n \"x\": -0.10176475862369955,\n \"y\": -0.1565712762214983\n },\n {\n \"x\": -0.10130512389999956,\n \"y\": -0.1552703024999983\n },\n {\n \"x\": -0.10084980600229956,\n \"y\": -0.15396834120849828\n },\n {\n \"x\": -0.10039881440639958,\n \"y\": -0.15266539140799829\n },\n {\n \"x\": -0.09995215858809957,\n \"y\": -0.15136145215949826\n },\n {\n \"x\": -0.09950984802319957,\n \"y\": -0.15005652252399826\n },\n {\n \"x\": -0.09907189218749957,\n \"y\": -0.14875060156249825\n },\n {\n \"x\": -0.09863830055679956,\n \"y\": -0.14744368833599825\n },\n {\n \"x\": -0.09820908260689958,\n \"y\": -0.14613578190549825\n },\n {\n \"x\": -0.09778424781359957,\n \"y\": -0.14482688133199823\n },\n {\n \"x\": -0.09736380565269957,\n \"y\": -0.1435169856764982\n },\n {\n \"x\": -0.09694776559999957,\n \"y\": -0.1422060939999982\n },\n {\n \"x\": -0.09653613713129958,\n \"y\": -0.1408942053634982\n },\n {\n \"x\": -0.09612892972239956,\n \"y\": -0.13958131882799818\n },\n {\n \"x\": -0.09572615284909958,\n \"y\": -0.13826743345449818\n },\n {\n \"x\": -0.09532781598719958,\n \"y\": -0.13695254830399817\n },\n {\n \"x\": -0.09493392861249958,\n \"y\": -0.13563666243749817\n },\n {\n \"x\": -0.09454450020079957,\n \"y\": -0.13431977491599817\n },\n {\n \"x\": -0.09415954022789956,\n \"y\": -0.13300188480049818\n },\n {\n \"x\": -0.09377905816959958,\n \"y\": -0.13168299115199816\n },\n {\n \"x\": -0.09340306350169958,\n \"y\": -0.13036309303149818\n },\n {\n \"x\": -0.09303156569999958,\n \"y\": -0.12904218949999818\n },\n {\n \"x\": -0.09266457424029959,\n \"y\": -0.12772027961849816\n },\n {\n \"x\": -0.09230209859839958,\n \"y\": -0.12639736244799815\n },\n {\n \"x\": -0.09194414825009957,\n \"y\": -0.12507343704949817\n },\n {\n \"x\": -0.09159073267119958,\n \"y\": -0.12374850248399819\n },\n {\n \"x\": -0.09124186133749958,\n \"y\": -0.12242255781249818\n },\n {\n \"x\": -0.09089754372479958,\n \"y\": -0.12109560209599818\n },\n {\n \"x\": -0.09055778930889957,\n \"y\": -0.11976763439549819\n },\n {\n \"x\": -0.09022260756559956,\n \"y\": -0.11843865377199818\n },\n {\n \"x\": -0.08989200797069956,\n \"y\": -0.11710865928649819\n },\n {\n \"x\": -0.08956599999999959,\n \"y\": -0.11577764999999829\n },\n {\n \"x\": -0.08956599999999959,\n \"y\": -0.11577764999999829\n },\n {\n \"x\": -0.08916166532269958,\n \"y\": -0.1141015840276983\n },\n {\n \"x\": -0.08876332646159957,\n \"y\": -0.11242441110159831\n },\n {\n \"x\": -0.08837097017289958,\n \"y\": -0.11074614170789834\n },\n {\n \"x\": -0.08798458321279957,\n \"y\": -0.10906678633279836\n },\n {\n \"x\": -0.08760415233749957,\n \"y\": -0.10738635546249836\n },\n {\n \"x\": -0.08722966430319957,\n \"y\": -0.10570485958319836\n },\n {\n \"x\": -0.08686110586609956,\n \"y\": -0.10402230918109837\n },\n {\n \"x\": -0.08649846378239957,\n \"y\": -0.10233871474239843\n },\n {\n \"x\": -0.0861417248082996,\n \"y\": -0.10065408675329846\n },\n {\n \"x\": -0.08579087569999959,\n \"y\": -0.09896843569999846\n },\n {\n \"x\": -0.08544590321369959,\n \"y\": -0.09728177206869845\n },\n {\n \"x\": -0.08510679410559958,\n \"y\": -0.09559410634559845\n },\n {\n \"x\": -0.08477353513189957,\n \"y\": -0.09390544901689848\n },\n {\n \"x\": -0.08444611304879956,\n \"y\": -0.09221581056879849\n },\n {\n \"x\": -0.08412451461249956,\n \"y\": -0.0905252014874985\n },\n {\n \"x\": -0.08380872657919955,\n \"y\": -0.0888336322591985\n },\n {\n \"x\": -0.08349873570509957,\n \"y\": -0.08714111337009853\n },\n {\n \"x\": -0.08319452874639957,\n \"y\": -0.08544765530639854\n },\n {\n \"x\": -0.08289609245929955,\n \"y\": -0.08375326855429854\n },\n {\n \"x\": -0.08260341359999955,\n \"y\": -0.08205796359999856\n },\n {\n \"x\": -0.08231647892469955,\n \"y\": -0.08036175092969856\n },\n {\n \"x\": -0.08203527518959956,\n \"y\": -0.07866464102959857\n },\n {\n \"x\": -0.08175978915089956,\n \"y\": -0.07696664438589859\n },\n {\n \"x\": -0.08149000756479956,\n \"y\": -0.07526777148479862\n },\n {\n \"x\": -0.08122591718749958,\n \"y\": -0.07356803281249863\n },\n {\n \"x\": -0.08096750477519957,\n \"y\": -0.07186743885519864\n },\n {\n \"x\": -0.08071475708409956,\n \"y\": -0.07016600009909864\n },\n {\n \"x\": -0.08046766087039958,\n \"y\": -0.06846372703039866\n },\n {\n \"x\": -0.08022620289029957,\n \"y\": -0.06676063013529866\n },\n {\n \"x\": -0.07999036989999955,\n \"y\": -0.06505671989999867\n },\n {\n \"x\": -0.07976014865569958,\n \"y\": -0.06335200681069868\n },\n {\n \"x\": -0.07953552591359955,\n \"y\": -0.061646501353598705\n },\n {\n \"x\": -0.07931648842989956,\n \"y\": -0.0599402140148987\n },\n {\n \"x\": -0.07910302296079955,\n \"y\": -0.0582331552807987\n },\n {\n \"x\": -0.07889511626249955,\n \"y\": -0.05652533563749871\n },\n {\n \"x\": -0.07869275509119955,\n \"y\": -0.05481676557119872\n },\n {\n \"x\": -0.07849592620309954,\n \"y\": -0.053107455568098726\n },\n {\n \"x\": -0.07830461635439954,\n \"y\": -0.05139741611439873\n },\n {\n \"x\": -0.07811881230129955,\n \"y\": -0.049686657696298736\n },\n {\n \"x\": -0.07793850079999953,\n \"y\": -0.04797519079999873\n },\n {\n \"x\": -0.07776366860669955,\n \"y\": -0.04626302591169874\n },\n {\n \"x\": -0.07759430247759955,\n \"y\": -0.04455017351759874\n },\n {\n \"x\": -0.07743038916889955,\n \"y\": -0.042836644103898744\n },\n {\n \"x\": -0.07727191543679954,\n \"y\": -0.04112244815679875\n },\n {\n \"x\": -0.07711886803749955,\n \"y\": -0.039407596162498754\n },\n {\n \"x\": -0.07697123372719955,\n \"y\": -0.03769209860719875\n },\n {\n \"x\": -0.07682899926209953,\n \"y\": -0.035975965977098755\n },\n {\n \"x\": -0.07669215139839955,\n \"y\": -0.03425920875839876\n },\n {\n \"x\": -0.07656067689229953,\n \"y\": -0.032541837437298764\n },\n {\n \"x\": -0.07643456249999953,\n \"y\": -0.03082386249999876\n },\n {\n \"x\": -0.07631379497769952,\n \"y\": -0.029105294432698766\n },\n {\n \"x\": -0.07619836108159952,\n \"y\": -0.02738614372159877\n },\n {\n \"x\": -0.07608824756789952,\n \"y\": -0.02566642085289876\n },\n {\n \"x\": -0.07598344119279953,\n \"y\": -0.023946136312798766\n },\n {\n \"x\": -0.07588392871249951,\n \"y\": -0.02222530058749876\n },\n {\n \"x\": -0.0757896968831995,\n \"y\": -0.020503924163198756\n },\n {\n \"x\": -0.07570073246109951,\n \"y\": -0.01878201752609876\n },\n {\n \"x\": -0.07561702220239952,\n \"y\": -0.017059591162398753\n },\n {\n \"x\": -0.07553855286329951,\n \"y\": -0.015336655558298754\n },\n {\n \"x\": -0.07546531119999951,\n \"y\": -0.01361322119999875\n },\n {\n \"x\": -0.07539728396869952,\n \"y\": -0.011889298573698748\n },\n {\n \"x\": -0.07533445792559951,\n \"y\": -0.010164898165598747\n },\n {\n \"x\": -0.07527681982689952,\n \"y\": -0.008440030461898743\n },\n {\n \"x\": -0.07522435642879952,\n \"y\": -0.006714705948798734\n },\n {\n \"x\": -0.07517705448749952,\n \"y\": -0.004988935112498731\n },\n {\n \"x\": -0.07513490075919951,\n \"y\": -0.0032627284391987255\n },\n {\n \"x\": -0.07509788200009951,\n \"y\": -0.0015360964150987165\n },\n {\n \"x\": -0.07506598496639952,\n \"y\": 0.0001909504736012889\n },\n {\n \"x\": -0.0750391964142995,\n \"y\": 0.0019184017407012956\n },\n {\n \"x\": -0.07501750309999951,\n \"y\": 0.003646246900001303\n },\n {\n \"x\": -0.07500089177969951,\n \"y\": 0.00537447546530131\n },\n {\n \"x\": -0.07498934920959952,\n \"y\": 0.00710307695040132\n },\n {\n \"x\": -0.0749828621458995,\n \"y\": 0.00883204086910133\n },\n {\n \"x\": -0.0749814173447995,\n \"y\": 0.010561356735201338\n },\n {\n \"x\": -0.07498500156249951,\n \"y\": 0.012291014062501347\n },\n {\n \"x\": -0.0749936015551995,\n \"y\": 0.014021002364801359\n },\n {\n \"x\": -0.07500720407909953,\n \"y\": 0.015751311155901372\n },\n {\n \"x\": -0.07502579589039951,\n \"y\": 0.017481929949601384\n },\n {\n \"x\": -0.0750493637452995,\n \"y\": 0.01921284825970139\n },\n {\n \"x\": -0.07507789439999951,\n \"y\": 0.0209440556000014\n },\n {\n \"x\": -0.0751113746106995,\n \"y\": 0.022675541484301412\n },\n {\n \"x\": -0.0751497911335995,\n \"y\": 0.024407295426401427\n },\n {\n \"x\": -0.07519313072489951,\n \"y\": 0.02613930694010145\n },\n {\n \"x\": -0.07524138014079951,\n \"y\": 0.027871565539201462\n },\n {\n \"x\": -0.07529452613749951,\n \"y\": 0.029604060737501478\n },\n {\n \"x\": -0.07535255547119951,\n \"y\": 0.031336782048801484\n },\n {\n \"x\": -0.0754154548980995,\n \"y\": 0.0330697189869015\n },\n {\n \"x\": -0.07548321117439952,\n \"y\": 0.03480286106560152\n },\n {\n \"x\": -0.07555581105629952,\n \"y\": 0.03653619779870154\n },\n {\n \"x\": -0.07563324129999952,\n \"y\": 0.038269718700001565\n },\n {\n \"x\": -0.07571548866169951,\n \"y\": 0.04000341328330158\n },\n {\n \"x\": -0.07580253989759951,\n \"y\": 0.04173727106240159\n },\n {\n \"x\": -0.07589438176389952,\n \"y\": 0.043471281551101616\n },\n {\n \"x\": -0.07599100101679952,\n \"y\": 0.04520543426320164\n },\n {\n \"x\": -0.07609238441249952,\n \"y\": 0.04693971871250166\n },\n {\n \"x\": -0.07619851870719953,\n \"y\": 0.048674124412801674\n },\n {\n \"x\": -0.07630939065709953,\n \"y\": 0.0504086408779017\n },\n {\n \"x\": -0.07642498701839952,\n \"y\": 0.05214325762160172\n },\n {\n \"x\": -0.07654529454729952,\n \"y\": 0.05387796415770175\n },\n {\n \"x\": -0.07667029999999952,\n \"y\": 0.055612750000001654\n },\n {\n \"x\": -0.07667029999999952,\n \"y\": 0.055612750000001654\n },\n {\n \"x\": -0.07680210846969952,\n \"y\": 0.05708314936460168\n },\n {\n \"x\": -0.07693595411759954,\n \"y\": 0.05855396299680169\n },\n {\n \"x\": -0.07707186730189955,\n \"y\": 0.06002517220420173\n },\n {\n \"x\": -0.07720987838079954,\n \"y\": 0.06149675829440175\n },\n {\n \"x\": -0.07735001771249954,\n \"y\": 0.06296870257500178\n },\n {\n \"x\": -0.07749231565519954,\n \"y\": 0.06444098635360178\n },\n {\n \"x\": -0.07763680256709955,\n \"y\": 0.0659135909378018\n },\n {\n \"x\": -0.07778350880639956,\n \"y\": 0.06738649763520185\n },\n {\n \"x\": -0.07793246473129956,\n \"y\": 0.06885968775340187\n },\n {\n \"x\": -0.07808370069999958,\n \"y\": 0.07033314260000188\n },\n {\n \"x\": -0.07823724707069958,\n \"y\": 0.07180684348260188\n },\n {\n \"x\": -0.07839313420159956,\n \"y\": 0.07328077170880191\n },\n {\n \"x\": -0.07855139245089958,\n \"y\": 0.07475490858620194\n },\n {\n \"x\": -0.07871205217679958,\n \"y\": 0.07622923542240194\n },\n {\n \"x\": -0.07887514373749958,\n \"y\": 0.07770373352500196\n },\n {\n \"x\": -0.07904069749119959,\n \"y\": 0.07917838420160196\n },\n {\n \"x\": -0.07920874379609959,\n \"y\": 0.080653168759802\n },\n {\n \"x\": -0.07937931301039959,\n \"y\": 0.082128068507202\n },\n {\n \"x\": -0.07955243549229958,\n \"y\": 0.08360306475140203\n },\n {\n \"x\": -0.0797281415999996,\n \"y\": 0.085078138800002\n },\n {\n \"x\": -0.0799064616916996,\n \"y\": 0.08655327196060203\n },\n {\n \"x\": -0.08008742612559962,\n \"y\": 0.08802844554080204\n },\n {\n \"x\": -0.08027106525989962,\n \"y\": 0.08950364084820207\n },\n {\n \"x\": -0.08045740945279962,\n \"y\": 0.09097883919040207\n },\n {\n \"x\": -0.08064648906249965,\n \"y\": 0.0924540218750021\n },\n {\n \"x\": -0.08083833444719964,\n \"y\": 0.0939291702096021\n },\n {\n \"x\": -0.08103297596509963,\n \"y\": 0.09540426550180209\n },\n {\n \"x\": -0.08123044397439966,\n \"y\": 0.09687928905920212\n },\n {\n \"x\": -0.08143076883329967,\n \"y\": 0.09835422218940212\n },\n {\n \"x\": -0.08163398089999965,\n \"y\": 0.09982904620000212\n },\n {\n \"x\": -0.08184011053269966,\n \"y\": 0.10130374239860213\n },\n {\n \"x\": -0.08204918808959966,\n \"y\": 0.10277829209280215\n },\n {\n \"x\": -0.08226124392889968,\n \"y\": 0.10425267659020215\n },\n {\n \"x\": -0.08247630840879966,\n \"y\": 0.10572687719840214\n },\n {\n \"x\": -0.08269441188749967,\n \"y\": 0.10720087522500214\n },\n {\n \"x\": -0.08291558472319968,\n \"y\": 0.10867465197760214\n },\n {\n \"x\": -0.0831398572740997,\n \"y\": 0.11014818876380215\n },\n {\n \"x\": -0.08336725989839969,\n \"y\": 0.11162146689120216\n },\n {\n \"x\": -0.0835978229542997,\n \"y\": 0.11309446766740217\n },\n {\n \"x\": -0.0838315767999997,\n \"y\": 0.11456717240000215\n },\n {\n \"x\": -0.08406855179369971,\n \"y\": 0.11603956239660215\n },\n {\n \"x\": -0.0843087782935997,\n \"y\": 0.11751161896480215\n },\n {\n \"x\": -0.08455228665789971,\n \"y\": 0.11898332341220215\n },\n {\n \"x\": -0.0847991072447997,\n \"y\": 0.12045465704640215\n },\n {\n \"x\": -0.08504927041249971,\n \"y\": 0.12192560117500215\n },\n {\n \"x\": -0.0853028065191997,\n \"y\": 0.12339613710560214\n },\n {\n \"x\": -0.08555974592309973,\n \"y\": 0.12486624614580213\n },\n {\n \"x\": -0.08582011898239973,\n \"y\": 0.12633590960320215\n },\n {\n \"x\": -0.08608395605529973,\n \"y\": 0.12780510878540213\n },\n {\n \"x\": -0.08635128749999971,\n \"y\": 0.1292738250000021\n },\n {\n \"x\": -0.08662214367469973,\n \"y\": 0.1307420395546021\n },\n {\n \"x\": -0.08689655493759973,\n \"y\": 0.1322097337568021\n },\n {\n \"x\": -0.08717455164689972,\n \"y\": 0.13367688891420207\n },\n {\n \"x\": -0.08745616416079972,\n \"y\": 0.13514348633440207\n },\n {\n \"x\": -0.08774142283749972,\n \"y\": 0.13660950732500204\n },\n {\n \"x\": -0.08803035803519974,\n \"y\": 0.13807493319360203\n },\n {\n \"x\": -0.08832300011209973,\n \"y\": 0.13953974524780205\n },\n {\n \"x\": -0.08861937942639975,\n \"y\": 0.14100392479520202\n },\n {\n \"x\": -0.08891952633629974,\n \"y\": 0.14246745314340203\n },\n {\n \"x\": -0.08922347119999974,\n \"y\": 0.14393031160000203\n },\n {\n \"x\": -0.08953124437569973,\n \"y\": 0.145392481472602\n },\n {\n \"x\": -0.08984287622159975,\n \"y\": 0.14685394406880198\n },\n {\n \"x\": -0.09015839709589976,\n \"y\": 0.148314680696202\n },\n {\n \"x\": -0.09047783735679976,\n \"y\": 0.149774672662402\n },\n {\n \"x\": -0.09080122736249976,\n \"y\": 0.15123390127500197\n },\n {\n \"x\": -0.09112859747119977,\n \"y\": 0.15269234784160193\n },\n {\n \"x\": -0.09145997804109976,\n \"y\": 0.15414999366980195\n },\n {\n \"x\": -0.09179539943039977,\n \"y\": 0.15560682006720195\n },\n {\n \"x\": -0.09213489199729977,\n \"y\": 0.1570628083414019\n },\n {\n \"x\": -0.09247848609999976,\n \"y\": 0.1585179398000019\n },\n {\n \"x\": -0.09282621209669975,\n \"y\": 0.1599721957506019\n },\n {\n \"x\": -0.09317810034559978,\n \"y\": 0.1614255575008019\n },\n {\n \"x\": -0.09353418120489977,\n \"y\": 0.16287800635820185\n },\n {\n \"x\": -0.09389448503279976,\n \"y\": 0.16432952363040182\n },\n {\n \"x\": -0.09425904218749978,\n \"y\": 0.16578009062500182\n },\n {\n \"x\": -0.09462788302719977,\n \"y\": 0.1672296886496018\n },\n {\n \"x\": -0.09500103791009978,\n \"y\": 0.1686782990118018\n },\n {\n \"x\": -0.09537853719439979,\n \"y\": 0.17012590301920177\n },\n {\n \"x\": -0.09576041123829979,\n \"y\": 0.17157248197940175\n },\n {\n \"x\": -0.09614669039999979,\n \"y\": 0.17301801720000176\n },\n {\n \"x\": -0.09653740503769978,\n \"y\": 0.17446248998860173\n },\n {\n \"x\": -0.0969325855095998,\n \"y\": 0.17590588165280172\n },\n {\n \"x\": -0.09733226217389979,\n \"y\": 0.17734817350020168\n },\n {\n \"x\": -0.09773646538879979,\n \"y\": 0.1787893468384017\n },\n {\n \"x\": -0.0981452255124998,\n \"y\": 0.18022938297500168\n },\n {\n \"x\": -0.0985585729031998,\n \"y\": 0.18166826321760166\n },\n {\n \"x\": -0.09897653791909979,\n \"y\": 0.1831059688738016\n },\n {\n \"x\": -0.09939915091839979,\n \"y\": 0.1845424812512016\n },\n {\n \"x\": -0.0998264422592998,\n \"y\": 0.1859777816574016\n },\n {\n \"x\": -0.1002584422999998,\n \"y\": 0.1874118514000016\n },\n {\n \"x\": -0.1006951813986998,\n \"y\": 0.18884467178660155\n },\n {\n \"x\": -0.1011366899135998,\n \"y\": 0.19027622412480152\n },\n {\n \"x\": -0.10158299820289979,\n \"y\": 0.19170648972220153\n },\n {\n \"x\": -0.1020341366247998,\n \"y\": 0.1931354498864015\n },\n {\n \"x\": -0.1024901355374998,\n \"y\": 0.1945630859250015\n },\n {\n \"x\": -0.1029510252991998,\n \"y\": 0.19598937914560147\n },\n {\n \"x\": -0.10341683626809982,\n \"y\": 0.19741431085580147\n },\n {\n \"x\": -0.1038875988023998,\n \"y\": 0.19883786236320142\n },\n {\n \"x\": -0.1043633432602998,\n \"y\": 0.20026001497540138\n },\n {\n \"x\": -0.10484409999999977,\n \"y\": 0.2016807500000013\n },\n {\n \"x\": -0.10484409999999977,\n \"y\": 0.2016807500000013\n },\n {\n \"x\": -0.10512829034499978,\n \"y\": 0.20251255364660126\n },\n {\n \"x\": -0.10541452131999979,\n \"y\": 0.2033439212528012\n },\n {\n \"x\": -0.10570279283499981,\n \"y\": 0.2041748478182012\n },\n {\n \"x\": -0.10599310479999982,\n \"y\": 0.20500532834240115\n },\n {\n \"x\": -0.10628545712499982,\n \"y\": 0.20583535782500112\n },\n {\n \"x\": -0.10657984971999983,\n \"y\": 0.20666493126560112\n },\n {\n \"x\": -0.10687628249499985,\n \"y\": 0.2074940436638011\n },\n {\n \"x\": -0.10717475535999986,\n \"y\": 0.20832269001920106\n },\n {\n \"x\": -0.10747526822499989,\n \"y\": 0.2091508653314011\n },\n {\n \"x\": -0.1077778209999999,\n \"y\": 0.20997856460000103\n },\n {\n \"x\": -0.10808241359499988,\n \"y\": 0.21080578282460102\n },\n {\n \"x\": -0.10838904591999989,\n \"y\": 0.21163251500480096\n },\n {\n \"x\": -0.10869771788499989,\n \"y\": 0.212458756140201\n },\n {\n \"x\": -0.10900842939999988,\n \"y\": 0.21328450123040094\n },\n {\n \"x\": -0.10932118037499987,\n \"y\": 0.21410974527500093\n },\n {\n \"x\": -0.10963597071999989,\n \"y\": 0.21493448327360093\n },\n {\n \"x\": -0.10995280034499992,\n \"y\": 0.21575871022580093\n },\n {\n \"x\": -0.1102716691599999,\n \"y\": 0.2165824211312009\n },\n {\n \"x\": -0.1105925770749999,\n \"y\": 0.21740561098940095\n },\n {\n \"x\": -0.11091552399999992,\n \"y\": 0.21822827480000093\n },\n {\n \"x\": -0.1112405098449999,\n \"y\": 0.2190504075626009\n },\n {\n \"x\": -0.11156753451999993,\n \"y\": 0.21987200427680093\n },\n {\n \"x\": -0.11189659793499994,\n \"y\": 0.22069305994220095\n },\n {\n \"x\": -0.11222769999999993,\n \"y\": 0.22151356955840096\n },\n {\n \"x\": -0.11256084062499995,\n \"y\": 0.222333528125001\n },\n {\n \"x\": -0.11289601971999996,\n \"y\": 0.223152930641601\n },\n {\n \"x\": -0.11323323719499996,\n \"y\": 0.223971772107801\n },\n {\n \"x\": -0.11357249295999995,\n \"y\": 0.22479004752320103\n },\n {\n \"x\": -0.11391378692499997,\n \"y\": 0.22560775188740104\n },\n {\n \"x\": -0.11425711899999995,\n \"y\": 0.22642488020000104\n },\n {\n \"x\": -0.11460248909499995,\n \"y\": 0.22724142746060105\n },\n {\n \"x\": -0.11494989711999995,\n \"y\": 0.2280573886688011\n },\n {\n \"x\": -0.11529934298499996,\n \"y\": 0.22887275882420108\n },\n {\n \"x\": -0.11565082659999995,\n \"y\": 0.22968753292640107\n },\n {\n \"x\": -0.11600434787499994,\n \"y\": 0.23050170597500114\n },\n {\n \"x\": -0.11635990671999996,\n \"y\": 0.23131527296960114\n },\n {\n \"x\": -0.11671750304499996,\n \"y\": 0.23212822890980117\n },\n {\n \"x\": -0.11707713675999995,\n \"y\": 0.23294056879520117\n },\n {\n \"x\": -0.11743880777499995,\n \"y\": 0.2337522876254012\n },\n {\n \"x\": -0.11780251599999993,\n \"y\": 0.2345633804000012\n },\n {\n \"x\": -0.11816826134499994,\n \"y\": 0.23537384211860124\n },\n {\n \"x\": -0.11853604371999993,\n \"y\": 0.23618366778080127\n },\n {\n \"x\": -0.11890586303499992,\n \"y\": 0.2369928523862013\n },\n {\n \"x\": -0.11927771919999992,\n \"y\": 0.23780139093440128\n },\n {\n \"x\": -0.11965161212499995,\n \"y\": 0.23860927842500138\n },\n {\n \"x\": -0.12002754171999992,\n \"y\": 0.23941650985760138\n },\n {\n \"x\": -0.12040550789499993,\n \"y\": 0.24022308023180142\n },\n {\n \"x\": -0.12078551055999992,\n \"y\": 0.24102898454720142\n },\n {\n \"x\": -0.12116754962499991,\n \"y\": 0.24183421780340145\n },\n {\n \"x\": -0.12155162499999989,\n \"y\": 0.24263877500000142\n },\n {\n \"x\": -0.1219377365949999,\n \"y\": 0.2434426511366015\n },\n {\n \"x\": -0.1223258843199999,\n \"y\": 0.2442458412128015\n },\n {\n \"x\": -0.1227160680849999,\n \"y\": 0.24504834022820154\n },\n {\n \"x\": -0.12310828779999988,\n \"y\": 0.24585014318240156\n },\n {\n \"x\": -0.12350254337499987,\n \"y\": 0.24665124507500158\n },\n {\n \"x\": -0.12389883471999988,\n \"y\": 0.24745164090560162\n },\n {\n \"x\": -0.12429716174499987,\n \"y\": 0.24825132567380165\n },\n {\n \"x\": -0.12469752435999987,\n \"y\": 0.2490502943792017\n },\n {\n \"x\": -0.12509992247499988,\n \"y\": 0.2498485420214017\n },\n {\n \"x\": -0.12550435599999984,\n \"y\": 0.25064606360000175\n },\n {\n \"x\": -0.12591082484499985,\n \"y\": 0.25144285411460177\n },\n {\n \"x\": -0.12631932891999986,\n \"y\": 0.2522389085648018\n },\n {\n \"x\": -0.12672986813499987,\n \"y\": 0.25303422195020187\n },\n {\n \"x\": -0.12714244239999986,\n \"y\": 0.25382878927040187\n },\n {\n \"x\": -0.12755705162499986,\n \"y\": 0.25462260552500193\n },\n {\n \"x\": -0.12797369571999986,\n \"y\": 0.25541566571360197\n },\n {\n \"x\": -0.12839237459499983,\n \"y\": 0.256207964835802\n },\n {\n \"x\": -0.12881308815999984,\n \"y\": 0.256999497891202\n },\n {\n \"x\": -0.12923583632499985,\n \"y\": 0.2577902598794021\n },\n {\n \"x\": -0.12966061899999984,\n \"y\": 0.2585802458000021\n },\n {\n \"x\": -0.13008743609499984,\n \"y\": 0.25936945065260214\n },\n {\n \"x\": -0.13051628751999986,\n \"y\": 0.2601578694368022\n },\n {\n \"x\": -0.13094717318499982,\n \"y\": 0.26094549715220217\n },\n {\n \"x\": -0.13138009299999984,\n \"y\": 0.26173232879840225\n },\n {\n \"x\": -0.13181504687499984,\n \"y\": 0.2625183593750023\n },\n {\n \"x\": -0.13225203471999986,\n \"y\": 0.2633035838816023\n },\n {\n \"x\": -0.13269105644499984,\n \"y\": 0.26408799731780236\n },\n {\n \"x\": -0.13313211195999985,\n \"y\": 0.26487159468320237\n },\n {\n \"x\": -0.13357520117499982,\n \"y\": 0.2656543709774024\n },\n {\n \"x\": -0.13402032399999986,\n \"y\": 0.26643632120000244\n },\n {\n \"x\": -0.13446748034499983,\n \"y\": 0.26721744035060246\n },\n {\n \"x\": -0.13491667011999983,\n \"y\": 0.26799772342880246\n },\n {\n \"x\": -0.13536789323499984,\n \"y\": 0.2687771654342025\n },\n {\n \"x\": -0.13582114959999986,\n \"y\": 0.2695557613664026\n },\n {\n \"x\": -0.13627643912499987,\n \"y\": 0.27033350622500263\n },\n {\n \"x\": -0.13673376171999985,\n \"y\": 0.27111039500960266\n },\n {\n \"x\": -0.13719311729499983,\n \"y\": 0.2718864227198026\n },\n {\n \"x\": -0.13765450575999985,\n \"y\": 0.2726615843552027\n },\n {\n \"x\": -0.13811792702499986,\n \"y\": 0.2734358749154028\n },\n {\n \"x\": -0.1385833809999999,\n \"y\": 0.2742092894000028\n },\n {\n \"x\": -0.13905086759499988,\n \"y\": 0.2749818228086028\n },\n {\n \"x\": -0.1395203867199999,\n \"y\": 0.2757534701408028\n },\n {\n \"x\": -0.1399919382849999,\n \"y\": 0.27652422639620283\n },\n {\n \"x\": -0.14046552219999991,\n \"y\": 0.27729408657440285\n },\n {\n \"x\": -0.1409411383749999,\n \"y\": 0.2780630456750029\n },\n {\n \"x\": -0.1414187867199999,\n \"y\": 0.2788310986976029\n },\n {\n \"x\": -0.14189846714499993,\n \"y\": 0.27959824064180294\n },\n {\n \"x\": -0.14238017955999993,\n \"y\": 0.2803644665072029\n },\n {\n \"x\": -0.1428639238749999,\n \"y\": 0.28112977129340294\n },\n {\n \"x\": -0.1433496999999999,\n \"y\": 0.28189415000000295\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"rect1577-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26345180000000035,\n \"y\": 0.2455934500000012\n },\n {\n \"x\": 0.12298460000000011,\n \"y\": 0.2455934500000012\n },\n {\n \"x\": 0.12298460000000011,\n \"y\": 0.2505664500000009\n },\n {\n \"x\": 0.26345180000000035,\n \"y\": 0.2505664500000009\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19576130000000003,\n \"y\": 0.31834525000000014\n },\n {\n \"x\": 0.19576130000000003,\n \"y\": 0.17787805000000034\n },\n {\n \"x\": 0.1907882999999999,\n \"y\": 0.17787805000000034\n },\n {\n \"x\": 0.1907882999999999,\n \"y\": 0.31834525000000014\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.012864499999999612,\n \"y\": 0.4200086500000033\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.003850499999999979,\n \"y\": -0.42000864999999976\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5353954999999995,\n \"y\": 0.016380250000000984\n },\n \"right1\": {\n \"x\": 0.4511331000000005,\n \"y\": 0.016926950000001995\n }\n },\n \"bounds\": {\n \"minX\": -0.579367741,\n \"maxX\": 0.579367741,\n \"minY\": -0.42000864999999976,\n \"maxY\": 0.4200086500000033,\n \"width\": 1.158735482,\n \"height\": 0.8400173000000031,\n \"centerX\": 0,\n \"centerY\": 1.7763568394002505e-15\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/capacitor_polarized.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.1,\n y: -0.2094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.2094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"2\", \"neg\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"1\", \"pos\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/capacitor_polarized.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"2\", \"neg\"])\n .labelPort(\"right1\", [\"1\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/capacitor_polarized.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.4094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0,\n y: 0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"2\", \"neg\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"1\", \"pos\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/capacitor_polarized.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.2094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.3,\n y: 0.2094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"2\", \"neg\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"1\", \"pos\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import svgJson from \"assets/generated/capacitor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/capacitor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.2,\n y: -0.2094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.2094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5274831500000005,\n \"y\": 0.02897970000000072\n },\n {\n \"x\": -0.30105415000000013,\n \"y\": 0.02897970000000072\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2932119499999999,\n \"y\": 0.02897970000000072\n },\n {\n \"x\": 0.5339524499999997,\n \"y\": 0.02897970000000072\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2932119499999999,\n \"y\": 0.2923763000000008\n },\n {\n \"x\": 0.2932119499999999,\n \"y\": -0.23441689999999937\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.021208049999999812,\n \"y\": 0.3692298999999999\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00661455000000033,\n \"y\": -0.3692298999999999\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5413984499999998,\n \"y\": 0.028126900000000177\n },\n \"right1\": {\n \"x\": 0.54139845,\n \"y\": 0.029123299999999963\n }\n },\n \"bounds\": {\n \"minX\": -0.5695568909999997,\n \"maxX\": 0.569556891,\n \"minY\": -0.3692298999999999,\n \"maxY\": 0.3692298999999999,\n \"width\": 1.1391137819999997,\n \"height\": 0.7384597999999998,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000000895,\n \"y\": 0.03610800000000025,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/constant_current_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/constant_current_diode.json\"\n\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52188525,\n \"y\": -0.010083950000000286\n },\n {\n \"x\": 0.1314137500000001,\n \"y\": -0.010083950000000286\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12501034999999971,\n \"y\": 0.25449935000000146\n },\n {\n \"x\": 0.12501035000000016,\n \"y\": -0.2746672499999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07157854999999946,\n \"y\": 0.253778650000001\n },\n {\n \"x\": 0.07157854999999991,\n \"y\": -0.27538794999999716\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13957305000000053,\n \"y\": 0.25449935000000146\n },\n {\n \"x\": -0.1395730500000001,\n \"y\": -0.2746672499999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08349325000000052,\n \"y\": 0.25541165000000277\n },\n {\n \"x\": -0.08349325000000007,\n \"y\": -0.27375494999999894\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07147894999999993,\n \"y\": 0.2552525499999998\n },\n {\n \"x\": -0.0829032500000002,\n \"y\": 0.2552525499999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07107315000000014,\n \"y\": -0.27817384999999817\n },\n {\n \"x\": -0.08330905,\n \"y\": -0.27817384999999817\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.21327535000000042,\n \"y\": 0.31803495000000304\n },\n {\n \"x\": 0.19712464999999968,\n \"y\": 0.31807695\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.003324649999999707,\n \"y\": 0.694594949999999\n },\n {\n \"x\": 0.003324649999999707,\n \"y\": 0.3310069500000008\n },\n {\n \"x\": 0.003324649999999707,\n \"y\": 0.3209089500000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.21327535000000042,\n \"y\": 0.3180639499999991\n },\n {\n \"x\": -0.21327535000000042,\n \"y\": 0.2498769499999991\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19712464999999968,\n \"y\": 0.31807695\n },\n {\n \"x\": 0.19712464999999968,\n \"y\": 0.24987695000000443\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19226054999999942,\n \"y\": -0.3468980499999983\n },\n {\n \"x\": -0.21813945000000068,\n \"y\": -0.3469400500000006\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.024339450000000262,\n \"y\": -0.7234580499999996\n },\n {\n \"x\": -0.024339450000000262,\n \"y\": -0.3598700499999996\n },\n {\n \"x\": -0.024339450000000262,\n \"y\": -0.34977205000000033\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19226054999999942,\n \"y\": -0.3469270499999997\n },\n {\n \"x\": 0.19226054999999942,\n \"y\": -0.2787400499999979\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.21813955000000096,\n \"y\": -0.34694015\n },\n {\n \"x\": -0.21813955000000096,\n \"y\": -0.27874015000000085\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14368304999999992,\n \"y\": -0.010083950000000286\n },\n {\n \"x\": -0.5364480500000002,\n \"y\": -0.010083950000000286\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.38155925000000046,\n \"y\": 0.09576035000000083\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.3369813499999994,\n \"y\": -0.17868404999999754\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.0032092499999998303,\n \"y\": 0.7114137500000002\n },\n \"bottom1\": {\n \"x\": -0.02355145000000025,\n \"y\": -0.7114137500000002\n },\n \"left1\": {\n \"x\": -0.5415391500000004,\n \"y\": -0.00607074999999746\n },\n \"right1\": {\n \"x\": 0.5415391499999997,\n \"y\": -0.012221549999997805\n }\n },\n \"bounds\": {\n \"minX\": -0.5696975910000004,\n \"maxX\": 0.5696975909999997,\n \"minY\": -0.7395721910000002,\n \"maxY\": 0.7395721910000002,\n \"width\": 1.1393951820000001,\n \"height\": 1.4791443820000003,\n \"centerX\": -3.3306690738754696e-16,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/crystal_4pin.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"top1\", [\"2\", \"gnd1\"])\n .labelPort(\"bottom1\", [\"4\", \"gnd2\"])\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"bottom_right\")\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .build()\n","import crystal_4pin_horz from \"./crystal_4pin_horz\"\nimport { rotateRightFacingSymbol } from \"drawing/rotateSymbol\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/crystal_4pin.json\"\n\nexport default modifySymbol(crystal_4pin_horz)\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{REF}\", \"top_right\")\n .changeTextAnchor(\"{VAL}\", \"bottom_left\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5229378000000002,\n \"y\": -0.012283099999995883\n },\n {\n \"x\": 0.13246630000000037,\n \"y\": -0.012283099999995883\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14263049999999966,\n \"y\": -0.012283099999995883\n },\n {\n \"x\": -0.5353954999999999,\n \"y\": -0.012283099999995883\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12606289999999998,\n \"y\": -0.2768663999999976\n },\n {\n \"x\": 0.12606290000000042,\n \"y\": 0.2523002000000023\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07263109999999973,\n \"y\": -0.27614569999999716\n },\n {\n \"x\": 0.07263110000000017,\n \"y\": 0.253020900000001\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13852050000000027,\n \"y\": -0.2768663999999976\n },\n {\n \"x\": -0.13852049999999982,\n \"y\": 0.2523002000000023\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08244070000000026,\n \"y\": -0.27777869999999893\n },\n {\n \"x\": -0.08244069999999981,\n \"y\": 0.2513879000000028\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07253150000000019,\n \"y\": -0.27761959999999597\n },\n {\n \"x\": -0.08185069999999994,\n \"y\": -0.27761959999999597\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0721257000000004,\n \"y\": 0.255806800000002\n },\n {\n \"x\": -0.08225649999999973,\n \"y\": 0.255806800000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.012864500000000056,\n \"y\": -0.4150086999999978\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.003850500000000423,\n \"y\": 0.4250087000000011\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5512093000000002,\n \"y\": -0.011380399999998403\n },\n \"right1\": {\n \"x\": 0.5512093,\n \"y\": -0.011926899999997076\n }\n },\n \"bounds\": {\n \"minX\": -0.5793677410000002,\n \"maxX\": 0.579367741,\n \"minY\": -0.5150086999999978,\n \"maxY\": 0.4250087000000011,\n \"width\": 1.1587354820000002,\n \"height\": 1,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": -0.04499999999999832\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/crystal.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.3,\n y: 0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.3,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import { isPrimitive } from \"drawing/typeguards\"\nimport { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"../assets/generated/crystal.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"2\", \"neg\"])\n .labelPort(\"right1\", [\"1\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/crystal.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/crystal.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.3,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.3,\n y: -0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.9942486145,\n \"y\": -1.6422072295000003\n },\n {\n \"x\": 2.0984258145,\n \"y\": -1.6428272295000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.1030704145000003,\n \"y\": -1.4809259295000001\n },\n {\n \"x\": 2.1026604145,\n \"y\": -1.8041042295\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.2218770145,\n \"y\": -1.4969414295\n },\n {\n \"x\": 2.1063461145,\n \"y\": -1.5757354295000003\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.2286252145,\n \"y\": -1.7819395295000002\n },\n {\n \"x\": 2.1136540145000002,\n \"y\": -1.7033263295\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.2273251145,\n \"y\": -1.4948802295\n },\n {\n \"x\": 2.2284101145,\n \"y\": -1.1518438295000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.2276017145,\n \"y\": -1.9567437295\n },\n {\n \"x\": 2.2281317145,\n \"y\": -1.7888340295000003\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"arrow-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.1704797145,\n \"y\": -1.6991380295000003\n },\n {\n \"x\": 2.1275815145,\n \"y\": -1.7604028295000003\n },\n {\n \"x\": 2.1917009144999997,\n \"y\": -1.7601828295000004\n },\n {\n \"x\": 2.1704797145,\n \"y\": -1.6991380295000003\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.5978828145000001,\n \"y\": -1.5020091295000002\n },\n {\n \"x\": 1.8597023145000002,\n \"y\": -1.5035561295000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.8686937145000002,\n \"y\": -1.3411936295000002\n },\n {\n \"x\": 1.8682837145,\n \"y\": -1.6643719295000001\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.9875004145000004,\n \"y\": -1.3572092295000002\n },\n {\n \"x\": 1.8719693145,\n \"y\": -1.4360031295000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.9942486145,\n \"y\": -1.6422072295000003\n },\n {\n \"x\": 1.8792773145000001,\n \"y\": -1.5635940295000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"arrow-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.9361028144999999,\n \"y\": -1.5594057295000003\n },\n {\n \"x\": 1.8932048145,\n \"y\": -1.6206705295000003\n },\n {\n \"x\": 1.9573242144999998,\n \"y\": -1.6204505295000005\n },\n {\n \"x\": 1.9361028144999999,\n \"y\": -1.5594057295000003\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.9943087144999998,\n \"y\": -1.3539494295000003\n },\n {\n \"x\": 2.2269582145,\n \"y\": -1.3556534295000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 1.8805772145,\n \"y\": -1.9423669295000003\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 1.8845380145,\n \"y\": -1.1387692295000003\n }\n },\n \"refblocks\": {\n \"right1\": {\n \"x\": 2.2278617145000004,\n \"y\": -1.9651412295000004\n },\n \"right2\": {\n \"x\": 1.5977076145000002,\n \"y\": -1.5027827295000002\n },\n \"right3\": {\n \"x\": 2.2278680145,\n \"y\": -1.1403971295000002\n }\n },\n \"bounds\": {\n \"minX\": 1.5810976555000003,\n \"maxX\": 2.3461148445,\n \"minY\": -1.9817511885000003,\n \"maxY\": -1.1237871705000002,\n \"width\": 0.7650171889999999,\n \"height\": 0.8579640180000001,\n \"centerX\": 1.9636062500000002,\n \"centerY\": -1.5527691795000003\n },\n \"circles\": {\n \"path1-0\": {\n \"type\": \"circle\",\n \"x\": 2.0463372145000003,\n \"y\": -1.5363384295000002,\n \"radius\": 0.29977763,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/darlington_pair_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right3\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/darlington_pair_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nsvgJson.bounds.width += 0.3\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right3\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12447409999999959,\n \"y\": 0.0852510999999998\n },\n {\n \"x\": 0.11626639999999999,\n \"y\": 0.0852510999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.4472267999999995\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.3470985000000004\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"A\",\n \"x\": 0,\n \"y\": -0.1\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": -0.08525110000000002,\n \"maxY\": 0.0852510999999998,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 5.551115123125783e-17,\n \"centerY\": -1.1102230246251565e-16\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/dc_ammeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, x: 0, y: 0.01, anchor: \"center\", fontSize: 0.3 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dc_ammeter_horz from \"./dc_ammeter_horz\"\nimport { PathPrimitive, Primitive, TextPrimitive } from \"drawing/types\"\n\nfunction isPathPrimitive(value: any): value is PathPrimitive {\n return (\n typeof value === \"object\" &&\n value !== null &&\n value.type === \"path\" &&\n Array.isArray(value.points) &&\n typeof value.color === \"string\"\n )\n}\n\nfunction isTextPrimitive(value: any): value is TextPrimitive {\n return (\n typeof value === \"object\" &&\n value !== null &&\n value.type === \"text\" &&\n typeof value.text === \"string\" &&\n typeof value.x === \"number\" &&\n typeof value.y === \"number\" &&\n typeof value.anchor === \"string\"\n )\n}\n\nconst { 6: letter, 2: underline, ...rest } = dc_ammeter_horz.primitives\n\nif (isPathPrimitive(underline)) {\n underline.points.map((p) => {\n p.y += 0.05\n })\n}\n\nif (isTextPrimitive(letter)) {\n letter.y += 0.025\n}\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...dc_ammeter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter, underline],\n}\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09442299999999992,\n \"y\": -0.13438304999999984\n },\n {\n \"x\": -0.004364400000000712,\n \"y\": 0.05710404999999996\n },\n {\n \"x\": -0.1110211000000012,\n \"y\": -0.13438304999999984\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12447409999999959,\n \"y\": 0.13438304999999984\n },\n {\n \"x\": 0.11626639999999999,\n \"y\": 0.13438304999999984\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.39809484999999944\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.39623045000000046\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": -0.13438304999999984,\n \"maxY\": 0.13438304999999984,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/dc_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dc_voltmeter_horz from \"./dc_voltmeter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 2: letter, 3: underline, ...rest } = dc_voltmeter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...dc_voltmeter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter, underline],\n}\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5176700499999997,\n \"y\": 0.041745050000000505\n },\n {\n \"x\": -0.10888805000000024,\n \"y\": 0.041745050000000505\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1031184499999993,\n \"y\": 0.041745050000000505\n },\n {\n \"x\": 0.5246894499999994,\n \"y\": 0.041745050000000505\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09343985000000021,\n \"y\": -0.14620634999999882\n },\n {\n \"x\": -0.0930998500000002,\n \"y\": 0.2583405500000009\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08519034999999908,\n \"y\": -0.14503384999999902\n },\n {\n \"x\": 0.08553034999999909,\n \"y\": 0.2595130500000007\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08315755000000014,\n \"y\": 0.055934450000000524\n },\n {\n \"x\": -0.08415755000000047,\n \"y\": -0.14678124999999964\n },\n {\n \"x\": 0.08653524999999984,\n \"y\": -0.05104664999999953\n },\n {\n \"x\": -0.08126175000000035,\n \"y\": 0.05647715000000031\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-9-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07661224999999927,\n \"y\": 0.256654450000001\n },\n {\n \"x\": 0.07761224999999983,\n \"y\": 0.05393885000000109\n },\n {\n \"x\": -0.0930805500000007,\n \"y\": 0.1496734500000012\n },\n {\n \"x\": 0.07471644999999949,\n \"y\": 0.25719715000000143\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0316381500000007,\n \"y\": 0.41683614999999996\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.03022294999999975,\n \"y\": -0.41683614999999996\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54139845,\n \"y\": 0.04089205000000051\n },\n \"right1\": {\n \"x\": 0.5413984499999995,\n \"y\": 0.04188845000000008\n }\n },\n \"bounds\": {\n \"minX\": -0.569556891,\n \"maxX\": 0.5695568909999995,\n \"minY\": -0.41683614999999996,\n \"maxY\": 0.41683614999999996,\n \"width\": 1.1391137819999995,\n \"height\": 0.8336722999999999,\n \"centerX\": -2.220446049250313e-16,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000003116,\n \"y\": 0.048873150000000365,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/diac.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport diac_horz from \"./diac_horz\"\n\nconst rotatedSymbol = rotateSymbol(diac_horz)\n\nconst texts = rotatedSymbol.primitives.filter(\n (primitive) => primitive.type === \"text\",\n)\n\nconst ref = texts.find((text) => text.text === \"{REF}\")!\nconst val = texts.find((text) => text.text === \"{VAL}\")!\n\nref.y = 0\nval.y = 0\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999836\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.08825540000000132\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.1763280000000016\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999836\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.08825539999999776\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.1763280000000016\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.1763280000000016\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": -0.08825539999999776\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12219909999999956,\n \"y\": 0.04403629999999836\n },\n {\n \"x\": -0.5168693999999996,\n \"y\": 0.04403629999999836\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5233797,\n \"y\": 0.04395110000000102\n },\n {\n \"x\": 0.14967160000000002,\n \"y\": 0.04395110000000102\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.27384529999999785\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999999524,\n \"y\": -0.2738453000000014\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471000000001,\n \"y\": 0.0449206999999987\n },\n \"right1\": {\n \"x\": 0.5191471000000001,\n \"y\": 0.043896100000001326\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055410000001,\n \"minY\": -0.2738453000000014,\n \"maxY\": 0.27384529999999785,\n \"width\": 1.0946110820000001,\n \"height\": 0.5476905999999993,\n \"centerX\": 0,\n \"centerY\": -1.7763568394002505e-15\n },\n \"circles\": {}\n}\n","import svgJson from \"assets/generated/diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport diode_right from \"./diode_right\"\n\nexport default rotateSymbol(diode_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport diode_right from \"./diode_right\"\n\nexport default rotateSymbol(diode_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport diode_right from \"./diode_right\"\n\nexport default rotateSymbol(diode_right, \"up\")\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3543580999999998,\n \"y\": 0.22373490000000018\n },\n {\n \"x\": -0.1279290999999998,\n \"y\": 0.22373490000000018\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.071341659999999987,\n \"y\": 0.215546000000001\n },\n {\n \"x\": 0.10839800000000011,\n \"y\": 0.16078\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.10434800000000011,\n \"y\": 0.127178\n },\n {\n \"x\": 0.345089,\n \"y\": 0.127178\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12008600000000014,\n \"y\": 0.36383770000000015\n },\n {\n \"x\": 0.360827,\n \"y\": 0.36383770000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3543580999999998,\n \"y\": -0.17811849999999985\n },\n {\n \"x\": -0.1279290999999998,\n \"y\": -0.17811849999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.071341659999999987,\n \"y\": -0.1867987999999997\n },\n {\n \"x\": 0.10434800000000011,\n \"y\": -0.2376754\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.10434800000000011,\n \"y\": -0.2746754\n },\n {\n \"x\": 0.345089,\n \"y\": -0.2746754\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12008600000000014,\n \"y\": -0.038015699999999875\n },\n {\n \"x\": 0.360827,\n \"y\": -0.038015699999999875\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-4-join\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.001896399999999815,\n \"y\": -0.198273049999999984\n },\n {\n \"x\": -0.001896399999999815,\n \"y\": 0.19098100000000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.56447740000000026\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.4244773999999998\n }\n },\n \"refblocks\": {\n\n \"left1\": {\n \"x\": -0.3682734999999999,\n \"y\": 0.22373490000000018\n },\n \"left2\": {\n \"x\": -0.3682734999999999,\n \"y\": -0.17811849999999985\n },\n \"right1\": {\n \"x\": 0.36827350000000014,\n \"y\": 0.36383770000000015\n },\n \"right2\": {\n \"x\": 0.36827350000000014,\n \"y\": 0.12717810000000007\n },\n \"right3\": {\n \"x\": 0.36827350000000014,\n \"y\": -0.038015699999999875\n },\n \"right5\": {\n \"x\": 0.36827350000000014,\n \"y\": -0.2746754\n }\n },\n \"bounds\": {\n \"minX\": -0.3964319409999999,\n \"maxX\": 0.3964319410000001,\n \"minY\": -0.4744773999999998,\n \"maxY\": 0.5644774000000002,\n \"width\": 1,\n \"height\": 1.0389548,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 0.045000000000000207\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": 0.127178,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-5\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": -0.274507949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": 0.369178,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-6\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": -0.0380507949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.10003074999999978,\n \"y\": 0.219178,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": -0.10003074999999978,\n \"y\": -0.182507949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n }\n ","import svgJson from \"assets/generated/dpdt_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"3\"])\n .labelPort(\"right2\", [\"2\"])\n .labelPort(\"right3\", [\"6\"])\n .labelPort(\"left2\", [\"4\"])\n .labelPort(\"right5\", [\"5\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_normally_closed_switch_right from \"./dpdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.537\nval.y -= 0.5375\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_normally_closed_switch_right from \"./dpdt_normally_closed_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 1.0\nval.y -= 1.0\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_normally_closed_switch_right from \"./dpdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.537\nval.y -= 0.5375\nval.x = 0\n\nexport default rotated\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3543580999999998,\n \"y\": 0.22373490000000018\n },\n {\n \"x\": -0.1279290999999998,\n \"y\": 0.22373490000000018\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0741659999999987,\n \"y\": 0.2290546000000001\n },\n {\n \"x\": 0.1091012,\n \"y\": 0.33400000000\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.10434800000000011,\n \"y\": 0.127178\n },\n {\n \"x\": 0.345089,\n \"y\": 0.127178\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12008600000000014,\n \"y\": 0.36383770000000015\n },\n {\n \"x\": 0.360827,\n \"y\": 0.36383770000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3543580999999998,\n \"y\": -0.17811849999999985\n },\n {\n \"x\": -0.1279290999999998,\n \"y\": -0.17811849999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0741659999999987,\n \"y\": -0.1777987999999997\n },\n {\n \"x\": 0.1091012,\n \"y\": -0.073700299999999982\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.10434800000000011,\n \"y\": -0.2746754\n },\n {\n \"x\": 0.345089,\n \"y\": -0.2746754\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12008600000000014,\n \"y\": -0.038015699999999875\n },\n {\n \"x\": 0.360827,\n \"y\": -0.038015699999999875\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-4-join\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.000896399999999815,\n \"y\": -0.121903049999999984\n },\n {\n \"x\": -0.000896399999999815,\n \"y\": 0.2708100000000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.61447740000000026\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.5244773999999998\n }\n },\n \"refblocks\": {\n\n \"left1\": {\n \"x\": -0.3682734999999999,\n \"y\": 0.22373490000000018\n },\n \"left2\": {\n \"x\": -0.3682734999999999,\n \"y\": -0.17811849999999985\n },\n \"right1\": {\n \"x\": 0.36827350000000014,\n \"y\": 0.36383770000000015\n },\n \"right2\": {\n \"x\": 0.36827350000000014,\n \"y\": 0.12717810000000007\n },\n \"right3\": {\n \"x\": 0.36827350000000014,\n \"y\": -0.038015699999999875\n },\n \"right5\": {\n \"x\": 0.36827350000000014,\n \"y\": -0.2746754\n }\n },\n \"bounds\": {\n \"minX\": -0.3964319409999999,\n \"maxX\": 0.3964319410000001,\n \"minY\": -0.4744773999999998,\n \"maxY\": 0.5644774000000002,\n \"width\": 1,\n \"height\": 1.0389548,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 0.045000000000000207\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": 0.127178,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-5\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": -0.274507949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": 0.369178,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-6\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": -0.0380507949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.10003074999999978,\n \"y\": 0.219178,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": -0.10003074999999978,\n \"y\": -0.182507949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n }\n ","import svgJson from \"assets/generated/dpdt_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"3\"])\n .labelPort(\"right2\", [\"2\"])\n .labelPort(\"right3\", [\"6\"])\n .labelPort(\"left2\", [\"4\"])\n .labelPort(\"right5\", [\"5\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_switch_right from \"./dpdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.0\nref.y += 0.565\nval.y -= 0.555\nval.x = 0.0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_switch_right from \"./dpdt_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 1.09\nval.y -= 1.09\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_switch_right from \"./dpdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.0\nref.y += 0.565\nval.y -= 0.555\nval.x = 0.0\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3622268000000006,\n \"y\": 0.06287995000000057\n },\n {\n \"x\": -0.1357978000000004,\n \"y\": 0.06287995000000057\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.087009950000000069,\n \"y\": 0.066349450000000916\n },\n {\n \"x\": 0.110995640000000064,\n \"y\": 0.1105995000000057\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12795640000000064,\n \"y\": 0.06287995000000057\n },\n {\n \"x\": 0.36869780000000096,\n \"y\": 0.06287995000000057\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3622270999999999,\n \"y\": -0.16866424999999907\n },\n {\n \"x\": -0.1357980999999997,\n \"y\": -0.16866424999999907\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.087009950000000069,\n \"y\": -0.17019474999999962\n },\n {\n \"x\": 0.110995640000000064,\n \"y\": -0.12466424999999907\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12795610000000002,\n \"y\": -0.16866424999999907\n },\n {\n \"x\": 0.3686968000000006,\n \"y\": -0.16866424999999907\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.30716265000000006\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.30716265000000006\n }\n },\n \"refblocks\": {\n\n \"left1\": {\n \"x\": -0.37614279999999956,\n \"y\": -0.16951715000000012\n },\n\n \"left3\": {\n \"x\": -0.37614279999999956,\n \"y\": 0.06202735000000037\n },\n \"right1\": {\n \"x\": 0.37614279999999933,\n \"y\": -0.16852074999999966\n },\n\n \"right3\": {\n \"x\": 0.37614279999999933,\n \"y\": 0.06302374999999993\n }\n },\n \"bounds\": {\n \"minX\": -0.40430124099999953,\n \"maxX\": 0.4043012409999993,\n \"minY\": -0.39716264999999984,\n \"maxY\": 0.39716265000000006,\n \"width\": 0.8086024819999988,\n \"height\": 0.7943252999999999,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": 0.099003074999999978,\n \"y\": 0.06478,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.099003074999999978,\n \"y\": -0.16978,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": -0.11003074999999978,\n \"y\": 0.06478,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.11003074999999978,\n \"y\": -0.16978,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n }","import svgJson from \"assets/generated/dpst_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"4\"])\n .labelPort(\"left3\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_normally_closed_switch_right from \"./dpst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.4\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_normally_closed_switch_right from \"./dpst_normally_closed_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.67\nval.y -= 0.67\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_normally_closed_switch_right from \"./dpst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.46\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.46\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3622268000000006,\n \"y\": 0.06287995000000057\n },\n {\n \"x\": -0.1357978000000004,\n \"y\": 0.06287995000000057\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.085009950000000069,\n \"y\": 0.069349450000000916\n },\n {\n \"x\": 0.10307889999999986,\n \"y\": 0.2010388500000011\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12795640000000064,\n \"y\": 0.06287995000000057\n },\n {\n \"x\": 0.36869780000000096,\n \"y\": 0.06287995000000057\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3622270999999999,\n \"y\": -0.16866424999999907\n },\n {\n \"x\": -0.1357980999999997,\n \"y\": -0.16866424999999907\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.085009950000000069,\n \"y\": -0.162019474999999962\n },\n {\n \"x\": 0.10307860000000058,\n \"y\": -0.03050534999999921\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12795610000000002,\n \"y\": -0.16866424999999907\n },\n {\n \"x\": 0.3686968000000006,\n \"y\": -0.16866424999999907\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.41716265000000006\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.41716264999999984\n }\n },\n \"refblocks\": {\n\n\n \"left1\": {\n \"x\": -0.37614279999999956,\n \"y\": -0.16951715000000012\n },\n\n \"left3\": {\n \"x\": -0.37614279999999956,\n \"y\": 0.06202735000000037\n },\n \"right1\": {\n \"x\": 0.37614279999999933,\n \"y\": -0.16852074999999966\n },\n\n \"right3\": {\n \"x\": 0.37614279999999933,\n \"y\": 0.06302374999999993\n }\n },\n \"bounds\": {\n \"minX\": -0.40430124099999953,\n \"maxX\": 0.4043012409999993,\n \"minY\": -0.39716264999999984,\n \"maxY\": 0.39716265000000006,\n \"width\": 0.8086024819999988,\n \"height\": 0.7943252999999999,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": 0.099003074999999978,\n \"y\": 0.06478,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.099003074999999978,\n \"y\": -0.16978,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": -0.11003074999999978,\n \"y\": 0.06478,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.11003074999999978,\n \"y\": -0.16978,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/dpst_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"4\"])\n .labelPort(\"left3\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_switch_right from \"./dpst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.295\nval.y -= 0.295\nval.x = 0.42\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_switch_right from \"./dpst_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.795\nval.y -= 0.795\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_switch_right from \"./dpst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.46\nref.y += 0.315\nval.y -= 0.315\nval.x = 0.46\n\nexport default rotated\n","{\n \"paths\": {\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4245830500000004,\n \"y\": 0.004659100000001359\n },\n {\n \"x\": -0.15999975000000086,\n \"y\": 0.004659100000001359\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1691672500000002,\n \"y\": 0.004659100000001359\n },\n {\n \"x\": 0.4337505499999997,\n \"y\": 0.004659100000001359\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \n \n \"path9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.248580,\n \"y\": -0.156716\n },\n {\n \"x\": 0.015951,\n \"y\": 0.301507\n },\n {\n \"x\": 0.245206,\n \"y\": 0.169321\n },\n {\n \"x\": -0.019470,\n \"y\": -0.288948\n },\n {\n \"x\": -0.248580,\n \"y\": -0.156716\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n \n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0,\n \"y\": 0.37166549999999965\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.0,\n \"y\": -0.37166549999999965\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4392315500000002,\n \"y\": 0.002969399999999567\n },\n \"right1\": {\n \"x\": 0.4392315500000002,\n \"y\": 0.005339799999999784\n }\n },\n \"bounds\": {\n \"minX\": -0.5673899910000002,\n \"maxX\": 0.5673899910000002,\n \"minY\": -0.25166549999999965,\n \"maxY\": 0.25166549999999965,\n \"width\": 1.1347799820000004,\n \"height\": 0.5033309999999993,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n }","import svgJson from \"../assets/generated/ferrite_bead.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.18,\n y: -0.3204553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.25,\n y: -0.3294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { flipSymbolOverXAxis, rotateSymbol } from \"drawing/rotateSymbol\"\nimport ferrite_bead_up from \"./ferrite_bead_up\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = flipSymbolOverXAxis(ferrite_bead_up)\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.4\nref.x = 0.32\nval.y -= 0.45\nval.x = 0.32\n\nexport default symbol\n","import svgJson from \"assets/generated/ferrite_bead.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\n\nimport ferrite_bead_right from \"./ferrite_bead_right\"\n\n// export default rotateSymbol(ferrite_bead_right, \"left\")\nexport default flipSymbolOverYAxis(ferrite_bead_right)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.541495829500001,\n \"y\": 0.044368009536419395\n },\n {\n \"x\": -0.21998262950000114,\n \"y\": 0.044368009536419395\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14450697049999905,\n \"y\": 0.052237309536419474\n },\n {\n \"x\": 0.46379767049999976,\n \"y\": 0.052237309536419474\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13965347050000032,\n \"y\": -0.14937819046358025\n },\n {\n \"x\": 0.13854747050000027,\n \"y\": 0.2538388095364199\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.212703829500001,\n \"y\": 0.2732984095364195\n },\n {\n \"x\": -0.2147708295000006,\n \"y\": -0.1493854904635803\n },\n {\n \"x\": 0.13782137049999887,\n \"y\": 0.050231709536419755\n },\n {\n \"x\": -0.2087893295000005,\n \"y\": 0.27442980953642016\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.08906882950000083,\n \"y\": 0.38011220953641867\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.0685314901614209,\n \"y\": -0.38011220953641844\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"\",\n \"x\": 0.5884896704999998,\n \"y\": -0.3288545904635811\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5603312294999999,\n \"y\": 0.04351520953641885\n },\n \"right1\": {\n \"x\": 0.47524967049999955,\n \"y\": 0.05238090953641872\n }\n },\n \"bounds\": {\n \"minX\": -0.5884896704999999,\n \"maxX\": 0.5884896704999998,\n \"minY\": -0.38011220953641844,\n \"maxY\": 0.38011220953641867,\n \"width\": 1.1769793409999996,\n \"height\": 0.7602244190728371,\n \"centerX\": -5.551115123125783e-17,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/filled_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport filled_diode_horz from \"./filled_diode_horz\"\n\nexport default rotateSymbol(filled_diode_horz)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.36197569999999946\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.43234960000000044\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Hz\",\n \"x\": 0,\n \"y\": -0.035\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0.000852800000000542\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": -0.00014359999999924433\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.006997299999999651,\n \"y\": -0.007128299999999532,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/frequency_meter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, x: 0, y: 0.01, anchor: \"center\", fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport frequency_meter_horz from \"./frequency_meter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = frequency_meter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...frequency_meter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path10\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5283037500000001,\n \"y\": 0.036413650000000075\n },\n {\n \"x\": 0.5300302500000003,\n \"y\": 0.036413650000000075\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path14\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0008652499999994845,\n \"y\": 0.16870534999999975\n },\n {\n \"x\": 0.2654482499999995,\n \"y\": 0.16870534999999975\n },\n {\n \"x\": 0.2654482499999995,\n \"y\": -0.0958780499999996\n },\n {\n \"x\": -0.2637187499999998,\n \"y\": -0.0958780499999996\n },\n {\n \"x\": -0.2637187499999998,\n \"y\": 0.16870534999999975\n },\n {\n \"x\": 0.0008652499999994845,\n \"y\": 0.16870534999999975\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.008263949999999909,\n \"y\": 0.23591724999999997\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.1716539500000005,\n \"y\": -0.23591724999999997\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5345548500000001,\n \"y\": 0.03946054999999937\n },\n \"right1\": {\n \"x\": 0.5345548500000001,\n \"y\": 0.0352561499999986\n }\n },\n \"bounds\": {\n \"minX\": -0.5627132910000001,\n \"maxX\": 0.5627132910000001,\n \"minY\": -0.23591724999999997,\n \"maxY\": 0.23591724999999997,\n \"width\": 1.1254265820000002,\n \"height\": 0.47183449999999993,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/fuse.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.top1, anchor: \"middle_bottom\" },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.2,\n anchor: \"middle_top\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport fuse_horz from \"./fuse_horz\"\n\nexport default rotateSymbol(fuse_horz)\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2912618269999996,\n \"y\": 0.004493150000000057\n },\n {\n \"x\": 0.03837157300000005,\n \"y\": 0.004493150000000057\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.03833877300000044,\n \"y\": -0.22466065000000057\n },\n {\n \"x\": 0.03833877300000044,\n \"y\": 0.2246606499999988\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.11525317300000104,\n \"y\": -0.16849545\n },\n {\n \"x\": 0.11525317300000104,\n \"y\": 0.16849544999999821\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19216757300000076,\n \"y\": -0.05616515\n },\n {\n \"x\": 0.19216757300000076,\n \"y\": 0.05616515\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.30929847300000013,\n \"y\": -0.017042050000000586\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.29017832699999957,\n \"y\": 0.00557934999999965\n }\n },\n \"bounds\": {\n \"minX\": -0.3092984729999996,\n \"maxX\": 0.30929847300000013,\n \"minY\": -0.22466065000000057,\n \"maxY\": 0.2246606499999988,\n \"width\": 0.6185969459999997,\n \"height\": 0.44932129999999937,\n \"centerX\": 2.7755575615628914e-16,\n \"centerY\": -8.881784197001252e-16\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path12_rotated\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2_rotated\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.0\n },\n {\n \"x\": 0.09,\n \"y\": 0.0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.0,\n \"y\": 0.0292298999999999\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": 0.09,\n \"y\": 0.0\n }\n },\n \"bounds\": {\n \"minX\": -0.5695568909999997,\n \"maxX\": 0.569556891,\n \"minY\": -0.3692298999999999,\n \"maxY\": 0.3692298999999999,\n \"width\": 1.1391137819999997,\n \"height\": 0.7384597999999998,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/ground2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.14,\n y: 0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/ground2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.14,\n y: -0.0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/ground2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.13,\n y: 0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"assets/generated/ground2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.14,\n y: -0.0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.49895505000000084,\n \"y\": 0.035186950000000605\n },\n {\n \"x\": -0.177441850000001,\n \"y\": 0.035186950000000605\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18704774999999918,\n \"y\": 0.043056250000000684\n },\n {\n \"x\": 0.5063384499999999,\n \"y\": 0.043056250000000684\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3067105499999998,\n \"y\": 0.19836805000000046\n },\n {\n \"x\": -0.3084575500000002,\n \"y\": -0.10569684999999973\n },\n {\n \"x\": -0.01040014999999972,\n \"y\": 0.03790115000000038\n },\n {\n \"x\": -0.3034011499999991,\n \"y\": 0.1991819500000005\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-9-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3324594500000002,\n \"y\": 0.19920585000000046\n },\n {\n \"x\": 0.33420945000000013,\n \"y\": -0.10485904999999973\n },\n {\n \"x\": 0.03615254999999973,\n \"y\": 0.03873895000000038\n },\n {\n \"x\": 0.32915344999999974,\n \"y\": 0.2000197500000005\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.042716749999999415,\n \"y\": 0.3158462499999999\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.035355149999999336,\n \"y\": -0.3158462499999999\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5177904499999998,\n \"y\": 0.03433415000000006\n },\n \"right1\": {\n \"x\": 0.5177904499999997,\n \"y\": 0.04319984999999993\n }\n },\n \"bounds\": {\n \"minX\": -0.5459488909999998,\n \"maxX\": 0.5459488909999997,\n \"minY\": -0.3158462499999999,\n \"maxY\": 0.3158462499999999,\n \"width\": 1.0918977819999993,\n \"height\": 0.6316924999999998,\n \"centerX\": -5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/gunn_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nimport svgJson from \"assets/generated/gunn_diode.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13585750000000063,\n \"y\": -0.003696399999999045\n },\n {\n \"x\": -0.12872579999999934,\n \"y\": -0.13598810000000228\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12763670000000094,\n \"y\": -0.003920199999999596\n },\n {\n \"x\": 0.3,\n \"y\": -0.003920199999999596\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path46\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12872579999999934,\n \"y\": 0.12859530000000063\n },\n {\n \"x\": 0.13585750000000063,\n \"y\": -0.003696399999999045\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path47\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12872579999999934,\n \"y\": -0.13598810000000228\n },\n {\n \"x\": -0.12872579999999934,\n \"y\": 0.12859530000000063\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13585750000000063,\n \"y\": 0.12859530000000063\n },\n {\n \"x\": 0.13585750000000063,\n \"y\": -0.13598810000000228\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path49\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13076959999999938,\n \"y\": -0.003696399999999045\n },\n {\n \"x\": -0.3,\n \"y\": -0.003696399999999045\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n\"path25\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1557438999999996,\n \"y\": 0.28545279999999806\n },\n {\n \"x\": 0.2530861999999994,\n \"y\": 0.3023319999999998\n },\n {\n \"x\": 0.21878339999999952,\n \"y\": 0.20956920000000068\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n}\n,\n\"path78\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08000449999999937,\n \"y\": 0.16590799999999817\n },\n {\n \"x\": 0.09202799999999911,\n \"y\": 0.1748410000000007\n },\n {\n \"x\": 0.2137844999999996,\n \"y\": 0.26529680000000155\n },\n {\n \"x\": 0.2144144999999993,\n \"y\": 0.2662468000000011\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n}\n,\n\"path25-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.021722400000000697,\n \"y\": 0.30658939999999646\n },\n {\n \"x\": 0.07561989999999952,\n \"y\": 0.3234685999999982\n },\n {\n \"x\": 0.04131709999999922,\n \"y\": 0.23070579999999907\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n}\n,\n\"path78-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09746180000000093,\n \"y\": 0.18704459999999656\n },\n {\n \"x\": -0.08543830000000074,\n \"y\": 0.19597759999999909\n },\n {\n \"x\": 0.0363181999999993,\n \"y\": 0.28643339999999995\n },\n {\n \"x\": 0.03694819999999943,\n \"y\": 0.2873833999999995\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n}\n,\n \n \"box\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": -0.4 \n },\n {\n \"x\": 0.3,\n \"y\": -0.4\n },\n {\n \"x\": 0.3,\n \"y\": 0.4\n },\n {\n \"x\": -0.3,\n \"y\": 0.4\n },\n {\n \"x\": -0.3,\n \"y\": -0.4\n },\n {\n \"x\": -0.3,\n \"y\": 0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-1\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.3, \"y\": 0.1333 },\n {\n \"x\": -0.5362092999999997,\n \"y\": 0.1333\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-2\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.3, \"y\": -0.1333 },\n {\n \"x\": -0.5362092999999997,\n \"y\": -0.1333\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-3\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0.3, \"y\": -0.1333 },\n {\n \"x\": 0.5362093000000003,\n \"y\": -0.1333\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-4\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0.3, \"y\": 0.1333 },\n {\n \"x\": 0.5362093000000003,\n \"y\": 0.1333\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.43222\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.43222\n }\n },\n \"refblocks\": {\n \"left1\": {\n \n \"x\": -0.5362092999999997,\n \"y\": 0.1333\n \n },\n \"left2\": {\n \n \"x\": -0.5362092999999997,\n \"y\": -0.1333\n \n },\n \"right1\": {\n \"x\": 0.5362093000000003,\n \"y\": -0.1333\n },\n \"right2\": {\n \"x\": 0.5362093000000003,\n \"y\": 0.1333\n }\n },\n \"bounds\": {\n \"minX\": -0.5643677409999996,\n \"maxX\": 0.5643677410000003,\n \"minY\": -0.3234685999999982,\n \"maxY\": 0.3234685999999982,\n \"width\": 1.128735482,\n \"height\": 0.6469371999999964,\n \"centerX\": 3.3306690738754696e-16,\n \"centerY\": 0\n },\n \"circles\": {}\n }\n ","import svgJson from \"assets/generated/icled.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"DIN\"])\n .labelPort(\"left2\", [\"2\", \"POWER\"])\n .labelPort(\"right1\", [\"4\", \"GND\"])\n .labelPort(\"right2\", [\"3\", \"DOUT\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport icled_right from \"./icled_right\"\n\nexport default rotateSymbol(icled_right, \"down\")\n","import { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\nimport icled_right from \"./icled_right\"\n\nexport default flipSymbolOverYAxis(icled_right)\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport icled_right from \"./icled_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(icled_right, \"up\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.21\nref.x = 0.44\nval.y -= 0.21\nval.x = 0.44\n\nexport default symbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3850944445000005,\n \"y\": 0.0010025000000009054\n },\n {\n \"x\": -0.006525044499999799,\n \"y\": -0.0016204999999989145\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07415065550000066,\n \"y\": 0.19027400000000116\n },\n {\n \"x\": 0.07322065550000101,\n \"y\": -0.17787549999999852\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.01002445549999953,\n \"y\": -0.12022799999999911\n },\n {\n \"x\": 0.01002445549999953,\n \"y\": 0.1443554000000009\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28374995550000004,\n \"y\": -0.2462579999999992\n },\n {\n \"x\": 0.2831499554999999,\n \"y\": -0.5425888999999995\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28423665550000043,\n \"y\": 0.5370061000000012\n },\n {\n \"x\": 0.2836366555000003,\n \"y\": 0.2678117000000011\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1731829554999995,\n \"y\": -0.2153930999999989\n },\n {\n \"x\": 0.2780310554999992,\n \"y\": -0.23045039999999894\n },\n {\n \"x\": 0.2324710554999987,\n \"y\": -0.14155709999999888\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path17\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07704605550000054,\n \"y\": -0.08544359999999895\n },\n {\n \"x\": 0.2325688555000005,\n \"y\": -0.19774119999999895\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07425025549999931,\n \"y\": 0.11255990000000127\n },\n {\n \"x\": 0.28369465549999884,\n \"y\": 0.2606293000000013\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.006566644499999885,\n \"y\": 0.35624680000000075\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.020614555499999687,\n \"y\": -0.4202180999999998\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.2843894554999997,\n \"y\": 0.5566011000000001\n },\n \"bottom1\": {\n \"x\": 0.2823318555000005,\n \"y\": -0.5566010999999997\n },\n \"left1\": {\n \"x\": -0.3990097444999998,\n \"y\": 0.00014970000000036343\n }\n },\n \"bounds\": {\n \"minX\": -0.4271681854999998,\n \"maxX\": 0.42716818549999985,\n \"minY\": -0.5847595409999997,\n \"maxY\": 0.584759541,\n \"width\": 0.8543363709999996,\n \"height\": 1.1695190819999999,\n \"centerX\": 2.7755575615628914e-17,\n \"centerY\": 1.6653345369377348e-16\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.13862605549999985,\n \"y\": 0.008130800000000438,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/igbt_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"3\"])\n .labelPort(\"top1\", [\"2\"])\n .labelPort(\"bottom1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport igbt_transistor_horz from \"./igbt_transistor_horz\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(igbt_transistor_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nref.x = 0.45\nref.y += 0.065\nval.y += 0.065\n\nexport default rotated\n","{\n \"paths\": {\n \"path12-1-8-6-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.023137150000000162,\n \"y\": -0.022408499999999165\n },\n {\n \"x\": 0.023137150000000162,\n \"y\": -0.10240850000000101\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.48740694999999956,\n \"y\": -0.18547949999999958\n },\n {\n \"x\": -0.1731006500000003,\n \"y\": -0.18547949999999958\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.023792949999999813,\n \"y\": 0.17183650000000128\n },\n {\n \"x\": 0.023792949999999813,\n \"y\": 0.10518850000000057\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14922445000000018,\n \"y\": -0.032671500000001075\n },\n {\n \"x\": 0.19549865000000022,\n \"y\": -0.18509050000000116\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19549885000000078,\n \"y\": -0.18509050000000116\n },\n {\n \"x\": 0.4881437499999999,\n \"y\": -0.18509050000000116\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.023137150000000162,\n \"y\": 0.11939749999999982\n },\n {\n \"x\": 0.023137150000000162,\n \"y\": 0.017597499999999044\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08312335000000015,\n \"y\": 0.10724749999999972\n },\n {\n \"x\": 0.08312335000000015,\n \"y\": 0.050463500000001105\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4-3-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.03684904999999983,\n \"y\": 0.10724749999999972\n },\n {\n \"x\": -0.03684904999999983,\n \"y\": 0.050463500000001105\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08312335000000015,\n \"y\": 0.10724749999999972\n },\n {\n \"x\": -0.03684904999999983,\n \"y\": 0.10724749999999972\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path14-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.011640198644880861,\n \"y\": 0.2824489119921765\n },\n {\n \"x\": 0.01182744133211866,\n \"y\": 0.25421423950368016\n },\n {\n \"x\": 0.035295081309120846,\n \"y\": 0.22597956701517674\n },\n {\n \"x\": 0.05876272128612037,\n \"y\": 0.19774489452667865\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path14-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.011818241440559873,\n \"y\": 0.19775449269853418\n },\n {\n \"x\": 0.01171692178543804,\n \"y\": 0.22592735480803405\n },\n {\n \"x\": 0.03525208501144128,\n \"y\": 0.25410021691753926\n },\n {\n \"x\": 0.058787248237439194,\n \"y\": 0.2822730790270338\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.010987250000000337,\n \"y\": 0.3808714999999978\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.05578094999999994,\n \"y\": -0.3808714999999996\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4717985499999999,\n \"y\": -0.1854504999999982\n },\n \"right1\": {\n \"x\": 0.4717985499999999,\n \"y\": -0.18547650000000182\n }\n },\n \"bounds\": {\n \"minX\": -0.4999569909999999,\n \"maxX\": 0.4999569909999999,\n \"minY\": -0.3808714999999996,\n \"maxY\": 0.3808714999999978,\n \"width\": 0.9999139819999998,\n \"height\": 0.7617429999999974,\n \"centerX\": 0,\n \"centerY\": -8.881784197001252e-16\n },\n \"circles\": {\n \"path9\": {\n \"type\": \"circle\",\n \"x\": 0.02379285000000042,\n \"y\": 0.24000550000000054,\n \"radius\": 0.059920847,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/illuminated_push_button_normally_open.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport illuminated_push_button_normally_open_horz from \"./illuminated_push_button_normally_open_horz\"\n\nconst rotatedSymbol = rotateSymbol(illuminated_push_button_normally_open_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path8698\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.20003504999999944,\n \"y\": -0.023826854587889912\n },\n {\n \"x\": -0.20252458999999945,\n \"y\": -0.018993393814014044\n },\n {\n \"x\": -0.20501412999999943,\n \"y\": -0.014174384106555204\n },\n {\n \"x\": -0.2075036699999995,\n \"y\": -0.009384187436300498\n },\n {\n \"x\": -0.20999320999999949,\n \"y\": -0.004636988132081332\n },\n {\n \"x\": -0.2124827499999995,\n \"y\": 0.00005329457033053167\n },\n {\n \"x\": -0.2149722899999995,\n \"y\": 0.004673092344940186\n },\n {\n \"x\": -0.2174618299999995,\n \"y\": 0.009209271428771242\n },\n {\n \"x\": -0.21995136999999956,\n \"y\": 0.013649213595881985\n },\n {\n \"x\": -0.22244090999999955,\n \"y\": 0.01798089395292432\n },\n {\n \"x\": -0.22493044999999956,\n \"y\": 0.022192955076609913\n },\n {\n \"x\": -0.22741998999999957,\n \"y\": 0.02627477703600152\n },\n {\n \"x\": -0.22990952999999958,\n \"y\": 0.030216542867918667\n },\n {\n \"x\": -0.2323990699999996,\n \"y\": 0.03400929910178016\n },\n {\n \"x\": -0.2348886099999996,\n \"y\": 0.03764501096072756\n },\n {\n \"x\": -0.23737814999999962,\n \"y\": 0.04111661189869628\n },\n {\n \"x\": -0.23986768999999963,\n \"y\": 0.04441804716802203\n },\n {\n \"x\": -0.24235722999999965,\n \"y\": 0.04754431114897349\n },\n {\n \"x\": -0.24484676999999966,\n \"y\": 0.05049147821106258\n },\n {\n \"x\": -0.24733630999999967,\n \"y\": 0.053256726915861724\n },\n {\n \"x\": -0.24982584999999968,\n \"y\": 0.05583835741211009\n },\n {\n \"x\": -0.2523153899999997,\n \"y\": 0.05823580191586174\n },\n {\n \"x\": -0.2548049299999997,\n \"y\": 0.060449628211062575\n },\n {\n \"x\": -0.2572944699999997,\n \"y\": 0.0624815361489735\n },\n {\n \"x\": -0.25978400999999973,\n \"y\": 0.06433434716802203\n },\n {\n \"x\": -0.26227354999999974,\n \"y\": 0.06601198689869628\n },\n {\n \"x\": -0.26476308999999976,\n \"y\": 0.06751946096072757\n },\n {\n \"x\": -0.26725262999999977,\n \"y\": 0.06886282410178016\n },\n {\n \"x\": -0.2697421699999998,\n \"y\": 0.07004914286791866\n },\n {\n \"x\": -0.2722317099999998,\n \"y\": 0.0710864520360015\n },\n {\n \"x\": -0.2747212499999998,\n \"y\": 0.07198370507660991\n },\n {\n \"x\": -0.2772107899999998,\n \"y\": 0.07275071895292433\n },\n {\n \"x\": -0.27970032999999983,\n \"y\": 0.07339811359588198\n },\n {\n \"x\": -0.28218986999999984,\n \"y\": 0.07393724642877124\n },\n {\n \"x\": -0.28467940999999986,\n \"y\": 0.07438014234494018\n },\n {\n \"x\": -0.28716894999999987,\n \"y\": 0.07473941957033053\n },\n {\n \"x\": -0.2896584899999999,\n \"y\": 0.07502821186791866\n },\n {\n \"x\": -0.2921480299999999,\n \"y\": 0.07526008756369952\n },\n {\n \"x\": -0.2946375699999999,\n \"y\": 0.07544896589344477\n },\n {\n \"x\": -0.2971271099999999,\n \"y\": 0.07560903118598594\n },\n {\n \"x\": -0.29961664999999993,\n \"y\": 0.07575464541211008\n },\n {\n \"x\": -0.3021061874999999,\n \"y\": 0.07560903118598594\n },\n {\n \"x\": -0.30459572499999993,\n \"y\": 0.07544896589344477\n },\n {\n \"x\": -0.3070852624999999,\n \"y\": 0.07526008756369951\n },\n {\n \"x\": -0.30957479999999993,\n \"y\": 0.07502821186791866\n },\n {\n \"x\": -0.31206433749999984,\n \"y\": 0.07473941957033052\n },\n {\n \"x\": -0.3145538749999998,\n \"y\": 0.07438014234494018\n },\n {\n \"x\": -0.31704341249999984,\n \"y\": 0.07393724642877124\n },\n {\n \"x\": -0.31953294999999987,\n \"y\": 0.07339811359588198\n },\n {\n \"x\": -0.32202248749999984,\n \"y\": 0.07275071895292431\n },\n {\n \"x\": -0.3245120249999998,\n \"y\": 0.07198370507660991\n },\n {\n \"x\": -0.3270015624999998,\n \"y\": 0.0710864520360015\n },\n {\n \"x\": -0.32949109999999976,\n \"y\": 0.07004914286791866\n },\n {\n \"x\": -0.33198063749999984,\n \"y\": 0.06886282410178016\n },\n {\n \"x\": -0.33447017499999976,\n \"y\": 0.06751946096072757\n },\n {\n \"x\": -0.3369597124999998,\n \"y\": 0.06601198689869628\n },\n {\n \"x\": -0.33944924999999976,\n \"y\": 0.06433434716802203\n },\n {\n \"x\": -0.34193878749999973,\n \"y\": 0.06248153614897349\n },\n {\n \"x\": -0.34442832499999976,\n \"y\": 0.06044962821106258\n },\n {\n \"x\": -0.3469178624999997,\n \"y\": 0.05823580191586174\n },\n {\n \"x\": -0.3494073999999997,\n \"y\": 0.05583835741211009\n },\n {\n \"x\": -0.35189693749999973,\n \"y\": 0.053256726915861724\n },\n {\n \"x\": -0.35438647499999965,\n \"y\": 0.050491478211062576\n },\n {\n \"x\": -0.3568760124999997,\n \"y\": 0.0475443111489735\n },\n {\n \"x\": -0.35936554999999964,\n \"y\": 0.04441804716802203\n },\n {\n \"x\": -0.3618550874999996,\n \"y\": 0.04111661189869628\n },\n {\n \"x\": -0.36434462499999964,\n \"y\": 0.03764501096072756\n },\n {\n \"x\": -0.36683416249999967,\n \"y\": 0.03400929910178016\n },\n {\n \"x\": -0.3693236999999996,\n \"y\": 0.030216542867918673\n },\n {\n \"x\": -0.3718132374999996,\n \"y\": 0.02627477703600152\n },\n {\n \"x\": -0.3743027749999996,\n \"y\": 0.022192955076609917\n },\n {\n \"x\": -0.37679231249999956,\n \"y\": 0.017980893952924324\n },\n {\n \"x\": -0.3792818499999996,\n \"y\": 0.013649213595881985\n },\n {\n \"x\": -0.3817713874999995,\n \"y\": 0.00920927142877125\n },\n {\n \"x\": -0.38426092499999953,\n \"y\": 0.004673092344940191\n },\n {\n \"x\": -0.38675046249999956,\n \"y\": 0.00005329457033053514\n },\n {\n \"x\": -0.38923999999999953,\n \"y\": -0.004636988132081328\n },\n {\n \"x\": -0.39172953749999956,\n \"y\": -0.009384187436300498\n },\n {\n \"x\": -0.3942190749999995,\n \"y\": -0.014174384106555197\n },\n {\n \"x\": -0.3967086124999995,\n \"y\": -0.01899339381401404\n },\n {\n \"x\": -0.3991981499999995,\n \"y\": -0.023826854587889912\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8700\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.000872049999999458,\n \"y\": -0.02382615458789039\n },\n {\n \"x\": -0.0033615874999994412,\n \"y\": -0.01899269131401453\n },\n {\n \"x\": -0.0058511249999994245,\n \"y\": -0.014173679106555696\n },\n {\n \"x\": -0.008340662499999407,\n \"y\": -0.009383479936300985\n },\n {\n \"x\": -0.010830199999999391,\n \"y\": -0.004636278132081827\n },\n {\n \"x\": -0.013319737499999373,\n \"y\": 0.00005400707033003174\n },\n {\n \"x\": -0.015809274999999356,\n \"y\": 0.004673807344939683\n },\n {\n \"x\": -0.018298812499999338,\n \"y\": 0.009209988928770731\n },\n {\n \"x\": -0.020788349999999324,\n \"y\": 0.013649933595881476\n },\n {\n \"x\": -0.023277887499999306,\n \"y\": 0.017981616452923805\n },\n {\n \"x\": -0.02576742499999929,\n \"y\": 0.022193680076609393\n },\n {\n \"x\": -0.02825696249999927,\n \"y\": 0.026275504536001\n },\n {\n \"x\": -0.030746499999999254,\n \"y\": 0.030217272867918137\n },\n {\n \"x\": -0.03323603749999924,\n \"y\": 0.034010031601779636\n },\n {\n \"x\": -0.03572557499999922,\n \"y\": 0.03764574596072702\n },\n {\n \"x\": -0.038215112499999204,\n \"y\": 0.04111734939869574\n },\n {\n \"x\": -0.04070464999999919,\n \"y\": 0.04441878716802149\n },\n {\n \"x\": -0.04319418749999917,\n \"y\": 0.04754505364897295\n },\n {\n \"x\": -0.045683724999999155,\n \"y\": 0.05049222321106203\n },\n {\n \"x\": -0.048173262499999134,\n \"y\": 0.05325747441586117\n },\n {\n \"x\": -0.05066279999999912,\n \"y\": 0.055839107412109526\n },\n {\n \"x\": -0.053152337499999106,\n \"y\": 0.05823655441586117\n },\n {\n \"x\": -0.055641874999999084,\n \"y\": 0.06045038321106201\n },\n {\n \"x\": -0.05813141249999907,\n \"y\": 0.06248229364897292\n },\n {\n \"x\": -0.06062094999999905,\n \"y\": 0.06433510716802145\n },\n {\n \"x\": -0.06311048749999904,\n \"y\": 0.0660127493986957\n },\n {\n \"x\": -0.06560002499999902,\n \"y\": 0.06752022596072697\n },\n {\n \"x\": -0.068089562499999,\n \"y\": 0.06886359160177957\n },\n {\n \"x\": -0.07057909999999898,\n \"y\": 0.07004991286791806\n },\n {\n \"x\": -0.07306863749999896,\n \"y\": 0.07108722453600091\n },\n {\n \"x\": -0.07555817499999895,\n \"y\": 0.0719844800766093\n },\n {\n \"x\": -0.07804771249999894,\n \"y\": 0.07275149645292371\n },\n {\n \"x\": -0.08053724999999892,\n \"y\": 0.07339889359588138\n },\n {\n \"x\": -0.0830267874999989,\n \"y\": 0.07393802892877062\n },\n {\n \"x\": -0.08551632499999888,\n \"y\": 0.07438092734493956\n },\n {\n \"x\": -0.08800586249999887,\n \"y\": 0.07474020707032991\n },\n {\n \"x\": -0.09049539999999885,\n \"y\": 0.07502900186791804\n },\n {\n \"x\": -0.09298493749999884,\n \"y\": 0.07526088006369888\n },\n {\n \"x\": -0.09547447499999881,\n \"y\": 0.07544976089344414\n },\n {\n \"x\": -0.0979640124999988,\n \"y\": 0.0756098286859853\n },\n {\n \"x\": -0.10045354999999878,\n \"y\": 0.07575544541210943\n },\n {\n \"x\": -0.1029430899999988,\n \"y\": 0.0756098286859853\n },\n {\n \"x\": -0.1054326299999988,\n \"y\": 0.07544976089344414\n },\n {\n \"x\": -0.10792216999999882,\n \"y\": 0.07526088006369887\n },\n {\n \"x\": -0.11041170999999883,\n \"y\": 0.07502900186791804\n },\n {\n \"x\": -0.11290124999999884,\n \"y\": 0.0747402070703299\n },\n {\n \"x\": -0.11539078999999886,\n \"y\": 0.07438092734493956\n },\n {\n \"x\": -0.11788032999999885,\n \"y\": 0.07393802892877062\n },\n {\n \"x\": -0.1203698699999989,\n \"y\": 0.07339889359588138\n },\n {\n \"x\": -0.12285940999999889,\n \"y\": 0.07275149645292371\n },\n {\n \"x\": -0.1253489499999989,\n \"y\": 0.0719844800766093\n },\n {\n \"x\": -0.12783848999999892,\n \"y\": 0.07108722453600091\n },\n {\n \"x\": -0.13032802999999893,\n \"y\": 0.07004991286791806\n },\n {\n \"x\": -0.13281756999999894,\n \"y\": 0.06886359160177957\n },\n {\n \"x\": -0.13530710999999895,\n \"y\": 0.06752022596072697\n },\n {\n \"x\": -0.13779664999999897,\n \"y\": 0.0660127493986957\n },\n {\n \"x\": -0.14028618999999898,\n \"y\": 0.06433510716802145\n },\n {\n \"x\": -0.142775729999999,\n \"y\": 0.06248229364897291\n },\n {\n \"x\": -0.145265269999999,\n \"y\": 0.06045038321106202\n },\n {\n \"x\": -0.14775480999999901,\n \"y\": 0.05823655441586117\n },\n {\n \"x\": -0.15024434999999903,\n \"y\": 0.055839107412109526\n },\n {\n \"x\": -0.15273388999999904,\n \"y\": 0.05325747441586117\n },\n {\n \"x\": -0.15522342999999905,\n \"y\": 0.05049222321106202\n },\n {\n \"x\": -0.15771296999999906,\n \"y\": 0.047545053648972956\n },\n {\n \"x\": -0.16020250999999908,\n \"y\": 0.04441878716802149\n },\n {\n \"x\": -0.1626920499999991,\n \"y\": 0.04111734939869574\n },\n {\n \"x\": -0.1651815899999991,\n \"y\": 0.03764574596072702\n },\n {\n \"x\": -0.16767112999999914,\n \"y\": 0.034010031601779636\n },\n {\n \"x\": -0.1701606699999991,\n \"y\": 0.03021727286791814\n },\n {\n \"x\": -0.17265020999999914,\n \"y\": 0.026275504536001\n },\n {\n \"x\": -0.17513974999999915,\n \"y\": 0.022193680076609396\n },\n {\n \"x\": -0.17762928999999916,\n \"y\": 0.017981616452923805\n },\n {\n \"x\": -0.1801188299999992,\n \"y\": 0.013649933595881474\n },\n {\n \"x\": -0.18260836999999916,\n \"y\": 0.00920998892877074\n },\n {\n \"x\": -0.1850979099999992,\n \"y\": 0.0046738073449396865\n },\n {\n \"x\": -0.1875874499999992,\n \"y\": 0.00005400707033003521\n },\n {\n \"x\": -0.19007698999999922,\n \"y\": -0.004636278132081827\n },\n {\n \"x\": -0.19256652999999926,\n \"y\": -0.009383479936300985\n },\n {\n \"x\": -0.19505606999999922,\n \"y\": -0.01417367910655569\n },\n {\n \"x\": -0.19754560999999926,\n \"y\": -0.018992691314014522\n },\n {\n \"x\": -0.20003514999999927,\n \"y\": -0.02382615458789039\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8702\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19829105000000036,\n \"y\": -0.02382615458789039\n },\n {\n \"x\": 0.19580151000000035,\n \"y\": -0.01899269131401453\n },\n {\n \"x\": 0.1933119700000003,\n \"y\": -0.014173679106555696\n },\n {\n \"x\": 0.19082243000000035,\n \"y\": -0.009383479936300985\n },\n {\n \"x\": 0.1883328900000003,\n \"y\": -0.004636278132081827\n },\n {\n \"x\": 0.1858433500000003,\n \"y\": 0.00005400707033003174\n },\n {\n \"x\": 0.18335381000000028,\n \"y\": 0.004673807344939683\n },\n {\n \"x\": 0.18086427000000024,\n \"y\": 0.009209988928770731\n },\n {\n \"x\": 0.1783747300000003,\n \"y\": 0.013649933595881476\n },\n {\n \"x\": 0.17588519000000025,\n \"y\": 0.017981616452923805\n },\n {\n \"x\": 0.17339565000000023,\n \"y\": 0.022193680076609393\n },\n {\n \"x\": 0.17090611000000022,\n \"y\": 0.026275504536001\n },\n {\n \"x\": 0.16841657000000018,\n \"y\": 0.030217272867918137\n },\n {\n \"x\": 0.16592703000000023,\n \"y\": 0.034010031601779636\n },\n {\n \"x\": 0.16343749000000019,\n \"y\": 0.03764574596072702\n },\n {\n \"x\": 0.16094795000000017,\n \"y\": 0.04111734939869574\n },\n {\n \"x\": 0.15845841000000016,\n \"y\": 0.04441878716802149\n },\n {\n \"x\": 0.15596887000000015,\n \"y\": 0.04754505364897295\n },\n {\n \"x\": 0.15347933000000014,\n \"y\": 0.05049222321106203\n },\n {\n \"x\": 0.15098979000000012,\n \"y\": 0.05325747441586117\n },\n {\n \"x\": 0.1485002500000001,\n \"y\": 0.055839107412109526\n },\n {\n \"x\": 0.1460107100000001,\n \"y\": 0.05823655441586117\n },\n {\n \"x\": 0.1435211700000001,\n \"y\": 0.06045038321106201\n },\n {\n \"x\": 0.14103163000000007,\n \"y\": 0.06248229364897292\n },\n {\n \"x\": 0.13854209000000006,\n \"y\": 0.06433510716802145\n },\n {\n \"x\": 0.13605255000000005,\n \"y\": 0.0660127493986957\n },\n {\n \"x\": 0.13356301000000004,\n \"y\": 0.06752022596072697\n },\n {\n \"x\": 0.13107347000000003,\n \"y\": 0.06886359160177957\n },\n {\n \"x\": 0.12858393,\n \"y\": 0.07004991286791806\n },\n {\n \"x\": 0.12609439,\n \"y\": 0.07108722453600091\n },\n {\n \"x\": 0.12360484999999999,\n \"y\": 0.0719844800766093\n },\n {\n \"x\": 0.12111530999999998,\n \"y\": 0.07275149645292371\n },\n {\n \"x\": 0.11862576999999996,\n \"y\": 0.07339889359588138\n },\n {\n \"x\": 0.11613622999999995,\n \"y\": 0.07393802892877062\n },\n {\n \"x\": 0.11364668999999994,\n \"y\": 0.07438092734493956\n },\n {\n \"x\": 0.11115714999999993,\n \"y\": 0.07474020707032991\n },\n {\n \"x\": 0.10866760999999991,\n \"y\": 0.07502900186791804\n },\n {\n \"x\": 0.1061780699999999,\n \"y\": 0.07526088006369888\n },\n {\n \"x\": 0.10368852999999989,\n \"y\": 0.07544976089344414\n },\n {\n \"x\": 0.10119898999999988,\n \"y\": 0.0756098286859853\n },\n {\n \"x\": 0.09870944999999987,\n \"y\": 0.07575544541210943\n },\n {\n \"x\": 0.09621991249999988,\n \"y\": 0.0756098286859853\n },\n {\n \"x\": 0.0937303749999999,\n \"y\": 0.07544976089344414\n },\n {\n \"x\": 0.09124083749999992,\n \"y\": 0.07526088006369887\n },\n {\n \"x\": 0.08875129999999994,\n \"y\": 0.07502900186791804\n },\n {\n \"x\": 0.08626176249999995,\n \"y\": 0.0747402070703299\n },\n {\n \"x\": 0.08377222499999996,\n \"y\": 0.07438092734493956\n },\n {\n \"x\": 0.08128268749999998,\n \"y\": 0.07393802892877062\n },\n {\n \"x\": 0.07879315,\n \"y\": 0.07339889359588138\n },\n {\n \"x\": 0.07630361250000002,\n \"y\": 0.07275149645292371\n },\n {\n \"x\": 0.07381407500000003,\n \"y\": 0.0719844800766093\n },\n {\n \"x\": 0.07132453750000005,\n \"y\": 0.07108722453600091\n },\n {\n \"x\": 0.06883500000000006,\n \"y\": 0.07004991286791806\n },\n {\n \"x\": 0.06634546250000009,\n \"y\": 0.06886359160177957\n },\n {\n \"x\": 0.0638559250000001,\n \"y\": 0.06752022596072697\n },\n {\n \"x\": 0.06136638750000012,\n \"y\": 0.0660127493986957\n },\n {\n \"x\": 0.05887685000000013,\n \"y\": 0.06433510716802145\n },\n {\n \"x\": 0.05638731250000015,\n \"y\": 0.06248229364897291\n },\n {\n \"x\": 0.053897775000000175,\n \"y\": 0.06045038321106202\n },\n {\n \"x\": 0.05140823750000019,\n \"y\": 0.05823655441586117\n },\n {\n \"x\": 0.048918700000000204,\n \"y\": 0.055839107412109526\n },\n {\n \"x\": 0.04642916250000022,\n \"y\": 0.05325747441586117\n },\n {\n \"x\": 0.04393962500000023,\n \"y\": 0.05049222321106202\n },\n {\n \"x\": 0.04145008750000026,\n \"y\": 0.047545053648972956\n },\n {\n \"x\": 0.038960550000000274,\n \"y\": 0.04441878716802149\n },\n {\n \"x\": 0.03647101250000029,\n \"y\": 0.04111734939869574\n },\n {\n \"x\": 0.0339814750000003,\n \"y\": 0.03764574596072702\n },\n {\n \"x\": 0.03149193750000032,\n \"y\": 0.034010031601779636\n },\n {\n \"x\": 0.02900240000000034,\n \"y\": 0.03021727286791814\n },\n {\n \"x\": 0.02651286250000036,\n \"y\": 0.026275504536001\n },\n {\n \"x\": 0.024023325000000373,\n \"y\": 0.022193680076609396\n },\n {\n \"x\": 0.021533787500000387,\n \"y\": 0.017981616452923805\n },\n {\n \"x\": 0.019044250000000405,\n \"y\": 0.013649933595881474\n },\n {\n \"x\": 0.016554712500000426,\n \"y\": 0.00920998892877074\n },\n {\n \"x\": 0.014065175000000442,\n \"y\": 0.0046738073449396865\n },\n {\n \"x\": 0.011575637500000457,\n \"y\": 0.00005400707033003521\n },\n {\n \"x\": 0.009086100000000473,\n \"y\": -0.004636278132081827\n },\n {\n \"x\": 0.006596562500000487,\n \"y\": -0.009383479936300985\n },\n {\n \"x\": 0.004107025000000513,\n \"y\": -0.01417367910655569\n },\n {\n \"x\": 0.0016174875000005274,\n \"y\": -0.018992691314014522\n },\n {\n \"x\": -0.000872049999999458,\n \"y\": -0.02382615458789039\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.39745405000000034,\n \"y\": -0.02382615458789039\n },\n {\n \"x\": 0.3949645125000003,\n \"y\": -0.01899269131401453\n },\n {\n \"x\": 0.39247497500000034,\n \"y\": -0.014173679106555696\n },\n {\n \"x\": 0.3899854375000004,\n \"y\": -0.009383479936300985\n },\n {\n \"x\": 0.38749590000000045,\n \"y\": -0.004636278132081827\n },\n {\n \"x\": 0.3850063625000004,\n \"y\": 0.00005400707033003174\n },\n {\n \"x\": 0.3825168250000004,\n \"y\": 0.004673807344939683\n },\n {\n \"x\": 0.3800272875000004,\n \"y\": 0.009209988928770731\n },\n {\n \"x\": 0.3775377500000005,\n \"y\": 0.013649933595881476\n },\n {\n \"x\": 0.37504821250000053,\n \"y\": 0.017981616452923805\n },\n {\n \"x\": 0.3725586750000005,\n \"y\": 0.022193680076609393\n },\n {\n \"x\": 0.3700691375000005,\n \"y\": 0.026275504536001\n },\n {\n \"x\": 0.3675796000000005,\n \"y\": 0.030217272867918137\n },\n {\n \"x\": 0.3650900625000006,\n \"y\": 0.034010031601779636\n },\n {\n \"x\": 0.3626005250000006,\n \"y\": 0.03764574596072702\n },\n {\n \"x\": 0.3601109875000006,\n \"y\": 0.04111734939869574\n },\n {\n \"x\": 0.35762145000000056,\n \"y\": 0.04441878716802149\n },\n {\n \"x\": 0.3551319125000006,\n \"y\": 0.04754505364897295\n },\n {\n \"x\": 0.3526423750000007,\n \"y\": 0.05049222321106203\n },\n {\n \"x\": 0.3501528375000007,\n \"y\": 0.05325747441586117\n },\n {\n \"x\": 0.3476633000000007,\n \"y\": 0.055839107412109526\n },\n {\n \"x\": 0.34517376250000065,\n \"y\": 0.05823655441586117\n },\n {\n \"x\": 0.34268422500000073,\n \"y\": 0.06045038321106201\n },\n {\n \"x\": 0.3401946875000007,\n \"y\": 0.06248229364897292\n },\n {\n \"x\": 0.3377051500000008,\n \"y\": 0.06433510716802145\n },\n {\n \"x\": 0.33521561250000076,\n \"y\": 0.0660127493986957\n },\n {\n \"x\": 0.33272607500000073,\n \"y\": 0.06752022596072697\n },\n {\n \"x\": 0.3302365375000008,\n \"y\": 0.06886359160177957\n },\n {\n \"x\": 0.3277470000000008,\n \"y\": 0.07004991286791806\n },\n {\n \"x\": 0.3252574625000008,\n \"y\": 0.07108722453600091\n },\n {\n \"x\": 0.32276792500000084,\n \"y\": 0.0719844800766093\n },\n {\n \"x\": 0.32027838750000087,\n \"y\": 0.07275149645292371\n },\n {\n \"x\": 0.3177888500000009,\n \"y\": 0.07339889359588138\n },\n {\n \"x\": 0.3152993125000009,\n \"y\": 0.07393802892877062\n },\n {\n \"x\": 0.3128097750000009,\n \"y\": 0.07438092734493956\n },\n {\n \"x\": 0.31032023750000093,\n \"y\": 0.07474020707032991\n },\n {\n \"x\": 0.30783070000000096,\n \"y\": 0.07502900186791804\n },\n {\n \"x\": 0.305341162500001,\n \"y\": 0.07526088006369888\n },\n {\n \"x\": 0.30285162500000096,\n \"y\": 0.07544976089344414\n },\n {\n \"x\": 0.300362087500001,\n \"y\": 0.0756098286859853\n },\n {\n \"x\": 0.297872550000001,\n \"y\": 0.07575544541210943\n },\n {\n \"x\": 0.29538301000000095,\n \"y\": 0.0756098286859853\n },\n {\n \"x\": 0.292893470000001,\n \"y\": 0.07544976089344414\n },\n {\n \"x\": 0.290403930000001,\n \"y\": 0.07526088006369887\n },\n {\n \"x\": 0.287914390000001,\n \"y\": 0.07502900186791804\n },\n {\n \"x\": 0.28542485000000095,\n \"y\": 0.0747402070703299\n },\n {\n \"x\": 0.2829353100000009,\n \"y\": 0.07438092734493956\n },\n {\n \"x\": 0.2804457700000009,\n \"y\": 0.07393802892877062\n },\n {\n \"x\": 0.2779562300000009,\n \"y\": 0.07339889359588138\n },\n {\n \"x\": 0.2754666900000009,\n \"y\": 0.07275149645292371\n },\n {\n \"x\": 0.2729771500000009,\n \"y\": 0.0719844800766093\n },\n {\n \"x\": 0.2704876100000009,\n \"y\": 0.07108722453600091\n },\n {\n \"x\": 0.26799807000000087,\n \"y\": 0.07004991286791806\n },\n {\n \"x\": 0.26550853000000085,\n \"y\": 0.06886359160177957\n },\n {\n \"x\": 0.26301899000000084,\n \"y\": 0.06752022596072697\n },\n {\n \"x\": 0.26052945000000083,\n \"y\": 0.0660127493986957\n },\n {\n \"x\": 0.2580399100000008,\n \"y\": 0.06433510716802145\n },\n {\n \"x\": 0.2555503700000008,\n \"y\": 0.06248229364897291\n },\n {\n \"x\": 0.2530608300000008,\n \"y\": 0.06045038321106202\n },\n {\n \"x\": 0.2505712900000008,\n \"y\": 0.05823655441586117\n },\n {\n \"x\": 0.24808175000000077,\n \"y\": 0.055839107412109526\n },\n {\n \"x\": 0.24559221000000075,\n \"y\": 0.05325747441586117\n },\n {\n \"x\": 0.24310267000000074,\n \"y\": 0.05049222321106202\n },\n {\n \"x\": 0.24061313000000073,\n \"y\": 0.047545053648972956\n },\n {\n \"x\": 0.23812359000000072,\n \"y\": 0.04441878716802149\n },\n {\n \"x\": 0.2356340500000007,\n \"y\": 0.04111734939869574\n },\n {\n \"x\": 0.2331445100000007,\n \"y\": 0.03764574596072702\n },\n {\n \"x\": 0.23065497000000068,\n \"y\": 0.034010031601779636\n },\n {\n \"x\": 0.22816543000000067,\n \"y\": 0.03021727286791814\n },\n {\n \"x\": 0.22567589000000066,\n \"y\": 0.026275504536001\n },\n {\n \"x\": 0.22318635000000064,\n \"y\": 0.022193680076609396\n },\n {\n \"x\": 0.22069681000000063,\n \"y\": 0.017981616452923805\n },\n {\n \"x\": 0.21820727000000062,\n \"y\": 0.013649933595881474\n },\n {\n \"x\": 0.2157177300000006,\n \"y\": 0.00920998892877074\n },\n {\n \"x\": 0.2132281900000006,\n \"y\": 0.0046738073449396865\n },\n {\n \"x\": 0.21073865000000058,\n \"y\": 0.00005400707033003521\n },\n {\n \"x\": 0.20824911000000057,\n \"y\": -0.004636278132081827\n },\n {\n \"x\": 0.20575957000000056,\n \"y\": -0.009383479936300985\n },\n {\n \"x\": 0.20327003000000055,\n \"y\": -0.01417367910655569\n },\n {\n \"x\": 0.20078049000000053,\n \"y\": -0.018992691314014522\n },\n {\n \"x\": 0.19829095000000052,\n \"y\": -0.02382615458789039\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8706\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4023286499999996,\n \"y\": -0.022544054587890106\n },\n {\n \"x\": -0.5293590499999994,\n \"y\": -0.022544054587890106\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8706-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5261604500000003,\n \"y\": -0.027111054587890093\n },\n {\n \"x\": 0.39913004999999946,\n \"y\": -0.027111054587890093\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0040821499999992295,\n \"y\": 0.22997364541210996\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.004252755294839927,\n \"y\": -0.22997364541210996\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5504428500000003,\n \"y\": -0.021272154587890446\n },\n \"right1\": {\n \"x\": 0.5504428500000005,\n \"y\": -0.026521254587889898\n }\n },\n \"bounds\": {\n \"minX\": -0.5786012910000002,\n \"maxX\": 0.5786012910000005,\n \"minY\": -0.22997364541210996,\n \"maxY\": 0.22997364541210996,\n \"width\": 1.1572025820000007,\n \"height\": 0.4599472908242199,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/inductor.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport inductor_right from \"./inductor_right\"\n\nexport default rotateSymbol(inductor_right, \"up\")\n","import { flipSymbolOverXAxis } from \"drawing/rotateSymbol\"\nimport inductor_up from \"./inductor_up\"\n\nexport default flipSymbolOverXAxis(inductor_up)\n","import { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\nimport inductor_right from \"./inductor_right\"\n\nexport default flipSymbolOverYAxis(inductor_right)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5274831500000006,\n \"y\": -0.05991764999999982\n },\n {\n \"x\": -0.14891374999999996,\n \"y\": -0.06254064999999964\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13221874999999983,\n \"y\": -0.048856449999999496\n },\n {\n \"x\": -0.13236425000000063,\n \"y\": -0.18114814999999918\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13236425000000063,\n \"y\": 0.08343525000000018\n },\n {\n \"x\": 0.13221874999999983,\n \"y\": -0.048856449999999496\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13236425000000063,\n \"y\": -0.18114814999999984\n },\n {\n \"x\": -0.13236425000000063,\n \"y\": 0.08343525000000018\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13221874999999983,\n \"y\": 0.08343525000000018\n },\n {\n \"x\": 0.13221874999999983,\n \"y\": -0.18114814999999984\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13582535000000018,\n \"y\": -0.04942524999999942\n },\n {\n \"x\": 0.533952450000001,\n \"y\": -0.059917649999999156\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.02944535000000048,\n \"y\": 0.39378525000000053\n },\n {\n \"x\": -0.05325954999999993,\n \"y\": 0.4660362500000006\n },\n {\n \"x\": -0.07725114999999949,\n \"y\": 0.39386225000000086\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05361965000000035,\n \"y\": 0.27387525000000035\n },\n {\n \"x\": -0.053592050000000446,\n \"y\": 0.2865022500000003\n },\n {\n \"x\": -0.05330205000000077,\n \"y\": 0.41436425000000066\n },\n {\n \"x\": -0.05311205000000019,\n \"y\": 0.4152642500000008\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9-8-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.06865195000000024,\n \"y\": 0.39378525000000053\n },\n {\n \"x\": 0.044837750000000565,\n \"y\": 0.4660362500000006\n },\n {\n \"x\": 0.02084615000000123,\n \"y\": 0.39386225000000086\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5-5-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.044477650000000146,\n \"y\": 0.27387525000000035\n },\n {\n \"x\": 0.044505250000000274,\n \"y\": 0.2865022500000003\n },\n {\n \"x\": 0.04479524999999995,\n \"y\": 0.41436425000000066\n },\n {\n \"x\": 0.04498525000000053,\n \"y\": 0.4152642500000008\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.03124844999999965,\n \"y\": 0.05895145000000013\n },\n {\n \"x\": 0.03124844999999965,\n \"y\": -0.16452955000000036\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.25206924999999947,\n \"y\": 0.3769550499999994\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.006614550000000552,\n \"y\": -0.4660362500000004\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54139845,\n \"y\": -0.060770450000000364\n },\n \"right1\": {\n \"x\": 0.5413984499999995,\n \"y\": -0.0597740500000008\n }\n },\n \"bounds\": {\n \"minX\": -0.569556891,\n \"maxX\": 0.5695568909999995,\n \"minY\": -0.4660362500000004,\n \"maxY\": 0.4660362500000006,\n \"width\": 1.1391137819999995,\n \"height\": 0.932072500000001,\n \"centerX\": -2.220446049250313e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000003116,\n \"y\": -0.05278935000000051,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/laser_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nsvgJson.bounds.width += 0.2\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport laser_diode_horz from \"./laser_diode_horz\"\n\nconst rotatedSymbol = rotateSymbol(laser_diode_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")\n\nconst ref = texts.find((t) => t.text === \"{VAL}\")!\n\nref.x = -0.52\nref.anchor = \"middle_right\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13585750000000063,\n \"y\": -0.003696399999999045\n },\n {\n \"x\": -0.12872579999999934,\n \"y\": -0.13598810000000228\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12763670000000094,\n \"y\": -0.003920199999999596\n },\n {\n \"x\": 0.5265564000000009,\n \"y\": -0.003920199999999596\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path46\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12872579999999934,\n \"y\": 0.12859530000000063\n },\n {\n \"x\": 0.13585750000000063,\n \"y\": -0.003696399999999045\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path47\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12872579999999934,\n \"y\": -0.13598810000000228\n },\n {\n \"x\": -0.12872579999999934,\n \"y\": 0.12859530000000063\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13585750000000063,\n \"y\": 0.12859530000000063\n },\n {\n \"x\": 0.13585750000000063,\n \"y\": -0.13598810000000228\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path49\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13076959999999938,\n \"y\": -0.003696399999999045\n },\n {\n \"x\": -0.5256007999999994,\n \"y\": -0.003696399999999045\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n\"path25\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1557438999999996,\n \"y\": 0.28545279999999806\n },\n {\n \"x\": 0.2530861999999994,\n \"y\": 0.3023319999999998\n },\n {\n \"x\": 0.21878339999999952,\n \"y\": 0.20956920000000068\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n}\n,\n\"path78\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08000449999999937,\n \"y\": 0.16590799999999817\n },\n {\n \"x\": 0.09202799999999911,\n \"y\": 0.1748410000000007\n },\n {\n \"x\": 0.2137844999999996,\n \"y\": 0.26529680000000155\n },\n {\n \"x\": 0.2144144999999993,\n \"y\": 0.2662468000000011\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n}\n,\n\"path25-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.021722400000000697,\n \"y\": 0.30658939999999646\n },\n {\n \"x\": 0.07561989999999952,\n \"y\": 0.3234685999999982\n },\n {\n \"x\": 0.04131709999999922,\n \"y\": 0.23070579999999907\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n}\n,\n\"path78-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09746180000000093,\n \"y\": 0.18704459999999656\n },\n {\n \"x\": -0.08543830000000074,\n \"y\": 0.19597759999999909\n },\n {\n \"x\": 0.0363181999999993,\n \"y\": 0.28643339999999995\n },\n {\n \"x\": 0.03694819999999943,\n \"y\": 0.2873833999999995\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n}\n\n },\n \"texts\": {\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.0,\n \"y\": -0.2134685999999982\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.0,\n \"y\": 0.4086570000000106\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5362092999999997,\n \"y\": -0.004432900000001183\n },\n \"right1\": {\n \"x\": 0.5362093000000003,\n \"y\": -0.004886400000003732\n }\n },\n \"bounds\": {\n \"minX\": -0.5643677409999996,\n \"maxX\": 0.5643677410000003,\n \"minY\": -0.3234685999999982,\n \"maxY\": 0.3234685999999982,\n \"width\": 1.128735482,\n \"height\": 0.6469371999999964,\n \"centerX\": 3.3306690738754696e-16,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/led.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.bottom1, anchor: \"middle_top\" },\n { ...texts.right1, anchor: \"middle_bottom\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport led_right from \"./led_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(led_right, \"up\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.21\nref.x = 0.21\nval.y -= 0.21\nval.x = 0.21\n\nexport default symbol\n","import { flipSymbolOverXAxis, rotateSymbol } from \"drawing/rotateSymbol\"\nimport led_up from \"./led_up\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = flipSymbolOverXAxis(led_up)\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.4\nref.x = 0.2\nval.y -= 0.41\nval.x = 0.2\n\nexport default symbol\n","import { flipSymbolOverYAxis, rotateSymbol } from \"drawing/rotateSymbol\"\nimport led_right from \"./led_right\"\n\nexport default flipSymbolOverYAxis(led_right)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5053201665812097,\n \"y\": -0.010839730805804138\n },\n {\n \"x\": -0.1829962316128657,\n \"y\": -0.010839730805804138\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1674747072814866,\n \"y\": -0.11471502212593476\n },\n {\n \"x\": -0.1674747072814866,\n \"y\": 0.07736981415388478\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1674747072814866,\n \"y\": -0.11632056223474518\n },\n {\n \"x\": 0.16018133830019532,\n \"y\": -0.11632056223474518\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1674747072814866,\n \"y\": 0.07736981415388478\n },\n {\n \"x\": 0.16018133830019532,\n \"y\": 0.07736981415388478\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.17205869804197382,\n \"y\": -0.010839950577224311\n },\n {\n \"x\": 0.5116721586832798,\n \"y\": -0.010839950577224311\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-2-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.16064490317338742,\n \"y\": -0.11622177498145403\n },\n {\n \"x\": 0.16064490317338742,\n \"y\": 0.07727135655772521\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.40391896081308554,\n \"y\": -0.2111951150487743\n },\n {\n \"x\": -0.32538818309991635,\n \"y\": -0.1776462385858042\n },\n {\n \"x\": -0.33843942905204627,\n \"y\": -0.26928059146906413\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4470989190253618,\n \"y\": -0.3351265263866847\n },\n {\n \"x\": -0.4385525777085817,\n \"y\": -0.32468848279378437\n },\n {\n \"x\": -0.3520048317368336,\n \"y\": -0.21897414423109507\n },\n {\n \"x\": -0.3516268465799328,\n \"y\": -0.21798517284109487\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.30220674110432255,\n \"y\": -0.3403193953841548\n },\n {\n \"x\": -0.22367596339115314,\n \"y\": -0.30677051892118534\n },\n {\n \"x\": -0.23672720934328306,\n \"y\": -0.3984048718044453\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3453866993165988,\n \"y\": -0.464250806722065\n },\n {\n \"x\": -0.3368403579998187,\n \"y\": -0.45381276312916397\n },\n {\n \"x\": -0.2502926120280704,\n \"y\": -0.34809842456647466\n },\n {\n \"x\": -0.24991462687116983,\n \"y\": -0.34710945317647446\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.1679477702432366,\n \"y\": -0.40859918889256375\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.006410773639930811,\n \"y\": 0.464250806722065\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5247194309452994,\n \"y\": -0.009902515585214156\n },\n \"right1\": {\n \"x\": 0.5247194309452992,\n \"y\": -0.010997416799653603\n }\n },\n \"bounds\": {\n \"minX\": -0.5520103866874645,\n \"maxX\": 0.5520103866874643,\n \"minY\": -0.5085991888925637,\n \"maxY\": 0.464250806722065,\n \"width\": 1.1040207733749288,\n \"height\": 0.6228499956146287,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": -0.022174191085249373\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.003646732950281173,\n \"y\": -0.018672603986024328,\n \"radius\": 0.2796529289238723,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/light_dependent_resistor.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_left\", x: 0 },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport light_dependent_resistor_horz from \"./light_dependent_resistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(light_dependent_resistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path208\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3843021704999998,\n \"y\": 0.13154093999999894\n },\n {\n \"x\": 0.5165938705000004,\n \"y\": -0.13304206000000107\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path209\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.25201047050000014,\n \"y\": -0.13304206000000107\n },\n {\n \"x\": 0.3843021704999998,\n \"y\": 0.13154093999999894\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path210\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5165938705000004,\n \"y\": -0.13304206000000107\n },\n {\n \"x\": 0.25201047050000014,\n \"y\": -0.13304206000000107\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path211\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.25201047050000014,\n \"y\": 0.13154093999999894\n },\n {\n \"x\": 0.5165938705000004,\n \"y\": 0.13154093999999894\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path212\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.11971887050000074,\n \"y\": -0.39762406000000006\n },\n {\n \"x\": 0.3843021704999998,\n \"y\": -0.39762406000000006\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path213\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3843021704999998,\n \"y\": 0.39612494\n },\n {\n \"x\": 0.11971887050000074,\n \"y\": 0.39612494\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path214\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.11971887050000074,\n \"y\": 0.5284169399999996\n },\n {\n \"x\": 0.11971887050000074,\n \"y\": 0.18445994\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path215\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.11971887050000074,\n \"y\": -0.5299150600000004\n },\n {\n \"x\": 0.11971887050000074,\n \"y\": -0.0007480600000011606\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path216\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3843021704999998,\n \"y\": -0.39762469000000067\n },\n {\n \"x\": 0.3843021704999998,\n \"y\": 0.3961256399999993\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path217\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1448644295000001,\n \"y\": 0.2638359399999999\n },\n {\n \"x\": -0.1448644295000001,\n \"y\": -0.26533006000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path218\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22423942949999898,\n \"y\": -0.2653310599999994\n },\n {\n \"x\": -0.22423942949999898,\n \"y\": 0.26383493999999885\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path219\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5417394294999998,\n \"y\": -0.26533006000000015\n },\n {\n \"x\": -0.22423942949999898,\n \"y\": -0.2653320600000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path220\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1448644295000001,\n \"y\": -0.18595506000000128\n },\n {\n \"x\": 0.11971897050000013,\n \"y\": -0.18595506000000128\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path221\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1448644295000001,\n \"y\": 0.18446093999999924\n },\n {\n \"x\": 0.11971897050000013,\n \"y\": 0.18446093999999924\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path222\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06548942950000036,\n \"y\": -0.0007480600000011606\n },\n {\n \"x\": 0.11971887050000074,\n \"y\": -0.0007480600000011606\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.5715500704999998,\n \"y\": 0.02044358999999929\n },\n \"right2\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.5701646705000005,\n \"y\": 0.2085436499999993\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.12018067049999992,\n \"y\": 0.5432738300000004\n },\n \"bottom1\": {\n \"x\": 0.11982247050000083,\n \"y\": -0.5432738300000004\n },\n \"left1\": {\n \"x\": -0.5433916295000003,\n \"y\": -0.2663988600000007\n }\n },\n \"bounds\": {\n \"minX\": -0.5715500705000003,\n \"maxX\": 0.5715500704999998,\n \"minY\": -0.5714322710000004,\n \"maxY\": 0.5714322710000004,\n \"width\": 1.1431001410000001,\n \"height\": 1.1428645420000008,\n \"centerX\": -2.220446049250313e-16,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/mosfet_depletion_normally_on.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.right1, anchor: \"middle_left\" },\n { ...texts.right2, anchor: \"middle_left\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width + 0.4, height: bounds.height },\n center: { x: bounds.centerX + 0.2, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport mosfet_depletion_normally_on_horz from \"./mosfet_depletion_normally_on_horz\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(mosfet_depletion_normally_on_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_top\"\nval.anchor = \"middle_top\"\n\nref.x = val.x\n\nval.y += 0.15\n\nexport default rotated\n","{\n \"paths\": {\n \"path12-1-8-6-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.005962250000000502,\n \"y\": 0.06921149999999976\n },\n {\n \"x\": 0.005962250000000502,\n \"y\": -0.005086499999999106\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.48740705000000073,\n \"y\": -0.09299450000000142\n },\n {\n \"x\": -0.17310075000000058,\n \"y\": -0.09299450000000142\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.16008695000000017,\n \"y\": -0.010660500000000184\n },\n {\n \"x\": 0.1719709499999995,\n \"y\": -0.010660500000000184\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1954987499999996,\n \"y\": -0.09260549999999945\n },\n {\n \"x\": 0.4881436499999996,\n \"y\": -0.09260549999999945\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09950044999999985,\n \"y\": 0.05839450000000035\n },\n {\n \"x\": -0.09950104999999976,\n \"y\": 0.06197449999999982\n },\n {\n \"x\": -0.09932044999999956,\n \"y\": 0.06550449999999941\n },\n {\n \"x\": -0.09896044999999987,\n \"y\": 0.0690104999999992\n },\n {\n \"x\": -0.09860045000000017,\n \"y\": 0.07250049999999852\n },\n {\n \"x\": -0.09806045000000019,\n \"y\": 0.07593049999999835\n },\n {\n \"x\": -0.09735344999999995,\n \"y\": 0.07929949999999941\n },\n {\n \"x\": -0.09663345000000056,\n \"y\": 0.08265950000000011\n },\n {\n \"x\": -0.09578045000000035,\n \"y\": 0.08599949999999978\n },\n {\n \"x\": -0.09475245000000054,\n \"y\": 0.08924949999999932\n },\n {\n \"x\": -0.09379245000000047,\n \"y\": 0.09255949999999835\n },\n {\n \"x\": -0.09254545000000025,\n \"y\": 0.09567949999999925\n },\n {\n \"x\": -0.09120844999999989,\n \"y\": 0.09877950000000091\n },\n {\n \"x\": -0.08986644999999971,\n \"y\": 0.10186950000000117\n },\n {\n \"x\": -0.08839545000000015,\n \"y\": 0.10492949999999901\n },\n {\n \"x\": -0.08675845000000049,\n \"y\": 0.10783949999999898\n },\n {\n \"x\": -0.08506245000000057,\n \"y\": 0.11069950000000084\n },\n {\n \"x\": -0.08334244999999996,\n \"y\": 0.11360950000000081\n },\n {\n \"x\": -0.08146945000000017,\n \"y\": 0.11638949999999859\n },\n {\n \"x\": -0.0795824500000002,\n \"y\": 0.11916949999999993\n },\n {\n \"x\": -0.07752845000000086,\n \"y\": 0.12180949999999946\n },\n {\n \"x\": -0.07546944999999994,\n \"y\": 0.12442949999999975\n },\n {\n \"x\": -0.07325945000000011,\n \"y\": 0.12693950000000065\n },\n {\n \"x\": -0.07104145000000006,\n \"y\": 0.129449499999998\n },\n {\n \"x\": -0.06867544999999975,\n \"y\": 0.13182950000000027\n },\n {\n \"x\": -0.06628845000000005,\n \"y\": 0.1341695000000005\n },\n {\n \"x\": -0.06379544999999975,\n \"y\": 0.1364194999999988\n },\n {\n \"x\": -0.06114145000000004,\n \"y\": 0.13848950000000038\n },\n {\n \"x\": -0.05848745000000033,\n \"y\": 0.1405694999999998\n },\n {\n \"x\": -0.05584345000000024,\n \"y\": 0.14261950000000034\n },\n {\n \"x\": -0.05306845000000049,\n \"y\": 0.14449950000000022\n },\n {\n \"x\": -0.05029345000000074,\n \"y\": 0.14639950000000113\n },\n {\n \"x\": -0.04738844999999969,\n \"y\": 0.14811950000000174\n },\n {\n \"x\": -0.04437445000000029,\n \"y\": 0.14969949999999876\n },\n {\n \"x\": -0.04134744999999995,\n \"y\": 0.1513194999999996\n },\n {\n \"x\": -0.038316449999999946,\n \"y\": 0.15275949999999838\n },\n {\n \"x\": -0.03515645000000056,\n \"y\": 0.15407949999999992\n },\n {\n \"x\": -0.03204444999999989,\n \"y\": 0.15536950000000083\n },\n {\n \"x\": -0.028770450000000558,\n \"y\": 0.15655950000000018\n },\n {\n \"x\": -0.025468450000000864,\n \"y\": 0.15757949999999887\n },\n {\n \"x\": -0.02213745000000067,\n \"y\": 0.15863950000000138\n },\n {\n \"x\": -0.018790450000000014,\n \"y\": 0.15942949999999811\n },\n {\n \"x\": -0.01536325000000005,\n \"y\": 0.16012949999999826\n },\n {\n \"x\": -0.011980249999999693,\n \"y\": 0.16082950000000018\n },\n {\n \"x\": -0.008442250000000762,\n \"y\": 0.16141949999999916\n },\n {\n \"x\": -0.004890650000000107,\n \"y\": 0.1617494999999991\n },\n {\n \"x\": -0.0013406500000003874,\n \"y\": 0.16204949999999663\n },\n {\n \"x\": 0.002252350000000014,\n \"y\": 0.16214949999999817\n },\n {\n \"x\": 0.005893849999999645,\n \"y\": 0.16214949999999817\n },\n {\n \"x\": 0.009534849999998762,\n \"y\": 0.16214949999999817\n },\n {\n \"x\": 0.013136849999999534,\n \"y\": 0.16204949999999663\n },\n {\n \"x\": 0.016683149999999536,\n \"y\": 0.1617494999999991\n },\n {\n \"x\": 0.020231149999998976,\n \"y\": 0.1614494999999998\n },\n {\n \"x\": 0.023727149999999142,\n \"y\": 0.16104949999999896\n },\n {\n \"x\": 0.02715474999999934,\n \"y\": 0.16012949999999826\n },\n {\n \"x\": 0.03057874999999921,\n \"y\": 0.15952949999999966\n },\n {\n \"x\": 0.03395574999999962,\n \"y\": 0.15867949999999986\n },\n {\n \"x\": 0.03725995000000015,\n \"y\": 0.15758950000000027\n },\n {\n \"x\": 0.0405679499999998,\n \"y\": 0.15652949999999954\n },\n {\n \"x\": 0.04379994999999948,\n \"y\": 0.15541949999999893\n },\n {\n \"x\": 0.04695294999999966,\n \"y\": 0.15409950000000094\n },\n {\n \"x\": 0.050101949999999285,\n \"y\": 0.15280950000000004\n },\n {\n \"x\": 0.053191949999999544,\n \"y\": 0.1513194999999996\n },\n {\n \"x\": 0.05617794999999948,\n \"y\": 0.1497395000000008\n },\n {\n \"x\": 0.05916694999999983,\n \"y\": 0.14811950000000174\n },\n {\n \"x\": 0.06206694999999929,\n \"y\": 0.14639950000000113\n },\n {\n \"x\": 0.06487294999999982,\n \"y\": 0.1445595000000015\n },\n {\n \"x\": 0.06767095000000012,\n \"y\": 0.14269950000000264\n },\n {\n \"x\": 0.07038294999999994,\n \"y\": 0.14069950000000198\n },\n {\n \"x\": 0.07299194999999958,\n \"y\": 0.1385795000000023\n },\n {\n \"x\": 0.07560095000000011,\n \"y\": 0.13645950000000262\n },\n {\n \"x\": 0.07809294999999938,\n \"y\": 0.13420950000000254\n },\n {\n \"x\": 0.08047994999999997,\n \"y\": 0.13187950000000193\n },\n {\n \"x\": 0.08287894999999956,\n \"y\": 0.1295395000000017\n },\n {\n \"x\": 0.08515495000000062,\n \"y\": 0.12706950000000106\n },\n {\n \"x\": 0.08729294999999926,\n \"y\": 0.12451950000000167\n },\n {\n \"x\": 0.08944594999999911,\n \"y\": 0.12192950000000202\n },\n {\n \"x\": 0.0914679499999993,\n \"y\": 0.11930950000000173\n },\n {\n \"x\": 0.09337295000000001,\n \"y\": 0.1165295000000004\n },\n {\n \"x\": 0.0971669499999992,\n \"y\": 0.11101949999999938\n },\n {\n \"x\": 0.10043494999999947,\n \"y\": 0.10512450000000229\n },\n {\n \"x\": 0.10311494999999926,\n \"y\": 0.09890950000000132\n },\n {\n \"x\": 0.10444094999999987,\n \"y\": 0.09581950000000106\n },\n {\n \"x\": 0.10564094999999973,\n \"y\": 0.09262950000000103\n },\n {\n \"x\": 0.10667494999999949,\n \"y\": 0.08935950000000226\n },\n {\n \"x\": 0.10769994999999977,\n \"y\": 0.08610950000000273\n },\n {\n \"x\": 0.1085699499999997,\n \"y\": 0.08279950000000369\n },\n {\n \"x\": 0.10927795000000007,\n \"y\": 0.07942950000000337\n },\n {\n \"x\": 0.10999794999999946,\n \"y\": 0.07605950000000128\n },\n {\n \"x\": 0.11051994999999959,\n \"y\": 0.07262950000000146\n },\n {\n \"x\": 0.11088394999999984,\n \"y\": 0.06913950000000213\n },\n {\n \"x\": 0.11124394999999954,\n \"y\": 0.0656495000000028\n },\n {\n \"x\": 0.11142394999999983,\n \"y\": 0.062099500000002195\n },\n {\n \"x\": 0.11142394999999983,\n \"y\": 0.05854350000000075\n },\n {\n \"x\": 0.10483595000000001,\n \"y\": 0.05853049999999982\n },\n {\n \"x\": 0.0982479500000002,\n \"y\": 0.058516500000001415\n },\n {\n \"x\": 0.09164495000000006,\n \"y\": 0.058518500000001694\n },\n {\n \"x\": 0.08505695000000024,\n \"y\": 0.05850850000000207\n },\n {\n \"x\": 0.078453950000001,\n \"y\": 0.058509500000001324\n },\n {\n \"x\": 0.07186595000000029,\n \"y\": 0.058496500000000395\n },\n {\n \"x\": 0.06526295000000104,\n \"y\": 0.05849750000000142\n },\n {\n \"x\": 0.058674950000001225,\n \"y\": 0.058485499999999746\n },\n {\n \"x\": 0.05208695000000052,\n \"y\": 0.058473499999999845\n },\n {\n \"x\": 0.04548395000000127,\n \"y\": 0.058475500000000125\n },\n {\n \"x\": 0.038895950000001456,\n \"y\": 0.05846150000000172\n },\n {\n \"x\": 0.03230795000000075,\n \"y\": 0.058448499999999015\n },\n {\n \"x\": 0.025704950000001503,\n \"y\": 0.058453499999998826\n },\n {\n \"x\": 0.019101950000001366,\n \"y\": 0.05845449999999808\n },\n {\n \"x\": 0.01251395000000155,\n \"y\": 0.05844149999999715\n },\n {\n \"x\": 0.005925950000001734,\n \"y\": 0.058427499999998744\n },\n {\n \"x\": -0.0006560499999990199,\n \"y\": 0.05842149999999968\n },\n {\n \"x\": -0.007240049999999165,\n \"y\": 0.05841449999999959\n },\n {\n \"x\": -0.01382404999999931,\n \"y\": 0.05840850000000053\n },\n {\n \"x\": -0.020406049999999176,\n \"y\": 0.05840250000000147\n },\n {\n \"x\": -0.02699004999999932,\n \"y\": 0.058394500000002125\n },\n {\n \"x\": -0.03357404999999947,\n \"y\": 0.05838950000000409\n },\n {\n \"x\": -0.04015604999999933,\n \"y\": 0.05838350000000503\n },\n {\n \"x\": -0.04674004999999948,\n \"y\": 0.05837450000000466\n },\n {\n \"x\": -0.05332205000000023,\n \"y\": 0.058368500000005596\n },\n {\n \"x\": -0.05990605000000038,\n \"y\": 0.058360500000006255\n },\n {\n \"x\": -0.06649005000000052,\n \"y\": 0.058355500000006444\n },\n {\n \"x\": -0.07307205000000039,\n \"y\": 0.05834950000000738\n },\n {\n \"x\": -0.07965605000000053,\n \"y\": 0.05834150000000804\n },\n {\n \"x\": -0.08624005000000068,\n \"y\": 0.05833550000000898\n },\n {\n \"x\": -0.09282205000000143,\n \"y\": 0.05833050000001094\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.01254745000000046,\n \"y\": 0.26612850000000243\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.16130964999999975,\n \"y\": -0.2661284999999989\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4717985499999999,\n \"y\": -0.09296750000000031\n },\n \"right1\": {\n \"x\": 0.4717985499999999,\n \"y\": -0.09299249999999937\n }\n },\n \"bounds\": {\n \"minX\": -0.4999569909999999,\n \"maxX\": 0.4999569909999999,\n \"minY\": -0.2661284999999989,\n \"maxY\": 0.26612850000000243,\n \"width\": 0.9999139819999998,\n \"height\": 0.5322570000000013,\n \"centerX\": 0,\n \"centerY\": 1.7763568394002505e-15\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/mushroom_head_normally_open_momentary.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_top\", x: 0 },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX + 0.006, y: bounds.centerY + 0.06 },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport mushroom_head_normally_open_momentary_horz from \"./mushroom_head_normally_open_momentary_horz\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(mushroom_head_normally_open_momentary_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nref.x = ref.x - 0.03\nref.y = ref.y\n\nval.x = val.x\nval.y = 0\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.39274354450000026,\n \"y\": -0.10329954999999957\n },\n {\n \"x\": 0.05111245549999932,\n \"y\": -0.1059225499999994\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09373835550000087,\n \"y\": 0.18559775000000034\n },\n {\n \"x\": 0.09280835550000122,\n \"y\": -0.18255174999999935\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.30382435550000064,\n \"y\": 0.53233025\n },\n {\n \"x\": 0.3032243555000005,\n \"y\": 0.10600584999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3108281555000003,\n \"y\": -0.5323308500000001\n },\n {\n \"x\": 0.31142815550000025,\n \"y\": -0.005876249999999805\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": 0.10788365000000044\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": 0.10659565000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.10232114999999986\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.10360915000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.27419885550000034,\n \"y\": -0.04077644999999963\n },\n {\n \"x\": 0.27419885550000034,\n \"y\": 0.030615650000000327\n },\n {\n \"x\": 0.2024438555000001,\n \"y\": -0.004662050000000084\n },\n {\n \"x\": 0.27419885550000034,\n \"y\": -0.04077644999999963\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.004018049999999551\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.005306049999999729\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05171245550000081,\n \"y\": 0.16715385000000005\n },\n {\n \"x\": 0.05111245550000065,\n \"y\": -0.10592255000000006\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13197254449999907,\n \"y\": 0.36092494999999936\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.05891105550000031,\n \"y\": -0.42489435000000064\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.30397715549999993,\n \"y\": 0.5519248499999992\n },\n \"bottom1\": {\n \"x\": 0.31067575550000126,\n \"y\": -0.5519248499999994\n },\n \"left1\": {\n \"x\": -0.41859744450000025,\n \"y\": -0.10250625000000024\n }\n },\n \"bounds\": {\n \"minX\": -0.4467558855000002,\n \"maxX\": 0.44675588550000006,\n \"minY\": -0.5800832909999993,\n \"maxY\": 0.5800832909999992,\n \"width\": 0.8935117710000002,\n \"height\": 1.1601665819999987,\n \"centerX\": -8.326672684688674e-17,\n \"centerY\": -5.551115123125783e-17\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.15821375550000005,\n \"y\": 0.003454549999999612,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/n_channel_d_mosfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport n_channel_d_mosfet_transistor_horz from \"./n_channel_d_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(n_channel_d_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.39274354450000026,\n \"y\": -0.10329954999999957\n },\n {\n \"x\": 0.05111245549999932,\n \"y\": -0.1059225499999994\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.30382435550000064,\n \"y\": 0.53233025\n },\n {\n \"x\": 0.3032243555000005,\n \"y\": 0.10600584999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3108281555000003,\n \"y\": -0.5323308500000001\n },\n {\n \"x\": 0.31142815550000025,\n \"y\": -0.005876249999999805\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": 0.10788365000000044\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": 0.10659565000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09448295549999952,\n \"y\": 0.14677165000000048\n },\n {\n \"x\": 0.09319295549999951,\n \"y\": 0.06899565000000041\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.10232114999999986\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.10360915000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09440455549999993,\n \"y\": -0.07703174999999951\n },\n {\n \"x\": 0.09311455549999992,\n \"y\": -0.15480774999999958\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09448295549999952,\n \"y\": 0.03486995000000048\n },\n {\n \"x\": 0.09319295549999951,\n \"y\": -0.042906049999999585\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2741991554999996,\n \"y\": -0.040776550000000134\n },\n {\n \"x\": 0.2741991554999996,\n \"y\": 0.030615549999999825\n },\n {\n \"x\": 0.2024441554999994,\n \"y\": -0.004662350000000037\n },\n {\n \"x\": 0.2741991554999996,\n \"y\": -0.040776550000000134\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.004018049999999551\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.005306049999999729\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05171245550000081,\n \"y\": 0.10847375000000059\n },\n {\n \"x\": 0.05111245550000065,\n \"y\": -0.1059225499999994\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13197254449999907,\n \"y\": 0.36092494999999936\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.05891105550000031,\n \"y\": -0.42489435000000064\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.30397715549999993,\n \"y\": 0.5519248499999992\n },\n \"bottom1\": {\n \"x\": 0.31067575550000126,\n \"y\": -0.5519248499999994\n },\n \"left1\": {\n \"x\": -0.41859744450000025,\n \"y\": -0.10250625000000024\n }\n },\n \"bounds\": {\n \"minX\": -0.4467558855000002,\n \"maxX\": 0.44675588550000006,\n \"minY\": -0.5800832909999993,\n \"maxY\": 0.5800832909999992,\n \"width\": 0.8935117710000002,\n \"height\": 1.1601665819999987,\n \"centerX\": -8.326672684688674e-17,\n \"centerY\": -5.551115123125783e-17\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.15821375550000005,\n \"y\": 0.003454549999999612,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/n_channel_e_mosfet_transistor.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as Primitive[],\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport n_channel_e_mosfet_transistor_horz from \"./n_channel_e_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(n_channel_e_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38509374449999945,\n \"y\": -0.00367374999999992\n },\n {\n \"x\": 0.05876225550000025,\n \"y\": -0.00629674999999974\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07415065550000066,\n \"y\": 0.18559775000000034\n },\n {\n \"x\": 0.07322065550000101,\n \"y\": -0.18255174999999935\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28423665550000043,\n \"y\": 0.53233025\n },\n {\n \"x\": 0.2836366555000003,\n \"y\": 0.10600584999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2912404555000001,\n \"y\": -0.5298821500000002\n },\n {\n \"x\": 0.29184045550000004,\n \"y\": -0.10355795000000012\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07425025549999931,\n \"y\": 0.10788365000000044\n },\n {\n \"x\": 0.29146205549999915,\n \"y\": 0.10659565000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07425025549999931,\n \"y\": -0.10232114999999986\n },\n {\n \"x\": 0.29146205549999915,\n \"y\": -0.10360915000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0829488445000004,\n \"y\": 0.06153284999999986\n },\n {\n \"x\": -0.0829488445000004,\n \"y\": -0.06535114999999969\n },\n {\n \"x\": 0.005945155500000077,\n \"y\": -0.0026521499999998532\n },\n {\n \"x\": -0.0829488445000004,\n \"y\": 0.06153284999999986\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.15156024449999927,\n \"y\": 0.36092494999999936\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.0393233555000001,\n \"y\": -0.42489435000000064\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.2843894554999997,\n \"y\": 0.5519248499999992\n },\n \"bottom1\": {\n \"x\": 0.29108805550000105,\n \"y\": -0.5519248499999994\n },\n \"left1\": {\n \"x\": -0.3990097444999998,\n \"y\": -0.004526550000000462\n }\n },\n \"bounds\": {\n \"minX\": -0.4271681854999998,\n \"maxX\": 0.42716818549999985,\n \"minY\": -0.5800832909999993,\n \"maxY\": 0.5800832909999992,\n \"width\": 0.8543363709999996,\n \"height\": 1.1601665819999987,\n \"centerX\": 2.7755575615628914e-17,\n \"centerY\": -5.551115123125783e-17\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.13862605549999985,\n \"y\": 0.003454549999999612,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/njfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport njfet_transistor_horz from \"./njfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(njfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3850939444999988,\n \"y\": -0.0036735999999999436\n },\n {\n \"x\": 0.0587620555000008,\n \"y\": -0.0062965999999997635\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07400475550000118,\n \"y\": 0.2689528999999997\n },\n {\n \"x\": 0.07335475550000092,\n \"y\": -0.2789230000000007\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2754149555000005,\n \"y\": 0.24180210000000013\n },\n {\n \"x\": 0.07955815550000045,\n \"y\": 0.10822479999999968\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2868554555000009,\n \"y\": -0.24134789999999984\n },\n {\n \"x\": 0.09194705550000082,\n \"y\": -0.10807689999999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2851204555,\n \"y\": 0.25311099999999964\n },\n {\n \"x\": 0.2860204555000001,\n \"y\": 0.5377640999999995\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2851204555,\n \"y\": -0.5376890000000012\n },\n {\n \"x\": 0.2860204555000001,\n \"y\": -0.25303590000000065\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1882816555000013,\n \"y\": -0.10097660000000008\n },\n {\n \"x\": 0.11555775550000158,\n \"y\": -0.20483720000000027\n },\n {\n \"x\": 0.22425775550000182,\n \"y\": -0.20446720000000007\n },\n {\n \"x\": 0.1882816555000013,\n \"y\": -0.10097660000000008\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.07802354449999971,\n \"y\": 0.3596647999999991\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.0679100444999996,\n \"y\": -0.4129789000000006\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.28556045550000064,\n \"y\": 0.5519250999999994\n },\n \"bottom1\": {\n \"x\": 0.285560455500002,\n \"y\": -0.5519250999999992\n },\n \"left1\": {\n \"x\": -0.3990097444999998,\n \"y\": -0.004526300000000871\n }\n },\n \"bounds\": {\n \"minX\": -0.4271681854999998,\n \"maxX\": 0.4271681855000001,\n \"minY\": -0.5800835409999991,\n \"maxY\": 0.5800835409999994,\n \"width\": 0.8543363709999998,\n \"height\": 1.1601670819999985,\n \"centerX\": 1.3877787807814457e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"path1-0\": {\n \"type\": \"circle\",\n \"x\": 0.13862605550000007,\n \"y\": 0.003454799999999203,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/npn_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"3\"])\n .labelPort(\"top1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport svgJson from \"assets/generated/npn_bipolar_transistor.json\"\nimport npn_bipolar_transistor_horz from \"./npn_bipolar_transistor_horz\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst rotatedSymbol = rotateSymbol(npn_bipolar_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.anchor = \"middle_left\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"3\"])\n .labelPort(\"top1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.0390362999999998\n },\n {\n \"x\": -0.3199943999999995,\n \"y\": -0.21132800000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": 0.31132800000000015\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.0390362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": -0.21132800000000015\n },\n {\n \"x\": -0.3199943999999995,\n \"y\": 0.31132800000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": 0.1790362999999998\n },\n {\n \"x\": -0.58168693999999996,\n \"y\": 0.1790362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": -0.0890362999999998\n },\n {\n \"x\": -0.58168693999999996,\n \"y\": -0.0890362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4233797000000002,\n \"y\": 0.03895110000000024\n },\n {\n \"x\": 0.1496715999999998,\n \"y\": 0.03895110000000024\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"rect1577-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19898460000000011,\n \"y\": 0.1790362999999998\n },\n {\n \"x\": -0.26995180000000035,\n \"y\": 0.1790362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19898460000000011,\n \"y\": -0.0890362999999998\n },\n {\n \"x\": -0.26995180000000035,\n \"y\": -0.0890362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.23480170000000035,\n \"y\": -0.05337805000000034\n },\n {\n \"x\": -0.23480170000000035,\n \"y\": -0.12434525000000014\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.41884529999999995\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999977319,\n \"y\": -0.29994529999999996\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.56868693999999996,\n \"y\": 0.1790362999999998\n },\n \"left2\": {\n \"x\": -0.56868693999999996,\n \"y\": -0.0890362999999998\n },\n \"right1\": {\n \"x\": 0.4291470999999999,\n \"y\": 0.03889609999999988\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055409999998,\n \"minY\": -0.37884529999999994,\n \"maxY\": 0.26884529999999995,\n \"width\": 1.094611082,\n \"height\": 0.2976905999999999,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 0.05499999999999999\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/opamp_no_power.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"inp1\"])\n .labelPort(\"left2\", [\"2\", \"inp2\"])\n .labelPort(\"right1\", [\"3\", \"out\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_no_power_right from \"./opamp_no_power_right\"\n\nexport default rotateSymbol(opamp_no_power_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_no_power_right from \"./opamp_no_power_right\"\n\nexport default rotateSymbol(opamp_no_power_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_no_power_right from \"./opamp_no_power_right\"\n\nexport default rotateSymbol(opamp_no_power_right, \"up\")\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.0390362999999998\n },\n {\n \"x\": -0.3199943999999995,\n \"y\": -0.21132800000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": 0.31132800000000015\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.0390362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": -0.21132800000000015\n },\n {\n \"x\": -0.3199943999999995,\n \"y\": 0.31132800000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": 0.1790362999999998\n },\n {\n \"x\": -0.58168693999999996,\n \"y\": 0.1790362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199943999999995,\n \"y\": -0.0890362999999998\n },\n {\n \"x\": -0.58168693999999996,\n \"y\": -0.0890362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4233797000000002,\n \"y\": 0.03895110000000024\n },\n {\n \"x\": 0.1496715999999998,\n \"y\": 0.03895110000000024\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09945180000000035,\n \"y\": 0.43895110000000024\n },\n {\n \"x\": -0.09945180000000035,\n \"y\": 0.1790362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09345180000000035,\n \"y\": -0.33895110000000024\n },\n {\n \"x\": -0.09345180000000035,\n \"y\": -0.0890362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"rect1577-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19898460000000011,\n \"y\": 0.1790362999999998\n },\n {\n \"x\": -0.26995180000000035,\n \"y\": 0.1790362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19898460000000011,\n \"y\": -0.0890362999999998\n },\n {\n \"x\": -0.26995180000000035,\n \"y\": -0.0890362999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.23485180000000035,\n \"y\": 0.14405005000000034\n },\n {\n \"x\": -0.23485180000000035,\n \"y\": 0.2150405000000014\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.250250999999996715,\n \"y\": 0.31884529999999995\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.250250999999996715,\n \"y\": -0.23599529999999996\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.56868693999999996,\n \"y\": 0.1790362999999998\n },\n \"left2\": {\n \"x\": -0.56868693999999996,\n \"y\": -0.0890362999999998\n },\n \"right1\": {\n \"x\": 0.4291470999999999,\n \"y\": 0.03889609999999988\n },\n \"top2\": {\n \"x\": -0.09945180000000035,\n \"y\": 0.43895110000000024\n },\n \"bottom1\": {\n \"x\": -0.09345180000000035,\n \"y\": -0.33895110000000024\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055409999998,\n \"minY\": -0.37884529999999994,\n \"maxY\": 0.26884529999999995,\n \"width\": 1.094611082,\n \"height\": 0.2976905999999999,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 0.05499999999999999\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/opamp_with_power.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"inp1\"])\n .labelPort(\"left2\", [\"2\", \"inp2\"])\n .labelPort(\"right1\", [\"3\", \"out\"])\n .labelPort(\"top2\", [\"4\", \"V+\"])\n .labelPort(\"bottom1\", [\"5\", \"V-\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_with_power_right from \"./opamp_with_power_right\"\n\nexport default rotateSymbol(opamp_with_power_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_with_power_right from \"./opamp_with_power_right\"\n\nexport default rotateSymbol(opamp_with_power_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_with_power_right from \"./opamp_with_power_right\"\n\nexport default rotateSymbol(opamp_with_power_right, \"up\")\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.39274354450000026,\n \"y\": -0.10329954999999957\n },\n {\n \"x\": 0.05111245549999932,\n \"y\": -0.1059225499999994\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09373835550000087,\n \"y\": 0.18559775000000034\n },\n {\n \"x\": 0.09280835550000122,\n \"y\": -0.18255174999999935\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.30382435550000064,\n \"y\": 0.53233025\n },\n {\n \"x\": 0.3032243555000005,\n \"y\": 0.10600584999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3108281555000003,\n \"y\": -0.5323308500000001\n },\n {\n \"x\": 0.31142815550000025,\n \"y\": -0.005876249999999805\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": 0.10788365000000044\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": 0.10659565000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.10232114999999986\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.10360915000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.20244405549999955,\n \"y\": 0.03061555000000049\n },\n {\n \"x\": 0.20244405549999955,\n \"y\": -0.04077654999999947\n },\n {\n \"x\": 0.2741990554999998,\n \"y\": -0.0054987499999992195\n },\n {\n \"x\": 0.20244405549999955,\n \"y\": 0.03061555000000049\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.004018049999999551\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.005306049999999729\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05171245550000081,\n \"y\": 0.16715385000000005\n },\n {\n \"x\": 0.05111245550000065,\n \"y\": -0.10592255000000006\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13197254449999907,\n \"y\": 0.36092494999999936\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.05891105550000031,\n \"y\": -0.42489435000000064\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.30397715549999993,\n \"y\": 0.5519248499999992\n },\n \"bottom1\": {\n \"x\": 0.31067575550000126,\n \"y\": -0.5519248499999994\n },\n \"left1\": {\n \"x\": -0.41859744450000025,\n \"y\": -0.10250625000000024\n }\n },\n \"bounds\": {\n \"minX\": -0.4467558855000002,\n \"maxX\": 0.44675588550000006,\n \"minY\": -0.5800832909999993,\n \"maxY\": 0.5800832909999992,\n \"width\": 0.8935117710000002,\n \"height\": 1.1601665819999987,\n \"centerX\": -8.326672684688674e-17,\n \"centerY\": -5.551115123125783e-17\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.15821375550000005,\n \"y\": 0.003454549999999612,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/p_channel_d_mosfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport p_channel_d_mosfet_transistor_horz from \"./p_channel_d_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(p_channel_d_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.39274354450000026,\n \"y\": -0.10329954999999957\n },\n {\n \"x\": 0.05111245549999932,\n \"y\": -0.1059225499999994\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.30382435550000064,\n \"y\": 0.53233025\n },\n {\n \"x\": 0.3032243555000005,\n \"y\": 0.10600584999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3108281555000003,\n \"y\": -0.5323308500000001\n },\n {\n \"x\": 0.31142815550000025,\n \"y\": -0.005876249999999805\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": 0.10788365000000044\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": 0.10659565000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09448295549999952,\n \"y\": 0.14677165000000048\n },\n {\n \"x\": 0.09319295549999951,\n \"y\": 0.06899565000000041\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.10232114999999986\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.10360915000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09440455549999993,\n \"y\": -0.07703174999999951\n },\n {\n \"x\": 0.09311455549999992,\n \"y\": -0.15480774999999958\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09448295549999952,\n \"y\": 0.03486995000000048\n },\n {\n \"x\": 0.09319295549999951,\n \"y\": -0.042906049999999585\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.20244405549999955,\n \"y\": 0.03061555000000049\n },\n {\n \"x\": 0.20244405549999955,\n \"y\": -0.04077654999999947\n },\n {\n \"x\": 0.2741990554999998,\n \"y\": -0.0054987499999992195\n },\n {\n \"x\": 0.20244405549999955,\n \"y\": 0.03061555000000049\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09383795549999951,\n \"y\": -0.004018049999999551\n },\n {\n \"x\": 0.31104975549999936,\n \"y\": -0.005306049999999729\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05171245550000081,\n \"y\": 0.10847375000000059\n },\n {\n \"x\": 0.05111245550000065,\n \"y\": -0.1059225499999994\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13197254449999907,\n \"y\": 0.36092494999999936\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.05891105550000031,\n \"y\": -0.42489435000000064\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.30397715549999993,\n \"y\": 0.5519248499999992\n },\n \"bottom1\": {\n \"x\": 0.31067575550000126,\n \"y\": -0.5519248499999994\n },\n \"left1\": {\n \"x\": -0.41859744450000025,\n \"y\": -0.10250625000000024\n }\n },\n \"bounds\": {\n \"minX\": -0.4467558855000002,\n \"maxX\": 0.44675588550000006,\n \"minY\": -0.5800832909999993,\n \"maxY\": 0.5800832909999992,\n \"width\": 0.8935117710000002,\n \"height\": 1.1601665819999987,\n \"centerX\": -8.326672684688674e-17,\n \"centerY\": -5.551115123125783e-17\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.15821375550000005,\n \"y\": 0.003454549999999612,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/p_channel_e_mosfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport p_channel_e_mosfet_transistor_horz from \"./p_channel_e_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(p_channel_e_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5274831500000005,\n \"y\": -0.012413549999999773\n },\n {\n \"x\": -0.14891374999999973,\n \"y\": -0.015036549999999593\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13221874999999983,\n \"y\": -0.001352349999999447\n },\n {\n \"x\": -0.1323642500000004,\n \"y\": -0.13364404999999913\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1323642500000004,\n \"y\": 0.13093935000000023\n },\n {\n \"x\": 0.13221874999999983,\n \"y\": -0.001352349999999447\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1323642500000004,\n \"y\": -0.1336440499999998\n },\n {\n \"x\": -0.1323642500000004,\n \"y\": 0.13093935000000023\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13221874999999983,\n \"y\": 0.13093935000000023\n },\n {\n \"x\": 0.13221874999999983,\n \"y\": -0.1336440499999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1358253500000004,\n \"y\": -0.001921149999999372\n },\n {\n \"x\": 0.533952450000001,\n \"y\": -0.012413549999999107\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19839785000000076,\n \"y\": 0.37576625000000075\n },\n {\n \"x\": 0.16262485000000027,\n \"y\": 0.28367475000000053\n },\n {\n \"x\": 0.26033484999999956,\n \"y\": 0.2989800500000006\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3305468500000004,\n \"y\": 0.4264014500000006\n },\n {\n \"x\": 0.31941585000000017,\n \"y\": 0.4163797500000006\n },\n {\n \"x\": 0.20669285000000048,\n \"y\": 0.3148875500000008\n },\n {\n \"x\": 0.20564285000000115,\n \"y\": 0.31448755000000084\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.34573984999999974,\n \"y\": 0.3493283500000002\n },\n {\n \"x\": 0.30996684999999946,\n \"y\": 0.25723684999999996\n },\n {\n \"x\": 0.40767644999999963,\n \"y\": 0.27254215000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.47788845000000046,\n \"y\": 0.39996355000000006\n },\n {\n \"x\": 0.46675745000000024,\n \"y\": 0.38994185000000003\n },\n {\n \"x\": 0.35403445000000033,\n \"y\": 0.2884496500000002\n },\n {\n \"x\": 0.352984450000001,\n \"y\": 0.2880496500000005\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.10246254999999982,\n \"y\": 0.34693914999999986\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.0012544500000004621,\n \"y\": -0.4264014500000004\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5413984499999998,\n \"y\": -0.013266350000000315\n },\n \"right1\": {\n \"x\": 0.54139845,\n \"y\": -0.012269950000000529\n }\n },\n \"bounds\": {\n \"minX\": -0.5695568909999997,\n \"maxX\": 0.569556891,\n \"minY\": -0.4264014500000004,\n \"maxY\": 0.4264014500000006,\n \"width\": 1.1391137819999997,\n \"height\": 0.852802900000001,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000000895,\n \"y\": -0.005285250000000241,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/photodiode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport photodiode_horz from \"./photodiode_horz\"\n\nconst rotatedSymbol = rotateSymbol(photodiode_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38509374449999945,\n \"y\": -0.00367374999999992\n },\n {\n \"x\": 0.05876225550000025,\n \"y\": -0.00629674999999974\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07415065550000066,\n \"y\": 0.18559775000000034\n },\n {\n \"x\": 0.07322065550000101,\n \"y\": -0.18255174999999935\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28423665550000043,\n \"y\": 0.53233025\n },\n {\n \"x\": 0.2836366555000003,\n \"y\": 0.10600584999999985\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2912404555000001,\n \"y\": -0.5298821500000002\n },\n {\n \"x\": 0.29184045550000004,\n \"y\": -0.10355795000000012\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07425025549999931,\n \"y\": 0.10788365000000044\n },\n {\n \"x\": 0.29146205549999915,\n \"y\": 0.10659565000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07425025549999931,\n \"y\": -0.10232114999999986\n },\n {\n \"x\": 0.29146205549999915,\n \"y\": -0.10360915000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.005945155500000077,\n \"y\": -0.06535114999999969\n },\n {\n \"x\": 0.005945155500000077,\n \"y\": 0.06153284999999986\n },\n {\n \"x\": -0.0829488445000004,\n \"y\": -0.001166149999999977\n },\n {\n \"x\": 0.005945155500000077,\n \"y\": -0.06535114999999969\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.15156024449999927,\n \"y\": 0.36092494999999936\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.0393233555000001,\n \"y\": -0.42489435000000064\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.2843894554999997,\n \"y\": 0.5519248499999992\n },\n \"bottom1\": {\n \"x\": 0.29108805550000105,\n \"y\": -0.5519248499999994\n },\n \"left1\": {\n \"x\": -0.3990097444999998,\n \"y\": -0.004526550000000462\n }\n },\n \"bounds\": {\n \"minX\": -0.4271681854999998,\n \"maxX\": 0.42716818549999985,\n \"minY\": -0.5800832909999993,\n \"maxY\": 0.5800832909999992,\n \"width\": 0.8543363709999996,\n \"height\": 1.1601665819999987,\n \"centerX\": 2.7755575615628914e-17,\n \"centerY\": -5.551115123125783e-17\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.13862605549999985,\n \"y\": 0.003454549999999612,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/pjfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport pjfet_transistor_horz from \"./pjfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(pjfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3850939444999988,\n \"y\": -0.0036735999999999436\n },\n {\n \"x\": 0.0587620555000008,\n \"y\": -0.0062965999999997635\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07400475550000118,\n \"y\": 0.2689528999999997\n },\n {\n \"x\": 0.07335475550000092,\n \"y\": -0.2789230000000007\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2754149555000005,\n \"y\": 0.24180210000000013\n },\n {\n \"x\": 0.07955815550000045,\n \"y\": 0.10822479999999968\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2868554555000009,\n \"y\": -0.24134789999999984\n },\n {\n \"x\": 0.09194705550000082,\n \"y\": -0.10807689999999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2851204555,\n \"y\": 0.25311099999999964\n },\n {\n \"x\": 0.2860204555000001,\n \"y\": 0.5377640999999995\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2851204555,\n \"y\": -0.5376890000000012\n },\n {\n \"x\": 0.2860204555000001,\n \"y\": -0.25303590000000065\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.15155145550000038,\n \"y\": -0.2268796000000004\n },\n {\n \"x\": 0.2242753555000001,\n \"y\": -0.12301900000000021\n },\n {\n \"x\": 0.11557535549999942,\n \"y\": -0.12338900000000042\n },\n {\n \"x\": 0.15155145550000038,\n \"y\": -0.2268796000000004\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.08351674449999891,\n \"y\": 0.37335419999999897\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.0679100444999996,\n \"y\": -0.4129789000000006\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.28556045550000064,\n \"y\": 0.5519250999999994\n },\n \"bottom1\": {\n \"x\": 0.285560455500002,\n \"y\": -0.5519250999999992\n },\n \"left1\": {\n \"x\": -0.3990097444999998,\n \"y\": -0.004526300000000871\n }\n },\n \"bounds\": {\n \"minX\": -0.4271681854999998,\n \"maxX\": 0.4271681855000001,\n \"minY\": -0.5800835409999991,\n \"maxY\": 0.5800835409999994,\n \"width\": 0.8543363709999998,\n \"height\": 1.1601670819999985,\n \"centerX\": 1.3877787807814457e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"path1-0\": {\n \"type\": \"circle\",\n \"x\": 0.13862605550000007,\n \"y\": 0.003454799999999203,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"3\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"top1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport pnp_bipolar_transistor_horz from \"./pnp_bipolar_transistor_horz\"\nimport svgJson from \"assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst rotatedSymbol = rotateSymbol(pnp_bipolar_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.anchor = \"middle_left\"\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"3\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"top1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19250837381256392,\n \"y\": 0.32749349347032286\n },\n {\n \"x\": -0.25568957329611974,\n \"y\": 0.13794979950157282\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38205206778131373,\n \"y\": 0.26431229398676837\n },\n {\n \"x\": -0.19250837381256392,\n \"y\": 0.32749349347032286\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2556895732961204,\n \"y\": 0.13794979950157416\n },\n {\n \"x\": -0.38205206778131373,\n \"y\": 0.26431229398676837\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2556896210551609,\n \"y\": 0.39067474071292196\n },\n {\n \"x\": -0.12932712656996737,\n \"y\": 0.26431224622772653\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199237641156438,\n \"y\": 0.2000781031672434\n },\n {\n \"x\": -0.5084145145074668,\n \"y\": 0.011587352775420667\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.011560829633404435,\n \"y\": 0.5083596562436202\n },\n {\n \"x\": -0.19004023433272543,\n \"y\": 0.3298802515442989\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19250813152967883,\n \"y\": -0.3220463011874377\n },\n {\n \"x\": -0.38205182549842887,\n \"y\": -0.2588651017038819\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2556893310132333,\n \"y\": -0.13250260721868767\n },\n {\n \"x\": -0.19250813152967883,\n \"y\": -0.3220463011874377\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38205182549842753,\n \"y\": -0.258865101703881\n },\n {\n \"x\": -0.2556893310132333,\n \"y\": -0.13250260721868767\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12932688428707984,\n \"y\": -0.2588650539448407\n },\n {\n \"x\": -0.25568937877227516,\n \"y\": -0.38522754843003404\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199235218327583,\n \"y\": -0.19463091088435758\n },\n {\n \"x\": -0.508414272224581,\n \"y\": -0.006140160492534852\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.011641968756381349,\n \"y\": -0.5029938453665972\n },\n {\n \"x\": -0.1901213734557028,\n \"y\": -0.3245144406672762\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.322578868470321,\n \"y\": 0.19315369881256328\n },\n {\n \"x\": 0.13303517450157099,\n \"y\": 0.2563348982961191\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2593976689867663,\n \"y\": 0.3826973927813131\n },\n {\n \"x\": 0.322578868470321,\n \"y\": 0.19315369881256328\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13303517450157232,\n \"y\": 0.2563348982961198\n },\n {\n \"x\": 0.2593976689867663,\n \"y\": 0.3826973927813131\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.38576011571292,\n \"y\": 0.2563349460551603\n },\n {\n \"x\": 0.2593976212277247,\n \"y\": 0.12997245156996673\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19516347816724133,\n \"y\": 0.3205690891156432\n },\n {\n \"x\": 0.006672727775418608,\n \"y\": 0.509059839507466\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5034450312436185,\n \"y\": 0.012206154633403798\n },\n {\n \"x\": 0.32496562654429706,\n \"y\": 0.19068555933272457\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3220220261874358,\n \"y\": -0.19326390652967795\n },\n {\n \"x\": 0.25884082670387976,\n \"y\": -0.382807600498428\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13247833221868577,\n \"y\": -0.25644510601323245\n },\n {\n \"x\": 0.3220220261874358,\n \"y\": -0.19326390652967795\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2588408267038793,\n \"y\": -0.38280760049842666\n },\n {\n \"x\": 0.13247833221868577,\n \"y\": -0.25644510601323245\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2588407789448386,\n \"y\": -0.13008265928707896\n },\n {\n \"x\": 0.38520327343003213,\n \"y\": -0.2564451537722743\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19460663588435567,\n \"y\": -0.3206792968327574\n },\n {\n \"x\": 0.0061158854925329464,\n \"y\": -0.5091700472245801\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5029695703665951,\n \"y\": -0.012397743756380697\n },\n {\n \"x\": 0.3244901656672745,\n \"y\": -0.19087714845570192\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.2872803000000015,\n \"y\": 0.4564494249999992\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.2872803000000015,\n \"y\": -0.4960514750000007\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.0005126999999993664,\n \"y\": 0.5191475\n },\n \"bottom1\": {\n \"x\": -0.0005123000000009093,\n \"y\": -0.5191475000000001\n },\n \"left1\": {\n \"x\": -0.5191472999999998,\n \"y\": 0.0005123250000014234\n },\n \"right1\": {\n \"x\": 0.5191473000000002,\n \"y\": -0.0005123749999977889\n }\n },\n \"bounds\": {\n \"minX\": -0.5473057409999997,\n \"maxX\": 0.5473057410000002,\n \"minY\": -0.5473059410000001,\n \"maxY\": 0.547305941,\n \"width\": 1.094611482,\n \"height\": 1.0946118820000001,\n \"centerX\": 2.220446049250313e-16,\n \"centerY\": -5.551115123125783e-17\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/potentiometer.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.bottom1, y: 0.35, anchor: \"middle_top\" },\n { ...texts.top1, anchor: \"middle_left\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width + 0.05, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer_horz from \"./potentiometer_horz\"\n\nconst rotated = rotateSymbol(potentiometer_horz)\n\nexport default rotated\n","{\n \"paths\": {\n \"path18\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.53224045,\n \"y\": -0.0008545000000008685\n },\n {\n \"x\": -0.26765715000000023,\n \"y\": -0.0008545000000008685\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path19\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2615098499999995,\n \"y\": -0.0008545000000008685\n },\n {\n \"x\": 0.5260934499999994,\n \"y\": -0.0008545000000008685\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path20\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0030722500000006647,\n \"y\": 0.1314371999999988\n },\n {\n \"x\": 0.2615107499999998,\n \"y\": 0.1314371999999988\n },\n {\n \"x\": 0.2615107499999998,\n \"y\": -0.13314619999999877\n },\n {\n \"x\": -0.26765624999999993,\n \"y\": -0.13314619999999877\n },\n {\n \"x\": -0.26765624999999993,\n \"y\": 0.1314371999999988\n },\n {\n \"x\": -0.0030722499999988884,\n \"y\": 0.1314371999999988\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path23\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2782993499999993,\n \"y\": -0.2822274\n },\n {\n \"x\": 0.17598844999999885,\n \"y\": -0.25486950000000164\n },\n {\n \"x\": 0.25094144999999823,\n \"y\": -0.1799165000000027\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path24\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2882692499999995,\n \"y\": -0.2921307000000013\n },\n {\n \"x\": 0.25467554999999953,\n \"y\": -0.16634940000000142\n },\n {\n \"x\": 0.16229264999999948,\n \"y\": -0.25853690000000284\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path26\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2985911500000009,\n \"y\": 0.2921307000000013\n },\n {\n \"x\": 0.22988164999999938,\n \"y\": -0.2328032000000011\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.055041669999999154,\n \"y\": 0.2009376800000009\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.10019643000000089,\n \"y\": -0.27857531999999985\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5346914500000006,\n \"y\": -0.0013439000000019519\n },\n \"right1\": {\n \"x\": 0.5346914500000004,\n \"y\": -0.001956599999999753\n }\n },\n \"bounds\": {\n \"minX\": -0.5628498910000006,\n \"maxX\": 0.5628498910000004,\n \"minY\": -0.2921307000000013,\n \"maxY\": 0.2921307000000013,\n \"width\": 1.125699782000001,\n \"height\": 0.5842614000000026,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/potentiometer2.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.bottom1, x: 0, y: -0.35, anchor: \"middle_top\" },\n { ...texts.top1, x: 0, y: 0.35, anchor: \"middle_bottom\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width + 0.05, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer2_right from \"./potentiometer2_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(potentiometer2_right, \"down\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.31\nref.x = 0.34\nval.y -= 0.31\nval.x = 0.34\n\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer2_right from \"./potentiometer2_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(potentiometer2_right, \"left\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.y += 0.73\nref.x = 0\nval.y -= 0.7\nval.x = 0\n\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer2_right from \"./potentiometer2_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(potentiometer2_right, \"up\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.21\nref.x = 0.34\nval.y -= 0.21\nval.x = 0.34\n\nexport default symbol\n","{ \n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.4, \"y\": 0 },\n { \"x\": -0.3, \"y\": 0 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-2-1\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.3, \"y\": 0 },\n { \"x\": -0.25, \"y\": 0.1 },\n { \"x\": -0.15, \"y\": -0.1 },\n { \"x\": -0.05, \"y\": 0.1 },\n { \"x\": 0.05, \"y\": -0.1 },\n { \"x\": 0.15, \"y\": 0.1 },\n { \"x\": 0.25, \"y\": -0.1 },\n { \"x\": 0.3, \"y\": 0 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0.3, \"y\": 0 },\n { \"x\": 0.4, \"y\": 0 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0, \"y\": -0.17 },\n { \"x\": 0, \"y\": -0.4 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": 0, \"y\": -0.12 },\n {\n \"x\": 0.05,\n \"y\": -0.2\n },\n {\n \"x\": -0.05,\n \"y\": -0.2\n },\n { \"x\": 0, \"y\": -0.12 }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.3,\n \"y\": 0.25\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.3,\n \"y\": -0.25\n }\n },\n \"refblocks\": {\n \"left\": { \"x\": -0.42, \"y\": 0 },\n \"right\": { \"x\": 0.42, \"y\": 0 },\n \"bottom\": { \"x\": 0, \"y\": -0.4 }\n },\n \"bounds\": {\n \"minX\": -0.42,\n \"maxX\": 0.42,\n \"minY\": -0.2,\n \"maxY\": 0.2,\n \"width\": 0.84,\n \"height\": 0.4,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/potentiometer3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"3\"])\n .labelPort(\"bottom\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer3_right from \"./potentiometer3_right\"\n\nexport default rotateSymbol(potentiometer3_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer3_right from \"./potentiometer3_right\"\n\nexport default rotateSymbol(potentiometer3_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer3_right from \"./potentiometer3_right\"\n\nexport default rotateSymbol(potentiometer3_right, \"up\")\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5274831500000005,\n \"y\": 0.02812460000000061\n },\n {\n \"x\": -0.30105415000000013,\n \"y\": 0.02812460000000061\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2932119499999999,\n \"y\": 0.02812460000000061\n },\n {\n \"x\": 0.5339524499999997,\n \"y\": 0.02812460000000061\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.16215344999999948,\n \"y\": 0.39517610000000025\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.003375049999999602,\n \"y\": -0.39517610000000003\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"COS φ\",\n \"x\": -0.1453603499999998,\n \"y\": 0.013845600000000235\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5413984499999998,\n \"y\": 0.027271800000000068\n },\n \"right1\": {\n \"x\": 0.54139845,\n \"y\": 0.028268199999999855\n }\n },\n \"bounds\": {\n \"minX\": -0.5695568909999997,\n \"maxX\": 0.569556891,\n \"minY\": -0.39517610000000003,\n \"maxY\": 0.39517610000000025,\n \"width\": 1.1391137819999997,\n \"height\": 0.7903522000000003,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000000895,\n \"y\": 0.03525290000000014,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/power_factor_meter.json\"\nimport { ninePointAnchorToSvgAnchor } from \"drawing/ninePointAnchorToSvgAnchor\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n // { ...texts.top1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: -0.42330070000000064,\n anchor: \"middle_top\",\n },\n // { ...texts.bottom1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: 0.42330070000000064,\n anchor: \"middle_bottom\",\n },\n // { ...texts.left1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"COS φ\",\n x: 0,\n y: 0.014279000000000375,\n anchor: \"center\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport power_factor_meter_horz from \"./power_factor_meter_horz\"\nimport { text } from \"drawing/text\"\n\nconst rotatedSymbol = rotateSymbol(power_factor_meter_horz)\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")\nconst ref = texts.find((t) => t.text === \"{REF}\")!\nconst val = texts.find((t) => t.text === \"{VAL}\")!\nconst text_cos = texts.find((t) => t.text === \"COS φ\")!\nref.x = 0.35\nref.y = 0\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\nval.x = -0.35\nval.y = 0\ntext_cos.x = 0\ntext_cos.y = 0\ntext_cos.anchor = \"center\"\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path12-1-8-6-9-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.013196749999999646,\n \"y\": 0.030446500000000043\n },\n {\n \"x\": 0.013196749999999646,\n \"y\": -0.0859464999999986\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4867871500000014,\n \"y\": -0.0510704999999998\n },\n {\n \"x\": -0.17248085000000124,\n \"y\": -0.0510704999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15916995000000078,\n \"y\": -0.0915204999999979\n },\n {\n \"x\": 0.1810634499999999,\n \"y\": -0.0915204999999979\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19611864999999984,\n \"y\": -0.05109549999999885\n },\n {\n \"x\": 0.48876354999999894,\n \"y\": -0.05109549999999885\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.007320949999999549,\n \"y\": 0.22461850000000005\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.1606897500000004,\n \"y\": -0.22461849999999828\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.47241845000000104,\n \"y\": -0.05104349999999869\n },\n \"right1\": {\n \"x\": 0.47241845000000016,\n \"y\": -0.051482499999998765\n }\n },\n \"bounds\": {\n \"minX\": -0.500576891000001,\n \"maxX\": 0.5005768910000001,\n \"minY\": -0.22461849999999828,\n \"maxY\": 0.22461850000000005,\n \"width\": 1.0011537820000012,\n \"height\": 0.44923699999999833,\n \"centerX\": -4.440892098500626e-16,\n \"centerY\": 8.881784197001252e-16\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": -0.14387115000000072,\n \"y\": -0.05130149999999922,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle\": {\n \"type\": \"circle\",\n \"x\": 0.16803074999999978,\n \"y\": -0.05007949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/push_button_normally_closed_momentary.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_left\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport push_button_normally_closed_momentary_horz from \"./push_button_normally_closed_momentary_horz\"\n\nexport default rotateSymbol(push_button_normally_closed_momentary_horz, \"up\")\n","{\n \"paths\": {\n \"path12-1-8-6-9-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04575882,\n \"y\": 0.08981650000000013\n },\n {\n \"x\": -0.04575882,\n \"y\": 0.039523500000001496\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-7-9-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04575882,\n \"y\": 0.08981650000000013\n },\n {\n \"x\": 0.06765231,\n \"y\": 0.08981650000000013\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-10\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.06765231,\n \"y\": 0.08981650000000013\n },\n {\n \"x\": 0.06765231,\n \"y\": 0.039523500000001496\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4867871500000014,\n \"y\": -0.0510704999999998\n },\n {\n \"x\": -0.17248085000000124,\n \"y\": -0.0510704999999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15916995000000078,\n \"y\": 0.039849500000000418\n },\n {\n \"x\": 0.1810634499999999,\n \"y\": 0.039849500000000418\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19611864999999984,\n \"y\": -0.05109549999999885\n },\n {\n \"x\": 0.48876354999999894,\n \"y\": -0.05109549999999885\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.007320949999999549,\n \"y\": 0.29461850000000005\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.1606897500000004,\n \"y\": -0.22461849999999828\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.47241845000000104,\n \"y\": -0.05104349999999869\n },\n \"right1\": {\n \"x\": 0.47241845000000016,\n \"y\": -0.051482499999998765\n }\n },\n \"bounds\": {\n \"minX\": -0.500576891000001,\n \"maxX\": 0.5005768910000001,\n \"minY\": -0.22461849999999828,\n \"maxY\": 0.22461850000000005,\n \"width\": 1.0011537820000012,\n \"height\": 0.44923699999999833,\n \"centerX\": -4.440892098500626e-16,\n \"centerY\": 8.881784197001252e-16\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": -0.14387115000000072,\n \"y\": -0.05130149999999922,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle\": {\n \"type\": \"circle\",\n \"x\": 0.16803074999999978,\n \"y\": -0.05007949999999717,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/push_button_normally_open_momentary.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_left\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport push_button_normally_open_momentary_horz from \"./push_button_normally_open_momentary_horz\"\n\nexport default rotateSymbol(push_button_normally_open_momentary_horz, \"up\")\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19250837381256392,\n \"y\": -0.32749349347032286\n },\n {\n \"x\": -0.25568957329611974,\n \"y\": -0.13794979950157282\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38205206778131373,\n \"y\": -0.26431229398676837\n },\n {\n \"x\": -0.19250837381256392,\n \"y\": -0.32749349347032286\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2556895732961204,\n \"y\": -0.13794979950157416\n },\n {\n \"x\": -0.38205206778131373,\n \"y\": -0.26431229398676837\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2556896210551609,\n \"y\": -0.39067474071292196\n },\n {\n \"x\": -0.12932712656996737,\n \"y\": -0.26431224622772653\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199237641156438,\n \"y\": -0.2000781031672434\n },\n {\n \"x\": -0.5084145145074668,\n \"y\": -0.011587352775420667\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.011560829633404435,\n \"y\": -0.5083596562436202\n },\n {\n \"x\": -0.19004023433272543,\n \"y\": -0.3298802515442989\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19250813152967883,\n \"y\": 0.3220463011874377\n },\n {\n \"x\": -0.38205182549842887,\n \"y\": 0.2588651017038819\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2556893310132333,\n \"y\": 0.13250260721868767\n },\n {\n \"x\": -0.19250813152967883,\n \"y\": 0.3220463011874377\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38205182549842753,\n \"y\": 0.258865101703881\n },\n {\n \"x\": -0.2556893310132333,\n \"y\": 0.13250260721868767\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12932688428707984,\n \"y\": 0.2588650539448407\n },\n {\n \"x\": -0.25568937877227516,\n \"y\": 0.38522754843003404\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3199235218327583,\n \"y\": 0.19463091088435758\n },\n {\n \"x\": -0.508414272224581,\n \"y\": 0.006140160492534852\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.011641968756381349,\n \"y\": 0.5029938453665972\n },\n {\n \"x\": -0.1901213734557028,\n \"y\": 0.3245144406672762\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.322578868470321,\n \"y\": -0.19315369881256328\n },\n {\n \"x\": 0.13303517450157099,\n \"y\": -0.2563348982961191\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2593976689867663,\n \"y\": -0.3826973927813131\n },\n {\n \"x\": 0.322578868470321,\n \"y\": -0.19315369881256328\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13303517450157232,\n \"y\": -0.2563348982961198\n },\n {\n \"x\": 0.2593976689867663,\n \"y\": -0.3826973927813131\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.38576011571292,\n \"y\": -0.2563349460551603\n },\n {\n \"x\": 0.2593976212277247,\n \"y\": -0.12997245156996673\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19516347816724133,\n \"y\": -0.3205690891156432\n },\n {\n \"x\": 0.006672727775418608,\n \"y\": -0.509059839507466\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5034450312436185,\n \"y\": -0.012206154633403798\n },\n {\n \"x\": 0.32496562654429706,\n \"y\": -0.19068555933272457\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3220220261874358,\n \"y\": 0.19326390652967795\n },\n {\n \"x\": 0.25884082670387976,\n \"y\": 0.382807600498428\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13247833221868577,\n \"y\": 0.25644510601323245\n },\n {\n \"x\": 0.3220220261874358,\n \"y\": 0.19326390652967795\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2588408267038793,\n \"y\": 0.38280760049842666\n },\n {\n \"x\": 0.13247833221868577,\n \"y\": 0.25644510601323245\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2588407789448386,\n \"y\": 0.13008265928707896\n },\n {\n \"x\": 0.38520327343003213,\n \"y\": 0.2564451537722743\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19460663588435567,\n \"y\": 0.3206792968327574\n },\n {\n \"x\": 0.0061158854925329464,\n \"y\": 0.5091700472245801\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5029695703665951,\n \"y\": 0.012397743756380697\n },\n {\n \"x\": 0.3244901656672745,\n \"y\": 0.19087714845570192\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.2872803000000015,\n \"y\": -0.4564494249999992\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.2872803000000015,\n \"y\": 0.4960514750000007\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.0005126999999993664,\n \"y\": -0.5191475\n },\n \"bottom1\": {\n \"x\": -0.0005123000000009093,\n \"y\": 0.5191475000000001\n },\n \"left1\": {\n \"x\": -0.5191472999999998,\n \"y\": -0.0005123250000014234\n },\n \"right1\": {\n \"x\": 0.5191473000000002,\n \"y\": 0.0005123749999977889\n }\n },\n \"bounds\": {\n \"minX\": -0.5473057409999997,\n \"maxX\": 0.5473057410000002,\n \"minY\": -0.5564494249999992,\n \"maxY\": 0.5473059410000001,\n \"width\": 1.094611482,\n \"height\": 1.1037553659999992,\n \"centerX\": 2.220446049250313e-16,\n \"centerY\": -0.004571741999999546\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/rectifier_diode.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\" },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"4\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import type { TextPrimitive } from \"drawing\"\nimport { rotateSymbol } from \"drawing/rotateSymbol\"\nimport rectifier_diode_horz from \"./rectifier_diode_horz\"\n\nconst rotated = rotateSymbol(rectifier_diode_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4569043500000003,\n \"y\": 0.039157350000001756\n },\n {\n \"x\": 0.20771145000000057,\n \"y\": 0.039157350000001756\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.20769534999999983,\n \"y\": 0.039438150000000505\n },\n {\n \"x\": -0.45688825,\n \"y\": 0.039438150000000505\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.20630645000000047,\n \"y\": 0.039758450000002554\n },\n {\n \"x\": 0.1862114500000005,\n \"y\": -0.048316949999996694\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.18642914999999993,\n \"y\": 0.13528805000000332\n },\n {\n \"x\": -0.20595035000000017,\n \"y\": 0.038328650000002185\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18570235000000013,\n \"y\": -0.04760624999999763\n },\n {\n \"x\": 0.13272245000000016,\n \"y\": 0.13556055000000278\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0797579500000003,\n \"y\": -0.04767594999999858\n },\n {\n \"x\": 0.13273785000000027,\n \"y\": 0.13549085000000183\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07970425000000025,\n \"y\": -0.04777924999999961\n },\n {\n \"x\": 0.026724350000000285,\n \"y\": 0.1353875500000008\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.026406449999999637,\n \"y\": -0.04765794999999784\n },\n {\n \"x\": 0.02657345000000033,\n \"y\": 0.13550885000000257\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.026501049999999804,\n \"y\": -0.047703750000000156\n },\n {\n \"x\": -0.07948094999999977,\n \"y\": 0.13546305000000203\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13244634999999993,\n \"y\": -0.04776144999999943\n },\n {\n \"x\": -0.07946644999999997,\n \"y\": 0.13540535000000276\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2-1-2-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13283204999999976,\n \"y\": -0.047856349999998216\n },\n {\n \"x\": -0.18581194999999973,\n \"y\": 0.1353104500000022\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.05143284999999986,\n \"y\": 0.4200086500000033\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.04241885000000023,\n \"y\": -0.42000864999999976\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.46575425000000026,\n \"y\": 0.037257550000001416\n },\n \"right1\": {\n \"x\": 0.4657542499999998,\n \"y\": 0.03817785000000207\n }\n },\n \"bounds\": {\n \"minX\": -0.49391269100000024,\n \"maxX\": 0.4939126909999998,\n \"minY\": -0.42000864999999976,\n \"maxY\": 0.4200086500000033,\n \"width\": 0.987825382,\n \"height\": 0.8400173000000031,\n \"centerX\": -2.220446049250313e-16,\n \"centerY\": 1.7763568394002505e-15\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.2194553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.2,\n y: 0.2194553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.1704553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.1704553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.2,\n y: -0.1404553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.1494553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.7635944500000007,\n \"y\": -0.2799544500000035\n },\n {\n \"x\": 0.3138028500000005,\n \"y\": -0.2799544500000035\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.301017949999999,\n \"y\": -0.01524775000000389\n },\n {\n \"x\": -0.7508096499999994,\n \"y\": -0.01524775000000389\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3010179499999994,\n \"y\": 0.3480486499999973\n },\n {\n \"x\": -0.301017949999999,\n \"y\": -0.2798310500000021\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.7729788499999999,\n \"y\": 0.3512451499999969\n },\n {\n \"x\": 0.32318725000000015,\n \"y\": 0.3512451499999969\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07279374999999932,\n \"y\": -0.27981925000000274\n },\n {\n \"x\": -0.2983350499999995,\n \"y\": -0.27981925000000274\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33114835000000076,\n \"y\": -0.2798404500000018\n },\n {\n \"x\": 0.10560705000000059,\n \"y\": -0.2798404500000018\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.055820049999999455,\n \"y\": -0.1676584500000029\n },\n {\n \"x\": -0.055820049999999455,\n \"y\": -0.3931997500000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09396265000000081,\n \"y\": -0.16768285000000382\n },\n {\n \"x\": 0.09396265000000081,\n \"y\": -0.39322415000000355\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07296184999999955,\n \"y\": 0.3513701499999957\n },\n {\n \"x\": -0.2985031499999997,\n \"y\": 0.3513701499999957\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33098025000000053,\n \"y\": 0.35134894999999844\n },\n {\n \"x\": 0.10543895000000036,\n \"y\": 0.35134894999999844\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05598814999999968,\n \"y\": 0.46353094999999733\n },\n {\n \"x\": -0.05598814999999968,\n \"y\": 0.23798964999999583\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-6-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09379455000000014,\n \"y\": 0.4635065499999982\n },\n {\n \"x\": 0.09379455000000014,\n \"y\": 0.23796524999999846\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-92\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3315317500000008,\n \"y\": 0.12563884999999786\n },\n {\n \"x\": 0.33153175000000035,\n \"y\": 0.3511801499999976\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3315105500000004,\n \"y\": -0.2783032500000022\n },\n {\n \"x\": 0.3315105500000004,\n \"y\": -0.0527619500000025\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44369255000000063,\n \"y\": 0.10866514999999843\n },\n {\n \"x\": 0.21815125000000046,\n \"y\": 0.10866514999999843\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-6-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4436681500000006,\n \"y\": -0.04111755000000272\n },\n {\n \"x\": 0.21812685000000043,\n \"y\": -0.04111755000000272\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44235445000000073,\n \"y\": 0.07167004999999627\n },\n {\n \"x\": 0.21681315000000057,\n \"y\": 0.07167004999999627\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4429695500000004,\n \"y\": -0.0025598500000008073\n },\n {\n \"x\": 0.4430214500000007,\n \"y\": 0.07134914999999609\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2-4-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.21634305000000031,\n \"y\": -0.0035468500000046532\n },\n {\n \"x\": 0.21639495000000064,\n \"y\": 0.07036214999999935\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4429537500000005,\n \"y\": -0.004130850000002795\n },\n {\n \"x\": 0.21741245000000076,\n \"y\": -0.004130850000002795\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.01596175000000022,\n \"y\": 0.5358501499999981\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.013116750000000454,\n \"y\": -0.5358501500000017\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.7666234499999998,\n \"y\": -0.01615045000000137\n },\n \"right1\": {\n \"x\": 0.7572390499999999,\n \"y\": -0.28185235000000297\n },\n \"right2\": {\n \"x\": 0.7666234500000004,\n \"y\": 0.3493472499999992\n }\n },\n \"bounds\": {\n \"minX\": -0.7947818909999997,\n \"maxX\": 0.7947818910000004,\n \"minY\": -0.5358501500000017,\n \"maxY\": 0.5358501499999981,\n \"width\": 1.5895637820000001,\n \"height\": 1.0717002999999998,\n \"centerX\": 3.3306690738754696e-16,\n \"centerY\": -1.7763568394002505e-15\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/resonator.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n // { ...texts.top1, anchor: \"middle_left\" },\n // { ...texts.bottom1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.01596175000000022,\n y: -0.5308501500000009,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.013116750000000454,\n y: 0.5408501499999989,\n anchor: \"middle_bottom\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right2, labels: [\"3\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport resonator_horz from \"./resonator_horz\"\n\nexport default rotateSymbol(resonator_horz)\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458930000000048,\n \"y\": 0.04403649999999937\n },\n {\n \"x\": -0.11999399999999905,\n \"y\": -0.0882552000000012\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.11999400000000038,\n \"y\": 0.1763281999999997\n },\n {\n \"x\": 0.14458929999999914,\n \"y\": 0.04403649999999937\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.11999400000000038,\n \"y\": -0.0882552000000012\n },\n {\n \"x\": -0.11999400000000038,\n \"y\": 0.17632819999999816\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1435300000000006,\n \"y\": 0.17844679999999968\n },\n {\n \"x\": 0.14458899999999986,\n \"y\": -0.08825519999999965\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12219870000000044,\n \"y\": 0.04403649999999937\n },\n {\n \"x\": -0.5168690000000005,\n \"y\": 0.04403649999999937\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5233800999999991,\n \"y\": 0.043951299999999804\n },\n {\n \"x\": 0.14967199999999892,\n \"y\": 0.043951299999999804\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2075533999999999,\n \"y\": 0.17973149999999904\n },\n {\n \"x\": 0.14341080000000028,\n \"y\": 0.17864949999999946\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2093444999999996,\n \"y\": 0.1301679\n },\n {\n \"x\": 0.20797049999999984,\n \"y\": 0.17950350000000048\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07978989999999953,\n \"y\": -0.09023340000000024\n },\n {\n \"x\": 0.14313979999999948,\n \"y\": -0.09001340000000013\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7-9-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07764390000000043,\n \"y\": -0.04104850000000004\n },\n {\n \"x\": 0.0790179000000002,\n \"y\": -0.09038410000000074\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999994495,\n \"y\": 0.27384530000000007\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999977319,\n \"y\": -0.27384530000000007\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471,\n \"y\": 0.044920799999999206\n },\n \"right1\": {\n \"x\": 0.5191470999999999,\n \"y\": 0.04389609999999999\n }\n },\n \"bounds\": {\n \"minX\": -0.547305541,\n \"maxX\": 0.5473055409999998,\n \"minY\": -0.27384530000000007,\n \"maxY\": 0.27384530000000007,\n \"width\": 1.0946110819999997,\n \"height\": 0.5476906000000001,\n \"centerX\": -5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/schottky_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport schottky_diode_right from \"./schottky_diode_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(schottky_diode_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\nref.y += 0.3\nref.x = 0.3\nval.y -= 0.3\nval.x = 0.3\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport schottky_diode_right from \"./schottky_diode_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(schottky_diode_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\nref.y += 0.5\nref.x = 0\nval.y -= 0.55\nval.x = 0.0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport schottky_diode_right from \"./schottky_diode_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(schottky_diode_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\nref.y += 0.3\nref.x = 0.3\nval.y -= 0.3\nval.x = 0.3\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.49895505000000084,\n \"y\": 0.04174485000000061\n },\n {\n \"x\": -0.177441850000001,\n \"y\": 0.04174485000000061\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18704774999999918,\n \"y\": 0.04961415000000069\n },\n {\n \"x\": 0.5063384499999999,\n \"y\": 0.04961415000000069\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18219425000000045,\n \"y\": -0.15200134999999904\n },\n {\n \"x\": 0.1810882500000004,\n \"y\": 0.2512156500000011\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18646324999999986,\n \"y\": 0.0047866500000004475\n },\n {\n \"x\": 0.34602244999999954,\n \"y\": -0.13539324999999924\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3463884499999992,\n \"y\": -0.14077354999999936\n },\n {\n \"x\": 0.3447284499999994,\n \"y\": -0.3343437499999993\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.17016305000000087,\n \"y\": 0.2706752500000007\n },\n {\n \"x\": -0.17223005000000047,\n \"y\": -0.15200864999999908\n },\n {\n \"x\": 0.180362149999999,\n \"y\": 0.04760855000000097\n },\n {\n \"x\": -0.16624855000000038,\n \"y\": 0.27180665000000137\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.22312565000000006,\n \"y\": 0.38273545\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.11142554999999987,\n \"y\": -0.38273544999999976\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0.3445824499999999,\n \"y\": -0.34953845000000006\n },\n \"left1\": {\n \"x\": -0.5177904499999998,\n \"y\": 0.04089205000000007\n },\n \"right1\": {\n \"x\": 0.5177904499999997,\n \"y\": 0.049757749999999934\n }\n },\n \"bounds\": {\n \"minX\": -0.5459488909999998,\n \"maxX\": 0.5459488909999997,\n \"minY\": -0.38273544999999976,\n \"maxY\": 0.38273545,\n \"width\": 1.0918977819999993,\n \"height\": 0.7654708999999997,\n \"centerX\": -5.551115123125783e-17,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/silicon_controlled_rectifier.json\"\nimport { TextPrimitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"bottom1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport silicon_controlled_rectifier_horz from \"./silicon_controlled_rectifier_horz\"\n\nconst rotatedSymbol = rotateSymbol(silicon_controlled_rectifier_horz)\n\nconst texts = rotatedSymbol.primitives.filter(\n (primitive) => primitive.type === \"text\",\n)\n\nconst ref = texts.find((text) => text.text === \"{REF}\")!\n\nref.y = 0\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.18117559999999955,\n \"y\": -0.025908000000000264\n },\n {\n \"x\": -0.4408346999999999,\n \"y\": -0.025908000000000264\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44036239999999993,\n \"y\": -0.024193299999999418\n },\n {\n \"x\": 0.1820955000000004,\n \"y\": -0.024193299999999418\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.06701930000000034,\n \"y\": -0.024201099999999753\n },\n {\n \"x\": -0.06611399999999956,\n \"y\": -0.024201099999999753\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0689196000000003,\n \"y\": 0.10123170000000048\n },\n {\n \"x\": 0.0689196000000003,\n \"y\": -0.15075489999999903\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06809120000000002,\n \"y\": 0.1013280000000003\n },\n {\n \"x\": -0.06809120000000002,\n \"y\": -0.15065859999999898\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07273700000000005,\n \"y\": -0.15401969999999987\n },\n {\n \"x\": -0.07273700000000005,\n \"y\": -0.15401969999999987\n },\n {\n \"x\": -0.0883637452185186,\n \"y\": -0.1455928476925925\n },\n {\n \"x\": -0.10242134708148157,\n \"y\": -0.13685699620740738\n },\n {\n \"x\": -0.11496246490000012,\n \"y\": -0.1278441337\n },\n {\n \"x\": -0.12603975798518532,\n \"y\": -0.11858624832592597\n },\n {\n \"x\": -0.13570588564814828,\n \"y\": -0.10911532824074079\n },\n {\n \"x\": -0.14401350720000017,\n \"y\": -0.09946336160000008\n },\n {\n \"x\": -0.15101528195185202,\n \"y\": -0.08966233655925933\n },\n {\n \"x\": -0.15676386921481505,\n \"y\": -0.07974424127407413\n },\n {\n \"x\": -0.16131192830000016,\n \"y\": -0.06974106390000002\n },\n {\n \"x\": -0.16471211851851875,\n \"y\": -0.05968479259259264\n },\n {\n \"x\": -0.16701709918148167,\n \"y\": -0.04960741550740742\n },\n {\n \"x\": -0.16827952960000025,\n \"y\": -0.03954092080000003\n },\n {\n \"x\": -0.16855206908518539,\n \"y\": -0.029517296625925914\n },\n {\n \"x\": -0.16788737694814843,\n \"y\": -0.01956853114074074\n },\n {\n \"x\": -0.16633811250000025,\n \"y\": -0.009726612499999964\n },\n {\n \"x\": -0.16395693505185213,\n \"y\": -0.00002352885925920034\n },\n {\n \"x\": -0.16079650391481512,\n \"y\": 0.009508731625925994\n },\n {\n \"x\": -0.15690947840000036,\n \"y\": 0.018838180800000083\n },\n {\n \"x\": -0.15234851781851885,\n \"y\": 0.0279328305074075\n },\n {\n \"x\": -0.14716628148148186,\n \"y\": 0.03676069259259269\n },\n {\n \"x\": -0.14141542870000037,\n \"y\": 0.04528977890000009\n },\n {\n \"x\": -0.13514861878518558,\n \"y\": 0.053488101274074155\n },\n {\n \"x\": -0.12841851104814855,\n \"y\": 0.06132367155925933\n },\n {\n \"x\": -0.12127776480000044,\n \"y\": 0.06876450160000006\n },\n {\n \"x\": -0.11377903935185232,\n \"y\": 0.07577860324074076\n },\n {\n \"x\": -0.1059749940148153,\n \"y\": 0.08233398832592591\n },\n {\n \"x\": -0.09791828810000051,\n \"y\": 0.08839866869999995\n },\n {\n \"x\": -0.08966158091851906,\n \"y\": 0.0939406562074073\n },\n {\n \"x\": -0.08125753178148204,\n \"y\": 0.09892796269259241\n },\n {\n \"x\": -0.0727588000000006,\n \"y\": 0.10332859999999976\n },\n {\n \"x\": -0.07275880000000057,\n \"y\": 0.10332859999999977\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07349080000000119,\n \"y\": -0.15414649999999952\n },\n {\n \"x\": 0.07349080000000119,\n \"y\": -0.15414649999999952\n },\n {\n \"x\": 0.08911754521851972,\n \"y\": -0.14571964769259216\n },\n {\n \"x\": 0.1031751470814827,\n \"y\": -0.13698379620740703\n },\n {\n \"x\": 0.11571626490000125,\n \"y\": -0.12797093369999965\n },\n {\n \"x\": 0.12679355798518643,\n \"y\": -0.11871304832592562\n },\n {\n \"x\": 0.13645968564814942,\n \"y\": -0.10924212824074045\n },\n {\n \"x\": 0.1447673072000013,\n \"y\": -0.09959016159999971\n },\n {\n \"x\": 0.15176908195185318,\n \"y\": -0.08978913655925898\n },\n {\n \"x\": 0.15751766921481616,\n \"y\": -0.0798710412740738\n },\n {\n \"x\": 0.1620657283000013,\n \"y\": -0.06986786389999967\n },\n {\n \"x\": 0.16546591851851983,\n \"y\": -0.0598115925925923\n },\n {\n \"x\": 0.16777089918148277,\n \"y\": -0.04973421550740708\n },\n {\n \"x\": 0.1690333296000014,\n \"y\": -0.03966772079999968\n },\n {\n \"x\": 0.1693058690851865,\n \"y\": -0.029644096625925563\n },\n {\n \"x\": 0.16864117694814956,\n \"y\": -0.01969533114074039\n },\n {\n \"x\": 0.16709191250000135,\n \"y\": -0.009853412499999614\n },\n {\n \"x\": 0.16471073505185324,\n \"y\": -0.00015032885925885323\n },\n {\n \"x\": 0.1615503039148162,\n \"y\": 0.009381931625926349\n },\n {\n \"x\": 0.15766327840000144,\n \"y\": 0.018711380800000437\n },\n {\n \"x\": 0.15310231781851993,\n \"y\": 0.027806030507407847\n },\n {\n \"x\": 0.1479200814814829,\n \"y\": 0.03663389259259304\n },\n {\n \"x\": 0.14216922870000145,\n \"y\": 0.04516297890000044\n },\n {\n \"x\": 0.13590241878518663,\n \"y\": 0.053361301274074506\n },\n {\n \"x\": 0.1291723110481496,\n \"y\": 0.061196871559259694\n },\n {\n \"x\": 0.12203156480000146,\n \"y\": 0.0686377016000004\n },\n {\n \"x\": 0.11453283935185332,\n \"y\": 0.07565180324074111\n },\n {\n \"x\": 0.1067287940148163,\n \"y\": 0.08220718832592627\n },\n {\n \"x\": 0.09867208810000148,\n \"y\": 0.0882718687000003\n },\n {\n \"x\": 0.09041538091852001,\n \"y\": 0.09381385620740765\n },\n {\n \"x\": 0.08201133178148297,\n \"y\": 0.09880116269259277\n },\n {\n \"x\": 0.07351260000000151,\n \"y\": 0.10320180000000011\n },\n {\n \"x\": 0.07351260000000148,\n \"y\": 0.10320180000000012\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.020635199999998965,\n \"y\": 0.15414649999999952\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": -0.025023700000000426\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": -0.02514810000000045\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.15414649999999952,\n \"maxY\": 0.15414649999999952,\n \"width\": 0.947918482,\n \"height\": 0.30829299999999904,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.18117559999999955,\n \"y\": -0.025908000000000264\n },\n {\n \"x\": -0.4408346999999999,\n \"y\": -0.025908000000000264\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44036239999999993,\n \"y\": -0.024193299999999418\n },\n {\n \"x\": 0.1820955000000004,\n \"y\": -0.024193299999999418\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0689196000000003,\n \"y\": 0.10123170000000048\n },\n {\n \"x\": 0.0689196000000003,\n \"y\": -0.15075489999999903\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06809120000000002,\n \"y\": 0.1013280000000003\n },\n {\n \"x\": -0.06809120000000002,\n \"y\": -0.15065859999999898\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07273700000000005,\n \"y\": -0.15401969999999987\n },\n {\n \"x\": -0.07273700000000005,\n \"y\": -0.15401969999999987\n },\n {\n \"x\": -0.0883637452185186,\n \"y\": -0.1455928476925925\n },\n {\n \"x\": -0.10242134708148157,\n \"y\": -0.13685699620740738\n },\n {\n \"x\": -0.11496246490000012,\n \"y\": -0.1278441337\n },\n {\n \"x\": -0.12603975798518532,\n \"y\": -0.11858624832592597\n },\n {\n \"x\": -0.13570588564814828,\n \"y\": -0.10911532824074079\n },\n {\n \"x\": -0.14401350720000017,\n \"y\": -0.09946336160000008\n },\n {\n \"x\": -0.15101528195185202,\n \"y\": -0.08966233655925933\n },\n {\n \"x\": -0.15676386921481505,\n \"y\": -0.07974424127407413\n },\n {\n \"x\": -0.16131192830000016,\n \"y\": -0.06974106390000002\n },\n {\n \"x\": -0.16471211851851875,\n \"y\": -0.05968479259259264\n },\n {\n \"x\": -0.16701709918148167,\n \"y\": -0.04960741550740742\n },\n {\n \"x\": -0.16827952960000025,\n \"y\": -0.03954092080000003\n },\n {\n \"x\": -0.16855206908518539,\n \"y\": -0.029517296625925914\n },\n {\n \"x\": -0.16788737694814843,\n \"y\": -0.01956853114074074\n },\n {\n \"x\": -0.16633811250000025,\n \"y\": -0.009726612499999964\n },\n {\n \"x\": -0.16395693505185213,\n \"y\": -0.00002352885925920034\n },\n {\n \"x\": -0.16079650391481512,\n \"y\": 0.009508731625925994\n },\n {\n \"x\": -0.15690947840000036,\n \"y\": 0.018838180800000083\n },\n {\n \"x\": -0.15234851781851885,\n \"y\": 0.0279328305074075\n },\n {\n \"x\": -0.14716628148148186,\n \"y\": 0.03676069259259269\n },\n {\n \"x\": -0.14141542870000037,\n \"y\": 0.04528977890000009\n },\n {\n \"x\": -0.13514861878518558,\n \"y\": 0.053488101274074155\n },\n {\n \"x\": -0.12841851104814855,\n \"y\": 0.06132367155925933\n },\n {\n \"x\": -0.12127776480000044,\n \"y\": 0.06876450160000006\n },\n {\n \"x\": -0.11377903935185232,\n \"y\": 0.07577860324074076\n },\n {\n \"x\": -0.1059749940148153,\n \"y\": 0.08233398832592591\n },\n {\n \"x\": -0.09791828810000051,\n \"y\": 0.08839866869999995\n },\n {\n \"x\": -0.08966158091851906,\n \"y\": 0.0939406562074073\n },\n {\n \"x\": -0.08125753178148204,\n \"y\": 0.09892796269259241\n },\n {\n \"x\": -0.0727588000000006,\n \"y\": 0.10332859999999976\n },\n {\n \"x\": -0.07275880000000057,\n \"y\": 0.10332859999999977\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07349080000000119,\n \"y\": -0.15414649999999952\n },\n {\n \"x\": 0.07349080000000119,\n \"y\": -0.15414649999999952\n },\n {\n \"x\": 0.08911754521851972,\n \"y\": -0.14571964769259216\n },\n {\n \"x\": 0.1031751470814827,\n \"y\": -0.13698379620740703\n },\n {\n \"x\": 0.11571626490000125,\n \"y\": -0.12797093369999965\n },\n {\n \"x\": 0.12679355798518643,\n \"y\": -0.11871304832592562\n },\n {\n \"x\": 0.13645968564814942,\n \"y\": -0.10924212824074045\n },\n {\n \"x\": 0.1447673072000013,\n \"y\": -0.09959016159999971\n },\n {\n \"x\": 0.15176908195185318,\n \"y\": -0.08978913655925898\n },\n {\n \"x\": 0.15751766921481616,\n \"y\": -0.0798710412740738\n },\n {\n \"x\": 0.1620657283000013,\n \"y\": -0.06986786389999967\n },\n {\n \"x\": 0.16546591851851983,\n \"y\": -0.0598115925925923\n },\n {\n \"x\": 0.16777089918148277,\n \"y\": -0.04973421550740708\n },\n {\n \"x\": 0.1690333296000014,\n \"y\": -0.03966772079999968\n },\n {\n \"x\": 0.1693058690851865,\n \"y\": -0.029644096625925563\n },\n {\n \"x\": 0.16864117694814956,\n \"y\": -0.01969533114074039\n },\n {\n \"x\": 0.16709191250000135,\n \"y\": -0.009853412499999614\n },\n {\n \"x\": 0.16471073505185324,\n \"y\": -0.00015032885925885323\n },\n {\n \"x\": 0.1615503039148162,\n \"y\": 0.009381931625926349\n },\n {\n \"x\": 0.15766327840000144,\n \"y\": 0.018711380800000437\n },\n {\n \"x\": 0.15310231781851993,\n \"y\": 0.027806030507407847\n },\n {\n \"x\": 0.1479200814814829,\n \"y\": 0.03663389259259304\n },\n {\n \"x\": 0.14216922870000145,\n \"y\": 0.04516297890000044\n },\n {\n \"x\": 0.13590241878518663,\n \"y\": 0.053361301274074506\n },\n {\n \"x\": 0.1291723110481496,\n \"y\": 0.061196871559259694\n },\n {\n \"x\": 0.12203156480000146,\n \"y\": 0.0686377016000004\n },\n {\n \"x\": 0.11453283935185332,\n \"y\": 0.07565180324074111\n },\n {\n \"x\": 0.1067287940148163,\n \"y\": 0.08220718832592627\n },\n {\n \"x\": 0.09867208810000148,\n \"y\": 0.0882718687000003\n },\n {\n \"x\": 0.09041538091852001,\n \"y\": 0.09381385620740765\n },\n {\n \"x\": 0.08201133178148297,\n \"y\": 0.09880116269259277\n },\n {\n \"x\": 0.07351260000000151,\n \"y\": 0.10320180000000011\n },\n {\n \"x\": 0.07351260000000148,\n \"y\": 0.10320180000000012\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.020635199999998965,\n \"y\": 0.15414649999999952\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": -0.025023700000000426\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": -0.02514810000000045\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.15414649999999952,\n \"maxY\": 0.15414649999999952,\n \"width\": 0.947918482,\n \"height\": 0.30829299999999904,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2201434999999996,\n \"y\": 0.10070297049999977\n },\n {\n \"x\": -0.4423810999999995,\n \"y\": 0.10070297049999977\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4419198000000002,\n \"y\": 0.10241767050000061\n },\n {\n \"x\": 0.2202255999999998,\n \"y\": 0.10241767050000061\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.026941129499999494\n },\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.2491787294999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12018260000000036,\n \"y\": 0.2278426705000005\n },\n {\n \"x\": 0.12018260000000036,\n \"y\": -0.024143929499998995\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04308860000000081,\n \"y\": 0.22353577050000006\n },\n {\n \"x\": 0.04308860000000081,\n \"y\": -0.019988129499999507\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04643790000000014,\n \"y\": 0.22381407049999957\n },\n {\n \"x\": -0.04643790000000014,\n \"y\": -0.01941752950000053\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.041140400000001076,\n \"y\": 0.22426507050000066\n },\n {\n \"x\": -0.04564229999999947,\n \"y\": 0.22426507050000066\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.040946200000001154,\n \"y\": -0.020314929500000023\n },\n {\n \"x\": -0.04528299999999841,\n \"y\": -0.020314929500000023\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12100790000000017,\n \"y\": 0.22793897050000034\n },\n {\n \"x\": -0.12100790000000017,\n \"y\": -0.024047629499998946\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1412804452185187,\n \"y\": -0.01898187719259248\n },\n {\n \"x\": -0.15533804708148174,\n \"y\": -0.01024602570740734\n },\n {\n \"x\": -0.16787916490000027,\n \"y\": -0.0012331631999999643\n },\n {\n \"x\": -0.17895645798518547,\n \"y\": 0.008024722174074087\n },\n {\n \"x\": -0.18862258564814843,\n \"y\": 0.017495642259259248\n },\n {\n \"x\": -0.19693020720000035,\n \"y\": 0.027147608899999988\n },\n {\n \"x\": -0.2039319819518522,\n \"y\": 0.036948633940740716\n },\n {\n \"x\": -0.20968056921481518,\n \"y\": 0.04686672922592592\n },\n {\n \"x\": -0.21422862830000028,\n \"y\": 0.056869906599999985\n },\n {\n \"x\": -0.21762881851851887,\n \"y\": 0.0669261779074074\n },\n {\n \"x\": -0.2199337991814818,\n \"y\": 0.07700355499259258\n },\n {\n \"x\": -0.22119622960000043,\n \"y\": 0.08707004970000001\n },\n {\n \"x\": -0.2214687690851855,\n \"y\": 0.0970936738740741\n },\n {\n \"x\": -0.2208040769481486,\n \"y\": 0.10704243935925932\n },\n {\n \"x\": -0.21925481250000037,\n \"y\": 0.11688435800000004\n },\n {\n \"x\": -0.21687363505185228,\n \"y\": 0.12658744164074084\n },\n {\n \"x\": -0.21371320391481524,\n \"y\": 0.136119702125926\n },\n {\n \"x\": -0.20982617840000045,\n \"y\": 0.14544915130000013\n },\n {\n \"x\": -0.20526521781851897,\n \"y\": 0.15454380100740753\n },\n {\n \"x\": -0.2000829814814819,\n \"y\": 0.1633716630925927\n },\n {\n \"x\": -0.19433212870000044,\n \"y\": 0.1719007494000001\n },\n {\n \"x\": -0.18806531878518568,\n \"y\": 0.1800990717740742\n },\n {\n \"x\": -0.18133521104814862,\n \"y\": 0.18793464205925936\n },\n {\n \"x\": -0.1741944648000005,\n \"y\": 0.1953754721000001\n },\n {\n \"x\": -0.16669573935185233,\n \"y\": 0.2023895737407408\n },\n {\n \"x\": -0.1588916940148153,\n \"y\": 0.20894495882592595\n },\n {\n \"x\": -0.1508349881000005,\n \"y\": 0.2150096392\n },\n {\n \"x\": -0.14257828091851904,\n \"y\": 0.22055162670740733\n },\n {\n \"x\": -0.134174231781482,\n \"y\": 0.22553893319259244\n },\n {\n \"x\": -0.12567550000000052,\n \"y\": 0.22993957049999977\n },\n {\n \"x\": -0.1256755000000005,\n \"y\": 0.2299395704999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.14038054521851845,\n \"y\": -0.01910867719259213\n },\n {\n \"x\": 0.15443814708148143,\n \"y\": -0.010372825707406991\n },\n {\n \"x\": 0.16697926489999995,\n \"y\": -0.0013599631999996126\n },\n {\n \"x\": 0.17805655798518522,\n \"y\": 0.007897922174074437\n },\n {\n \"x\": 0.18772268564814815,\n \"y\": 0.0173688422592596\n },\n {\n \"x\": 0.19603030720000003,\n \"y\": 0.027020808900000335\n },\n {\n \"x\": 0.2030320819518519,\n \"y\": 0.036821833940741074\n },\n {\n \"x\": 0.20878066921481492,\n \"y\": 0.04673992922592627\n },\n {\n \"x\": 0.2133287283,\n \"y\": 0.056743106600000336\n },\n {\n \"x\": 0.21672891851851858,\n \"y\": 0.06679937790740775\n },\n {\n \"x\": 0.2190338991814815,\n \"y\": 0.07687675499259294\n },\n {\n \"x\": 0.22029632960000012,\n \"y\": 0.08694324970000036\n },\n {\n \"x\": 0.2205688690851852,\n \"y\": 0.09696687387407443\n },\n {\n \"x\": 0.2199041769481483,\n \"y\": 0.10691563935925966\n },\n {\n \"x\": 0.21835491250000008,\n \"y\": 0.11675755800000039\n },\n {\n \"x\": 0.215973735051852,\n \"y\": 0.12646064164074117\n },\n {\n \"x\": 0.21281330391481496,\n \"y\": 0.13599290212592638\n },\n {\n \"x\": 0.20892627840000016,\n \"y\": 0.14532235130000049\n },\n {\n \"x\": 0.20436531781851866,\n \"y\": 0.15441700100740788\n },\n {\n \"x\": 0.19918308148148162,\n \"y\": 0.16324486309259306\n },\n {\n \"x\": 0.19343222870000015,\n \"y\": 0.17177394940000046\n },\n {\n \"x\": 0.18716541878518536,\n \"y\": 0.17997227177407454\n },\n {\n \"x\": 0.18043531104814833,\n \"y\": 0.1878078420592597\n },\n {\n \"x\": 0.1732945648000002,\n \"y\": 0.19524867210000044\n },\n {\n \"x\": 0.16579583935185205,\n \"y\": 0.20226277374074114\n },\n {\n \"x\": 0.157991794014815,\n \"y\": 0.2088181588259263\n },\n {\n \"x\": 0.1499350881000002,\n \"y\": 0.21488283920000034\n },\n {\n \"x\": 0.14167838091851875,\n \"y\": 0.2204248267074077\n },\n {\n \"x\": 0.1332743317814817,\n \"y\": 0.2254121331925928\n },\n {\n \"x\": 0.12477560000000024,\n \"y\": 0.22981277050000012\n },\n {\n \"x\": 0.12477560000000021,\n \"y\": 0.22981277050000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04651579999999966,\n \"y\": 0.10240987050000028\n },\n {\n \"x\": -0.12112780000000001,\n \"y\": 0.10240987050000028\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.020635199999998965,\n \"y\": 0.28075747049999955\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": -0.0034928000000000736,\n \"y\": -0.25259902949999957\n },\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": 0.1015872704999996\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": 0.10146287049999958\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.28075747049999955,\n \"maxY\": 0.28075747049999955,\n \"width\": 0.947918482,\n \"height\": 0.5615149409999991,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2201434999999996,\n \"y\": 0.10070297049999977\n },\n {\n \"x\": -0.4423810999999995,\n \"y\": 0.10070297049999977\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4419198000000002,\n \"y\": 0.10241767050000061\n },\n {\n \"x\": 0.2202255999999998,\n \"y\": 0.10241767050000061\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.11952539999999989,\n \"y\": 0.10240987050000028\n },\n {\n \"x\": 0.044913399999999326,\n \"y\": 0.10240987050000028\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.026941129499999494\n },\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.2491787294999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12018260000000036,\n \"y\": 0.2278426705000005\n },\n {\n \"x\": 0.12018260000000036,\n \"y\": -0.024143929499998995\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04308860000000081,\n \"y\": 0.22353577050000006\n },\n {\n \"x\": 0.04308860000000081,\n \"y\": -0.019988129499999507\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04643790000000014,\n \"y\": 0.22381407049999957\n },\n {\n \"x\": -0.04643790000000014,\n \"y\": -0.01941752950000053\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.041140400000001076,\n \"y\": 0.22426507050000066\n },\n {\n \"x\": -0.04564229999999947,\n \"y\": 0.22426507050000066\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.040946200000001154,\n \"y\": -0.020314929500000023\n },\n {\n \"x\": -0.04528299999999841,\n \"y\": -0.020314929500000023\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12100790000000017,\n \"y\": 0.22793897050000034\n },\n {\n \"x\": -0.12100790000000017,\n \"y\": -0.024047629499998946\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1412804452185187,\n \"y\": -0.01898187719259248\n },\n {\n \"x\": -0.15533804708148174,\n \"y\": -0.01024602570740734\n },\n {\n \"x\": -0.16787916490000027,\n \"y\": -0.0012331631999999643\n },\n {\n \"x\": -0.17895645798518547,\n \"y\": 0.008024722174074087\n },\n {\n \"x\": -0.18862258564814843,\n \"y\": 0.017495642259259248\n },\n {\n \"x\": -0.19693020720000035,\n \"y\": 0.027147608899999988\n },\n {\n \"x\": -0.2039319819518522,\n \"y\": 0.036948633940740716\n },\n {\n \"x\": -0.20968056921481518,\n \"y\": 0.04686672922592592\n },\n {\n \"x\": -0.21422862830000028,\n \"y\": 0.056869906599999985\n },\n {\n \"x\": -0.21762881851851887,\n \"y\": 0.0669261779074074\n },\n {\n \"x\": -0.2199337991814818,\n \"y\": 0.07700355499259258\n },\n {\n \"x\": -0.22119622960000043,\n \"y\": 0.08707004970000001\n },\n {\n \"x\": -0.2214687690851855,\n \"y\": 0.0970936738740741\n },\n {\n \"x\": -0.2208040769481486,\n \"y\": 0.10704243935925932\n },\n {\n \"x\": -0.21925481250000037,\n \"y\": 0.11688435800000004\n },\n {\n \"x\": -0.21687363505185228,\n \"y\": 0.12658744164074084\n },\n {\n \"x\": -0.21371320391481524,\n \"y\": 0.136119702125926\n },\n {\n \"x\": -0.20982617840000045,\n \"y\": 0.14544915130000013\n },\n {\n \"x\": -0.20526521781851897,\n \"y\": 0.15454380100740753\n },\n {\n \"x\": -0.2000829814814819,\n \"y\": 0.1633716630925927\n },\n {\n \"x\": -0.19433212870000044,\n \"y\": 0.1719007494000001\n },\n {\n \"x\": -0.18806531878518568,\n \"y\": 0.1800990717740742\n },\n {\n \"x\": -0.18133521104814862,\n \"y\": 0.18793464205925936\n },\n {\n \"x\": -0.1741944648000005,\n \"y\": 0.1953754721000001\n },\n {\n \"x\": -0.16669573935185233,\n \"y\": 0.2023895737407408\n },\n {\n \"x\": -0.1588916940148153,\n \"y\": 0.20894495882592595\n },\n {\n \"x\": -0.1508349881000005,\n \"y\": 0.2150096392\n },\n {\n \"x\": -0.14257828091851904,\n \"y\": 0.22055162670740733\n },\n {\n \"x\": -0.134174231781482,\n \"y\": 0.22553893319259244\n },\n {\n \"x\": -0.12567550000000052,\n \"y\": 0.22993957049999977\n },\n {\n \"x\": -0.1256755000000005,\n \"y\": 0.2299395704999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.14038054521851845,\n \"y\": -0.01910867719259213\n },\n {\n \"x\": 0.15443814708148143,\n \"y\": -0.010372825707406991\n },\n {\n \"x\": 0.16697926489999995,\n \"y\": -0.0013599631999996126\n },\n {\n \"x\": 0.17805655798518522,\n \"y\": 0.007897922174074437\n },\n {\n \"x\": 0.18772268564814815,\n \"y\": 0.0173688422592596\n },\n {\n \"x\": 0.19603030720000003,\n \"y\": 0.027020808900000335\n },\n {\n \"x\": 0.2030320819518519,\n \"y\": 0.036821833940741074\n },\n {\n \"x\": 0.20878066921481492,\n \"y\": 0.04673992922592627\n },\n {\n \"x\": 0.2133287283,\n \"y\": 0.056743106600000336\n },\n {\n \"x\": 0.21672891851851858,\n \"y\": 0.06679937790740775\n },\n {\n \"x\": 0.2190338991814815,\n \"y\": 0.07687675499259294\n },\n {\n \"x\": 0.22029632960000012,\n \"y\": 0.08694324970000036\n },\n {\n \"x\": 0.2205688690851852,\n \"y\": 0.09696687387407443\n },\n {\n \"x\": 0.2199041769481483,\n \"y\": 0.10691563935925966\n },\n {\n \"x\": 0.21835491250000008,\n \"y\": 0.11675755800000039\n },\n {\n \"x\": 0.215973735051852,\n \"y\": 0.12646064164074117\n },\n {\n \"x\": 0.21281330391481496,\n \"y\": 0.13599290212592638\n },\n {\n \"x\": 0.20892627840000016,\n \"y\": 0.14532235130000049\n },\n {\n \"x\": 0.20436531781851866,\n \"y\": 0.15441700100740788\n },\n {\n \"x\": 0.19918308148148162,\n \"y\": 0.16324486309259306\n },\n {\n \"x\": 0.19343222870000015,\n \"y\": 0.17177394940000046\n },\n {\n \"x\": 0.18716541878518536,\n \"y\": 0.17997227177407454\n },\n {\n \"x\": 0.18043531104814833,\n \"y\": 0.1878078420592597\n },\n {\n \"x\": 0.1732945648000002,\n \"y\": 0.19524867210000044\n },\n {\n \"x\": 0.16579583935185205,\n \"y\": 0.20226277374074114\n },\n {\n \"x\": 0.157991794014815,\n \"y\": 0.2088181588259263\n },\n {\n \"x\": 0.1499350881000002,\n \"y\": 0.21488283920000034\n },\n {\n \"x\": 0.14167838091851875,\n \"y\": 0.2204248267074077\n },\n {\n \"x\": 0.1332743317814817,\n \"y\": 0.2254121331925928\n },\n {\n \"x\": 0.12477560000000024,\n \"y\": 0.22981277050000012\n },\n {\n \"x\": 0.12477560000000021,\n \"y\": 0.22981277050000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04651579999999966,\n \"y\": 0.10240987050000028\n },\n {\n \"x\": -0.12112780000000001,\n \"y\": 0.10240987050000028\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.020635199999998965,\n \"y\": 0.28075747049999955\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": -0.0034928000000000736,\n \"y\": -0.25259902949999957\n },\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": 0.1015872704999996\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": 0.10146287049999958\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.28075747049999955,\n \"maxY\": 0.28075747049999955,\n \"width\": 0.947918482,\n \"height\": 0.5615149409999991,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2201434999999996,\n \"y\": 0.10070297049999977\n },\n {\n \"x\": -0.4423810999999995,\n \"y\": 0.10070297049999977\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4419198000000002,\n \"y\": 0.10241767050000061\n },\n {\n \"x\": 0.2202255999999998,\n \"y\": 0.10241767050000061\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.11952539999999989,\n \"y\": 0.10240987050000028\n },\n {\n \"x\": 0.044913399999999326,\n \"y\": 0.10240987050000028\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.026941129499999494\n },\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.2491787294999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12018260000000036,\n \"y\": 0.2278426705000005\n },\n {\n \"x\": 0.12018260000000036,\n \"y\": -0.024143929499998995\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04308860000000081,\n \"y\": 0.22353577050000006\n },\n {\n \"x\": 0.04308860000000081,\n \"y\": -0.019988129499999507\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04643790000000014,\n \"y\": 0.22381407049999957\n },\n {\n \"x\": -0.04643790000000014,\n \"y\": -0.01941752950000053\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.041140400000001076,\n \"y\": 0.22426507050000066\n },\n {\n \"x\": -0.04564229999999947,\n \"y\": 0.22426507050000066\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.040946200000001154,\n \"y\": -0.020314929500000023\n },\n {\n \"x\": -0.04528299999999841,\n \"y\": -0.020314929500000023\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12100790000000017,\n \"y\": 0.22793897050000034\n },\n {\n \"x\": -0.12100790000000017,\n \"y\": -0.024047629499998946\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1412804452185187,\n \"y\": -0.01898187719259248\n },\n {\n \"x\": -0.15533804708148174,\n \"y\": -0.01024602570740734\n },\n {\n \"x\": -0.16787916490000027,\n \"y\": -0.0012331631999999643\n },\n {\n \"x\": -0.17895645798518547,\n \"y\": 0.008024722174074087\n },\n {\n \"x\": -0.18862258564814843,\n \"y\": 0.017495642259259248\n },\n {\n \"x\": -0.19693020720000035,\n \"y\": 0.027147608899999988\n },\n {\n \"x\": -0.2039319819518522,\n \"y\": 0.036948633940740716\n },\n {\n \"x\": -0.20968056921481518,\n \"y\": 0.04686672922592592\n },\n {\n \"x\": -0.21422862830000028,\n \"y\": 0.056869906599999985\n },\n {\n \"x\": -0.21762881851851887,\n \"y\": 0.0669261779074074\n },\n {\n \"x\": -0.2199337991814818,\n \"y\": 0.07700355499259258\n },\n {\n \"x\": -0.22119622960000043,\n \"y\": 0.08707004970000001\n },\n {\n \"x\": -0.2214687690851855,\n \"y\": 0.0970936738740741\n },\n {\n \"x\": -0.2208040769481486,\n \"y\": 0.10704243935925932\n },\n {\n \"x\": -0.21925481250000037,\n \"y\": 0.11688435800000004\n },\n {\n \"x\": -0.21687363505185228,\n \"y\": 0.12658744164074084\n },\n {\n \"x\": -0.21371320391481524,\n \"y\": 0.136119702125926\n },\n {\n \"x\": -0.20982617840000045,\n \"y\": 0.14544915130000013\n },\n {\n \"x\": -0.20526521781851897,\n \"y\": 0.15454380100740753\n },\n {\n \"x\": -0.2000829814814819,\n \"y\": 0.1633716630925927\n },\n {\n \"x\": -0.19433212870000044,\n \"y\": 0.1719007494000001\n },\n {\n \"x\": -0.18806531878518568,\n \"y\": 0.1800990717740742\n },\n {\n \"x\": -0.18133521104814862,\n \"y\": 0.18793464205925936\n },\n {\n \"x\": -0.1741944648000005,\n \"y\": 0.1953754721000001\n },\n {\n \"x\": -0.16669573935185233,\n \"y\": 0.2023895737407408\n },\n {\n \"x\": -0.1588916940148153,\n \"y\": 0.20894495882592595\n },\n {\n \"x\": -0.1508349881000005,\n \"y\": 0.2150096392\n },\n {\n \"x\": -0.14257828091851904,\n \"y\": 0.22055162670740733\n },\n {\n \"x\": -0.134174231781482,\n \"y\": 0.22553893319259244\n },\n {\n \"x\": -0.12567550000000052,\n \"y\": 0.22993957049999977\n },\n {\n \"x\": -0.1256755000000005,\n \"y\": 0.2299395704999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.14038054521851845,\n \"y\": -0.01910867719259213\n },\n {\n \"x\": 0.15443814708148143,\n \"y\": -0.010372825707406991\n },\n {\n \"x\": 0.16697926489999995,\n \"y\": -0.0013599631999996126\n },\n {\n \"x\": 0.17805655798518522,\n \"y\": 0.007897922174074437\n },\n {\n \"x\": 0.18772268564814815,\n \"y\": 0.0173688422592596\n },\n {\n \"x\": 0.19603030720000003,\n \"y\": 0.027020808900000335\n },\n {\n \"x\": 0.2030320819518519,\n \"y\": 0.036821833940741074\n },\n {\n \"x\": 0.20878066921481492,\n \"y\": 0.04673992922592627\n },\n {\n \"x\": 0.2133287283,\n \"y\": 0.056743106600000336\n },\n {\n \"x\": 0.21672891851851858,\n \"y\": 0.06679937790740775\n },\n {\n \"x\": 0.2190338991814815,\n \"y\": 0.07687675499259294\n },\n {\n \"x\": 0.22029632960000012,\n \"y\": 0.08694324970000036\n },\n {\n \"x\": 0.2205688690851852,\n \"y\": 0.09696687387407443\n },\n {\n \"x\": 0.2199041769481483,\n \"y\": 0.10691563935925966\n },\n {\n \"x\": 0.21835491250000008,\n \"y\": 0.11675755800000039\n },\n {\n \"x\": 0.215973735051852,\n \"y\": 0.12646064164074117\n },\n {\n \"x\": 0.21281330391481496,\n \"y\": 0.13599290212592638\n },\n {\n \"x\": 0.20892627840000016,\n \"y\": 0.14532235130000049\n },\n {\n \"x\": 0.20436531781851866,\n \"y\": 0.15441700100740788\n },\n {\n \"x\": 0.19918308148148162,\n \"y\": 0.16324486309259306\n },\n {\n \"x\": 0.19343222870000015,\n \"y\": 0.17177394940000046\n },\n {\n \"x\": 0.18716541878518536,\n \"y\": 0.17997227177407454\n },\n {\n \"x\": 0.18043531104814833,\n \"y\": 0.1878078420592597\n },\n {\n \"x\": 0.1732945648000002,\n \"y\": 0.19524867210000044\n },\n {\n \"x\": 0.16579583935185205,\n \"y\": 0.20226277374074114\n },\n {\n \"x\": 0.157991794014815,\n \"y\": 0.2088181588259263\n },\n {\n \"x\": 0.1499350881000002,\n \"y\": 0.21488283920000034\n },\n {\n \"x\": 0.14167838091851875,\n \"y\": 0.2204248267074077\n },\n {\n \"x\": 0.1332743317814817,\n \"y\": 0.2254121331925928\n },\n {\n \"x\": 0.12477560000000024,\n \"y\": 0.22981277050000012\n },\n {\n \"x\": 0.12477560000000021,\n \"y\": 0.22981277050000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.020635199999998965,\n \"y\": 0.28075747049999955\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": -0.0034928000000000736,\n \"y\": -0.25259902949999957\n },\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": 0.1015872704999996\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": 0.10146287049999958\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.28075747049999955,\n \"maxY\": 0.28075747049999955,\n \"width\": 0.947918482,\n \"height\": 0.5615149409999991,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2201434999999996,\n \"y\": 0.10070297049999977\n },\n {\n \"x\": -0.4423810999999995,\n \"y\": 0.10070297049999977\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4419198000000002,\n \"y\": 0.10241767050000061\n },\n {\n \"x\": 0.2202255999999998,\n \"y\": 0.10241767050000061\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.026941129499999494\n },\n {\n \"x\": -0.002608399999999067,\n \"y\": -0.2491787294999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12018260000000036,\n \"y\": 0.2278426705000005\n },\n {\n \"x\": 0.12018260000000036,\n \"y\": -0.024143929499998995\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04308860000000081,\n \"y\": 0.22353577050000006\n },\n {\n \"x\": 0.04308860000000081,\n \"y\": -0.019988129499999507\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04643790000000014,\n \"y\": 0.22381407049999957\n },\n {\n \"x\": -0.04643790000000014,\n \"y\": -0.01941752950000053\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.041140400000001076,\n \"y\": 0.22426507050000066\n },\n {\n \"x\": -0.04564229999999947,\n \"y\": 0.22426507050000066\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.040946200000001154,\n \"y\": -0.020314929500000023\n },\n {\n \"x\": -0.04528299999999841,\n \"y\": -0.020314929500000023\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12100790000000017,\n \"y\": 0.22793897050000034\n },\n {\n \"x\": -0.12100790000000017,\n \"y\": -0.024047629499998946\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1256537000000002,\n \"y\": -0.02740872949999984\n },\n {\n \"x\": -0.1412804452185187,\n \"y\": -0.01898187719259248\n },\n {\n \"x\": -0.15533804708148174,\n \"y\": -0.01024602570740734\n },\n {\n \"x\": -0.16787916490000027,\n \"y\": -0.0012331631999999643\n },\n {\n \"x\": -0.17895645798518547,\n \"y\": 0.008024722174074087\n },\n {\n \"x\": -0.18862258564814843,\n \"y\": 0.017495642259259248\n },\n {\n \"x\": -0.19693020720000035,\n \"y\": 0.027147608899999988\n },\n {\n \"x\": -0.2039319819518522,\n \"y\": 0.036948633940740716\n },\n {\n \"x\": -0.20968056921481518,\n \"y\": 0.04686672922592592\n },\n {\n \"x\": -0.21422862830000028,\n \"y\": 0.056869906599999985\n },\n {\n \"x\": -0.21762881851851887,\n \"y\": 0.0669261779074074\n },\n {\n \"x\": -0.2199337991814818,\n \"y\": 0.07700355499259258\n },\n {\n \"x\": -0.22119622960000043,\n \"y\": 0.08707004970000001\n },\n {\n \"x\": -0.2214687690851855,\n \"y\": 0.0970936738740741\n },\n {\n \"x\": -0.2208040769481486,\n \"y\": 0.10704243935925932\n },\n {\n \"x\": -0.21925481250000037,\n \"y\": 0.11688435800000004\n },\n {\n \"x\": -0.21687363505185228,\n \"y\": 0.12658744164074084\n },\n {\n \"x\": -0.21371320391481524,\n \"y\": 0.136119702125926\n },\n {\n \"x\": -0.20982617840000045,\n \"y\": 0.14544915130000013\n },\n {\n \"x\": -0.20526521781851897,\n \"y\": 0.15454380100740753\n },\n {\n \"x\": -0.2000829814814819,\n \"y\": 0.1633716630925927\n },\n {\n \"x\": -0.19433212870000044,\n \"y\": 0.1719007494000001\n },\n {\n \"x\": -0.18806531878518568,\n \"y\": 0.1800990717740742\n },\n {\n \"x\": -0.18133521104814862,\n \"y\": 0.18793464205925936\n },\n {\n \"x\": -0.1741944648000005,\n \"y\": 0.1953754721000001\n },\n {\n \"x\": -0.16669573935185233,\n \"y\": 0.2023895737407408\n },\n {\n \"x\": -0.1588916940148153,\n \"y\": 0.20894495882592595\n },\n {\n \"x\": -0.1508349881000005,\n \"y\": 0.2150096392\n },\n {\n \"x\": -0.14257828091851904,\n \"y\": 0.22055162670740733\n },\n {\n \"x\": -0.134174231781482,\n \"y\": 0.22553893319259244\n },\n {\n \"x\": -0.12567550000000052,\n \"y\": 0.22993957049999977\n },\n {\n \"x\": -0.1256755000000005,\n \"y\": 0.2299395704999998\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.12475379999999991,\n \"y\": -0.02753552949999949\n },\n {\n \"x\": 0.14038054521851845,\n \"y\": -0.01910867719259213\n },\n {\n \"x\": 0.15443814708148143,\n \"y\": -0.010372825707406991\n },\n {\n \"x\": 0.16697926489999995,\n \"y\": -0.0013599631999996126\n },\n {\n \"x\": 0.17805655798518522,\n \"y\": 0.007897922174074437\n },\n {\n \"x\": 0.18772268564814815,\n \"y\": 0.0173688422592596\n },\n {\n \"x\": 0.19603030720000003,\n \"y\": 0.027020808900000335\n },\n {\n \"x\": 0.2030320819518519,\n \"y\": 0.036821833940741074\n },\n {\n \"x\": 0.20878066921481492,\n \"y\": 0.04673992922592627\n },\n {\n \"x\": 0.2133287283,\n \"y\": 0.056743106600000336\n },\n {\n \"x\": 0.21672891851851858,\n \"y\": 0.06679937790740775\n },\n {\n \"x\": 0.2190338991814815,\n \"y\": 0.07687675499259294\n },\n {\n \"x\": 0.22029632960000012,\n \"y\": 0.08694324970000036\n },\n {\n \"x\": 0.2205688690851852,\n \"y\": 0.09696687387407443\n },\n {\n \"x\": 0.2199041769481483,\n \"y\": 0.10691563935925966\n },\n {\n \"x\": 0.21835491250000008,\n \"y\": 0.11675755800000039\n },\n {\n \"x\": 0.215973735051852,\n \"y\": 0.12646064164074117\n },\n {\n \"x\": 0.21281330391481496,\n \"y\": 0.13599290212592638\n },\n {\n \"x\": 0.20892627840000016,\n \"y\": 0.14532235130000049\n },\n {\n \"x\": 0.20436531781851866,\n \"y\": 0.15441700100740788\n },\n {\n \"x\": 0.19918308148148162,\n \"y\": 0.16324486309259306\n },\n {\n \"x\": 0.19343222870000015,\n \"y\": 0.17177394940000046\n },\n {\n \"x\": 0.18716541878518536,\n \"y\": 0.17997227177407454\n },\n {\n \"x\": 0.18043531104814833,\n \"y\": 0.1878078420592597\n },\n {\n \"x\": 0.1732945648000002,\n \"y\": 0.19524867210000044\n },\n {\n \"x\": 0.16579583935185205,\n \"y\": 0.20226277374074114\n },\n {\n \"x\": 0.157991794014815,\n \"y\": 0.2088181588259263\n },\n {\n \"x\": 0.1499350881000002,\n \"y\": 0.21488283920000034\n },\n {\n \"x\": 0.14167838091851875,\n \"y\": 0.2204248267074077\n },\n {\n \"x\": 0.1332743317814817,\n \"y\": 0.2254121331925928\n },\n {\n \"x\": 0.12477560000000024,\n \"y\": 0.22981277050000012\n },\n {\n \"x\": 0.12477560000000021,\n \"y\": 0.22981277050000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.020635199999998965,\n \"y\": 0.28075747049999955\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": -0.0034928000000000736,\n \"y\": -0.25259902949999957\n },\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": 0.1015872704999996\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": 0.10146287049999958\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.28075747049999955,\n \"maxY\": 0.28075747049999955,\n \"width\": 0.947918482,\n \"height\": 0.5615149409999991,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3543583500000005,\n \"y\": 0.03204385000000087\n },\n {\n \"x\": -0.12792935000000005,\n \"y\": 0.03204385000000087\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0733669500000003,\n \"y\": 0.0261987500000005\n },\n {\n \"x\": 0.10908324999999997,\n \"y\": -0.029100155000000048\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1043477500000003,\n \"y\": -0.0645130499999993\n },\n {\n \"x\": 0.34508875000000017,\n \"y\": -0.0645130499999993\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12008575000000055,\n \"y\": 0.17214665000000062\n },\n {\n \"x\": 0.3608267500000004,\n \"y\": 0.17214665000000062\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.3716265000000006\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.3716264999999984\n }\n },\n \"refblocks\": {\n\n \"left1\": {\n \"x\": -0.3682737499999995,\n \"y\": 0.03204385000000021\n },\n\n \"right1\": {\n \"x\": 0.3682737499999995,\n \"y\": -0.06451304999999996\n },\n \"right2\": {\n \"x\": 0.3682737499999995,\n \"y\": 0.17214665000000062\n }\n },\n \"bounds\": {\n \"minX\": -0.3964321909999995,\n \"maxX\": 0.3964321909999995,\n \"minY\": -0.39716264999999984,\n \"maxY\": 0.39716265000000006,\n \"width\": 0.792864381999999,\n \"height\": 0.7943252999999999,\n \"centerX\": 0,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": -0.06518,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.099003074999999978,\n \"y\": 0.02848,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": 0.172848,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n }","import svgJson from \"assets/generated/spdt_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right2\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_normally_closed_switch_right from \"./spdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.44\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.44\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_normally_closed_switch_right from \"./spdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.625\nval.y -= 0.695\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_normally_closed_switch_right from \"./spdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.4\n\nexport default rotated\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3543583500000005,\n \"y\": 0.03204385000000087\n },\n {\n \"x\": -0.12792935000000005,\n \"y\": 0.03204385000000087\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0733669500000003,\n \"y\": 0.0321987500000005\n },\n {\n \"x\": 0.11208324999999997,\n \"y\": 0.14000155000000048\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1043477500000003,\n \"y\": -0.0645130499999993\n },\n {\n \"x\": 0.34508875000000017,\n \"y\": -0.0645130499999993\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12008575000000055,\n \"y\": 0.17214665000000062\n },\n {\n \"x\": 0.3608267500000004,\n \"y\": 0.17214665000000062\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.39716265000000006\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.39716264999999984\n }\n },\n \"refblocks\": {\n\n \"left1\": {\n \"x\": -0.3682737499999995,\n \"y\": 0.03204385000000021\n },\n\n \"right1\": {\n \"x\": 0.3682737499999995,\n \"y\": -0.06451304999999996\n },\n\n \"right3\": {\n \"x\": 0.3682737499999995,\n \"y\": 0.17214664999999973\n }\n },\n \"bounds\": {\n \"minX\": -0.3964321909999995,\n \"maxX\": 0.3964321909999995,\n \"minY\": -0.39716264999999984,\n \"maxY\": 0.39716265000000006,\n \"width\": 0.792864381999999,\n \"height\": 0.7943252999999999,\n \"centerX\": 0,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": { \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": -0.06518,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.099003074999999978,\n \"y\": 0.02848,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.082003074999999978,\n \"y\": 0.172848,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n }\n","import svgJson from \"assets/generated/spdt_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right3\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_switch_right from \"./spdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.44\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.44\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_switch_right from \"./spdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.625\nval.y -= 0.695\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_switch_right from \"./spdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.4\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3622273500000006,\n \"y\": -0.0018583499999986763\n },\n {\n \"x\": -0.13579835000000018,\n \"y\": -0.0018583499999986763\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07410005000000046,\n \"y\": -0.0003888499999992217\n },\n {\n \"x\": 0.110307834999999987,\n \"y\": 0.04830055000000119\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12795584999999932,\n \"y\": -0.0018583499999986763\n },\n {\n \"x\": 0.3686967499999996,\n \"y\": -0.0018583499999986763\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.31026835000000003\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.28026835000000003\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.12356015000000009,\n \"y\": -0.006648049999999239\n },\n \"left2\": {\n \"x\": -0.37614274999999964,\n \"y\": -0.002711249999999721\n },\n \"right1\": {\n \"x\": 0.11531695000000042,\n \"y\": -0.006648049999999239\n },\n \"right2\": {\n \"x\": 0.37614274999999964,\n \"y\": -0.0017148499999992683\n }\n },\n \"bounds\": {\n \"minX\": -0.4043011909999996,\n \"maxX\": 0.4043011909999996,\n \"minY\": -0.25026835000000003,\n \"maxY\": 0.25026835000000003,\n \"width\": 0.8086023819999992,\n \"height\": 0.5005367000000001,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.099003074999999978,\n \"y\": 0.00148,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.099003074999999978,\n \"y\": 0.00148,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n }","import svgJson from \"assets/generated/spst_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\ndelete (svgJson.refblocks as any).left1\ndelete (svgJson.refblocks as any).right1\nsvgJson.bounds.width += 0.2\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left2\", [\"1\"])\n .labelPort(\"right2\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_normally_closed_switch_right from \"./spst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_normally_closed_switch_right from \"./spst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.57\nval.y -= 0.57\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_normally_closed_switch_right from \"./spst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3622273500000006,\n \"y\": -0.0018583499999986763\n },\n {\n \"x\": -0.13579835000000018,\n \"y\": -0.0018583499999986763\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07010005000000046,\n \"y\": 0.01\n },\n {\n \"x\": 0.10307834999999987,\n \"y\": 0.13630055000000119\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12795584999999932,\n \"y\": -0.0018583499999986763\n },\n {\n \"x\": 0.3686967499999996,\n \"y\": -0.0018583499999986763\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.25026835000000003\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.25026835000000003\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.12356015000000009,\n \"y\": -0.006648049999999239\n },\n \"left2\": {\n \"x\": -0.37614274999999964,\n \"y\": -0.002711249999999721\n },\n \"right1\": {\n \"x\": 0.11531695000000042,\n \"y\": -0.006648049999999239\n },\n \"right2\": {\n \"x\": 0.37614274999999964,\n \"y\": -0.0017148499999992683\n }\n },\n \"bounds\": {\n \"minX\": -0.4043011909999996,\n \"maxX\": 0.4043011909999996,\n \"minY\": -0.25026835000000003,\n \"maxY\": 0.25026835000000003,\n \"width\": 0.8086023819999992,\n \"height\": 0.5005367000000001,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": { \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.099003074999999978,\n \"y\": 0.00148,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.099003074999999978,\n \"y\": 0.00148,\n \"radius\": 0.023193523,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n }\n","import svgJson from \"assets/generated/spst_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\ndelete (svgJson.refblocks as any).left1\ndelete (svgJson.refblocks as any).right1\nsvgJson.bounds.width += 0.2\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left2\", [\"1\"])\n .labelPort(\"right2\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_switch_right from \"./spst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_switch_right from \"./spst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.57\nval.y -= 0.57\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_switch_right from \"./spst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999836\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.08825540000000132\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.1763280000000016\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999836\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.08825539999999776\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.1763280000000016\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.1763280000000016\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": -0.08825539999999776\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12219909999999956,\n \"y\": 0.04403629999999836\n },\n {\n \"x\": -0.5168693999999996,\n \"y\": 0.04403629999999836\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5233797,\n \"y\": 0.04395110000000102\n },\n {\n \"x\": 0.14967160000000002,\n \"y\": 0.04395110000000102\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19156529999999972,\n \"y\": -0.0884020999999997\n },\n {\n \"x\": 0.14591529999999908,\n \"y\": -0.08876210000000029\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-5-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19233440000000046,\n \"y\": -0.1355493999999986\n },\n {\n \"x\": 0.19197439999999988,\n \"y\": -0.08989940000000018\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.27384529999999785\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999999524,\n \"y\": -0.2738453000000014\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471000000001,\n \"y\": 0.0449206999999987\n },\n \"right1\": {\n \"x\": 0.5191471000000001,\n \"y\": 0.043896100000001326\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055410000001,\n \"minY\": -0.2738453000000014,\n \"maxY\": 0.27384529999999785,\n \"width\": 1.0946110820000001,\n \"height\": 0.5476905999999993,\n \"centerX\": 0,\n \"centerY\": -1.7763568394002505e-15\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/step_recovery_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport step_recovery_diode_horz from \"./step_recovery_diode_horz\"\n\nexport default rotateSymbol(step_recovery_diode_horz)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.36197569999999946\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.43234960000000044\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"RPM\",\n \"x\": 0,\n \"y\": -0.025\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0.000852800000000542\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": -0.00014359999999924433\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.006997299999999651,\n \"y\": -0.007128299999999532,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/tachometer.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, y: 0.01, anchor: \"center\", fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tachometer_horz from \"./tachometer_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = tachometer_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...tachometer_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","import { defineSymbol } from \"drawing/defineSymbol\"\n\nexport default defineSymbol({\n primitives: [\n {\n type: \"path\",\n points: [\n { x: -0.2, y: 0 },\n { x: 0, y: 0 },\n ],\n color: \"primary\",\n fill: false,\n },\n {\n type: \"path\",\n points: Array.from({ length: 8 }, (_, i) => {\n const angle = Math.PI / 2 - (i * Math.PI) / 7\n const r = 0.1\n return { x: 0.1 - r * Math.cos(angle), y: r * Math.sin(angle) }\n }),\n color: \"primary\",\n fill: false,\n },\n { type: \"text\", text: \"{REF}\", x: 0.125, y: 0, anchor: \"middle_left\" },\n ],\n ports: [{ x: -0.2, y: 0, labels: [\"1\"] }],\n center: { x: 0, y: 0 },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport type { TextPrimitive } from \"drawing\"\nimport testpoint_right from \"./testpoint_right\"\n\nconst rotated = rotateSymbol(testpoint_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n) as TextPrimitive | undefined\n\nif (ref) {\n ref.anchor = \"middle_top\"\n}\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport testpoint_right from \"./testpoint_right\"\n\nexport default rotateSymbol(testpoint_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport testpoint_right from \"./testpoint_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(testpoint_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n) as TextPrimitive | undefined\n\nif (ref) {\n ref.anchor = \"middle_bottom\"\n}\n\nexport default rotated\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44458890000000002,\n \"y\": 0.04403629999999836\n },\n {\n \"x\": 0.1899943999999995,\n \"y\": -0.08825540000000132\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1899943999999995,\n \"y\": 0.1763280000000016\n },\n {\n \"x\": 0.44458890000000002,\n \"y\": 0.04403629999999836\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1899943999999995,\n \"y\": -0.08825539999999776\n },\n {\n \"x\": 0.1899943999999995,\n \"y\": 0.1763280000000016\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1899943999999995,\n \"y\": 0.04403629999999836\n },\n {\n \"x\": -0.108693999999996,\n \"y\": 0.04403629999999836\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.40219909999999956,\n \"y\": 0.20403629999999836\n },\n {\n \"x\": -0.108693999999996,\n \"y\": 0.04403629999999836\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.27384529999999785\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999999524,\n \"y\": -0.2738453000000014\n }\n },\n \"refblocks\": {\n \"right1\": {\n \"x\": -0.4259909999999956,\n \"y\": 0.2173629999999836\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055410000001,\n \"minY\": -0.2738453000000014,\n \"maxY\": 0.27384529999999785,\n \"width\": 1.0946110820000001,\n \"height\": 0.5476905999999993,\n \"centerX\": 0,\n \"centerY\": -1.7763568394002505e-15\n },\n \"circles\": {\n }\n }\n ","import svgJson from \"assets/generated/tilted_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"right1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tilted_ground_right from \"./tilted_ground_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(tilted_ground_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.2\nval.y -= 0.3\nval.x = 0.4\n\nexport default rotated\n","import { flipSymbolOverXAxis } from \"drawing/rotateSymbol\"\nimport tilted_ground_up from \"./tilted_ground_up\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = flipSymbolOverXAxis(tilted_ground_up)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.35\nref.y += 0.4\nval.y -= 0.4\nval.x = 0.35\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tilted_ground_right from \"./tilted_ground_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(tilted_ground_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.5\nval.y -= 0.6\nval.x = 0\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5176700499999997,\n \"y\": 0.041745050000000505\n },\n {\n \"x\": -0.10888805000000024,\n \"y\": 0.041745050000000505\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1031184499999993,\n \"y\": 0.041745050000000505\n },\n {\n \"x\": 0.5246894499999994,\n \"y\": 0.041745050000000505\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09343985000000021,\n \"y\": -0.14620634999999882\n },\n {\n \"x\": -0.0930998500000002,\n \"y\": 0.2583405500000009\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08519034999999908,\n \"y\": -0.14503384999999902\n },\n {\n \"x\": 0.08553034999999909,\n \"y\": 0.2595130500000007\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08315755000000014,\n \"y\": 0.055934450000000524\n },\n {\n \"x\": -0.08415755000000047,\n \"y\": -0.14678124999999964\n },\n {\n \"x\": 0.08653524999999984,\n \"y\": -0.05104664999999953\n },\n {\n \"x\": -0.08126175000000035,\n \"y\": 0.05647715000000031\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-9-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07661224999999927,\n \"y\": 0.256654450000001\n },\n {\n \"x\": 0.07761224999999983,\n \"y\": 0.05393885000000109\n },\n {\n \"x\": -0.0930805500000007,\n \"y\": 0.1496734500000012\n },\n {\n \"x\": 0.07471644999999949,\n \"y\": 0.25719715000000143\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path12-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09001085000000009,\n \"y\": -0.05964874999999914\n },\n {\n \"x\": 0.2707999499999998,\n \"y\": -0.1711147499999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.27291134999999955,\n \"y\": -0.17591894999999935\n },\n {\n \"x\": 0.27124034999999935,\n \"y\": -0.30168314999999923\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.0077081499999991365,\n \"y\": 0.41683614999999996\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.03022294999999975,\n \"y\": -0.41683614999999996\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0.27223905000000026,\n \"y\": -0.3087962499999999\n },\n \"left1\": {\n \"x\": -0.54139845,\n \"y\": 0.04089205000000051\n },\n \"right1\": {\n \"x\": 0.5413984499999995,\n \"y\": 0.04188845000000008\n }\n },\n \"bounds\": {\n \"minX\": -0.569556891,\n \"maxX\": 0.5695568909999995,\n \"minY\": -0.41683614999999996,\n \"maxY\": 0.41683614999999996,\n \"width\": 1.1391137819999995,\n \"height\": 0.8336722999999999,\n \"centerX\": -2.220446049250313e-16,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000003116,\n \"y\": 0.048873150000000365,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/triac.json\"\nimport { TextPrimitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"bottom1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport triac_horz from \"./triac_horz\"\n\nconst rotatedSymbol = rotateSymbol(triac_horz)\n\nconst texts = rotatedSymbol.primitives.filter(\n (primitive) => primitive.type === \"text\",\n)\n\nconst ref = texts.find((text) => text.text === \"{REF}\")!\nconst val = texts.find((text) => text.text === \"{VAL}\")!\n\nref.y = 0\nval.y = 0\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999992\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.08825540000000043\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.17632800000000026\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.0882553999999991\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.17632800000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.17632800000000026\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": -0.0882553999999991\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12219909999999956,\n \"y\": 0.04403629999999992\n },\n {\n \"x\": -0.5168693999999996,\n \"y\": 0.04403629999999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5233797000000002,\n \"y\": 0.043951100000000354\n },\n {\n \"x\": 0.1496715999999998,\n \"y\": 0.043951100000000354\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14339119999999994,\n \"y\": 0.17681090000000044\n },\n {\n \"x\": 0.07728679999999954,\n \"y\": 0.17632089999999967\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1446069000000001,\n \"y\": -0.08908179999999888\n },\n {\n \"x\": 0.0785024999999997,\n \"y\": -0.08957179999999942\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.27384530000000007\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999977319,\n \"y\": -0.27384529999999985\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471000000001,\n \"y\": 0.044920700000000924\n },\n \"right1\": {\n \"x\": 0.5191470999999999,\n \"y\": 0.04389609999999999\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055409999998,\n \"minY\": -0.27384529999999985,\n \"maxY\": 0.27384530000000007,\n \"width\": 1.094611082,\n \"height\": 0.5476905999999999,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/tunnel_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tunnel_diode_horz from \"./tunnel_diode_horz\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(tunnel_diode_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3274461945,\n \"y\": 0.20527883627037657\n },\n {\n \"x\": -0.021085194500000348,\n \"y\": 0.007570136270376837\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2331163055000003,\n \"y\": 0.1251673362703769\n },\n {\n \"x\": 0.2320633055000001,\n \"y\": 0.3759855362703768\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.23221610549999938,\n \"y\": -0.0818845637296235\n },\n {\n \"x\": 0.2311631054999992,\n \"y\": -0.33270276372962315\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.013263894499999873,\n \"y\": -0.1792007637296229\n },\n {\n \"x\": -0.012923894499999866,\n \"y\": 0.2253461362703768\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.23222970550000066,\n \"y\": 0.12047013627037662\n },\n {\n \"x\": -0.011307094499999115,\n \"y\": 0.11996013627037683\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1124341944999998,\n \"y\": 0.131359936270377\n },\n {\n \"x\": -0.16993279449999954,\n \"y\": 0.039004036270377185\n },\n {\n \"x\": -0.05822649449999928,\n \"y\": 0.03212003627037707\n },\n {\n \"x\": -0.11133889449999979,\n \"y\": 0.13104553627037707\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-3-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.23230320549999983,\n \"y\": -0.08329316372962325\n },\n {\n \"x\": -0.011233594499999944,\n \"y\": -0.07900616372962332\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.19541139450000045,\n \"y\": 0.389088136270376\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.031363394499999364,\n \"y\": -0.42359956372962415\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.2317438004035266,\n \"y\": 0.3954411227296242\n },\n \"bottom1\": {\n \"x\": 0.2308431668082036,\n \"y\": -0.35215823360635445\n },\n \"left1\": {\n \"x\": -0.34055979449999985,\n \"y\": 0.21512343627037622\n }\n },\n \"bounds\": {\n \"minX\": -0.3687182354999998,\n \"maxX\": 0.3687182354999999,\n \"minY\": -0.42359956372962415,\n \"maxY\": 0.42359956372962415,\n \"width\": 0.7374364709999996,\n \"height\": 0.8471991274592483,\n \"centerX\": 2.7755575615628914e-17,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.08017610549999987,\n \"y\": 0.006746336270376352,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/unijunction_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport unijunction_transistor_horz from \"./unijunction_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(unijunction_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter(\n (primitive) => primitive.type === \"text\",\n)\n\nconst ref = texts.find((text) => text.text === \"{REF}\")!\n\nref.y = 0.1\n\nconst val = texts.find((text) => text.text === \"{VAL}\")!\n\nval.y = 0.1\nval.x = -0.4\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.36197569999999946\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.43234960000000044\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Var\",\n \"x\": -0.19436529999999896,\n \"y\": 0.07249430000000023\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0.000852800000000542\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": -0.00014359999999924433\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.006997299999999651,\n \"y\": -0.007128299999999532,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/var_meter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n ...texts.top1,\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n ...texts.bottom1,\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, x: -0.02, y: 0.01, fontSize: 0.2, anchor: \"center\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport var_meter_horz from \"./var_meter_horz\"\n\nexport default rotateSymbol(var_meter_horz)\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08342510000000014,\n \"y\": 0.04403649999999937\n },\n {\n \"x\": -0.18115819999999938,\n \"y\": -0.0882552000000012\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1811582000000007,\n \"y\": 0.1763281999999997\n },\n {\n \"x\": 0.08342509999999881,\n \"y\": 0.04403649999999937\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1811582000000007,\n \"y\": -0.0882552000000012\n },\n {\n \"x\": -0.1811582000000007,\n \"y\": 0.17632819999999816\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0949504999999995,\n \"y\": 0.17485119999999976\n },\n {\n \"x\": 0.09600949999999897,\n \"y\": -0.09185079999999957\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1954338999999996,\n \"y\": 0.04403649999999937\n },\n {\n \"x\": -0.5191807000000004,\n \"y\": 0.04403649999999937\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5253116,\n \"y\": 0.043951299999999804\n },\n {\n \"x\": 0.20527070000000047,\n \"y\": 0.043951299999999804\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1854899999999995,\n \"y\": 0.1748848999999999\n },\n {\n \"x\": 0.18654899999999874,\n \"y\": -0.09181709999999943\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999994495,\n \"y\": 0.27384530000000007\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999977319,\n \"y\": -0.27384530000000007\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471,\n \"y\": 0.044920799999999206\n },\n \"right1\": {\n \"x\": 0.5191470999999999,\n \"y\": 0.04389609999999999\n }\n },\n \"bounds\": {\n \"minX\": -0.547305541,\n \"maxX\": 0.5473055409999998,\n \"minY\": -0.27384530000000007,\n \"maxY\": 0.27384530000000007,\n \"width\": 1.0946110819999997,\n \"height\": 0.5476906000000001,\n \"centerX\": -5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/varactor_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport varactor_diode_horz from \"./varactor_diode_horz\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(varactor_diode_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","{\n \"paths\": {\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5245830500000004,\n \"y\": 0.004659100000001359\n },\n {\n \"x\": -0.25999975000000086,\n \"y\": 0.004659100000001359\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2691672500000002,\n \"y\": 0.004659100000001359\n },\n {\n \"x\": 0.5337505499999997,\n \"y\": 0.004659100000001359\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2691672500000002,\n \"y\": -0.23346590000000056\n },\n {\n \"x\": -0.25999974999999953,\n \"y\": 0.2427841000000015\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.37500025000000026,\n \"y\": -0.23346590000000056\n },\n {\n \"x\": 0.2691672500000002,\n \"y\": -0.23346590000000056\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.004585150000000482,\n \"y\": 0.13695090000000043\n },\n {\n \"x\": 0.26916815000000094,\n \"y\": 0.13695090000000043\n },\n {\n \"x\": 0.26916815000000094,\n \"y\": -0.1276325000000007\n },\n {\n \"x\": -0.2599988499999988,\n \"y\": -0.1276325000000007\n },\n {\n \"x\": -0.2599988499999988,\n \"y\": 0.13695090000000043\n },\n {\n \"x\": 0.004585150000001814,\n \"y\": 0.13695090000000043\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.05849044999999986,\n \"y\": 0.25166549999999965\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.008507150000000685,\n \"y\": -0.25166549999999965\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5392315500000002,\n \"y\": 0.002969399999999567\n },\n \"right1\": {\n \"x\": 0.5392315500000002,\n \"y\": 0.005339799999999784\n }\n },\n \"bounds\": {\n \"minX\": -0.5673899910000002,\n \"maxX\": 0.5673899910000002,\n \"minY\": -0.25166549999999965,\n \"maxY\": 0.25166549999999965,\n \"width\": 1.1347799820000004,\n \"height\": 0.5033309999999993,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/varistor.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n {\n ...refblocks.left1,\n labels: [\"1\", \"-\"],\n },\n {\n ...refblocks.right1,\n labels: [\"2\", \"+\"],\n },\n ],\n size: { width: bounds.width, height: bounds.height }, //{ width: 1, height: 0.24 },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport varistor_horz from \"./varistor_horz\"\n\nexport default rotateSymbol(varistor_horz)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.36197569999999946\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.43234960000000044\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Var\",\n \"x\": 0,\n \"y\": -0.025\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0.000852800000000542\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": -0.00014359999999924433\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.006997299999999651,\n \"y\": -0.007128299999999532,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/varmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, anchor: \"center\", y: 0.02, fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport varmeter_horz from \"./varmeter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = varmeter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...varmeter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path28-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1934064300000009,\n \"y\": 0.0014636499999962638\n },\n {\n \"x\": 0.0023357300000004244,\n \"y\": 0.09263974999999824\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28-2-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19330683000000093,\n \"y\": -0.0014636500000015928\n },\n {\n \"x\": 0.002235630000000377,\n \"y\": -0.09263975000000002\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18836473000000042,\n \"y\": 0.00040854999999773156\n },\n {\n \"x\": -0.2161554699999999,\n \"y\": 0.00040854999999773156\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.25200763000000004,\n \"y\": 0.004881449999999177\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.23110196999999966,\n \"y\": -0.0007457500000018769\n }\n },\n \"bounds\": {\n \"minX\": -0.25200762999999965,\n \"maxX\": 0.25200763000000004,\n \"minY\": -0.09263975000000002,\n \"maxY\": 0.09263974999999824,\n \"width\": 0.5040152599999996,\n \"height\": 0.18527949999999827,\n \"centerX\": 1.942890293094024e-16,\n \"centerY\": -8.881784197001252e-16\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5274831500000005,\n \"y\": 0.031252300000000455\n },\n {\n \"x\": -0.30105415000000013,\n \"y\": 0.031252300000000455\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09765764999999949,\n \"y\": 0.1295162000000003\n },\n {\n \"x\": -0.0011297500000011507,\n \"y\": -0.061970899999999496\n },\n {\n \"x\": -0.10778645000000164,\n \"y\": 0.1295162000000003\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2932119499999999,\n \"y\": 0.031252300000000455\n },\n {\n \"x\": 0.5339524499999997,\n \"y\": 0.031252300000000455\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.021146249999999478,\n \"y\": 0.4010973\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00661455000000033,\n \"y\": -0.4010973\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5413984499999998,\n \"y\": 0.030399499999999913\n },\n \"right1\": {\n \"x\": 0.54139845,\n \"y\": 0.0313958999999997\n }\n },\n \"bounds\": {\n \"minX\": -0.5695568909999997,\n \"maxX\": 0.569556891,\n \"minY\": -0.4010973,\n \"maxY\": 0.4010973,\n \"width\": 1.1391137819999997,\n \"height\": 0.8021946,\n \"centerX\": 1.1102230246251565e-16,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.0037626500000000895,\n \"y\": 0.03838059999999999,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/volt_meter.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, circles, refblocks } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport volt_meter_horz from \"./volt_meter_horz\"\n\nexport default rotateSymbol(volt_meter_horz)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.36197569999999946\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.43234960000000044\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Wh\",\n \"x\": 0,\n \"y\": -0.025\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0.000852800000000542\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": -0.00014359999999924433\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.006997299999999651,\n \"y\": -0.007128299999999532,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/watt_hour_meter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, anchor: \"center\", y: 0.01, fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport watt_hour_meter_horz from \"./watt_hour_meter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = watt_hour_meter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...watt_hour_meter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.5307178,\n \"y\": 0\n },\n {\n \"x\": -0.3042887999999997,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2899773000000003,\n \"y\": 0\n },\n {\n \"x\": 0.5307178000000001,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17652089999999898,\n \"y\": -0.36197569999999946\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.009849199999999891,\n \"y\": 0.43234960000000044\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"W\",\n \"x\": 0,\n \"y\": -0.025\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5446330999999993,\n \"y\": 0.000852800000000542\n },\n \"right1\": {\n \"x\": 0.5381638000000004,\n \"y\": -0.00014359999999924433\n }\n },\n \"bounds\": {\n \"minX\": -0.5307178,\n \"maxX\": 0.5307178000000001,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.0614356000000003,\n \"height\": 1,\n \"centerX\": 5.551115123125783e-17,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.006997299999999651,\n \"y\": -0.007128299999999532,\n \"radius\": 0.28854213,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/wattmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, anchor: \"center\", y: 0.01, fontSize: 0.3 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport wattmeter_horz from \"./wattmeter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = wattmeter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...wattmeter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999992\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.08825540000000043\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.17632800000000026\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.04403629999999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1199943999999995,\n \"y\": -0.0882553999999991\n },\n {\n \"x\": -0.1199943999999995,\n \"y\": 0.17632800000000026\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14458890000000002,\n \"y\": 0.17632800000000026\n },\n {\n \"x\": 0.14458890000000002,\n \"y\": -0.0882553999999991\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12219909999999956,\n \"y\": 0.04403629999999992\n },\n {\n \"x\": -0.5168693999999996,\n \"y\": 0.04403629999999992\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5233797000000002,\n \"y\": 0.043951100000000354\n },\n {\n \"x\": 0.1496715999999998,\n \"y\": 0.043951100000000354\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14339119999999994,\n \"y\": 0.17681090000000044\n },\n {\n \"x\": 0.07728679999999954,\n \"y\": 0.17632089999999967\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0050250999999996715,\n \"y\": 0.27384530000000007\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.00011179999999977319,\n \"y\": -0.27384529999999985\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.5191471000000001,\n \"y\": 0.044920700000000924\n },\n \"right1\": {\n \"x\": 0.5191470999999999,\n \"y\": 0.04389609999999999\n }\n },\n \"bounds\": {\n \"minX\": -0.5473055410000001,\n \"maxX\": 0.5473055409999998,\n \"minY\": -0.27384529999999985,\n \"maxY\": 0.27384530000000007,\n \"width\": 1.094611082,\n \"height\": 0.5476905999999999,\n \"centerX\": -1.1102230246251565e-16,\n \"centerY\": 1.1102230246251565e-16\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/zener_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport zener_diode_horz from \"./zener_diode_horz\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(zener_diode_horz)\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","import _ac_voltmeter_horz from \"./../symbols/ac_voltmeter_horz\"\nimport _ac_voltmeter_vert from \"./../symbols/ac_voltmeter_vert\"\nimport _avalanche_diode_horz from \"./../symbols/avalanche_diode_horz\"\nimport _avalanche_diode_vert from \"./../symbols/avalanche_diode_vert\"\nimport _backward_diode_down from \"./../symbols/backward_diode_down\"\nimport _backward_diode_left from \"./../symbols/backward_diode_left\"\nimport _backward_diode_right from \"./../symbols/backward_diode_right\"\nimport _backward_diode_up from \"./../symbols/backward_diode_up\"\nimport _battery_horz from \"./../symbols/battery_horz\"\nimport _battery_vert from \"./../symbols/battery_vert\"\nimport _boxresistor_down from \"./../symbols/boxresistor_down\"\nimport _boxresistor_left from \"./../symbols/boxresistor_left\"\nimport _boxresistor_right from \"./../symbols/boxresistor_right\"\nimport _boxresistor_small_down from \"./../symbols/boxresistor_small_down\"\nimport _boxresistor_small_left from \"./../symbols/boxresistor_small_left\"\nimport _boxresistor_small_right from \"./../symbols/boxresistor_small_right\"\nimport _boxresistor_small_up from \"./../symbols/boxresistor_small_up\"\nimport _boxresistor_up from \"./../symbols/boxresistor_up\"\nimport _bridged_ground_down from \"./../symbols/bridged_ground_down\"\nimport _bridged_ground_left from \"./../symbols/bridged_ground_left\"\nimport _bridged_ground_right from \"./../symbols/bridged_ground_right\"\nimport _bridged_ground_up from \"./../symbols/bridged_ground_up\"\nimport _capacitor_down from \"./../symbols/capacitor_down\"\nimport _capacitor_left from \"./../symbols/capacitor_left\"\nimport _capacitor_polarized_down from \"./../symbols/capacitor_polarized_down\"\nimport _capacitor_polarized_left from \"./../symbols/capacitor_polarized_left\"\nimport _capacitor_polarized_right from \"./../symbols/capacitor_polarized_right\"\nimport _capacitor_polarized_up from \"./../symbols/capacitor_polarized_up\"\nimport _capacitor_right from \"./../symbols/capacitor_right\"\nimport _capacitor_up from \"./../symbols/capacitor_up\"\nimport _constant_current_diode_horz from \"./../symbols/constant_current_diode_horz\"\nimport _constant_current_diode_vert from \"./../symbols/constant_current_diode_vert\"\nimport _crystal_4pin_horz from \"./../symbols/crystal_4pin_horz\"\nimport _crystal_4pin_vert from \"./../symbols/crystal_4pin_vert\"\nimport _crystal_down from \"./../symbols/crystal_down\"\nimport _crystal_left from \"./../symbols/crystal_left\"\nimport _crystal_right from \"./../symbols/crystal_right\"\nimport _crystal_up from \"./../symbols/crystal_up\"\nimport _darlington_pair_transistor_horz from \"./../symbols/darlington_pair_transistor_horz\"\nimport _darlington_pair_transistor_vert from \"./../symbols/darlington_pair_transistor_vert\"\nimport _dc_ammeter_horz from \"./../symbols/dc_ammeter_horz\"\nimport _dc_ammeter_vert from \"./../symbols/dc_ammeter_vert\"\nimport _dc_voltmeter_horz from \"./../symbols/dc_voltmeter_horz\"\nimport _dc_voltmeter_vert from \"./../symbols/dc_voltmeter_vert\"\nimport _diac_horz from \"./../symbols/diac_horz\"\nimport _diac_vert from \"./../symbols/diac_vert\"\nimport _diode_down from \"./../symbols/diode_down\"\nimport _diode_left from \"./../symbols/diode_left\"\nimport _diode_right from \"./../symbols/diode_right\"\nimport _diode_up from \"./../symbols/diode_up\"\nimport _dpdt_normally_closed_switch_down from \"./../symbols/dpdt_normally_closed_switch_down\"\nimport _dpdt_normally_closed_switch_left from \"./../symbols/dpdt_normally_closed_switch_left\"\nimport _dpdt_normally_closed_switch_right from \"./../symbols/dpdt_normally_closed_switch_right\"\nimport _dpdt_normally_closed_switch_up from \"./../symbols/dpdt_normally_closed_switch_up\"\nimport _dpdt_switch_down from \"./../symbols/dpdt_switch_down\"\nimport _dpdt_switch_left from \"./../symbols/dpdt_switch_left\"\nimport _dpdt_switch_right from \"./../symbols/dpdt_switch_right\"\nimport _dpdt_switch_up from \"./../symbols/dpdt_switch_up\"\nimport _dpst_normally_closed_switch_down from \"./../symbols/dpst_normally_closed_switch_down\"\nimport _dpst_normally_closed_switch_left from \"./../symbols/dpst_normally_closed_switch_left\"\nimport _dpst_normally_closed_switch_right from \"./../symbols/dpst_normally_closed_switch_right\"\nimport _dpst_normally_closed_switch_up from \"./../symbols/dpst_normally_closed_switch_up\"\nimport _dpst_switch_down from \"./../symbols/dpst_switch_down\"\nimport _dpst_switch_left from \"./../symbols/dpst_switch_left\"\nimport _dpst_switch_right from \"./../symbols/dpst_switch_right\"\nimport _dpst_switch_up from \"./../symbols/dpst_switch_up\"\nimport _ferrite_bead_down from \"./../symbols/ferrite_bead_down\"\nimport _ferrite_bead_left from \"./../symbols/ferrite_bead_left\"\nimport _ferrite_bead_right from \"./../symbols/ferrite_bead_right\"\nimport _ferrite_bead_up from \"./../symbols/ferrite_bead_up\"\nimport _filled_diode_horz from \"./../symbols/filled_diode_horz\"\nimport _filled_diode_vert from \"./../symbols/filled_diode_vert\"\nimport _frequency_meter_horz from \"./../symbols/frequency_meter_horz\"\nimport _frequency_meter_vert from \"./../symbols/frequency_meter_vert\"\nimport _fuse_horz from \"./../symbols/fuse_horz\"\nimport _fuse_vert from \"./../symbols/fuse_vert\"\nimport _ground_down from \"./../symbols/ground_down\"\nimport _ground_horz from \"./../symbols/ground_horz\"\nimport _ground_left from \"./../symbols/ground_left\"\nimport _ground_right from \"./../symbols/ground_right\"\nimport _ground_up from \"./../symbols/ground_up\"\nimport _ground_vert from \"./../symbols/ground_vert\"\nimport _ground2_down from \"./../symbols/ground2_down\"\nimport _ground2_left from \"./../symbols/ground2_left\"\nimport _ground2_right from \"./../symbols/ground2_right\"\nimport _ground2_up from \"./../symbols/ground2_up\"\nimport _gunn_diode_horz from \"./../symbols/gunn_diode_horz\"\nimport _gunn_diode_vert from \"./../symbols/gunn_diode_vert\"\nimport _icled_down from \"./../symbols/icled_down\"\nimport _icled_left from \"./../symbols/icled_left\"\nimport _icled_right from \"./../symbols/icled_right\"\nimport _icled_up from \"./../symbols/icled_up\"\nimport _igbt_transistor_horz from \"./../symbols/igbt_transistor_horz\"\nimport _igbt_transistor_vert from \"./../symbols/igbt_transistor_vert\"\nimport _illuminated_push_button_normally_open_horz from \"./../symbols/illuminated_push_button_normally_open_horz\"\nimport _illuminated_push_button_normally_open_vert from \"./../symbols/illuminated_push_button_normally_open_vert\"\nimport _inductor_down from \"./../symbols/inductor_down\"\nimport _inductor_left from \"./../symbols/inductor_left\"\nimport _inductor_right from \"./../symbols/inductor_right\"\nimport _inductor_up from \"./../symbols/inductor_up\"\nimport _laser_diode_horz from \"./../symbols/laser_diode_horz\"\nimport _laser_diode_vert from \"./../symbols/laser_diode_vert\"\nimport _led_down from \"./../symbols/led_down\"\nimport _led_left from \"./../symbols/led_left\"\nimport _led_right from \"./../symbols/led_right\"\nimport _led_up from \"./../symbols/led_up\"\nimport _light_dependent_resistor_horz from \"./../symbols/light_dependent_resistor_horz\"\nimport _light_dependent_resistor_vert from \"./../symbols/light_dependent_resistor_vert\"\nimport _mosfet_depletion_normally_on_horz from \"./../symbols/mosfet_depletion_normally_on_horz\"\nimport _mosfet_depletion_normally_on_vert from \"./../symbols/mosfet_depletion_normally_on_vert\"\nimport _mushroom_head_normally_open_momentary_horz from \"./../symbols/mushroom_head_normally_open_momentary_horz\"\nimport _mushroom_head_normally_open_momentary_vert from \"./../symbols/mushroom_head_normally_open_momentary_vert\"\nimport _n_channel_d_mosfet_transistor_horz from \"./../symbols/n_channel_d_mosfet_transistor_horz\"\nimport _n_channel_d_mosfet_transistor_vert from \"./../symbols/n_channel_d_mosfet_transistor_vert\"\nimport _n_channel_e_mosfet_transistor_horz from \"./../symbols/n_channel_e_mosfet_transistor_horz\"\nimport _n_channel_e_mosfet_transistor_vert from \"./../symbols/n_channel_e_mosfet_transistor_vert\"\nimport _njfet_transistor_horz from \"./../symbols/njfet_transistor_horz\"\nimport _njfet_transistor_vert from \"./../symbols/njfet_transistor_vert\"\nimport _npn_bipolar_transistor_horz from \"./../symbols/npn_bipolar_transistor_horz\"\nimport _npn_bipolar_transistor_vert from \"./../symbols/npn_bipolar_transistor_vert\"\nimport _opamp_no_power_down from \"./../symbols/opamp_no_power_down\"\nimport _opamp_no_power_left from \"./../symbols/opamp_no_power_left\"\nimport _opamp_no_power_right from \"./../symbols/opamp_no_power_right\"\nimport _opamp_no_power_up from \"./../symbols/opamp_no_power_up\"\nimport _opamp_with_power_down from \"./../symbols/opamp_with_power_down\"\nimport _opamp_with_power_left from \"./../symbols/opamp_with_power_left\"\nimport _opamp_with_power_right from \"./../symbols/opamp_with_power_right\"\nimport _opamp_with_power_up from \"./../symbols/opamp_with_power_up\"\nimport _p_channel_d_mosfet_transistor_horz from \"./../symbols/p_channel_d_mosfet_transistor_horz\"\nimport _p_channel_d_mosfet_transistor_vert from \"./../symbols/p_channel_d_mosfet_transistor_vert\"\nimport _p_channel_e_mosfet_transistor_horz from \"./../symbols/p_channel_e_mosfet_transistor_horz\"\nimport _p_channel_e_mosfet_transistor_vert from \"./../symbols/p_channel_e_mosfet_transistor_vert\"\nimport _photodiode_horz from \"./../symbols/photodiode_horz\"\nimport _photodiode_vert from \"./../symbols/photodiode_vert\"\nimport _pjfet_transistor_horz from \"./../symbols/pjfet_transistor_horz\"\nimport _pjfet_transistor_vert from \"./../symbols/pjfet_transistor_vert\"\nimport _pnp_bipolar_transistor_horz from \"./../symbols/pnp_bipolar_transistor_horz\"\nimport _pnp_bipolar_transistor_vert from \"./../symbols/pnp_bipolar_transistor_vert\"\nimport _potentiometer_horz from \"./../symbols/potentiometer_horz\"\nimport _potentiometer_vert from \"./../symbols/potentiometer_vert\"\nimport _potentiometer2_down from \"./../symbols/potentiometer2_down\"\nimport _potentiometer2_left from \"./../symbols/potentiometer2_left\"\nimport _potentiometer2_right from \"./../symbols/potentiometer2_right\"\nimport _potentiometer2_up from \"./../symbols/potentiometer2_up\"\nimport _potentiometer3_down from \"./../symbols/potentiometer3_down\"\nimport _potentiometer3_left from \"./../symbols/potentiometer3_left\"\nimport _potentiometer3_right from \"./../symbols/potentiometer3_right\"\nimport _potentiometer3_up from \"./../symbols/potentiometer3_up\"\nimport _power_factor_meter_horz from \"./../symbols/power_factor_meter_horz\"\nimport _power_factor_meter_vert from \"./../symbols/power_factor_meter_vert\"\nimport _push_button_normally_closed_momentary_horz from \"./../symbols/push_button_normally_closed_momentary_horz\"\nimport _push_button_normally_closed_momentary_vert from \"./../symbols/push_button_normally_closed_momentary_vert\"\nimport _push_button_normally_open_momentary_horz from \"./../symbols/push_button_normally_open_momentary_horz\"\nimport _push_button_normally_open_momentary_vert from \"./../symbols/push_button_normally_open_momentary_vert\"\nimport _rectifier_diode_horz from \"./../symbols/rectifier_diode_horz\"\nimport _rectifier_diode_vert from \"./../symbols/rectifier_diode_vert\"\nimport _resistor_down from \"./../symbols/resistor_down\"\nimport _resistor_left from \"./../symbols/resistor_left\"\nimport _resistor_right from \"./../symbols/resistor_right\"\nimport _resistor_up from \"./../symbols/resistor_up\"\nimport _resonator_horz from \"./../symbols/resonator_horz\"\nimport _resonator_vert from \"./../symbols/resonator_vert\"\nimport _schottky_diode_down from \"./../symbols/schottky_diode_down\"\nimport _schottky_diode_left from \"./../symbols/schottky_diode_left\"\nimport _schottky_diode_right from \"./../symbols/schottky_diode_right\"\nimport _schottky_diode_up from \"./../symbols/schottky_diode_up\"\nimport _silicon_controlled_rectifier_horz from \"./../symbols/silicon_controlled_rectifier_horz\"\nimport _silicon_controlled_rectifier_vert from \"./../symbols/silicon_controlled_rectifier_vert\"\nimport _solderjumper2_bridged12_down from \"./../symbols/solderjumper2_bridged12_down\"\nimport _solderjumper2_bridged12_left from \"./../symbols/solderjumper2_bridged12_left\"\nimport _solderjumper2_bridged12_right from \"./../symbols/solderjumper2_bridged12_right\"\nimport _solderjumper2_bridged12_up from \"./../symbols/solderjumper2_bridged12_up\"\nimport _solderjumper2_down from \"./../symbols/solderjumper2_down\"\nimport _solderjumper2_left from \"./../symbols/solderjumper2_left\"\nimport _solderjumper2_right from \"./../symbols/solderjumper2_right\"\nimport _solderjumper2_up from \"./../symbols/solderjumper2_up\"\nimport _solderjumper3_bridged12_down from \"./../symbols/solderjumper3_bridged12_down\"\nimport _solderjumper3_bridged12_left from \"./../symbols/solderjumper3_bridged12_left\"\nimport _solderjumper3_bridged12_right from \"./../symbols/solderjumper3_bridged12_right\"\nimport _solderjumper3_bridged12_up from \"./../symbols/solderjumper3_bridged12_up\"\nimport _solderjumper3_bridged123_down from \"./../symbols/solderjumper3_bridged123_down\"\nimport _solderjumper3_bridged123_left from \"./../symbols/solderjumper3_bridged123_left\"\nimport _solderjumper3_bridged123_right from \"./../symbols/solderjumper3_bridged123_right\"\nimport _solderjumper3_bridged123_up from \"./../symbols/solderjumper3_bridged123_up\"\nimport _solderjumper3_bridged23_down from \"./../symbols/solderjumper3_bridged23_down\"\nimport _solderjumper3_bridged23_left from \"./../symbols/solderjumper3_bridged23_left\"\nimport _solderjumper3_bridged23_right from \"./../symbols/solderjumper3_bridged23_right\"\nimport _solderjumper3_bridged23_up from \"./../symbols/solderjumper3_bridged23_up\"\nimport _solderjumper3_down from \"./../symbols/solderjumper3_down\"\nimport _solderjumper3_left from \"./../symbols/solderjumper3_left\"\nimport _solderjumper3_right from \"./../symbols/solderjumper3_right\"\nimport _solderjumper3_up from \"./../symbols/solderjumper3_up\"\nimport _spdt_normally_closed_switch_down from \"./../symbols/spdt_normally_closed_switch_down\"\nimport _spdt_normally_closed_switch_left from \"./../symbols/spdt_normally_closed_switch_left\"\nimport _spdt_normally_closed_switch_right from \"./../symbols/spdt_normally_closed_switch_right\"\nimport _spdt_normally_closed_switch_up from \"./../symbols/spdt_normally_closed_switch_up\"\nimport _spdt_switch_down from \"./../symbols/spdt_switch_down\"\nimport _spdt_switch_left from \"./../symbols/spdt_switch_left\"\nimport _spdt_switch_right from \"./../symbols/spdt_switch_right\"\nimport _spdt_switch_up from \"./../symbols/spdt_switch_up\"\nimport _spst_normally_closed_switch_down from \"./../symbols/spst_normally_closed_switch_down\"\nimport _spst_normally_closed_switch_left from \"./../symbols/spst_normally_closed_switch_left\"\nimport _spst_normally_closed_switch_right from \"./../symbols/spst_normally_closed_switch_right\"\nimport _spst_normally_closed_switch_up from \"./../symbols/spst_normally_closed_switch_up\"\nimport _spst_switch_down from \"./../symbols/spst_switch_down\"\nimport _spst_switch_left from \"./../symbols/spst_switch_left\"\nimport _spst_switch_right from \"./../symbols/spst_switch_right\"\nimport _spst_switch_up from \"./../symbols/spst_switch_up\"\nimport _step_recovery_diode_horz from \"./../symbols/step_recovery_diode_horz\"\nimport _step_recovery_diode_vert from \"./../symbols/step_recovery_diode_vert\"\nimport _tachometer_horz from \"./../symbols/tachometer_horz\"\nimport _tachometer_vert from \"./../symbols/tachometer_vert\"\nimport _testpoint_down from \"./../symbols/testpoint_down\"\nimport _testpoint_left from \"./../symbols/testpoint_left\"\nimport _testpoint_right from \"./../symbols/testpoint_right\"\nimport _testpoint_up from \"./../symbols/testpoint_up\"\nimport _tilted_ground_down from \"./../symbols/tilted_ground_down\"\nimport _tilted_ground_left from \"./../symbols/tilted_ground_left\"\nimport _tilted_ground_right from \"./../symbols/tilted_ground_right\"\nimport _tilted_ground_up from \"./../symbols/tilted_ground_up\"\nimport _triac_horz from \"./../symbols/triac_horz\"\nimport _triac_vert from \"./../symbols/triac_vert\"\nimport _tunnel_diode_horz from \"./../symbols/tunnel_diode_horz\"\nimport _tunnel_diode_vert from \"./../symbols/tunnel_diode_vert\"\nimport _unijunction_transistor_horz from \"./../symbols/unijunction_transistor_horz\"\nimport _unijunction_transistor_vert from \"./../symbols/unijunction_transistor_vert\"\nimport _var_meter_horz from \"./../symbols/var_meter_horz\"\nimport _var_meter_vert from \"./../symbols/var_meter_vert\"\nimport _varactor_diode_horz from \"./../symbols/varactor_diode_horz\"\nimport _varactor_diode_vert from \"./../symbols/varactor_diode_vert\"\nimport _varistor_horz from \"./../symbols/varistor_horz\"\nimport _varistor_vert from \"./../symbols/varistor_vert\"\nimport _varmeter_horz from \"./../symbols/varmeter_horz\"\nimport _varmeter_vert from \"./../symbols/varmeter_vert\"\nimport _vcc_down from \"./../symbols/vcc_down\"\nimport _vcc_left from \"./../symbols/vcc_left\"\nimport _vcc_right from \"./../symbols/vcc_right\"\nimport _vcc_up from \"./../symbols/vcc_up\"\nimport _volt_meter_horz from \"./../symbols/volt_meter_horz\"\nimport _volt_meter_vert from \"./../symbols/volt_meter_vert\"\nimport _watt_hour_meter_horz from \"./../symbols/watt_hour_meter_horz\"\nimport _watt_hour_meter_vert from \"./../symbols/watt_hour_meter_vert\"\nimport _wattmeter_horz from \"./../symbols/wattmeter_horz\"\nimport _wattmeter_vert from \"./../symbols/wattmeter_vert\"\nimport _zener_diode_horz from \"./../symbols/zener_diode_horz\"\nimport _zener_diode_vert from \"./../symbols/zener_diode_vert\"\n\nexport default {\n \"ac_voltmeter_horz\": _ac_voltmeter_horz,\n \"ac_voltmeter_vert\": _ac_voltmeter_vert,\n \"avalanche_diode_horz\": _avalanche_diode_horz,\n \"avalanche_diode_vert\": _avalanche_diode_vert,\n \"backward_diode_down\": _backward_diode_down,\n \"backward_diode_left\": _backward_diode_left,\n \"backward_diode_right\": _backward_diode_right,\n \"backward_diode_up\": _backward_diode_up,\n \"battery_horz\": _battery_horz,\n \"battery_vert\": _battery_vert,\n \"boxresistor_down\": _boxresistor_down,\n \"boxresistor_left\": _boxresistor_left,\n \"boxresistor_right\": _boxresistor_right,\n \"boxresistor_small_down\": _boxresistor_small_down,\n \"boxresistor_small_left\": _boxresistor_small_left,\n \"boxresistor_small_right\": _boxresistor_small_right,\n \"boxresistor_small_up\": _boxresistor_small_up,\n \"boxresistor_up\": _boxresistor_up,\n \"bridged_ground_down\": _bridged_ground_down,\n \"bridged_ground_left\": _bridged_ground_left,\n \"bridged_ground_right\": _bridged_ground_right,\n \"bridged_ground_up\": _bridged_ground_up,\n \"capacitor_down\": _capacitor_down,\n \"capacitor_left\": _capacitor_left,\n \"capacitor_polarized_down\": _capacitor_polarized_down,\n \"capacitor_polarized_left\": _capacitor_polarized_left,\n \"capacitor_polarized_right\": _capacitor_polarized_right,\n \"capacitor_polarized_up\": _capacitor_polarized_up,\n \"capacitor_right\": _capacitor_right,\n \"capacitor_up\": _capacitor_up,\n \"constant_current_diode_horz\": _constant_current_diode_horz,\n \"constant_current_diode_vert\": _constant_current_diode_vert,\n \"crystal_4pin_horz\": _crystal_4pin_horz,\n \"crystal_4pin_vert\": _crystal_4pin_vert,\n \"crystal_down\": _crystal_down,\n \"crystal_left\": _crystal_left,\n \"crystal_right\": _crystal_right,\n \"crystal_up\": _crystal_up,\n \"darlington_pair_transistor_horz\": _darlington_pair_transistor_horz,\n \"darlington_pair_transistor_vert\": _darlington_pair_transistor_vert,\n \"dc_ammeter_horz\": _dc_ammeter_horz,\n \"dc_ammeter_vert\": _dc_ammeter_vert,\n \"dc_voltmeter_horz\": _dc_voltmeter_horz,\n \"dc_voltmeter_vert\": _dc_voltmeter_vert,\n \"diac_horz\": _diac_horz,\n \"diac_vert\": _diac_vert,\n \"diode_down\": _diode_down,\n \"diode_left\": _diode_left,\n \"diode_right\": _diode_right,\n \"diode_up\": _diode_up,\n \"dpdt_normally_closed_switch_down\": _dpdt_normally_closed_switch_down,\n \"dpdt_normally_closed_switch_left\": _dpdt_normally_closed_switch_left,\n \"dpdt_normally_closed_switch_right\": _dpdt_normally_closed_switch_right,\n \"dpdt_normally_closed_switch_up\": _dpdt_normally_closed_switch_up,\n \"dpdt_switch_down\": _dpdt_switch_down,\n \"dpdt_switch_left\": _dpdt_switch_left,\n \"dpdt_switch_right\": _dpdt_switch_right,\n \"dpdt_switch_up\": _dpdt_switch_up,\n \"dpst_normally_closed_switch_down\": _dpst_normally_closed_switch_down,\n \"dpst_normally_closed_switch_left\": _dpst_normally_closed_switch_left,\n \"dpst_normally_closed_switch_right\": _dpst_normally_closed_switch_right,\n \"dpst_normally_closed_switch_up\": _dpst_normally_closed_switch_up,\n \"dpst_switch_down\": _dpst_switch_down,\n \"dpst_switch_left\": _dpst_switch_left,\n \"dpst_switch_right\": _dpst_switch_right,\n \"dpst_switch_up\": _dpst_switch_up,\n \"ferrite_bead_down\": _ferrite_bead_down,\n \"ferrite_bead_left\": _ferrite_bead_left,\n \"ferrite_bead_right\": _ferrite_bead_right,\n \"ferrite_bead_up\": _ferrite_bead_up,\n \"filled_diode_horz\": _filled_diode_horz,\n \"filled_diode_vert\": _filled_diode_vert,\n \"frequency_meter_horz\": _frequency_meter_horz,\n \"frequency_meter_vert\": _frequency_meter_vert,\n \"fuse_horz\": _fuse_horz,\n \"fuse_vert\": _fuse_vert,\n \"ground_down\": _ground_down,\n \"ground_horz\": _ground_horz,\n \"ground_left\": _ground_left,\n \"ground_right\": _ground_right,\n \"ground_up\": _ground_up,\n \"ground_vert\": _ground_vert,\n \"ground2_down\": _ground2_down,\n \"ground2_left\": _ground2_left,\n \"ground2_right\": _ground2_right,\n \"ground2_up\": _ground2_up,\n \"gunn_diode_horz\": _gunn_diode_horz,\n \"gunn_diode_vert\": _gunn_diode_vert,\n \"icled_down\": _icled_down,\n \"icled_left\": _icled_left,\n \"icled_right\": _icled_right,\n \"icled_up\": _icled_up,\n \"igbt_transistor_horz\": _igbt_transistor_horz,\n \"igbt_transistor_vert\": _igbt_transistor_vert,\n \"illuminated_push_button_normally_open_horz\": _illuminated_push_button_normally_open_horz,\n \"illuminated_push_button_normally_open_vert\": _illuminated_push_button_normally_open_vert,\n \"inductor_down\": _inductor_down,\n \"inductor_left\": _inductor_left,\n \"inductor_right\": _inductor_right,\n \"inductor_up\": _inductor_up,\n \"laser_diode_horz\": _laser_diode_horz,\n \"laser_diode_vert\": _laser_diode_vert,\n \"led_down\": _led_down,\n \"led_left\": _led_left,\n \"led_right\": _led_right,\n \"led_up\": _led_up,\n \"light_dependent_resistor_horz\": _light_dependent_resistor_horz,\n \"light_dependent_resistor_vert\": _light_dependent_resistor_vert,\n \"mosfet_depletion_normally_on_horz\": _mosfet_depletion_normally_on_horz,\n \"mosfet_depletion_normally_on_vert\": _mosfet_depletion_normally_on_vert,\n \"mushroom_head_normally_open_momentary_horz\": _mushroom_head_normally_open_momentary_horz,\n \"mushroom_head_normally_open_momentary_vert\": _mushroom_head_normally_open_momentary_vert,\n \"n_channel_d_mosfet_transistor_horz\": _n_channel_d_mosfet_transistor_horz,\n \"n_channel_d_mosfet_transistor_vert\": _n_channel_d_mosfet_transistor_vert,\n \"n_channel_e_mosfet_transistor_horz\": _n_channel_e_mosfet_transistor_horz,\n \"n_channel_e_mosfet_transistor_vert\": _n_channel_e_mosfet_transistor_vert,\n \"njfet_transistor_horz\": _njfet_transistor_horz,\n \"njfet_transistor_vert\": _njfet_transistor_vert,\n \"npn_bipolar_transistor_horz\": _npn_bipolar_transistor_horz,\n \"npn_bipolar_transistor_vert\": _npn_bipolar_transistor_vert,\n \"opamp_no_power_down\": _opamp_no_power_down,\n \"opamp_no_power_left\": _opamp_no_power_left,\n \"opamp_no_power_right\": _opamp_no_power_right,\n \"opamp_no_power_up\": _opamp_no_power_up,\n \"opamp_with_power_down\": _opamp_with_power_down,\n \"opamp_with_power_left\": _opamp_with_power_left,\n \"opamp_with_power_right\": _opamp_with_power_right,\n \"opamp_with_power_up\": _opamp_with_power_up,\n \"p_channel_d_mosfet_transistor_horz\": _p_channel_d_mosfet_transistor_horz,\n \"p_channel_d_mosfet_transistor_vert\": _p_channel_d_mosfet_transistor_vert,\n \"p_channel_e_mosfet_transistor_horz\": _p_channel_e_mosfet_transistor_horz,\n \"p_channel_e_mosfet_transistor_vert\": _p_channel_e_mosfet_transistor_vert,\n \"photodiode_horz\": _photodiode_horz,\n \"photodiode_vert\": _photodiode_vert,\n \"pjfet_transistor_horz\": _pjfet_transistor_horz,\n \"pjfet_transistor_vert\": _pjfet_transistor_vert,\n \"pnp_bipolar_transistor_horz\": _pnp_bipolar_transistor_horz,\n \"pnp_bipolar_transistor_vert\": _pnp_bipolar_transistor_vert,\n \"potentiometer_horz\": _potentiometer_horz,\n \"potentiometer_vert\": _potentiometer_vert,\n \"potentiometer2_down\": _potentiometer2_down,\n \"potentiometer2_left\": _potentiometer2_left,\n \"potentiometer2_right\": _potentiometer2_right,\n \"potentiometer2_up\": _potentiometer2_up,\n \"potentiometer3_down\": _potentiometer3_down,\n \"potentiometer3_left\": _potentiometer3_left,\n \"potentiometer3_right\": _potentiometer3_right,\n \"potentiometer3_up\": _potentiometer3_up,\n \"power_factor_meter_horz\": _power_factor_meter_horz,\n \"power_factor_meter_vert\": _power_factor_meter_vert,\n \"push_button_normally_closed_momentary_horz\": _push_button_normally_closed_momentary_horz,\n \"push_button_normally_closed_momentary_vert\": _push_button_normally_closed_momentary_vert,\n \"push_button_normally_open_momentary_horz\": _push_button_normally_open_momentary_horz,\n \"push_button_normally_open_momentary_vert\": _push_button_normally_open_momentary_vert,\n \"rectifier_diode_horz\": _rectifier_diode_horz,\n \"rectifier_diode_vert\": _rectifier_diode_vert,\n \"resistor_down\": _resistor_down,\n \"resistor_left\": _resistor_left,\n \"resistor_right\": _resistor_right,\n \"resistor_up\": _resistor_up,\n \"resonator_horz\": _resonator_horz,\n \"resonator_vert\": _resonator_vert,\n \"schottky_diode_down\": _schottky_diode_down,\n \"schottky_diode_left\": _schottky_diode_left,\n \"schottky_diode_right\": _schottky_diode_right,\n \"schottky_diode_up\": _schottky_diode_up,\n \"silicon_controlled_rectifier_horz\": _silicon_controlled_rectifier_horz,\n \"silicon_controlled_rectifier_vert\": _silicon_controlled_rectifier_vert,\n \"solderjumper2_bridged12_down\": _solderjumper2_bridged12_down,\n \"solderjumper2_bridged12_left\": _solderjumper2_bridged12_left,\n \"solderjumper2_bridged12_right\": _solderjumper2_bridged12_right,\n \"solderjumper2_bridged12_up\": _solderjumper2_bridged12_up,\n \"solderjumper2_down\": _solderjumper2_down,\n \"solderjumper2_left\": _solderjumper2_left,\n \"solderjumper2_right\": _solderjumper2_right,\n \"solderjumper2_up\": _solderjumper2_up,\n \"solderjumper3_bridged12_down\": _solderjumper3_bridged12_down,\n \"solderjumper3_bridged12_left\": _solderjumper3_bridged12_left,\n \"solderjumper3_bridged12_right\": _solderjumper3_bridged12_right,\n \"solderjumper3_bridged12_up\": _solderjumper3_bridged12_up,\n \"solderjumper3_bridged123_down\": _solderjumper3_bridged123_down,\n \"solderjumper3_bridged123_left\": _solderjumper3_bridged123_left,\n \"solderjumper3_bridged123_right\": _solderjumper3_bridged123_right,\n \"solderjumper3_bridged123_up\": _solderjumper3_bridged123_up,\n \"solderjumper3_bridged23_down\": _solderjumper3_bridged23_down,\n \"solderjumper3_bridged23_left\": _solderjumper3_bridged23_left,\n \"solderjumper3_bridged23_right\": _solderjumper3_bridged23_right,\n \"solderjumper3_bridged23_up\": _solderjumper3_bridged23_up,\n \"solderjumper3_down\": _solderjumper3_down,\n \"solderjumper3_left\": _solderjumper3_left,\n \"solderjumper3_right\": _solderjumper3_right,\n \"solderjumper3_up\": _solderjumper3_up,\n \"spdt_normally_closed_switch_down\": _spdt_normally_closed_switch_down,\n \"spdt_normally_closed_switch_left\": _spdt_normally_closed_switch_left,\n \"spdt_normally_closed_switch_right\": _spdt_normally_closed_switch_right,\n \"spdt_normally_closed_switch_up\": _spdt_normally_closed_switch_up,\n \"spdt_switch_down\": _spdt_switch_down,\n \"spdt_switch_left\": _spdt_switch_left,\n \"spdt_switch_right\": _spdt_switch_right,\n \"spdt_switch_up\": _spdt_switch_up,\n \"spst_normally_closed_switch_down\": _spst_normally_closed_switch_down,\n \"spst_normally_closed_switch_left\": _spst_normally_closed_switch_left,\n \"spst_normally_closed_switch_right\": _spst_normally_closed_switch_right,\n \"spst_normally_closed_switch_up\": _spst_normally_closed_switch_up,\n \"spst_switch_down\": _spst_switch_down,\n \"spst_switch_left\": _spst_switch_left,\n \"spst_switch_right\": _spst_switch_right,\n \"spst_switch_up\": _spst_switch_up,\n \"step_recovery_diode_horz\": _step_recovery_diode_horz,\n \"step_recovery_diode_vert\": _step_recovery_diode_vert,\n \"tachometer_horz\": _tachometer_horz,\n \"tachometer_vert\": _tachometer_vert,\n \"testpoint_down\": _testpoint_down,\n \"testpoint_left\": _testpoint_left,\n \"testpoint_right\": _testpoint_right,\n \"testpoint_up\": _testpoint_up,\n \"tilted_ground_down\": _tilted_ground_down,\n \"tilted_ground_left\": _tilted_ground_left,\n \"tilted_ground_right\": _tilted_ground_right,\n \"tilted_ground_up\": _tilted_ground_up,\n \"triac_horz\": _triac_horz,\n \"triac_vert\": _triac_vert,\n \"tunnel_diode_horz\": _tunnel_diode_horz,\n \"tunnel_diode_vert\": _tunnel_diode_vert,\n \"unijunction_transistor_horz\": _unijunction_transistor_horz,\n \"unijunction_transistor_vert\": _unijunction_transistor_vert,\n \"var_meter_horz\": _var_meter_horz,\n \"var_meter_vert\": _var_meter_vert,\n \"varactor_diode_horz\": _varactor_diode_horz,\n \"varactor_diode_vert\": _varactor_diode_vert,\n \"varistor_horz\": _varistor_horz,\n \"varistor_vert\": _varistor_vert,\n \"varmeter_horz\": _varmeter_horz,\n \"varmeter_vert\": _varmeter_vert,\n \"vcc_down\": _vcc_down,\n \"vcc_left\": _vcc_left,\n \"vcc_right\": _vcc_right,\n \"vcc_up\": _vcc_up,\n \"volt_meter_horz\": _volt_meter_horz,\n \"volt_meter_vert\": _volt_meter_vert,\n \"watt_hour_meter_horz\": _watt_hour_meter_horz,\n \"watt_hour_meter_vert\": _watt_hour_meter_vert,\n \"wattmeter_horz\": _wattmeter_horz,\n \"wattmeter_vert\": _wattmeter_vert,\n \"zener_diode_horz\": _zener_diode_horz,\n \"zener_diode_vert\": _zener_diode_vert\n}","import { NinePointAnchor } from \"drawing/types\"\n\n/**\n * In Inkscape and Websites, Y-up is NEGATIVE- meaning e.g. y=10 is BELOW y=0.\n *\n * Our symbols are defined with Y-up POSITIVE, meaning e.g. y=10 is ABOVE y=0.\n *\n * This function helps flip y positions so that you can convert from schematic\n * symbol coordinates to SVG coordinates.\n */\nexport const makeYUpPositive = (y: number, yUpPositive: boolean = true) => {\n return yUpPositive ? -y : y\n}\n\n/**\n * This function gives an intermediate anchor flip that can be used to determine\n * how anchors should be interpreted when flipping in the Y-axis.\n *\n * It converts top_left -> bottom_left etc.\n *\n * y=1 top_left -------\n * y=0 | |\n * y=-1 -------------\n *\n * Y-up Negative\n *\n * y=-1 -------------\n * y=0 | |\n * y=1 bottom_left --\n */\nexport const flipAnchorOverYAxis = (anchor: NinePointAnchor) => {\n if (anchor === \"top_left\") return \"bottom_left\"\n if (anchor === \"top_right\") return \"bottom_right\"\n if (anchor === \"bottom_left\") return \"top_left\"\n if (anchor === \"bottom_right\") return \"top_right\"\n if (anchor === \"middle_top\") return \"middle_bottom\"\n if (anchor === \"middle_bottom\") return \"middle_top\"\n return anchor\n}\n\nexport const makeAnchorYUpPositive = (\n anchor: NinePointAnchor,\n yUpPositive: boolean = true,\n) => {\n return yUpPositive ? flipAnchorOverYAxis(anchor) : anchor\n}\n","export const mapColor = (color: string) => {\n switch (color) {\n case \"primary\":\n return \"black\"\n case \"secondary\":\n return \"gray\"\n default:\n return color\n }\n}\n","import type { Point } from \"drawing\"\nimport { makeYUpPositive } from \"./utils/makeYUpPositive\"\n\nexport function pathToSvgD(\n points: Point[],\n {\n closed = false,\n yUpPositive = true,\n }: {\n closed?: boolean\n yUpPositive?: boolean\n },\n): string {\n const pathCommands = points\n .map(\n (point, index) =>\n `${index === 0 ? \"M\" : \"L\"}${point.x},${makeYUpPositive(point.y, yUpPositive)}`,\n )\n .join(\" \")\n\n return closed ? `${pathCommands} Z` : pathCommands\n}\n","import { makeAnchorYUpPositive, makeYUpPositive } from \"./utils/makeYUpPositive\"\nimport { mapColor } from \"./mapColor\"\nimport { pathToSvgD } from \"./pathToSvgD\"\nimport type { Point, Port, SchSymbol, TextPrimitive } from \"./types\"\n\nfunction createDiamondElement(\n center: Point,\n size = 0.05,\n yUpPositive: boolean = true,\n): string {\n const { x, y } = center\n const halfSize = size / 2\n return `<path d=\"M ${x} ${makeYUpPositive(y, yUpPositive) - halfSize} L ${x + halfSize} ${makeYUpPositive(y, yUpPositive)} L ${x} ${\n makeYUpPositive(y, yUpPositive) + halfSize\n } L ${x - halfSize} ${makeYUpPositive(y, yUpPositive)} Z\" fill=\"green\" />`\n}\n\nfunction createTextElement(\n primitive: TextPrimitive,\n { yUpPositive }: { yUpPositive?: boolean },\n): {\n text: string\n anchor: string\n} {\n const { x, y, text, fontSize = 0.1, anchor } = primitive\n let textAnchor: string\n const dx = 0\n let dy = 0\n\n const capHeight = fontSize * 0.75\n\n switch (anchor) {\n case \"top_left\":\n textAnchor = \"start\"\n dy = fontSize\n break\n case \"top_right\":\n textAnchor = \"end\"\n dy = fontSize\n break\n case \"bottom_left\":\n textAnchor = \"start\"\n break\n case \"bottom_right\":\n textAnchor = \"end\"\n break\n case \"center\":\n textAnchor = \"middle\"\n dy = fontSize / 2\n break\n case \"middle_top\":\n textAnchor = \"middle\"\n dy = capHeight\n break\n case \"middle_bottom\":\n textAnchor = \"middle\"\n break\n case \"middle_left\":\n textAnchor = \"start\"\n dy = capHeight / 2\n break\n case \"middle_right\":\n textAnchor = \"end\"\n dy = capHeight / 2\n break\n }\n\n return {\n text: `<text x=\"${x}\" y=\"${makeYUpPositive(y, yUpPositive)}\" dx=\"${dx}\" dy=\"${dy}\" text-anchor=\"${textAnchor}\" style=\"font: ${\n fontSize ?? 0.1\n }px monospace; fill: ${mapColor(\"primary\")}\">${text}</text>`,\n anchor: `<rect x=\"${x - 0.025 / 2}\" y=\"${\n makeYUpPositive(y, yUpPositive) - 0.025 / 2\n }\" width=\"0.025\" height=\"0.025\" fill=\"blue\" />`,\n }\n}\n\nfunction createPortElement(\n port: Port,\n { yUpPositive }: { yUpPositive?: boolean },\n): string {\n const { x, y, labels } = port\n const rectSize = 0.05\n const labelFontSize = 0.08\n const label = labels[0] || \"\"\n\n return `\n <rect x=\"${x - rectSize / 2}\" y=\"${\n makeYUpPositive(y, yUpPositive) - rectSize / 2\n }\" width=\"${rectSize}\" height=\"${rectSize}\" fill=\"red\" />\n <text x=\"${x - labelFontSize / 2}\" y=\"${\n makeYUpPositive(y, yUpPositive) + rectSize + labelFontSize / 2\n }\" text-anchor=\"middle\" style=\"font: ${labelFontSize}px monospace; fill: #833;\">${label}</text>\n `\n}\n\nexport function getInnerSvg(\n symbol: SchSymbol,\n options: { width?: number; height?: number; debug?: boolean } = {},\n): string {\n const { debug = false } = options\n const { primitives, size, ports } = symbol\n const svgElements = primitives.map((primitive) => {\n switch (primitive.type) {\n case \"path\":\n return `<path d=\"${pathToSvgD(primitive.points, {\n closed: primitive.closed,\n yUpPositive: true,\n })}\" fill=\"${\n primitive.fill ? mapColor(primitive.color) : \"none\"\n }\" stroke=\"${mapColor(\n primitive.color,\n )}\" stroke-width=\"0.02\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />`\n case \"text\":\n const textElements = createTextElement(primitive, { yUpPositive: true })\n return textElements.text + (debug ? textElements.anchor : \"\")\n case \"circle\":\n return `<circle cx=\"${primitive.x}\" cy=\"${makeYUpPositive(primitive.y, true)}\" r=\"${\n primitive.radius\n }\" fill=\"${primitive.fill ? mapColor(primitive.color) : \"none\"}\" ${\n !primitive.fill\n ? `stroke=\"${mapColor(primitive.color)}\" stroke-width=\"0.02\"`\n : \"\"\n } />`\n case \"box\":\n return `<rect x=\"${primitive.x}\" y=\"${makeYUpPositive(primitive.y)}\" width=\"${\n primitive.width\n }\" height=\"${primitive.height}\" fill=\"${mapColor(\"primary\")}\" />`\n default:\n return \"\"\n }\n })\n\n const portElements = ports\n .map((p) => createPortElement(p, { yUpPositive: true }))\n .join(\"\\n \")\n\n const centerDiamond = createDiamondElement(symbol.center)\n\n const debugElements = []\n if (debug) {\n const topLeft = {\n x: symbol.center.x - size.width / 2,\n y: symbol.center.y - size.height / 2,\n }\n debugElements.push(\n `<text x=\"${topLeft.x}\" y=\"${topLeft.y}\" style=\"font: 0.05px monospace; fill: #833;\">${size.width.toFixed(2)} x ${size.height.toFixed(2)}</text>`,\n )\n\n // Show all available port labels\n ports.forEach((port, i) => {\n if (port.labels.length > 1) {\n const alternateLabels = port.labels.slice(1).join(\", \")\n debugElements.push(\n `<text x=\"${topLeft.x}\" y=\"${topLeft.y - (i + 1) * 0.05}\" dy=\"-0.15\" style=\"font: 0.05px monospace; fill: #833;\">${port.labels[0]} [${alternateLabels}]</text>`,\n )\n }\n })\n\n debugElements.push(...debugElements)\n }\n\n return [\n svgElements.join(\"\\n \"),\n portElements,\n centerDiamond,\n ...debugElements,\n ].join(\"\\n\")\n}\n\nexport function getSvg(\n symbol: SchSymbol,\n options: { width?: number; height?: number; debug?: boolean } = {},\n): string {\n const { size } = symbol\n const innerSvg = getInnerSvg(symbol, options)\n\n // Use the center and the size to calculate the viewBox\n const bufferMultiple = 1.2\n const w = size.width * bufferMultiple\n const h = size.height * bufferMultiple\n const viewBox = {\n x: symbol.center.x - w / 2,\n y: makeYUpPositive(symbol.center.y, true) - h / 2,\n width: w,\n height: h,\n }\n\n if (options.width && !options.height) {\n options.height = options.width! * (viewBox.height / viewBox.width)\n } else if (!options.width && options.height) {\n options.width = options.height! * (viewBox.width / viewBox.height)\n } else if (!options.width && !options.height) {\n options.width = viewBox.width\n options.height = viewBox.height\n }\n\n return `<svg width=\"${options.width}\" height=\"${options.height}\" viewBox=\"${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}\" xmlns=\"http://www.w3.org/2000/svg\">${innerSvg}</svg>`\n}\n","import type { SchSymbol } from \"./types\"\n\nexport function resizeSymbol(\n symbol: SchSymbol,\n newSize: { width?: number; height?: number },\n): SchSymbol {\n const { width: oldWidth, height: oldHeight } = symbol.size\n let scaleX = 1,\n scaleY = 1\n\n if (newSize.width && newSize.height) {\n scaleX = newSize.width / oldWidth\n scaleY = newSize.height / oldHeight\n } else if (newSize.width) {\n scaleX = scaleY = newSize.width / oldWidth\n } else if (newSize.height) {\n scaleX = scaleY = newSize.height / oldHeight\n }\n\n const resizedPrimitives = symbol.primitives.map((primitive) => {\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map((p) => ({\n x: p.x * scaleX,\n y: p.y * scaleY,\n })),\n }\n case \"text\":\n case \"circle\":\n return {\n ...primitive,\n x: primitive.x * scaleX,\n y: primitive.y * scaleY,\n }\n case \"box\":\n return {\n ...primitive,\n x: primitive.x * scaleX,\n y: primitive.y * scaleY,\n width: primitive.width * scaleX,\n height: primitive.height * scaleY,\n }\n default:\n return primitive\n }\n })\n\n return {\n ...symbol,\n primitives: resizedPrimitives,\n center: {\n x: symbol.center.x * scaleX,\n y: symbol.center.y * scaleY,\n },\n ports: symbol.ports.map((port) => ({\n ...port,\n x: port.x * scaleX,\n y: port.y * scaleY,\n })),\n size: {\n width: oldWidth * scaleX,\n height: oldHeight * scaleY,\n },\n }\n}\n","import symbols from \"./generated/symbols-index\"\n\nexport type {\n SchSymbol,\n BoxPrimitive,\n CirclePrimitive,\n PathPrimitive,\n TextPrimitive,\n} from \"./drawing/types\"\nimport { getSvg, getInnerSvg, resizeSymbol } from \"./drawing\"\n\nimport { BaseSymbolName } from \"./generated/base-symbol-names\"\n\n/**\n * Utility for easier autocomplete:\n *\n * ```ts\n * BASE_SYMBOLS.boxresistor // \"boxresistor\"\n * ```\n */\nexport const BASE_SYMBOLS: Record<BaseSymbolName, BaseSymbolName> =\n Object.fromEntries(Object.keys(symbols).map((k) => [k, k])) as any\n\nexport { symbols, getSvg, getInnerSvg, resizeSymbol, BaseSymbolName }\n","import type { Point } from \"./common\"\n\n/**\n * Returns true if the two lines intersect.\n */\nexport function doesLineIntersectLine(\n [a1, a2]: [Point, Point],\n [b1, b2]: [Point, Point],\n {\n lineThickness = 0,\n }: {\n lineThickness?: number\n } = {},\n): boolean {\n if (lineThickness === 0) {\n return doSegmentsIntersect(a1, a2, b1, b2)\n }\n const minDist = segmentsDistance(a1, a2, b1, b2)\n return minDist <= lineThickness\n}\n\n/**\n * Returns true if the two segments intersect.\n */\nexport function doSegmentsIntersect(\n p1: Point,\n q1: Point,\n p2: Point,\n q2: Point,\n): boolean {\n const o1 = orientation(p1, q1, p2)\n const o2 = orientation(p1, q1, q2)\n const o3 = orientation(p2, q2, p1)\n const o4 = orientation(p2, q2, q1)\n\n // General case\n if (o1 !== o2 && o3 !== o4) {\n return true\n }\n\n // Special Cases\n if (o1 === 0 && onSegment(p1, p2, q1)) return true\n if (o2 === 0 && onSegment(p1, q2, q1)) return true\n if (o3 === 0 && onSegment(p2, p1, q2)) return true\n if (o4 === 0 && onSegment(p2, q1, q2)) return true\n\n return false\n}\n\n/**\n * Returns 0 if the points are colinear, 1 if they are clockwise, and 2 if they are counterclockwise.\n */\nexport function orientation(p: Point, q: Point, r: Point): number {\n const val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y)\n if (val === 0) return 0 // colinear\n return val > 0 ? 1 : 2 // clock or counterclock wise\n}\n\n/**\n * Returns true if q is on the segment p->r.\n */\nexport function onSegment(p: Point, q: Point, r: Point): boolean {\n return (\n q.x <= Math.max(p.x, r.x) &&\n q.x >= Math.min(p.x, r.x) &&\n q.y <= Math.max(p.y, r.y) &&\n q.y >= Math.min(p.y, r.y)\n )\n}\n\n/**\n * Returns the minimum distance between two segments.\n */\nfunction segmentsDistance(a1: Point, a2: Point, b1: Point, b2: Point): number {\n // Handle degenerate cases: segments of zero length\n if (a1.x === a2.x && a1.y === a2.y) {\n return pointToSegmentDistance(a1, b1, b2)\n }\n if (b1.x === b2.x && b1.y === b2.y) {\n return pointToSegmentDistance(b1, a1, a2)\n }\n\n // Check if segments intersect\n if (doSegmentsIntersect(a1, a2, b1, b2)) {\n return 0\n }\n\n // Compute the minimum distance between the segments\n const distances = [\n pointToSegmentDistance(a1, b1, b2),\n pointToSegmentDistance(a2, b1, b2),\n pointToSegmentDistance(b1, a1, a2),\n pointToSegmentDistance(b2, a1, a2),\n ]\n\n return Math.min(...distances)\n}\n\n/**\n * Returns the minimum distance between a point and a segment.\n */\nexport function pointToSegmentDistance(p: Point, v: Point, w: Point): number {\n const l2 = (w.x - v.x) ** 2 + (w.y - v.y) ** 2\n if (l2 === 0) return distance(p, v)\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2\n t = Math.max(0, Math.min(1, t))\n\n const projection = {\n x: v.x + t * (w.x - v.x),\n y: v.y + t * (w.y - v.y),\n }\n\n return distance(p, projection)\n}\n\n/**\n * Returns the distance between two points.\n */\nexport function distance(p1: Point, p2: Point): number {\n const dx = p1.x - p2.x\n const dy = p1.y - p2.y\n return Math.sqrt(dx * dx + dy * dy)\n}\n","type NodeId = string\n\nexport function findConnectedNetworks(\n connections: Array<NodeId[]>,\n): Record<string, string[]> {\n const networks: Map<string, Set<string>> = new Map()\n let netCounter = 0\n\n function getOrCreateNetwork(nodeId: string): Set<string> {\n for (const [, network] of networks) {\n if (network.has(nodeId)) {\n return network\n }\n }\n const newNetwork = new Set<string>()\n networks.set(`connectivity_net${netCounter++}`, newNetwork)\n return newNetwork\n }\n\n for (const connection of connections) {\n let network: Set<string> | null = null\n\n for (const nodeId of connection) {\n if (!network) {\n network = getOrCreateNetwork(nodeId)\n } else if (!network.has(nodeId)) {\n const existingNetwork = getOrCreateNetwork(nodeId)\n if (existingNetwork !== network) {\n // Merge networks\n for (const node of existingNetwork) {\n network.add(node)\n }\n networks.delete(\n Array.from(networks.entries()).find(\n ([, net]) => net === existingNetwork,\n )![0],\n )\n }\n }\n network.add(nodeId)\n }\n }\n\n return Object.fromEntries(\n Array.from(networks.entries()).map(([netId, connectedNodes]) => [\n netId,\n Array.from(connectedNodes),\n ]),\n )\n}\n","export class ConnectivityMap {\n netMap: Record<string, string[]>\n\n idToNetMap: Record<string, string>\n\n constructor(netMap: Record<string, string[]>) {\n this.netMap = netMap\n this.idToNetMap = {}\n for (const [netId, ids] of Object.entries(netMap)) {\n for (const id of ids) {\n this.idToNetMap[id] = netId\n }\n }\n }\n\n addConnections(connections: string[][]) {\n for (const connection of connections) {\n const existingNets = new Set<string>()\n\n // Find all existing nets for the connection\n for (const id of connection) {\n const existingNetId = this.idToNetMap[id]\n if (existingNetId) {\n existingNets.add(existingNetId)\n }\n }\n\n let targetNetId: string\n\n if (existingNets.size === 0) {\n // If no existing nets found, create a new one\n targetNetId = `connectivity_net${Object.keys(this.netMap).length}`\n this.netMap[targetNetId] = []\n } else if (existingNets.size === 1) {\n // If only one existing net found, use it\n targetNetId =\n existingNets.values().next().value ??\n `connectivity_net${Object.keys(this.netMap).length}`\n } else {\n // If multiple nets found, merge them\n targetNetId =\n existingNets.values().next().value ??\n `connectivity_net${Object.keys(this.netMap).length}`\n for (const netId of existingNets) {\n if (netId !== targetNetId) {\n this.netMap[targetNetId].push(...this.netMap[netId])\n\n // we could delete the net, but setting it to reference the other net\n // will make sure any usage of the old netId will still work\n this.netMap[netId] = this.netMap[targetNetId]\n for (const id of this.netMap[targetNetId]) {\n this.idToNetMap[id] = targetNetId\n }\n }\n }\n }\n\n // Add all ids to the target net\n for (const id of connection) {\n if (!this.netMap[targetNetId].includes(id)) {\n this.netMap[targetNetId].push(id)\n }\n this.idToNetMap[id] = targetNetId\n }\n }\n }\n\n getIdsConnectedToNet(netId: string): string[] {\n return this.netMap[netId] || []\n }\n\n getNetConnectedToId(id: string): string | undefined {\n return this.idToNetMap[id]\n }\n\n areIdsConnected(id1: string, id2: string): boolean {\n if (id1 === id2) return true\n const netId1 = this.getNetConnectedToId(id1)\n if (!netId1) return false\n const netId2 = this.getNetConnectedToId(id2)\n if (!netId2) return false\n return netId1 === netId2 || netId2 === id1 || netId2 === id1\n }\n\n areAllIdsConnected(ids: string[]): boolean {\n const netId = this.getNetConnectedToId(ids[0])\n for (const id of ids) {\n const nextNetId = this.getNetConnectedToId(id)\n if (nextNetId === undefined) {\n return false\n }\n if (nextNetId !== netId) {\n return false\n }\n }\n return true\n }\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { findConnectedNetworks } from \"./findConnectedNetworks\"\nimport { ConnectivityMap } from \"./ConnectivityMap\"\n\nexport const getSourcePortConnectivityMapFromCircuitJson = (\n circuitJson: AnyCircuitElement[],\n) => {\n const connections: string[][] = []\n\n for (const element of circuitJson) {\n if (element.type === \"source_trace\") {\n connections.push([\n ...(element.connected_source_port_ids ?? []),\n ...(element.connected_source_net_ids ?? []),\n ])\n } else if (element.type === \"source_component\") {\n if (element.internally_connected_source_port_ids) {\n for (const portGroup of element.internally_connected_source_port_ids) {\n connections.push(portGroup)\n }\n }\n }\n }\n\n const netMap = findConnectedNetworks(connections)\n\n return new ConnectivityMap(netMap)\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { findConnectedNetworks } from \"./findConnectedNetworks\"\nimport { ConnectivityMap } from \"./ConnectivityMap\"\n\nexport const getFullConnectivityMapFromCircuitJson = (\n circuitJson: AnyCircuitElement[],\n) => {\n const connections: string[][] = []\n\n for (const element of circuitJson) {\n if (element.type === \"source_trace\") {\n connections.push(\n [\n element.source_trace_id,\n ...(element.connected_source_port_ids ?? []),\n ...(element.connected_source_net_ids ?? []),\n ].filter(Boolean),\n )\n } else if (element.type === \"pcb_port\") {\n const { pcb_port_id, source_port_id } = element\n if (source_port_id && pcb_port_id) {\n connections.push([source_port_id, pcb_port_id])\n }\n } else if (element.type === \"pcb_smtpad\") {\n const { pcb_smtpad_id, pcb_port_id } = element\n if (pcb_port_id && pcb_smtpad_id) {\n connections.push([pcb_smtpad_id, pcb_port_id])\n }\n } else if (element.type === \"pcb_plated_hole\") {\n const { pcb_plated_hole_id, pcb_port_id } = element\n if (pcb_port_id && pcb_plated_hole_id) {\n connections.push([pcb_plated_hole_id, pcb_port_id])\n }\n } else if (element.type === \"pcb_trace\") {\n const { pcb_trace_id, source_trace_id } = element\n const route = Array.isArray(element.route)\n ? element.route.filter((rp) => rp && rp.route_type === \"wire\")\n : []\n if (source_trace_id && pcb_trace_id) {\n connections.push([pcb_trace_id, source_trace_id])\n }\n if (Array.isArray(route)) {\n const startId = route.find(\n (rp) => rp && rp.start_pcb_port_id,\n )?.start_pcb_port_id\n const endId = route.find(\n (rp) => rp && rp.end_pcb_port_id,\n )?.end_pcb_port_id\n if (startId && pcb_trace_id && endId) {\n connections.push([startId, pcb_trace_id, endId])\n }\n }\n } else if (element.type === \"pcb_via\") {\n const { pcb_via_id, pcb_trace_id } = element\n if (pcb_trace_id && pcb_via_id) {\n connections.push([pcb_via_id, pcb_trace_id])\n }\n } else if (element.type === \"source_component\") {\n if (element.internally_connected_source_port_ids) {\n for (const portGroup of element.internally_connected_source_port_ids) {\n connections.push(portGroup)\n }\n }\n }\n }\n\n const netMap = findConnectedNetworks(connections)\n\n return new ConnectivityMap(netMap)\n}\n","import type { AnyCircuitElement, PCBPort, PCBTrace } from \"circuit-json\"\nimport { ConnectivityMap } from \"./ConnectivityMap\"\nimport { doesLineIntersectLine } from \"@tscircuit/math-utils\"\nimport { findConnectedNetworks } from \"./findConnectedNetworks\"\n\n/**\n * A PCB Connectivity Map is a connectivity map that has analyzed what traces and ports are actually connected on the\n * PCB.\n *\n * This is useful for determining how to route a trace on the PCB. For example, you may want to determine where the\n * nearest connected net point is to connect an unrouted pin.\n */\nexport class PcbConnectivityMap {\n circuitJson: AnyCircuitElement[]\n traceIdToElm: Map<string, PCBTrace>\n portIdToElm: Map<string, PCBPort>\n connMap: ConnectivityMap\n\n constructor(circuitJson?: AnyCircuitElement[]) {\n this.circuitJson = circuitJson || []\n this.traceIdToElm = new Map()\n this.portIdToElm = new Map()\n if (circuitJson) {\n this._buildTraceMap()\n this._buildPortMap()\n this.connMap = this._buildTraceConnectivityMap()\n } else {\n this.connMap = new ConnectivityMap({})\n }\n }\n\n private _buildPortMap() {\n for (const element of this.circuitJson) {\n if (element.type === \"pcb_port\") {\n this.portIdToElm.set(element.pcb_port_id, element as PCBPort)\n }\n }\n }\n\n private _buildTraceMap() {\n for (const element of this.circuitJson) {\n if (element.type === \"pcb_trace\") {\n this.traceIdToElm.set(element.pcb_trace_id, element as PCBTrace)\n }\n }\n }\n\n private _buildTraceConnectivityMap(): ConnectivityMap {\n const connections: string[][] = []\n const traceIds = Array.from(this.traceIdToElm.keys())\n\n for (let i = 0; i < traceIds.length; i++) {\n for (let j = i + 1; j < traceIds.length; j++) {\n const trace1 = this.traceIdToElm.get(traceIds[i])!\n const trace2 = this.traceIdToElm.get(traceIds[j])!\n if (this._arePcbTracesConnected(trace1, trace2)) {\n connections.push([traceIds[i], traceIds[j]])\n }\n }\n }\n\n for (const port of this.portIdToElm.values()) {\n for (const trace of this.traceIdToElm.values()) {\n for (const rp of trace.route) {\n if (rp.route_type === \"wire\") {\n if (rp.start_pcb_port_id === port.pcb_port_id) {\n connections.push([port.pcb_port_id, trace.pcb_trace_id])\n } else if (rp.end_pcb_port_id === port.pcb_port_id) {\n connections.push([trace.pcb_trace_id, port.pcb_port_id])\n }\n }\n }\n }\n }\n\n return new ConnectivityMap(findConnectedNetworks(connections))\n }\n\n addTrace(trace: PCBTrace) {\n this.traceIdToElm.set(trace.pcb_trace_id, trace)\n const connections: string[][] = []\n for (const rp of trace.route) {\n if (rp.route_type === \"wire\") {\n if (rp.start_pcb_port_id) {\n connections.push([rp.start_pcb_port_id, trace.pcb_trace_id])\n }\n if (rp.end_pcb_port_id) {\n connections.push([rp.end_pcb_port_id, trace.pcb_trace_id])\n }\n }\n }\n\n this.connMap.addConnections(connections)\n }\n\n _arePcbTracesConnected(trace1: PCBTrace, trace2: PCBTrace): boolean {\n for (let i = 0; i < trace1.route.length - 1; i++) {\n const segment1A = trace1.route[i]\n const segment1B = trace1.route[i + 1]\n if (segment1A.route_type !== \"wire\") continue\n if (segment1B.route_type !== \"wire\") continue\n for (let j = 0; j < trace2.route.length - 1; j++) {\n const segment2A = trace2.route[j]\n const segment2B = trace2.route[j + 1]\n\n if (segment2A.route_type !== \"wire\") continue\n if (segment2B.route_type !== \"wire\") continue\n\n // Check if lines are overlapping\n const isOverlapping = doesLineIntersectLine(\n [segment1A, segment1B],\n [segment2A, segment2B],\n {\n lineThickness: (segment1A.width + segment2A.width) / 2,\n },\n )\n if (isOverlapping) {\n return true\n }\n }\n }\n return false\n }\n\n areTracesConnected(traceId1: string, traceId2: string): boolean {\n return this.connMap.areIdsConnected(traceId1, traceId2)\n }\n\n getAllTracesConnectedToTrace(traceId: string): PCBTrace[] {\n const netId = this.connMap.getNetConnectedToId(traceId)\n return netId\n ? this.connMap\n .getIdsConnectedToNet(netId)\n .filter((id) => this.traceIdToElm.has(id))\n .map((id) => this.traceIdToElm.get(id) as PCBTrace)\n : []\n }\n\n getAllTracesConnectedToPort(portId: string): PCBTrace[] {\n const netId = this.connMap.getNetConnectedToId(portId)\n return netId\n ? this.connMap\n .getIdsConnectedToNet(netId)\n .filter((id) => this.traceIdToElm.has(id))\n .map((id) => this.traceIdToElm.get(id) as PCBTrace)\n : []\n }\n}\n"],"mappings":"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;ACDlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACClB,SAAS,KAAAA,WAAS;ACDlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACClB,SAAS,KAAAA,WAAS;ACDlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,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S;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;AACxD;AAEO,IAAM,uBAAuB,CAAC,OAAsC;AACzE,MAAI;IACF;IACA;IACA;IACA;EACF,IAA+D;IAC7D,GAAG;IACH,GAAI,GAAW;IACf,GAAI,GAAW;IACf,GAAI,GAAW;EACjB;AAEA,MACE,GAAG,OAAO,UACV,GAAG,OAAO,UACV,GAAG,OAAO,UACV,GAAG,OAAO,QACV;AACA,SAAK,GAAG,KAAK,GAAG,MAAM;AACtB,SAAK,GAAG,KAAK,GAAG,MAAM;AACtB,YAAQ,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE;AAC9B,aAAS,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE;EACjC;AAEA,MAAI,GAAG,UAAU,MAAM,QAAQ,GAAG,MAAM,KAAK,GAAG,OAAO,SAAS,GAAG;AACjE,UAAM,UAAU,GAAG,OAAO,IAAI,CAACA,WAAyBA,OAAM,CAAC;AAC/D,UAAM,UAAU,GAAG,OAAO,IAAI,CAACA,WAAyBA,OAAM,CAAC;AAE/D,UAAM,OAAO,KAAK,IAAI,GAAG,OAAO;AAChC,UAAM,OAAO,KAAK,IAAI,GAAG,OAAO;AAChC,UAAM,OAAO,KAAK,IAAI,GAAG,OAAO;AAChC,UAAM,OAAO,KAAK,IAAI,GAAG,OAAO;AAEhC,SAAK,OAAO,QAAQ;AACpB,SAAK,OAAO,QAAQ;AACpB,YAAQ,OAAO;AACf,aAAS,OAAO;EAClB;AAEA,QAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,QAAQ,GAAG,QAAQ,QAAQ;AAC1E,QAAM,UAAU;AAEhB,MAAI,MAAM,UAAa,MAAM,OAAW,QAAO;AAE/C,MAAI,UAAU,QAAW;AACvB,QAAI,oBAAoB,IAAI;AAC1B,cAAQ,GAAG;AACX,eAAS,GAAG;IACd;EACF;AAEA,MAAI,UAAU,UAAa,WAAW,QAAW;AAC/C,YAAQ;AACR,aAAS;EACX;AAEA,SAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA,UACE,oBACE,WAAY,GAAW,QAAQ,KAAK,IAAI,oBAAoB,MAC9D,IAAI,CAAC,KAAK;EACd;AACF;AC5LO,IAAM,WAAW,CAAI,UAAsC,QAAQ,KAAK;ACIxE,IAAM,sBAAsB,CACjC,aACwE;AACxE,QAAM,eAAe,SAClB,OAAO,CAAC,QAAQ,IAAI,KAAK,WAAW,MAAM,CAAC,EAC3C;IACC,SACG,OAAO,CAAC,QAAQ,IAAI,SAAS,WAAW,EAExC,QAAQ,CAAC,QAAkB,IAAI,KAAK;EACzC,EACC,IAAI,CAAC,QAAQ,qBAAqB,GAAG,CAAC,EACtC,OAAO,QAAQ;AAElB,MAAI,aAAa,WAAW;AAC1B,WAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,GAAG,QAAQ,EAAE;AAEvD,MAAI,OAAO,aAAa,CAAC,EAAG,IAAI,aAAa,CAAC,EAAG,QAAQ;AACzD,MAAI,OAAO,aAAa,CAAC,EAAG,IAAI,aAAa,CAAC,EAAG,QAAQ;AACzD,MAAI,OAAO,aAAa,CAAC,EAAG,IAAI,aAAa,CAAC,EAAG,SAAS;AAC1D,MAAI,OAAO,aAAa,CAAC,EAAG,IAAI,aAAa,CAAC,EAAG,SAAS;AAE1D,aAAW,OAAO,aAAa,MAAM,CAAC,GAAG;AACvC,WAAO,KAAK,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC;AAC3C,WAAO,KAAK,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC;AAC3C,WAAO,KAAK,IAAI,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC;AAC5C,WAAO,KAAK,IAAI,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC;EAC9C;AAEA,QAAM,QAAQ,OAAO;AACrB,QAAM,SAAS,OAAO;AACtB,QAAM,SAAS,EAAE,GAAG,OAAO,QAAQ,GAAG,GAAG,OAAO,SAAS,EAAE;AAE3D,SAAO,EAAE,QAAQ,OAAO,OAAO;AACjC;ACpCO,IAAM,eAAe,CAAC,YAAuC;AAElE,SAAO,QAAQ,GAAG,QAAQ,IAAI,KAAK;AACrC;;;AIHO,SAAS,sBAAsB,YAKpC;AACA,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;EAC9C;AAEA,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,OAAO;AAEX,QAAM,eAAe,CAACC,WAAiB;AACrC,WAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;AAC7B,WAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;AAC7B,WAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;AAC7B,WAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;EAC/B;AAEA,aAAW,QAAQ,CAAC,cAAc;AAChC,YAAQ,UAAU,MAAM;MACtB,KAAK;AACH,kBAAU,OAAO,QAAQ,YAAY;AACrC;MACF,KAAK;AACH,qBAAa,EAAE,GAAG,UAAU,GAAG,GAAG,UAAU,EAAE,CAAC;AAC/C;MACF,KAAK,UAAU;AACb,cAAM,EAAE,GAAG,GAAG,OAAO,IAAI;AACzB,qBAAa,EAAE,GAAG,IAAI,QAAQ,GAAG,IAAI,OAAO,CAAC;AAC7C,qBAAa,EAAE,GAAG,IAAI,QAAQ,GAAG,IAAI,OAAO,CAAC;AAC7C;MACF;MACA,KAAK,OAAO;AACV,cAAM,EAAE,GAAG,GAAG,OAAO,OAAO,IAAI;AAChC,cAAM,YAAY,QAAQ;AAC1B,cAAM,aAAa,SAAS;AAC5B,qBAAa,EAAE,GAAG,IAAI,WAAW,GAAG,IAAI,WAAW,CAAC;AACpD,qBAAa,EAAE,GAAG,IAAI,WAAW,GAAG,IAAI,WAAW,CAAC;AACpD;MACF;IACF;EACF,CAAC;AAED,SAAO,EAAE,MAAM,MAAM,MAAM,KAAK;AAClC;AC/CO,SAAS,aACdC,SACW;AACX,MAAIC,QAAOD,QAAO;AAClB,MAAI,CAACC,OAAM;AACT,UAAMC,WAAS,sBAAsBF,QAAO,UAAU;AACtD,IAAAC,QAAO;MACL,OAAOC,SAAO,OAAOA,SAAO;MAC5B,QAAQA,SAAO,OAAOA,SAAO;IAC/B;EACF;AACA,SAAO,EAAE,GAAGF,SAAQ,MAAAC,MAAK;AAC3B;ACfA,IAAA,uBAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;ACzJA,IAAM,EAAE,OAAO,QAAQ,WAAW,QAAQ,IAAI;AAE9C,IAAO,4BAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAO,KAAK;IACtB,GAAG,OAAO,OAAO,OAAO;IACxB;MACE,MAAM;MACN,MAAM;MACN,GAAG;MACH,GAAG;MACH,QAAQ;IACV;IACA;MACE,MAAM;MACN,MAAM;MACN,GAAG;MACH,GAAG;MACH,QAAQ;IACV;EACF;EACA,OAAO;IACL,EAAE,GAAG,UAAU,OAAO,QAAQ,CAAC,GAAG,EAAE;;IACpC,EAAE,GAAG,UAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE;;EACvC;EACA,MAAM,EAAE,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO;EACnD,QAAQ,EAAE,GAAG,OAAO,SAAS,GAAG,OAAO,QAAQ;AACjD,CAAC;ACnBD,IAAM,0BAA0B,CAC9B,QACA,iBAAmD,YAC/B;AACpB,UAAQ,gBAAgB;IACtB,KAAK;AACH,cAAQ,QAAQ;QACd,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;MACX;AACA;IACF,KAAK;AACH,cAAQ,QAAQ;QACd,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;MACX;AACA;IACF,KAAK;AACH,cAAQ,QAAQ;QACd,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;QACT,KAAK;AACH,iBAAO;MACX;AACA;IACF,KAAK;AACH,aAAO;EACX;AACA,SAAO;AACT;AAEO,IAAM,sBAAsB,CACjCD,SACA,cACc;AACd,QAAM,EAAE,YAAY,QAAQ,OAAO,MAAAC,MAAK,IAAID;AAC5C,QAAM,kBAAkB,UAAU;IAChC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG,IAAI,OAAO;EAChB,CAAC;AAED,QAAM,oBAAoB,WAAW,IAAI,CAAC,cAAyB;AACjE,gBAAY,EAAE,GAAG,UAAU;AAC3B,YAAQ,UAAU,MAAM;MACtB,KAAK;AACH,eAAO;UACL,GAAG;UACH,QAAQ,UAAU,OAAO;YACvB,CAACD,WAAU,aAAa,iBAAiBA,MAAK;UAChD;QACF;MACF,KAAK;AACH,cAAM,eAAe,aAAa,iBAAiB;UACjD,GAAG,UAAU;UACb,GAAG,UAAU;QACf,CAAC;AAGD,cAAM,YAAsD;UAC1D,UAAU;UACV,WAAW;UACX,aAAa;UACb,cAAc;UACd,QAAQ;UACR,YAAY;UACZ,eAAe;UACf,aAAa;UACb,cAAc;QAChB;AAEA,eAAO;UACL,GAAG;UACH,GAAG,aAAa;UAChB,GAAG,aAAa;UAChB,QAAQ,UAAU,UAAU,MAAM;QACpC;MACF,KAAK;MACL,KAAK;AACH,cAAM,gBAAgB,aAAa,iBAAiB;UAClD,GAAG,UAAU;UACb,GAAG,UAAU;QACf,CAAC;AACD,eAAO;UACL,GAAG;UACH,GAAG,cAAc;UACjB,GAAG,cAAc;QACnB;IACJ;EACF,CAAC;AAED,QAAM,eAAe,MAAM;IACzB,CAAC,UAAgB;MACf,GAAG;MACH,GAAI,aAAa,iBAAiB,IAAI;IACxC;EACF;AAEA,SAAO;IACL,YAAY;IACZ;IACA,OAAO;IACP,MAAAE;IACA,GAAG;EACL;AACF;AAEO,IAAM,sBAAsB,CACjCD,SACA,cACc;AACd,QAAM,EAAE,YAAY,QAAQ,OAAO,MAAAC,MAAK,IAAID;AAC5C,QAAM,kBAAkB,UAAU;IAChC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG,IAAI,OAAO;EAChB,CAAC;AAED,QAAM,oBAAoB,WAAW,IAAI,CAAC,cAAyB;AACjE,gBAAY,EAAE,GAAG,UAAU;AAC3B,YAAQ,UAAU,MAAM;MACtB,KAAK;AACH,eAAO;UACL,GAAG;UACH,QAAQ,UAAU,OAAO;YACvB,CAACD,WAAU,aAAa,iBAAiBA,MAAK;UAChD;QACF;MACF,KAAK;AACH,cAAM,eAAe,aAAa,iBAAiB;UACjD,GAAG,UAAU;UACb,GAAG,UAAU;QACf,CAAC;AAGD,cAAM,YAAsD;UAC1D,UAAU;UACV,WAAW;UACX,aAAa;UACb,cAAc;UACd,QAAQ;UACR,YAAY;UACZ,eAAe;UACf,aAAa;UACb,cAAc;QAChB;AAEA,eAAO;UACL,GAAG;UACH,GAAG,aAAa;UAChB,GAAG,aAAa;UAChB,QAAQ,UAAU,UAAU,MAAM;QACpC;MACF,KAAK;MACL,KAAK;AACH,cAAM,gBAAgB,aAAa,iBAAiB;UAClD,GAAG,UAAU;UACb,GAAG,UAAU;QACf,CAAC;AACD,eAAO;UACL,GAAG;UACH,GAAG,cAAc;UACjB,GAAG,cAAc;QACnB;IACJ;EACF,CAAC;AAED,QAAM,eAAe,MAAM;IACzB,CAAC,UAAgB;MACf,GAAG;MACH,GAAI,aAAa,iBAAiB,IAAI;IACxC;EACF;AAEA,SAAO;IACL,YAAY;IACZ;IACA,OAAO;IACP,MAAAE;IACA,GAAG;EACL;AACF;AAEO,IAAM,0BAA0B,CACrCD,SACA,SAIc;AACd,QAAM,EAAE,gBAAgB,UAAU,IAAI;AAEtC,QAAM,WAAW;IACf,IAAI,KAAK,KAAK;IACd,OAAO;IACP,MAAM,CAAC,KAAK,KAAK;IACjB,MAAM,CAAC,KAAK;EACd;AAEA,QAAMG,aAAY;IAChB,iBAAiB,SAAS,cAAc,IAAI,KAAK,KAAK;IACtDH,QAAO,OAAO;IACdA,QAAO,OAAO;EAChB;AAEA,QAAM,EAAE,YAAY,QAAQ,MAAAC,OAAM,MAAM,IAAID;AAE5C,QAAM,oBAAoB,WAAW,IAAI,CAAC,cAAyB;AACjE,gBAAY,EAAE,GAAG,UAAU;AAC3B,YAAQ,UAAU,MAAM;MACtB,KAAK;AACH,eAAO;UACL,GAAG;UACH,QAAQ,UAAU,OAAO;YACvB,CAACD,WAAU,aAAaI,YAAWJ,MAAK;UAC1C;QACF;MACF,KAAK;AACH,cAAM,eAAe,aAAaI,YAAW;UAC3C,GAAG,UAAU;UACb,GAAG,UAAU;QACf,CAAC;AAED,kBAAU,SAAS;UACjB,UAAU;UACV,kBAAkB;QACpB;AAEA,eAAO;UACL,GAAG;UACH,GAAG,aAAa;UAChB,GAAG,aAAa;QAClB;MACF,KAAK;AACH,cAAM,gBAAgB,aAAaA,YAAW;UAC5C,GAAG,UAAU;UACb,GAAG,UAAU;QACf,CAAC;AACD,eAAO;UACL,GAAG;UACH,GAAG,cAAc;UACjB,GAAG,cAAc;QACnB;MACF,KAAK;AACH,cAAM,gBAAgB,aAAaA,YAAW;UAC5C,GAAG,UAAU;UACb,GAAG,UAAU;QACf,CAAC;AACD,eAAO;UACL,GAAG;UACH,GAAG,cAAc;UACjB,GAAG,cAAc;UACjB,OAAO,UAAU;UACjB,QAAQ,UAAU;QACpB;IACJ;EACF,CAAC;AAED,QAAM,eAAe,MAAM;IACzB,CAAC,UAAgB;MACf,GAAG;MACH,GAAI,aAAaA,YAAW,IAAI;IAClC;EACF;AAEA,QAAMD,WAAS,sBAAsB,iBAAiB;AAEtD,SAAO;IACL,YAAY;IACZ;IACA,OAAO;IACP,MAAM;MACJ,OAAOA,SAAO,OAAOA,SAAO;MAC5B,QAAQA,SAAO,OAAOA,SAAO;IAC/B;IACA,GAAG;EACL;AACF;AAKO,IAAM,eAAe,CAC1BF,SACAI,eAAgD,QAChD,YAAgC,CAAC,MAEjC,wBAAwBJ,SAAQ;EAC9B,gBAAgBI;EAChB;AACF,CAAC;AChUH,IAAM,gBAAgB,wBAAwB,2BAAmB;EAC/D,gBAAgB;AAClB,CAAC;AAED,IAAO,4BAAQ;ACPf,IAAA,0BAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;AC3JA,IAAM,EAAE,OAAAC,QAAO,OAAO,QAAAH,SAAQ,WAAAI,YAAW,SAAAC,SAAQ,IAAI;AAErD,IAAO,+BAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,MAAK;IACtB,GAAG,OAAO,OAAOE,QAAO;IACxB,EAAE,GAAG,MAAM,MAAM,QAAQ,gBAAgB;IACzC,EAAE,GAAG,MAAM,SAAS,QAAQ,aAAa;EAC3C;EACA,OAAO;IACL,EAAE,GAAGD,WAAU,OAAO,QAAQ,CAAC,GAAG,EAAE;;IACpC,EAAE,GAAGA,WAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE;;EACvC;EACA,MAAM,EAAE,OAAOJ,QAAO,OAAO,QAAQA,QAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,QAAO,SAAS,GAAGA,QAAO,QAAQ;AACjD,CAAC;ACbD,IAAM,UAAU,wBAAwB,8BAAsB;EAC5D,gBAAgB;AAClB,CAAC;AAED,IAAO,+BAAQ;ACTf,IAAA,yBAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MA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OAAS;MACT,MAAQ;IACV;IACA,UAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;ACztDA,IAAM,EAAE,OAAAG,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AACrD,IAAO,mCAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB;MACE,MAAM;MACN,MAAM;MACN,GAAG;MACH,GAAG;IACL;IACA;MACE,MAAM;MACN,MAAM;MACN,GAAG;MACH,GAAG;IACL;EACF;EACA,OAAO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GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,OAAS;MACP,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;ACnSA,IAAO,4BAAQ,aAAa,oBAAO,EAChC,UAAU,QAAQ,CAAC,KAAK,MAAM,CAAC,EAC/B,UAAU,WAAW,CAAC,KAAK,MAAM,C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CP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;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AAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;ACtJA,IAAO,oBAAQ,aAAa,YAAO,EAChC,i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CP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IAEX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAM;MACN,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;AC5OF,IAAO,4CAAQ,aAAa,mCAAO,EAChC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACRT,IAAMD,WAAU,aAAa,2CAAmC,MAAM;AAEtE,IAAMM,OAAMN,SAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AACA,IAAMO,OAAMP,SAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AAEAM,KAAI,SAAS;AACbC,KAAI,SAAS;AAEbD,KAAI,IAAI;AACRA,KAAI,KAAK;AACTC,KAAI,KAAK;AACTA,KAAI,IAAI;AAER,IAAO,2CAAQP;AChBf,IAAMA,WAAU,aAAa,2CAAmC,MAAM;AAEtE,IAAMM,OAAMN,SAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AACA,IAAMO,OAAMP,SAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AAEAM,KAAI,SAAS;AACbC,KAAI,SAAS;AAEbD,KAAI,IAAI;AACRA,KAAI,KAAK;AACTC,KAAI,KAAK;AACTA,KAAI,IAAI;AAER,IAAO,2CAAQP;AClBf,IAAMA,WAAU,aAAa,2CAAmC,IAAI;AAEpE,IAAMM,OAAMN,SAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AACA,IAAMO,OAAMP,SAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AAEAM,KAAI,SAAS;AACbC,KAAI,SAAS;AAEbD,KAAI,IAAI;AACRA,KAAI,KAAK;AACTC,KAAI,KAAK;AACTA,KAAI,IAAI;AAER,IAAO,yCAAQP;ACrBf,IAAA,sBAAA;EACI,OAAS;IACP,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IAC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GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IAGX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IAEA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;IAEA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,YAAY;MACR,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,GAAK;MACL,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AAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACN,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IAEA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IAEA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IAEA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;U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AAEbD,MAAI,IAAI;AACRA,MAAI,KAAK;AACTC,MAAI,KAAK;AAET,IAAO,+BAAQP;ACpBf,IAAA,gDAAA;EACE,OAAS;IACP,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,oBAAoB;MAClB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,sBAAsB;MACpB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,wBAAwB;MACtB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,sBAAsB;MACpB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;ACjOA,IAAO,qDAAQ,aAAa,6CAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAMC,iBAAgB,aAAa,kDAA0C;AAE7E,IAAMF,UAAQE,eAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMM,QAAMR,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDQ,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAMD,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,qDAAQL;ACnBf,IAAA,mBAAA;EACE,OAAS;IACP,UAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,UAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,UAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,UAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL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;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;ACzOA,oBAAQ,OAAO,SAAS;AACxB,IAAO,2BAAQ,aAAa,mBAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,C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CL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;ACzNA,IAAM,EAAE,OAAAK,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,wCAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB,EAAE,GAAGC,QAAM,MAAM,QAAQ,eAAe,GAAG,EAAE;IAC7C,EAAE,GAAGA,QAAM,SAAS,QAAQ,eAAe,GAAG,EAAE;EAClD;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,OAAO,QAAQ,CAAC,GAAG,EAAE;;IACpC,EAAE,GAAGA,YAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE;;EACvC;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,SAAS,GAAGA,SAAO,QAAQ;AACjD,CAAC;AChBD,IAAMQ,iBAAgB,aAAa,qCAA6B;AAEhE,IAAMF,UAAQE,eAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMM,QAAMR,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDQ,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAMD,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,wCAAQL;ACnBf,IAAA,uCAAA;EACE,OAAS;IACP,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,SAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,QAAU;MACR,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;ACxQA,IAAM,EAAE,OAAAL,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,YAAU,IAAI;AAE5C,IAAO,4CAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOD,OAAK;IACtB,EAAE,GAAGG,QAAM,QAAQ,QAAQ,cAAc;IACzC,EAAE,GAAGA,QAAM,QAAQ,QAAQ,cAAc;EAC3C;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,MAAM,QAAQ,CAAC,GAAG,EAAE;;IACnC,EAAE,GAAGA,YAAU,SAAS,QAAQ,CAAC,GAAG,EAAE;;IACtC,EAAE,GAAGA,YAAU,OAAO,QAAQ,CAAC,GAAG,EAAE;;EACtC;EACA,MAAM,EAAE,OAAOJ,SAAO,QAAQ,KAAK,QAAQA,SAAO,OAAO;EACzD,QAAQ,EAAE,GAAGA,SAAO,UAAU,KAAK,GAAGA,SAAO,QAAQ;AACvD,CAAC;ACdD,IAAMO,YAAU,aAAa,yCAAiC;AAE9D,IAAMM,QAAMN,UAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AACA,IAAMO,QAAMP,UAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AAEAM,MAAI,SAAS;AACbC,MAAI,SAAS;AAEbD,MAAI,IAAIC,MAAI;AAEZA,MAAI,KAAK;AAET,IAAO,4CAAQP;ACpBf,IAAA,gDAAA;EACE,OAAS;IACP,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;ACzlBA,IAAM,EAAE,OAAAJ,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,qDAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB,EAAE,GAAGC,QAAM,MAAM,QAAQ,iBAAiB,GAAG,EAAE;IAC/C,EAAE,GAAGA,QAAM,SAAS,QAAQ,cAAc,GAAG,EAAE;EACjD;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,OAAO,QAAQ,CAAC,GAAG,EAAE;IACpC,EAAE,GAAGA,YAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE;EACvC;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,UAAU,MAAO,GAAGA,SAAO,UAAU,KAAK;AAChE,CAAC;ACfD,IAAMO,YAAU,aAAa,kDAA0C;AAEvE,IAAMM,QAAMN,UAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AACA,IAAMO,QAAMP,UAAQ,WAAW;EAC7B,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,SAAS;AACzC;AAEAM,MAAI,SAAS;AACbC,MAAI,SAAS;AAEbD,MAAI,IAAIA,MAAI,IAAI;AAChBA,MAAI,IAAIA,MAAI;AAEZC,MAAI,IAAIA,MAAI;AACZA,MAAI,IAAI;AAER,IAAO,qDAAQP;ACtBf,IAAA,wCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;AC/LA,IAAM,EAAE,OAAAJ,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,6CAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB,EAAE,GAAGC,QAAM,MAAM,QAAQ,gBAAgB,GAAG,EAAE;IAC9C,EAAE,GAAGA,QAAM,SAAS,QAAQ,gBAAgB,GAAG,EAAE;EACnD;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,MAAM,QAAQ,CAAC,KAAK,OAAO,EAAE;;IAC5C,EAAE,GAAGA,YAAU,SAAS,QAAQ,CAAC,KAAK,QAAQ,EAAE;;IAChD,EAAE,GAAGA,YAAU,OAAO,QAAQ,CAAC,KAAK,MAAM,EAAE;;EAC9C;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,SAAS,GAAGA,SAAO,QAAQ;AACjD,CAAC;AChBD,IAAMQ,iBAAgB,aAAa,0CAAkC;AAErE,IAAMF,UAAQE,eAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMM,QAAMR,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDQ,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAMD,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,6CAAQL;ACnBf,IAAA,wCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,eAAe;MACb,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,aAAa;MACX,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,eAAe;MACb,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;AC5NA,IAAM,EAAE,OAAAL,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,6CAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB,EAAE,GAAGC,QAAM,MAAM,QAAQ,gBAAgB,GAAG,EAAE;IAC9C,EAAE,GAAGA,QAAM,SAAS,QAAQ,gBAAgB,GAAG,EAAE;EACnD;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,MAAM,QAAQ,CAAC,KAAK,OAAO,EAAE;;IAC5C,EAAE,GAAGA,YAAU,SAAS,QAAQ,CAAC,KAAK,QAAQ,EAAE;;IAChD,EAAE,GAAGA,YAAU,OAAO,QAAQ,CAAC,KAAK,MAAM,EAAE;;EAC9C;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,SAAS,GAAGA,SAAO,QAAQ;AACjD,CAAC;ACjBD,IAAMQ,kBAAgB,aAAa,0CAAkC;AAErE,IAAMF,UAAQE,gBAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMM,QAAMR,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDQ,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAMD,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,6CAAQL;ACnBf,IAAA,2BAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;ACjKA,IAAM,EAAE,OAAAL,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,gCAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB,EAAE,GAAGC,QAAM,MAAM,QAAQ,gBAAgB,GAAG,EAAE;IAC9C,EAAE,GAAGA,QAAM,SAAS,QAAQ,gBAAgB,GAAG,EAAE;EACnD;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,MAAM,QAAQ,CAAC,KAAK,OAAO,EAAE;;IAC5C,EAAE,GAAGA,YAAU,SAAS,QAAQ,CAAC,KAAK,QAAQ,EAAE;;IAChD,EAAE,GAAGA,YAAU,OAAO,QAAQ,CAAC,KAAK,MAAM,EAAE;;EAC9C;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,SAAS,GAAGA,SAAO,QAAQ;AACjD,CAAC;AChBD,IAAMQ,kBAAgB,aAAa,6BAAqB;AAExD,IAAMF,UAAQE,gBAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMM,QAAMR,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDQ,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAMD,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,gCAAQL;ACnBf,IAAA,iCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,WAAW;MACT,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AAC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,OAAS;IACL,QAAU;MACN,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,QAAU;MACN,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,QAAU;MACN,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,QAAU;MACN,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,QAAU;MACN,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,YAAY;MACR,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,YAAY;MACR,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,YAAY;MACR,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,cAAc;MACV,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,cAAc;MACV,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;IACA,gBAAgB;MACZ,MAAQ;MACR,QAAU;QACN;UACI,GAAK;UACL,GAAK;QACT;QACA;UACI,GAAK;UACL,GAAK;QACT;MACJ;MACA,OAAS;MACT,MAAQ;IACZ;EACJ;EACA,OAAS;IACL,MAAQ;MACJ,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACT;IACA,SAAW;MACP,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACT;EACJ;EACA,WAAa;IACT,OAAS;MACL,GAAK;MACL,GAAK;IACT;IACA,OAAS;MACL,GAAK;MACL,GAAK;IACT;IACA,QAAU;MACN,GAAK;MACL,GAAK;IACT;IACA,MAAQ;MACJ,GAAK;MACL,GAAK;IACT;IACA,SAAW;MACP,GAAK;MACL,GAAK;IACT;EACJ;EACA,QAAU;IACN,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACf;EACA,SAAW,CAAC;AAChB;ACpNA,IAAO,iCAAQ,aAAa,wBAAO,EAChC,UAAU,SAAS,CAAC,KAAK,MAAM,CAAC,EAChC,UAAU,SAAS,CAAC,KAAK,MAAM,CAAC,EAChC,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,UAAU,QAAQ,CAAC,KAAK,IAAI,CAAC,EAC7B,UAAU,WAAW,CAAC,KAAK,IAAI,CAAC,EAChC,iBAAiB,SAAS,eAAe,EACzC,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACRT,IAAO,gCAAQ,aAAa,gCAAwB,MAAM;ACA1D,IAAO,gCAAQ,aAAa,gCAAwB,MAAM;ACA1D,IAAO,8BAAQ,aAAa,gCAAwB,IAAI;ACHxD,IAAA,wCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;AC/LA,IAAM,EAAE,OAAAV,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,6CAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB,EAAE,GAAGC,QAAM,MAAM,QAAQ,gBAAgB,GAAG,EAAE;IAC9C,EAAE,GAAGA,QAAM,SAAS,QAAQ,gBAAgB,GAAG,EAAE;EACnD;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,MAAM,QAAQ,CAAC,KAAK,OAAO,EAAE;;IAC5C,EAAE,GAAGA,YAAU,SAAS,QAAQ,CAAC,KAAK,QAAQ,EAAE;;IAChD,EAAE,GAAGA,YAAU,OAAO,QAAQ,CAAC,KAAK,MAAM,EAAE;;EAC9C;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,SAAS,GAAGA,SAAO,QAAQ;AACjD,CAAC;AChBD,IAAMQ,kBAAgB,aAAa,0CAAkC;AAErE,IAAMF,UAAQE,gBAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMM,QAAMR,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDQ,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAMD,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,6CAAQL;ACnBf,IAAA,wCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,eAAe;MACb,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,aAAa;MACX,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,eAAe;MACb,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;AC7NA,IAAM,EAAE,OAAAL,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,6CAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;IACxB,EAAE,GAAGC,QAAM,MAAM,QAAQ,gBAAgB,GAAG,EAAE;IAC9C,EAAE,GAAGA,QAAM,SAAS,QAAQ,gBAAgB,GAAG,EAAE;EACnD;EACA,OAAO;IACL,EAAE,GAAGF,YAAU,MAAM,QAAQ,CAAC,KAAK,OAAO,EAAE;;IAC5C,EAAE,GAAGA,YAAU,SAAS,QAAQ,CAAC,KAAK,QAAQ,EAAE;;IAChD,EAAE,GAAGA,YAAU,OAAO,QAAQ,CAAC,KAAK,MAAM,EAAE;;EAC9C;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,SAAS,GAAGA,SAAO,QAAQ;AACjD,CAAC;AChBD,IAAMQ,kBAAgB,aAAa,0CAAkC;AAErE,IAAMF,UAAQE,gBAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMM,QAAMR,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDQ,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAMD,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,6CAAQL;ACnBf,IAAA,qBAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IACV;EACF;AACF;AC1NA,IAAO,0BAAQ,aAAa,kBAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAMA,kBAAgB,aAAa,uBAAe;AAElD,IAAMF,UAAQE,gBAAc,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAEtE,IAAMK,QAAMP,QAAM,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAEhDO,MAAI,IAAI;AACRA,MAAI,SAAS;AAEb,IAAO,0BAAQL;ACZf,IAAA,2BAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,OAAS;MACP,MAAQ;MACR,GAAK;MACL,GAAK;MACL,QAAU;MACV,OAAS;MACT,MAAQ;IAC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;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,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ChBD,IAAO,mDAAQ,aAAa,kDAA0C,IAAI;ACH1E,IAAA,0BAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QAC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QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,oBAAoB;MAClB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,eAAe;MACb,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,iBAAiB;MACf,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,oBAAoB;MAClB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,oBAAoB;MAClB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,sBAAsB;MACpB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,wBAAwB;MACtB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,sBAAsB;MACpB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;ACnVA,IAAM,EAAE,OAAAG,SAAO,OAAAG,SAAO,QAAAN,UAAQ,WAAAI,aAAW,SAAAC,UAAQ,IAAI;AAErD,IAAO,yBAAQ,aAAa;EAC1B,YAAY;IACV,GAAG,OAAO,OAAOF,OAAK;IACtB,GAAG,OAAO,OAAOE,SAAO;;;IAGxB;MACE,MAAM;MACN,MAAM;MACN,GAAG;MACH,GAAG;MACH,QAAQ;IACV;IACA;MACE,MAAM;MACN,MAAM;MACN,GAAG;MACH,GAAG;MACH,QAAQ;IACV;EACF;EACA,OAAO;IACL,EAAE,GAAGD,YAAU,OAAO,QAAQ,CAAC,GAAG,EAAE;;IACpC,EAAE,GAAGA,YAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE;;IACrC,EAAE,GAAGA,YAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE;;EACvC;EACA,MAAM,EAAE,OAAOJ,SAAO,OAAO,QAAQA,SAAO,OAAO;EACnD,QAAQ,EAAE,GAAGA,SAAO,SAAS,GAAGA,SAAO,QAAQ;AACjD,CAAC;AC9BD,IAAO,yBAAQ,aAAa,sBAAc;ACH1C,IAAA,yBAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,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AAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;AC9XA,IAAO,uCAAQ,aAAa,+BAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACLT,IAAO,uCAAQ,aAAa,+BAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACLT,IAAO,wCAAQ,aAAa,+BAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAO,qCAAQ,aAAa,+BAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACRT,IAAA,wBAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;AC/WA,IAAO,6BAAQ,aAAa,qBAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACLT,IAAO,6BAAQ,aAAa,qBAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACLT,IAAO,8BAAQ,aAAa,qBAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAO,2BAAQ,aAAa,qBAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACRT,IAAA,kCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;AC7cA,IAAO,uCAAQ,aAAa,+BAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACNT,IAAO,uCAAQ,aAAa,+BAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACNT,IAAO,wCAAQ,aAAa,+BAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACNT,IAAO,qCAAQ,aAAa,+BAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACTT,IAAA,mCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;AC5dA,IAAO,wCAAQ,aAAa,gCAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACNT,IAAO,wCAAQ,aAAa,gCAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACNT,IAAO,yCAAQ,aAAa,gCAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACNT,IAAO,sCAAQ,aAAa,gCAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACTT,IAAA,kCAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;AC7cA,IAAO,uCAAQ,aAAa,+BAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACNT,IAAO,uCAAQ,aAAa,+BAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACNT,IAAO,wCAAQ,aAAa,+BAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACNT,IAAO,qCAAQ,aAAa,+BAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACTT,IAAA,wBAAA;EACE,OAAS;IACP,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,OAAS;MACP,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,kBAAkB;MAChB,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,WAAW;MACT,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;IACA,QAAU;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW,CAAC;AACd;AC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A;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,QAAU;MACR,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,YAAY;MACV,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,cAAc;MACZ,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;IACA,gBAAgB;MACd,MAAQ;MACR,QAAU;QACR;UACE,GAAK;UACL,GAAK;QACP;QACA;UACE,GAAK;UACL,GAAK;QACP;MACF;MACA,OAAS;MACT,MAAQ;IACV;EACF;EACA,OAAS;IACP,MAAQ;MACN,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,MAAQ;MACR,MAAQ;MACR,GAAK;MACL,GAAK;IACP;EACF;EACA,WAAa;IACX,MAAQ;MACN,GAAK;MACL,GAAK;IACP;IACA,SAAW;MACT,GAAK;MACL,GAAK;IACP;IACA,OAAS;MACP,GAAK;MACL,GAAK;IACP;EACF;EACA,QAAU;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,MAAQ;IACR,OAAS;IACT,QAAU;IACV,SAAW;IACX,SAAW;EACb;EACA,SAAW;IACT,O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","names":["toString","kindOf","val","module","length","noop","getAction","create","lexer","emit","step","createNode","current","reader","handleLexerData","parseSync","parseInput","camelize","toCamelCase","letter","notCamelcase","escapeText","escapeAttr","svgsonSync","applyFilters","input","stringify","ast","point","rest","val","self","expected","found","flipY","rotation","z","size","z","val","su","source_port","joiner","Soup","point","point","symbol","size","bounds","transform","orientation","paths","refblocks","circles","texts","rotated","rotatedSymbol","letter","underline","rest","isPrimitive","ref","val","val","distance"]}