diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0184ba4..d0b679a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,6 +70,17 @@ jobs: fi echo "clean" + - name: Release tool self-tests (SWR-UPD-11, SEC-05) + run: | + # The tools that sign things carry their own checks and need neither a + # board nor ESP-IDF. They are run here because the failure mode is + # quiet: a manifest whose signature does not verify, or a bootloader + # that overruns the partition table, is discovered on a device that + # cannot then be told otherwise. + python3 tools/update-manifest.py --self-test + python3 tools/secure-boot.py --self-test + python3 tools/sbom.py --self-test + - name: SPDX header on every source file (SWR-NFR-18, UR-CON-04) run: | missing=0 @@ -79,7 +90,7 @@ jobs: done < <(git ls-files \ '*.cpp' '*.h' '*.md' '*.sdoc' 'CMakeLists.txt' '*/CMakeLists.txt' \ 'firmware/controller/**/Kconfig*' 'firmware/controller/*.csv' 'firmware/controller/sdkconfig.*' \ - 'tools/*.sh' '.github/workflows/*.yml' 'strictdoc.toml' \ + 'tools/*.sh' 'tools/*.py' '.github/workflows/*.yml' 'strictdoc.toml' \ | grep -v '^LICENSE' \ | grep -vE '^fixture/(board|firmware)/') # fixture/board and fixture/firmware are generated verbatim by @@ -209,7 +220,15 @@ jobs: # IDF_TOOLS_PATH is /opt/esp in this image; the script needs it to # find the xtensa picolibc headers, and fails loudly without them # rather than analysing nothing and calling it clean. - cd "$GITHUB_WORKSPACE" + # + # `cd ../..` rather than `cd "$GITHUB_WORKSPACE"`: that variable is + # not exported into this container, so `cd ""` quietly succeeded, + # left the shell in firmware/controller and the next line died with + # "tools/tidy-target.sh: No such file or directory" (exit 127). The + # action runs the command from `path:` above, so two levels up is + # the repository root and does not depend on an environment this + # container may not carry. + cd ../.. tools/tidy-target.sh # SWR-TST-19. The line floor is enforced; measured at 97.5 % on kiln_core when @@ -448,6 +467,45 @@ jobs: build-docs/json if-no-files-found: error + # --- V-model level 5: the unit design, generated from the source ------- + # + # The document is the gate and the gate is doxygen's warnings: an undocumented + # parameter or a reference to something that does not exist fails this job. + # The coverage number is printed because a clean doxygen run proves only that + # the comments which exist are well formed, and says nothing about the ones + # that do not (tools/udd-coverage.py has the argument). + udd: + name: Unit design document (supervisor) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install doxygen + run: sudo apt-get update -qq && sudo apt-get install -y -qq doxygen graphviz + + - name: Generate, with documentation warnings as errors + run: tools/udd.sh | tee udd.log + + - name: Summarise what the document covers + if: always() + run: | + { + echo '### Unit design document' + echo + echo 'V-model level 5, generated from the supervisor headers.' + echo '```' + sed -n '/Unit design coverage/,/Tasklist/p' udd.log || true + echo '```' + } >> "$GITHUB_STEP_SUMMARY" + + - uses: actions/upload-artifact@v4 + if: always() + with: + name: unit-design-document + path: | + firmware/supervisor/build-udd/html/ + firmware/supervisor/build-udd/doxygen-warnings.txt + # --- architecture 14.6: the target build ------------------------------ firmware: name: Firmware build (esp32s3) @@ -473,6 +531,12 @@ jobs: idf.py build idf.py size > build/size.txt idf.py size-components > build/size-components.txt + # SWR-NFR-28, and it has to run HERE rather than in a step after + # this one: the component licences are scanned from the ESP-IDF tree + # on disk, and that tree exists only inside this container. + python3 ../../tools/sbom.py --build-dir build \ + --image build/safekiln.bin \ + --out-dir build/sbom --format both # Summarised from a normal step: $GITHUB_STEP_SUMMARY is a path on the # runner, and the step above runs in a container that mounts only the @@ -486,6 +550,21 @@ jobs: echo '```' cat firmware/controller/build/size.txt echo '```' + echo + echo '### Bill of materials' + echo + echo 'SWR-NFR-28, CycloneDX and SPDX, generated from the build:' + echo '```' + # jq rather than a python heredoc: a heredoc body starts at column + # zero, which ends the YAML block scalar this step is written in and + # makes the whole workflow file invalid. The same trap the release + # notes step documents, found the same way. + for f in firmware/controller/build/sbom/*.cdx.json; do + [ -e "$f" ] || continue + jq -r '"\(.metadata.component.name) \(.metadata.component.version): \(.components|length) components"' "$f" + jq -r '.components[] | select(has("licenses") | not) | " licence unresolved: \(.name)"' "$f" + done + echo '```' } >> "$GITHUB_STEP_SUMMARY" - uses: actions/upload-artifact@v4 @@ -498,6 +577,7 @@ jobs: firmware/controller/build/bootloader/bootloader.bin firmware/controller/build/partition_table/partition-table.bin firmware/controller/build/flasher_args.json + firmware/controller/build/sbom/ firmware/controller/build/size.txt firmware/controller/build/size-components.txt if-no-files-found: error @@ -516,6 +596,13 @@ jobs: steps: - uses: actions/checkout@v4 + # The command block below is run by the action as bash -c with the + # WHOLE block inside single quotes. One apostrophe anywhere in it, in a + # comment as readily as in a string, ends that quoting and bash exits 2 + # on a parse error before any of it runs. That happened, and the symptom + # was a job failing with no output at all. So the block is four lines + # with no quoting hazard in them, and everything else lives in + # tools/qemu-smoke.sh where it can be read, reviewed and run locally. - name: Build and run under QEMU uses: espressif/esp-idf-ci-action@v1 with: @@ -523,60 +610,10 @@ jobs: target: esp32s3 path: firmware/controller command: | - export SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.qemu" python "$IDF_PATH/tools/idf_tools.py" install qemu-xtensa . "$IDF_PATH/export.sh" - idf.py build - # No monitor: it wants a tty. Serial goes to stdout, and the - # firmware prints a telemetry line a second. - timeout --signal=KILL 180 idf.py qemu > qemu.log 2>&1 || true - tail -40 qemu.log - - - name: Assert it booted and started firing - run: | - log=firmware/controller/qemu.log - test -s "$log" || { echo "::error::QEMU produced no output"; exit 1; } - - fail=0 - want() { - if grep -qE "$1" "$log"; then - echo "ok: $2" - else - echo "::error::$2 -- expected /$1/ in the QEMU log" - fail=1 - fi - } - - # The banner is "Safe Kiln Controller (, IDF ) on ". - # This assertion previously looked for 'Safe Kiln Controller starting', which - # the firmware has never printed -- so it could only ever have passed - # vacuously or failed. Matched against what main.cpp actually logs. - want 'kiln: Safe Kiln Controller .* on esp32s3' 'the composition root ran' - want 'SIMULATED PLANT' 'the simulated plant was bound' - want 'started "' 'a program was accepted and started' - want '^\[RUN' 'the run controller reached Running' - want 'HEAT' 'the safety supervisor granted heat authority' - - # The kiln has to actually get somewhere: a controller that boots and - # then sits at ambient would satisfy every check above. The state is - # padded inside its brackets, so strip the whole bracketed field before - # reading the temperature rather than counting on where it lands. - if ! awk '/^\[/ { gsub(/\[[^]]*\]/, ""); if ($1+0 > 100) found = 1 } - END { exit !found }' "$log"; then - echo "::error::the simulated kiln never passed 100 degC" - fail=1 - fi - - # And it has to get there without tripping a rule. A spurious fault is - # the failure mode that matters most: a rule that stops a working kiln - # is worse than no rule, because it gets switched off. - if grep -qE '^\s+FAULT [0-9]+' "$log"; then - echo "::error::a fault latched during an unperturbed firing" - grep -E '^\s+FAULT [0-9]+' "$log" | head -5 - fail=1 - fi - - exit $fail + cd ../.. + tools/qemu-smoke.sh - uses: actions/upload-artifact@v4 if: always() diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 13ee618..56f31e8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,6 +25,9 @@ permissions: env: IDF_VERSION: v6.0.1 + # Pinned for the reason ci.yml pins it: StrictDoc validates the requirements + # and a new version can change what validates. + STRICTDOC_VERSION: 0.30.1 jobs: release: @@ -45,6 +48,11 @@ jobs: echo "tag=$tag" >> "$GITHUB_OUTPUT" prev="$(git describe --tags --abbrev=0 "${tag}^" 2>/dev/null || true)" echo "prev=$prev" >> "$GITHUB_OUTPUT" + # The tag's own commit date, as SOURCE_DATE_EPOCH for the SBOM: a + # release artefact kept for five years should be byte-identical when + # rebuilt from the same tag, and a wall-clock timestamp is the one + # thing that would stop it. + echo "epoch=$(git log -1 --format=%ct "$tag")" >> "$GITHUB_OUTPUT" echo "Building $tag (previous: ${prev:-none})" # The logic gate first. A release whose safety rules are untested is not a @@ -66,9 +74,42 @@ jobs: idf.py build # One image covering bootloader, partition table and app, so flashing # is a single command and cannot be done half way. - idf.py merge-bin -o build/safekiln-merged.bin + # + # -o is relative to the BUILD directory, not to the project, so the + # obvious "build/safekiln-merged.bin" asks for build/build/ and the + # file the next step copies is not there. Verified by running it. + idf.py merge-bin -o safekiln-merged.bin idf.py size > build/size.txt idf.py size-components > build/size-components.txt + # SWR-NFR-28. Inside the container, because the licences are scanned + # from the ESP-IDF tree, and --strict because a release is exactly + # the case where an unresolved licence or a missing digest must stop + # the build rather than ship as a gap nobody reads. + export SOURCE_DATE_EPOCH='${{ steps.version.outputs.epoch }}' + python3 ../../tools/sbom.py --build-dir build \ + --image build/safekiln.bin \ + --out-dir build/sbom --format both \ + --strict + + # The two documents ship WITH the binary, deliberately. A release is the + # moment somebody asks what this firmware is and what was verified about + # it, and an answer that lives only in a CI artifact expires in ninety + # days. Both are generated from the sources in this tag, so they describe + # the image beside them and not whatever main looked like later. + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Build the requirements documents (StrictDoc) + run: | + pipx install "strictdoc==${STRICTDOC_VERSION}" + strictdoc export . --output-dir build-docs --formats=html,json + + - name: Build the unit design document (Doxygen) + run: | + sudo apt-get update -qq + sudo apt-get install -y -qq doxygen graphviz + tools/udd.sh - name: Assemble the artifacts run: | @@ -91,6 +132,19 @@ jobs: cp firmware/controller/build/size-components.txt "dist/${base}-size-components.txt" # The resolved configuration, so the image can be reproduced. cp firmware/controller/sdkconfig "dist/${base}-sdkconfig" + # The bill of materials, in both formats (SWR-NFR-28). It is kept for + # the support period, which is why it is a release asset rather than a + # CI artifact that expires. + cp firmware/controller/build/sbom/*.cdx.json "dist/${base}.cdx.json" + cp firmware/controller/build/sbom/*.spdx.json "dist/${base}.spdx.json" + + # The documents, zipped because a release asset is a file and both + # are trees of HTML. The JSON half of the StrictDoc export goes in + # too: it is the machine-readable form of the traceability, which is + # what a tool asking "is every SWR- realised" would read. + ( cd build-docs && zip -qr "../dist/safekiln-${tag}-requirements.zip" . ) + ( cd firmware/supervisor/build-udd/html \ + && zip -qr "../../../../dist/safekiln-${tag}-unit-design.zip" . ) ( cd dist && sha256sum ./* > SHA256SUMS ) ls -l dist @@ -151,6 +205,40 @@ jobs: echo 'release of `SWA-05` — the central safety property of the design, which' echo 'needs real hardware to verify (`SWR-TST-17`, `SYS-SAF-02`).' echo + echo '## Documents' + echo + echo 'Both generated from the sources in this tag, so they describe' + echo 'the image beside them:' + echo + echo "- \`${base%-esp32s3-SIMULATED}-requirements.zip\` and the JSON" + echo ' beside it: the user, system, software, architecture, safety' + echo ' and security documents as StrictDoc renders them, with the' + echo ' traceability between them. `strictdoc export` fails on a' + echo ' reference to a requirement that does not exist, so this' + echo ' building at all is part of what the release asserts.' + echo "- \`${base%-esp32s3-SIMULATED}-unit-design.zip\`: V-model level 5" + echo ' for the independent safety supervisor, generated from its' + echo ' headers. 76 of 76 public functions and constants, each with' + echo ' the requirement it implements, its parameter ranges, its' + echo ' error behaviour, its design rationale and the test that' + echo ' covers it. Documentation warnings are errors, so a gap in it' + echo ' fails the build rather than appearing as a blank entry.' + echo + echo '## Bill of materials' + echo + echo 'Published with this release in both formats, generated from the' + echo 'build rather than maintained by hand (`SWR-NFR-28`): every' + echo 'ESP-IDF component actually linked, with the licence its own' + echo 'sources declare, and the image digest they belong to.' + echo + echo '```' + for f in dist/*.cdx.json; do + [ -e "$f" ] || continue + jq -r '"\(.metadata.component.name) \(.metadata.component.version) \(.components|length) components"' "$f" + jq -r '"serial \(.serialNumber)"' "$f" + done + echo '```' + echo echo '## Changes' echo if [ -n "$prev" ]; then diff --git a/.gitignore b/.gitignore index 29081a2..0999428 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,25 @@ dependencies.lock *_signing_key* secure_boot_digest.bin +# Release artefacts from tools/update-manifest.py: a signed manifest and the +# image it names belong on the update server, not in git. The public half of the +# signing key is the exception and IS committed, as the generated header the +# firmware compiles in (SWR-UPD-11); `*.pem` above keeps the private half out. +dist/ + +# The generated Unit Design Document (tools/udd.sh). It is generated from the +# headers on demand and published as a CI artifact; a copy in git would be the +# second description of the code that generating it exists to avoid. +firmware/supervisor/build-udd/ +# The QEMU serial capture from tools/qemu-smoke.sh. A CI artifact and a local +# scratch file; it got committed once because the run leaves it in the firmware +# directory rather than in a build one. +firmware/controller/qemu.log +# And the LaTeX tree doxygen writes when GENERATE_LATEX is on or when it is run +# with a configuration piped in from somewhere else, which is how a stray copy +# of one got committed once. +firmware/supervisor/latex/ + # Python bytecode from the tools/ scripts. __pycache__/ *.pyc diff --git a/README.md b/README.md index 05d6a3f..e3e48cb 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ SPDX-FileCopyrightText: 2026 Bitcrush Testing SPDX-License-Identifier: GPL-3.0-or-later --> +![Safe Kiln Controller](docs/images/safe-kiln-control.png) + # Safe Kiln Controller [![CI](https://img.shields.io/github/actions/workflow/status/bitcrushtesting/SafeKilnController/ci.yml?branch=main&label=CI&style=flat-square)](https://github.com/bitcrushtesting/SafeKilnController/actions/workflows/ci.yml) @@ -16,36 +18,54 @@ An open-source PID controller for electric ceramic and glass kilns, built on the **ESP32-S3** with **ESP-IDF**. - **Simple local display**: a 128×64 OLED showing current and target temperature at a glance, plus state, segment progress and rate of rise. -- **Web interface**: served by the device itself. Live dashboard, charts of the logged data, power and energy, and a firing-curve editor. **Observation only**: nothing reachable over the network can start a firing, heat the kiln or change its configuration. Those live on the device. +- **Web interface**: served by the device itself. Live dashboard, charts of the logged data, power and energy, and the firing programs as stored. **Observation only**: nothing reachable over the network can start a firing, heat the kiln, change its configuration or author a program. Every one of those is done at the kiln. - **PID with automatic tuning**: relay (Åström–Hägglund) autotune on the real kiln; no manual gain hunting. - **Safety first**: thermal runaway, thermocouple failure, shorted-SSR, over-temperature and door-interlock detection, with a safety supervisor that has sole authority over a heat-enable line that decays unless actively refreshed. - **Current monitoring**: a current transformer turns relay and element failures from slow thermal inferences into fast electrical facts, with the thermal rules retained as an independent backstop. -- **Self-contained**: no SD card, no external database, no cloud, no filesystem. Logs live in a circular partition on internal flash and programs in a fixed-slot one, each built so a power cut cannot tear a record; web assets are embedded in the firmware. +- **Self-contained**: no SD card, no external database, no account, no filesystem. Logs live in a circular partition on internal flash and programs in a fixed-slot one, each built so a power cut cannot tear a record; web assets are embedded in the firmware. The device makes **one** outbound connection, a daily check for a firmware update that carries nothing about the device and can be turned off at the display. - **Designed for testability**: all decision logic is hardware-free C++ that runs on a development host against a simulated kiln. +![The web dashboard during a bisque firing, showing 813.6 °C tracking an 812.5 °C setpoint at 152 °C/h in segment 3 of 5, with the logged curve and the preheat dwell visible](docs/images/web-dashboard.png) + +The dashboard mid-firing. Everything on it is read from the device: the `RUN` +and `HEAT` badges, the segment progress, the logged curve. There is no button +here that changes what the kiln is doing, because there is no route behind one +(`SWR-WEB-26`), which is why both notices at the foot of the page say so +plainly. + +No kiln was involved. That is the development harness of +[`host/webhost`](firmware/controller/host/webhost) running the real firmware +logic against a simulated one, and it is two commands if you want to click +around yourself: + +```sh +cmake -B build-webhost -S firmware/controller/host/webhost && cmake --build build-webhost +./build-webhost/webhost --accel 60 --fire "Bisque cone 06" # then open http://127.0.0.1:8080 +``` + +`--fire` exists because of the read-only interface: a firing cannot be started +from the browser, so the harness starts one of the built-in examples +(`SWR-PRG-09`) through the same call the local display makes. + ## Status -**In development.** The firmware is C++20. The control, safety, storage and web -logic is implemented and tested, and the hardware adapters are written but have -not yet been run against a board. The browser UI is not served yet, its assets -are not embedded in the image, and there is currently **no field update path** -(see below). +**In development, and not ready to fire a kiln.** The control, safety, storage, +web and interface logic is written and tested. The hardware adapters are +written and **have never been run against a board**. Two things block a +release: the field update path is specified and unbuilt, and local control, +which is now the only control, has never been operated by a person. -398 host tests pass plain and under AddressSanitizer/UBSan, `clang-tidy` is -clean on host and target, the `esp32s3` image builds with zero warnings at -866 kB (58 % of the OTA slot free), and QEMU boots that image and fires it. +433 host tests on the controller and 81 on the independent safety supervisor, +all green plain and under AddressSanitizer and UBSan. `clang-tidy` is clean on +host and target with no suppressions baseline, MC/DC over the supervisor's trip +logic is 100 % against an 80 % floor, the `esp32s3` image builds with zero +warnings at 246 kB (88 % of the OTA slot free), and QEMU boots that image and +fires it. -| Area | State | -|---|---| -| `kiln_core`: PID, setpoint generator, program model, safety supervisor (including the current-based relay rules), autotune, heater-current measurement, configuration model, run state, log codec, log ring, file store | Implemented, host-tested | -| `kiln_ports`: the interface headers everything hardware goes through | Complete for the above | -| `kiln_sim`: plant simulator with heater current and electrical fault injection | Implemented | -| `kiln_app`: task orchestration, mode state machine, heat authority, logging, persistence, power-loss recovery | Implemented, host-tested | -| `kiln_hal_esp32s3`: log partition, file store, NVS, clock, reset cause, watchdog | Implemented, builds for esp32s3 | -| `kiln_hal_esp32s3`: MAX31856, SSD1306, encoder, SSR outputs, CT front end, WiFi | Implemented, **not yet run against hardware** | -| `kiln_web`: REST API, JSON, log streaming, read-only enforcement | Implemented, host-tested; HTTP transport on target, **browser assets not yet embedded** | -| `kiln_hmi`: the local display and encoder | Implemented and host-tested, **not yet run against hardware**; the only way to start a firing | -| Firmware update | **Removed from the network** (SWR-UPD-01); no local path specified yet | +The controller is C++20; the supervisor is C++17, which is the standard +MISRA C++:2023 is written against. What is done, what is not, and what blocks +a release is [`tasklist.md`](tasklist.md), which is kept current and is the +only place that count lives. You can watch a complete firing, and break it in a dozen ways, without any hardware at all, see [`docs/simulation.md`](docs/simulation.md): @@ -61,10 +81,13 @@ cmake -B build-host -S firmware/controller/test/host && cmake --build build-host ctest --test-dir build-host ``` -CI runs the layering and licence checks, the host suites plain and under -AddressSanitizer/UBSan, a coverage gate, the `esp32s3` build with a size report, -and a QEMU job that boots the real image and watches it fire. Tagging `v*` -builds a release. +CI runs eleven jobs: the layering and licence checks, both host suites plain +and under AddressSanitizer and UBSan, a coverage gate, `clang-tidy` on host and +on target, StrictDoc over the requirements, the `esp32s3` build with a size +report and a generated bill of materials, the supervisor suites with MC/DC, the +unit design document with documentation warnings as errors, and a QEMU job that +boots the real image and asserts that the simulated kiln passes 100 degC +without latching a fault. Tagging `v*` builds a release. ## Putting a unit into production @@ -93,9 +116,56 @@ the short version is that **losing the signing key means the unit can never run new firmware again**, and that secure boot stops hostile code running but does nothing about secrets being read off the flash (`SRR-05`). -It deliberately does not burn `DIS_DOWNLOAD_MODE`. `SRR-11` records that this -device has no field update path, so serial download is the only route a security -fix can take; closing it as well would make a unit permanently unfixable. +### Releasing an update + +A third tool, for the other end of the lifecycle. The device fetches one signed +static manifest per channel and verifies it against a key compiled into its own +firmware (`SWR-UPD-09` to `SWR-UPD-16`), and this builds that manifest: + +```sh +tools/update-manifest.py keygen --key keys/manifest.pem # once, then keep it offline +tools/update-manifest.py pubkey --key keys/manifest.pem \ + --header firmware/controller/main/update_pubkey.h # the half that ships +tools/update-manifest.py sign --key keys/manifest.pem \ + --image build-esp32s3/safekiln.bin --version 1.4.2 \ + --security --advisory advisories/2026-002.html +tools/update-manifest.py verify --manifest dist/update/stable.json \ + --pubkey keys/manifest.pub.pem --image build-esp32s3/safekiln.bin \ + --running-version 1.4.1 +``` + +The **bill of materials** is generated rather than written +([`tools/sbom.py`](tools/sbom.py), `SWR-NFR-28`): the component list comes from +the build's own `project_description.json`, so it names what was actually +linked, and each licence is scanned from that component's own +`SPDX-License-Identifier` tags, with anything untagged reported as +`NOASSERTION` rather than given a plausible default. CycloneDX 1.6 by default, +SPDX 2.3 with `--format spdx`, both published with every release: + +```sh +tools/sbom.py --build-dir firmware/controller/build \ + --image firmware/controller/build/safekiln.bin --format both --strict +``` + +It has to run where `$IDF_PATH` is, which in CI means inside the IDF container +rather than a step afterwards, because a licence cannot be scanned from a tree +that is not there. The question it exists to answer is "an advisory landed this +morning against mbedTLS 3.6.0, did we ship it", and that cannot be answered +after the fact. + +**The manifest key is not the secure boot key, and the tool refuses to let it +be** (`SRR-12`). The secure boot key decides what a provisioned board will +*boot* and its digest is burnt into eFuses, so it can never be rotated; this one +decides what a board will be *offered* and is used on every release. `sign` also +refuses an image with no Secure Boot V2 signature, an image whose chip id is not +this target, a version carrying build metadata, and a security release with no +advisory, because each of those produces a manifest that every device must +reject after downloading it. + +It deliberately does not burn `DIS_DOWNLOAD_MODE`. Serial download is +`SWR-UPD-14`'s recovery path, for a unit whose update service is unreachable, +whose new image will not confirm itself, or which has to be downgraded; closing +it as well would make such a unit permanently unfixable. | Document | Contents | |---|---| @@ -107,7 +177,8 @@ fix can take; closing it as well would make a unit permanently unfixable. | [`docs/safety.sdoc`](docs/safety.sdoc) | Hazards, safety goals and residual risks, each with an identifier, and the chain between them as checked relations: which hazards a goal mitigates, which requirements realise it, and which risk its layers leave. | | [`docs/safety.md`](docs/safety.md) | Safety concept: the system boundary, the layered protection concept and the independence claimed between layers, detection coverage and timing, the reaction and recovery sequence, and the obligations on the installer and on anyone changing the design. | | [`docs/security.sdoc`](docs/security.sdoc) | Assets, adversaries, threats, security goals, residual risks and open questions, each with an identifier, and the chain between them as checked relations: which asset a threat is aimed at, which safety hazard it reaches, which goal answers it, and what each goal's implementation status actually is. | -| [`docs/security.md`](docs/security.md) | Security concept: scope, the attack surface and trust boundaries, why a security compromise here is a safety event, what the implementation already gets right, the obligations on the owner and on whoever implements the HTTP transport, and the verification status. | +| [`docs/security.md`](docs/security.md) | Security concept: scope, the attack surface and trust boundaries, the physical boundary and why the supervisor's debug port is deliberately open, the update path and why it points outwards, why a security compromise here is a safety event, what the implementation already gets right, the obligations on the owner and on whoever implements the HTTP transport, the verification status, and an inventory of what the Cyber Resilience Act still requires. | +| [`SECURITY.md`](SECURITY.md) | The security policy: where to report a vulnerability and what happens then, the single point of contact and the reporting obligations behind it, the supported versions and the support period, how a fix reaches a device, and what is already documented as a residual risk so a report need not restate it. | | [`docs/architecture.md`](docs/architecture.md) | Architecture prose: component decomposition, task and timing design, control and safety algorithms, persistence and flash-endurance design, REST API, and the build and test architecture. | | [`docs/test-concept.md`](docs/test-concept.md) | How the product is verified: unit, integration, system and hardware-in-the-loop, what each level can and cannot prove, the HIL fixture design, and an honest status against every testability requirement. | | [`docs/safety-supervisor.md`](docs/safety-supervisor.md) | The independent safety supervisor (`SWA-22`): a second microcontroller holding the absolute over-temperature, thermocouple-fault and lid trips, what moves and what stays, the link, the failure modes, and the questions still open. | @@ -121,10 +192,14 @@ document cites it throughout. ## Repository layout ``` -docs/ requirements and architecture -firmware/controller/ ESP-IDF application (not yet implemented) -hardware/ schematic, PCB, pin map -housing/ enclosure +docs/ requirements, architecture, safety and security +firmware/controller/ the ESP-IDF application +firmware/supervisor/ the independent safety supervisor, STM32G031 +web/ the browser interface, served by the device +tools/ release, provisioning, analysis and document generation +fixture/ the bed-of-nails test fixture +hardware/ schematic, PCB, pin map +housing/ enclosure ``` ## Scope @@ -140,13 +215,13 @@ three-phase kiln, so it is out of scope rather than partially supported. | Part | Choice | |---|---| | MCU | ESP32-S3, ≥ 8 MB flash, no PSRAM required | -| Temperature | 2 × MAX31856 (chamber + enclosure), type-K by default | +| Temperature | MAX31856 front ends, type-K. The controller reads chamber and enclosure; the **supervisor reads its own chamber couples on its own SPI buses**, so neither processor depends on the other for a temperature | | Display | 128×64 monochrome OLED, I²C | | Input | Rotary encoder with push button | | Output | Zero-cross SSR in series with a safety contactor | | Supply | **Single phase only.** One current transformer on the heater conductor | | Door interlock | Optional normally-closed switch, stops the heater immediately when the door opens | -| Connectivity | WiFi station with access-point fallback, `kiln.local` via mDNS | +| Connectivity | WiFi station only. **No access point:** the network is selected and its passphrase typed at the display, so setting it up needs somebody at the kiln. mDNS (`kiln.local`) is specified and not implemented, so the device is reached by IP, which the display shows | Details and rationale are in [requirements §6](docs/03_software_req.sdoc). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..2b70a0c --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,143 @@ + + +# Security policy + +> **A security report about this project may be a safety report.** Safe Kiln +> Controller switches several kilowatts into a kiln. If you have found something +> that lets an attacker start or prolong heating, say so in the first line and we +> will treat it as the safety matter it is, not as a web bug. + +## Reporting a vulnerability + +**Email `security@bitcrushtesting.com`.** That address is the single point of +contact required by Article 13(17) of the Cyber Resilience Act, and it is read by +a person rather than a ticket queue. + +Please do not open a public issue for something exploitable. Public issues are +the right place for everything else, including hardening suggestions and the +"this looks wrong but I cannot exploit it" category. + +What helps, in rough order of usefulness: + +- the firmware version (`GET /api/info`, or the local display's info screen) and + the board revision from the label; +- what you had access to: the LAN, the board, a debugger, the update service; +- what the device did, and what you expected; +- whether heating was involved, and whether the independent cutout of + `SYS-HW-13` was fitted on the unit you tested. + +You do not need a proof of concept. A clear description of the mechanism is +worth more than an exploit we have to reverse. + +### What happens next + +| When | What | +|---|---| +| Within **3 working days** | We acknowledge the report and say whether we can reproduce it | +| Within **14 days** | An assessment: severity, whether it is exploitable in the documented deployment, and a target date | +| Target **90 days** | A fix released through the update path, with an advisory | + +If a fix will take longer than 90 days, we will say so and why rather than let +the date pass quietly. If you intend to publish, tell us when; we would rather +coordinate than be surprised, and we will not ask you to delay indefinitely. + +Credit is given in the advisory unless you ask us not to. There is no bug +bounty: this is a small project and we would rather be honest about that than +imply a payment that is not coming. + +### Our own reporting obligations + +Separately from this policy, and not at the reporter's discretion: an **actively +exploited** vulnerability or a severe incident is reported to ENISA and the +relevant CSIRT within 24 hours as an early warning, with a notification within 72 +hours and a final report within 14 days, under Article 14 of the Cyber Resilience +Act. Those obligations apply from **11 September 2026**. Users are informed +without undue delay in the same cases. + +## Supported versions + +| | | +|---|---| +| Security fixes | The latest release on the `stable` channel | +| Support period | **To be declared** before the first unit is placed on the market, and at least five years (`SWR-UPD-16`, Article 13(8) CRA) | + +Security fixes are released **separately** from functional changes wherever that +is feasible, marked as security releases in the update manifest, and accompanied +by an advisory (`SWR-UPD-16`). + +## How a fix reaches a device + +The device checks `update.bitcrushtesting.com` once a day, verifies a signed +manifest against a key compiled into its own firmware, and announces an +available release **on the local display**. It installs only when somebody +confirms there; it never installs by itself, and nothing on the network can +initiate, authorise or cancel an install. + +That last property is deliberate and is the reason an update may sit unapplied: +rebooting a kiln controller into untried firmware unattended, with a load inside, +is not an acceptable trade for promptness +([`docs/security.md` §6.2](docs/security.md), `SWR-UPD-12`). If you own one of +these, installing an offered update is **your** step, and +[`docs/security.md` §10.1](docs/security.md) is the rest of what the design asks +of you. + +A local update over USB is the recovery path when the service is unreachable or +an image will not confirm itself (`SWR-UPD-14`). + +## Scope + +### In scope + +- The firmware in this repository, both microcontrollers. +- The REST API and the browser assets. +- The update path, the manifest format and + [`tools/update-manifest.py`](tools/update-manifest.py). +- The provisioning tools, [`tools/secure-boot.py`](tools/secure-boot.py) and + [`tools/prod-data.py`](tools/prod-data.py). +- The safety supervisor's trip logic, where a defect in it is a safety matter + whether or not anybody can trigger it remotely. + +### Known and documented, so not a finding on its own + +Each of these is written down, argued, and carried as a named residual risk in +[`docs/security.sdoc`](docs/security.sdoc). A report that restates one of them +adds nothing; a report that shows one is **worse than documented**, or combines +with something else into an attack, is very welcome. + +| | | +|---|---| +| No transport encryption; the device is for a trusted LAN only | `SRR-03`, `SEC-11`, `SWR-NFR-20` | +| The dashboard is readable by anyone on the LAN. The interface is read-only by design, so there is nothing to authenticate | `SRR-07`, `SEC-00` | +| Secrets are plaintext in flash; anyone with the board reads the WiFi password | `SRR-05`, `OQ-S3` | +| Physical access is treated as equivalent to knowing the WiFi password | `SRR-05`, `ADV-3` | +| The supervisor's SWD port is deliberately left open | [`docs/security.md` §6.1](docs/security.md) | +| mDNS makes the device discoverable, on purpose | `TH-13` | +| Nearly every network control is a **specification**: there is no HTTP transport on the target yet | `SRR-01` | + +That last row matters for anyone testing: a vulnerability in code that has never +been built for a device is a real finding about the design, but please say which +you mean. + +### Out of scope + +- The user's network, router, browser or WiFi infrastructure, except where this + project depends on them and says so. +- Denial of service that requires being on the LAN already: the control loop and + the safety supervisor are isolated from the network by construction + (`SEC-08`), so the worst case is a lost web interface, not a lost kiln. If you + can show otherwise, that is in scope and important. +- Social engineering, and anything requiring the operator to confirm a firmware + install they were not expecting. We would still like to hear about the latter + if the prompt is misleading. + +## For the curious + +The threat model is not a paragraph in this file. It is +[`docs/security.md`](docs/security.md) with its nodes in +[`docs/security.sdoc`](docs/security.sdoc): seven assets, six adversaries, +fifteen threats, fifteen security goals and thirteen residual risks, each with +who carries it. §7 is the part worth reading first, on why a security compromise +of this device is a safety event. diff --git a/docs/01_user_req.sdoc b/docs/01_user_req.sdoc index 918eaf8..b959c38 100644 --- a/docs/01_user_req.sdoc +++ b/docs/01_user_req.sdoc @@ -291,7 +291,13 @@ APPLICABILITY: >>> Whole product. Annex I Part II requires, among other things, that vulnerabilities be addressed and that **security updates be made available** for the support period. <<< ASSESSMENT: >>> -**This collides head-on with `SRR-11`.** The project deliberately removed every network update path (`SWR-UPD-01`), leaving no way to deliver a security fix without physical access to each unit. Under the CRA that is not merely an engineering limitation, it is an obstacle to placing the product on the market as sold units at all. `OQ-08` has to be answered before this route is viable, and answering it is now a regulatory deadline rather than a preference. The free-and-open-source provisions do not rescue the SoldUnits route, because they turn on supply outside a commercial activity. +**The collision with `SRR-11` is answered in design as of 2026-10-09, and not yet in code.** It used to read that the project had removed every network update path, leaving no way to deliver a security fix without visiting each unit, which under the CRA is an obstacle to placing finished units on the market at all. `OQ-08` is now resolved: the device fetches a signed manifest from `update.bitcrushtesting.com` once a day, announces an available release on its **local display**, and installs it only when the operator confirms there (`SWR-UPD-09` to `SWR-UPD-16`). The web interface stays read-only, so no inbound route is created. + +Two points a conformity file has to make rather than assume. First, Annex I Part I expects security updates to install **automatically by default where applicable**, and this design deliberately does not: a kiln controller must not reboot into untried firmware unattended with a load inside, which is the reasoned basis for a manual confirmation, recorded in `SWR-UPD-12` and in `security.md` section 7. The *check* is automatic and on by default; only the install waits for a person. Second, Part II's dissemination obligation lands on the project rather than on the firmware: a release channel, an advisory per security release, security fixes separated from functional ones (`SWR-UPD-16`), a declared support period of at least five years, an SBOM, and the Article 14 reporting route, which starts on 11 September 2026, a year before the main obligations. + +The free-and-open-source provisions still do not rescue the SoldUnits route, because they turn on supply outside a commercial activity. + +**The full inventory of what this instrument requires, and what the project has against each item, is `security.md` section 13**, split into the firmware half and the half that is not firmware. Three gaps were named there on 2026-10-09 that had not been recorded anywhere before: security event logging with a user opt-out ([LINK: SWR-LOG-16]), permanent removal of all data and settings as a function of the product rather than an instruction in a manual ([LINK: SWR-CFG-09]), and a machine-readable SBOM emitted by the build ([LINK: SWR-NFR-28]). Two existing open questions changed character rather than content: `OQ-S4`, the access point that will start without a passphrase, is a **secure-default** requirement and is the only item on the list that is a live weakness in code that exists today, and `OQ-S3`, flash encryption, stops being a trade the project may decline on this route. `SRR-14` carries the obligations that are nobody's yet. <<< STATUS: Active RELATIONS: @@ -700,7 +706,18 @@ STATUS: Active [QUESTION] UID: OQ-R4 STATEMENT: >>> -**Does [LINK: UR-REG-004] make the SoldUnits route impossible as designed?** The Cyber Resilience Act requires security updates to be made available for the support period, and `SRR-11` records that the device has no field update path at all. Either `OQ-08` is answered with a real update mechanism, or finished units cannot be placed on the EU market after the Act's main obligations apply. There is no third option that involves shipping as-is. +**Resolved 2026-10-09 in design: no, provided the update path specified under `OQ-08` is built.** The question was whether [LINK: UR-REG-004] makes the SoldUnits route impossible as designed, the Act requiring security updates to be made available for the support period while `SRR-11` recorded no field update path at all. `OQ-08` is answered with a pull update path, a local confirmation and a read-only web interface, so the route is viable rather than blocked. What remains is not a decision but implementation: `SRR-11` stays open until the firmware exists, and the non-firmware obligations inventoried in `security.md` section 13, a release channel, advisories, a declared support period, an SBOM and the reporting route, are project work that no amount of firmware discharges. `SRR-14` carries them. +<<< +STATUS: Resolved + +[QUESTION] +UID: OQ-R5 +STATEMENT: >>> +**Which conformity assessment route does [LINK: UR-REG-004] put this product on, and what is the declared support period?** Two decisions that have to be made together, because each constrains the documentation the other needs. + +On classification: a kiln controller does not appear in the Act's list of important or critical products with digital elements, so the default category and self-assessment should be available. That is a conclusion to **record and defend** rather than assume, and it is the cybersecurity counterpart of [LINK: OQ-R1] on the machinery side, where the answer may well be the less convenient one. + +On the support period: the Act sets a floor of five years unless the expected lifetime is shorter, and the expected lifetime of a kiln controller is considerably longer. The number chosen gates [LINK: SWR-UPD-16], the information given to users, how long the SBOM of [LINK: SWR-NFR-28] has to be retained, and how long `update.bitcrushtesting.com` and its signing key have to keep existing (`SRR-12`). It is a sentence to write and an obligation to mean. <<< STATUS: Active diff --git a/docs/03_software_req.sdoc b/docs/03_software_req.sdoc index f0cac1e..29bb745 100644 --- a/docs/03_software_req.sdoc +++ b/docs/03_software_req.sdoc @@ -1060,6 +1060,16 @@ If the display fails to initialise or stops acknowledging on I²C, the system sh PRIORITY: M VERIFICATION: T +[REQUIREMENT] +UID: SWR-HMI-16 +STATEMENT: >>> +**The update screen.** When a newer release has been found ([LINK: SWR-UPD-09]), the display shall show that one is available, its version, and whether it is a security release, without displacing a firing screen. Confirming it shall take a deliberate act rather than a single click of the encoder, and the screen shall state plainly that the kiln will restart. While an update is downloading the display shall show progress and shall allow it to be abandoned; afterwards it shall show the result, success or failure with a reason, until acknowledged ([LINK: SWR-UPD-07], [LINK: SWR-UPD-12]). + +This screen is the **only** place a firmware update can be authorised ([LINK: SWR-UPD-08]), which makes it part of the security design and not only of the interface. +<<< +PRIORITY: M +VERIFICATION: T + [[/SECTION]] [[SECTION]] @@ -1410,6 +1420,25 @@ The system shall report log store health: used and free capacity, oldest and new PRIORITY: S VERIFICATION: T +[REQUIREMENT] +UID: SWR-LOG-16 +STATEMENT: >>> +**Security-relevant events shall be recorded, and the recording shall be disableable.** The event log shall record, timestamped and distinguishable from process events: + +- a firmware update offered, confirmed, installed, abandoned or refused, with the version and the reason for a refusal ([LINK: SWR-UPD-09], [LINK: SWR-UPD-12]); +- a manifest or an image that failed verification, which is the signature of somebody trying ([LINK: SWR-UPD-11]); +- a rollback, whether the new image failed to confirm itself or was reverted deliberately ([LINK: SWR-UPD-15]); +- every change to configuration, and which interface made it; +- the provisioning access point starting, and a client associating with it; +- a reset whose cause was abnormal ([LINK: SWR-NFR-15]). + +The log shall be readable by the operator, shall survive a restart, and the recording of these events shall be **disableable by the owner**: [LINK: UR-REG-004] asks for the opt-out as explicitly as it asks for the log, and a device that logs access to itself regardless of its owner's wishes is a surveillance feature rather than a security one. + +It shall contain nothing that the device does not already show: no credential, no key material, no request body. A log that records what an attacker wanted is useful; one that records the WiFi password is a second copy of [LINK: SRR-05]. +<<< +PRIORITY: M +VERIFICATION: T + [[/SECTION]] [[SECTION]] @@ -1427,7 +1456,7 @@ VERIFICATION: T [REQUIREMENT] UID: SWR-CFG-02 STATEMENT: >>> -The configuration shall include at minimum: **safety**: maximum chamber temperature, maximum enclosure temperature, runaway detection parameters, power-loss recovery policy; **control**: Kp, Ki, Kd, loop period, PWM window, minimum on/off time, maximum duty, hold-back band, dwell tolerance; **sensing**: TC types, line filter frequency, filter time constant, calibration offset and gain for both channels; **tuning**: amplitude, hysteresis, rule, timeout; **current**: CT ratio and output type, nominal heater current, mains voltage, fail-on and fail-off thresholds and settle times, deviation bands, over-current limit, relay life limits, monitoring enable; **logging**: sample interval; **HMI**: units, dim timeout, alarm duration; **network**: WiFi mode and credentials, hostname, AP SSID and passphrase, NTP server, timezone; **security**: none, since [LINK: SWR-WEB-26] left nothing reachable over the network to authenticate. +The configuration shall include at minimum: **safety**: maximum chamber temperature, maximum enclosure temperature, runaway detection parameters, power-loss recovery policy; **control**: Kp, Ki, Kd, loop period, PWM window, minimum on/off time, maximum duty, hold-back band, dwell tolerance; **sensing**: TC types, line filter frequency, filter time constant, calibration offset and gain for both channels; **tuning**: amplitude, hysteresis, rule, timeout; **current**: CT ratio and output type, nominal heater current, mains voltage, fail-on and fail-off thresholds and settle times, deviation bands, over-current limit, relay life limits, monitoring enable; **logging**: sample interval; **HMI**: units, dim timeout, alarm duration; **network**: WiFi credentials, hostname, NTP server, timezone, there being no mode to choose and no access point since [LINK: SWR-NET-11]; **security**: none, since [LINK: SWR-WEB-26] left nothing reachable over the network to authenticate. <<< PRIORITY: M VERIFICATION: I @@ -1480,6 +1509,20 @@ The system shall reject changes to safety-relevant configuration while a run is PRIORITY: M VERIFICATION: T +[REQUIREMENT] +UID: SWR-CFG-09 +STATEMENT: >>> +**The owner shall be able to erase everything, from the device itself.** A factory reset reachable from the local display shall permanently remove the configuration, the WiFi and access point credentials, the stored programs, the run records, the sample log and the wear counters. It shall leave the production data block of [LINK: SWR-PROD-01] and the firmware alone: those identify the unit for its whole life and are not the owner's data. + +It shall require a deliberate confirmation of the same kind as a firmware install ([LINK: SWR-HMI-16]), shall be refused while a run or an autotune is in progress, and shall report what it erased rather than only that it finished. + +**Erasure means gone, not unreferenced.** A flash region holding a credential shall be erased or overwritten, not merely delisted, and the test for this requirement shall read the raw partition back and look for the secret rather than asking the API whether it is still configured. + +This is the requirement that turns [LINK: SRR-05]'s disposal obligation from a line in a manual into a function of the product, which is how [LINK: UR-REG-004]'s requirement to permanently remove all data and settings is met. Until it exists, the only honest instruction is "erase the flash with a cable before you sell it", and most owners will not. +<<< +PRIORITY: M +VERIFICATION: T + [[/SECTION]] [[SECTION]] @@ -1497,10 +1540,14 @@ VERIFICATION: T [REQUIREMENT] UID: SWR-NET-02 STATEMENT: >>> -If no credentials are stored, or if the station connection fails for a configurable period (30–600 s, default 60 s), the system shall start its own access point and serve a provisioning page on it. +**Withdrawn 2026-10-09. The system shall raise no access point.** This required a provisioning AP and a page served on it whenever no credentials were stored or the station failed to join for a configurable period. + +It is replaced by [LINK: SWR-NET-11] and [LINK: SWR-NET-12], which put network setup on the local display. The reasoning is the same one behind [LINK: SWR-WEB-26]: an access point is a second radio anybody within range can reach, with a second passphrase to get wrong, serving a page whose entire purpose is to accept credentials. The display and the encoder are already fitted, the operator is already standing at them, and what can be done there cannot be done by a passer-by at all. + +The device therefore has exactly one radio role, station, and a kiln whose network has changed is told the new one at the kiln. It keeps firing meanwhile, which [LINK: SWR-NET-07] requires regardless. <<< PRIORITY: M -VERIFICATION: T +VERIFICATION: I [REQUIREMENT] UID: SWR-NET-03 @@ -1521,10 +1568,12 @@ VERIFICATION: T [REQUIREMENT] UID: SWR-NET-05 STATEMENT: >>> -The AP fallback shall require a passphrase of at least 8 characters, with a device-unique default derived from the MAC address and shown on the local display. +**Withdrawn 2026-10-09 with [LINK: SWR-NET-02].** This required the access point's passphrase to be at least 8 characters with a device-unique default derived from the MAC. + +There is no access point, so there is no second passphrase: `net.ap_ssid` and `net.ap_pass` are removed from the configuration schema. The eight-character rule survives where it still applies, as the minimum this device will accept when **joining** a WPA network ([LINK: SWR-NET-12]), which is the standard's own bound rather than this project's. <<< PRIORITY: M -VERIFICATION: T +VERIFICATION: I [REQUIREMENT] UID: SWR-NET-06 @@ -1566,6 +1615,38 @@ The system shall support optional remote logging of events to a syslog server ov PRIORITY: C VERIFICATION: T +[REQUIREMENT] +UID: SWR-NET-11 +STATEMENT: >>> +**The device shall scan for networks and show what it found on the local display.** The scan shall be startable from the network screen, shall not block the display while it runs, and shall report the networks strongest first with, for each: the SSID, and whether it is secured. + +Three properties that are requirements rather than implementation detail: + +- **"Scanning" and "none found" shall be distinguishable.** They are different instructions to the operator, and a scan takes seconds. +- **A scan shall be allowed while a firing runs.** It is receive-only and changes nothing; [LINK: SWR-NET-07] already forbids the network from altering a run, and an operator whose WiFi dropped mid-firing should not have to abort to fix it. +- **An SSID too long for the line shall be shown as truncated** rather than silently cut, because picking the wrong one of two similar names is the failure this screen exists to avoid. +<<< +PRIORITY: M +VERIFICATION: T + +[REQUIREMENT] +UID: SWR-NET-12 +STATEMENT: >>> +**The operator shall be able to join a network entirely from the local display**, selecting it from the scan of [LINK: SWR-NET-11] and entering its passphrase on the rotary encoder. This is the **only** way the device is given network credentials: no access point, and no route over the network itself ([LINK: SWR-WEB-26]). + +What the entry has to provide, each because its absence makes a network unjoinable: + +- **Every printable ASCII character**, since a passphrase this cannot type is a network this kiln cannot join and there is no fallback to correct it from. +- **Deletion**, and deleting past the start shall not underflow. +- **Abandoning entry shall discard what was typed**, rather than leaving half a passphrase for the next attempt. +- **A passphrase shorter than 8 characters shall not be offered to the radio.** WPA-PSK cannot be shorter, and spending a join attempt to discover that costs the operator thirty seconds and tells them nothing. +- **An open network shall not ask for a passphrase at all.** + +The credentials shall be **persisted before the join is attempted**, so that a device which joins successfully and then loses power comes back to the same network rather than to a display nobody is standing at. +<<< +PRIORITY: M +VERIFICATION: T + [[/SECTION]] [[SECTION]] @@ -1575,7 +1656,9 @@ TITLE: 3.11 Firmware update (FR-UPD) [REQUIREMENT] UID: SWR-UPD-01 STATEMENT: >>> -The system shall **not** accept a firmware image over the network ([LINK: SWR-WEB-26]): an update path is total and persistent control of the heater, and the web interface is an observation surface. A local update path (USB/serial, or an update initiated at the kiln) shall be specified before release, see [LINK: OQ-08]. Until then the device has **no field update path**, which is a known and accepted gap. +The system shall **not** accept a firmware image pushed to it over the network ([LINK: SWR-WEB-26]): an inbound update route is total and persistent control of the heater, and the web interface is an observation surface. Instead the system shall **fetch** images itself from the manufacturer's update service ([LINK: SWR-UPD-09]) and shall install one only after a confirmation given at the local display ([LINK: SWR-UPD-12]). + +The **direction** is the whole design, and it is what [LINK: OQ-08] resolved: nothing on the network can offer this device an image, and nothing on the network can make it take one. The web interface stays read-only ([LINK: SWR-WEB-26]) with no exception carved into it, and the device gains a field update path without gaining an inbound one. <<< PRIORITY: M VERIFICATION: I @@ -1631,11 +1714,83 @@ VERIFICATION: D [REQUIREMENT] UID: SWR-UPD-08 STATEMENT: >>> -No client, authenticated or otherwise, shall be able to initiate a firmware update over the network ([LINK: SWR-UPD-01], [LINK: SWR-WEB-26]). +No client on the network, authenticated or otherwise, shall be able to initiate, offer, authorise, postpone or cancel a firmware update ([LINK: SWR-UPD-01], [LINK: SWR-WEB-26]). The device initiates its own check ([LINK: SWR-UPD-09]) and the operator standing at the display authorises the install ([LINK: SWR-UPD-12]). There shall be no route to either over HTTP, and in particular no `POST /api/ota`. +<<< +PRIORITY: M +VERIFICATION: T + +[REQUIREMENT] +UID: SWR-UPD-09 +STATEMENT: >>> +**The update check.** The system shall look for a newer release by fetching a **static manifest** over HTTPS from the manufacturer's update service, whose default host is `update.bitcrushtesting.com`. The check shall: + +- run at most once per 24 hours, at a random offset within the day, and not before the network and the wall clock are available; +- be enabled by default, disableable from the local display (`update.check_enabled`), and point at a configurable URL (`update.url`) so that a site may mirror the service rather than reach it directly; +- never block, delay or fault anything. A failed check is a **diagnostic**, not an error: a device on a network with no route to the internet shall remain fully functional and shall say that its last check failed, not that it has a fault. <<< PRIORITY: M VERIFICATION: T +[REQUIREMENT] +UID: SWR-UPD-10 +STATEMENT: >>> +**The check shall reveal nothing about the device.** It shall carry no serial number, no installed version, no configuration, no usage data, no identifier of any kind and no query parameters. The manifest shall be a static file, byte-identical for every device, and the comparison against the running version shall happen **on the device**. What the request discloses is what any HTTPS GET discloses: an address and a time ([LINK: SWR-NFR-21]). +<<< +PRIORITY: M +VERIFICATION: T + +[REQUIREMENT] +UID: SWR-UPD-11 +STATEMENT: >>> +**Authenticity, and what it does not rest on.** The manifest shall carry a signature made with an **offline** key, verified on the device against a public key compiled into the image. A manifest whose signature does not verify shall be discarded without being parsed further and without being shown to the operator. The image a valid manifest names shall be verified against the digest in that manifest **and** against its own appended image signature before it is marked bootable ([LINK: SWR-UPD-03]), on a secure-boot unit and equally on one that was never provisioned. + +Transport security shall be HTTPS with certificate validation, and shall deliberately **not** be the thing the design depends on: an attacker who defeats TLS, spoofs DNS or takes over the service still cannot produce a manifest or an image that verifies, and the worst they achieve is silence. +<<< +PRIORITY: M +VERIFICATION: T + +[REQUIREMENT] +UID: SWR-UPD-12 +STATEMENT: >>> +**Local confirmation, and no automatic install.** An available update shall be announced on the local display ([LINK: SWR-HMI-16]) and shall be installed **only** after an explicit confirmation given at the device. The system shall never install an update by itself, on any schedule, for any severity. + +The announcement shall not displace a firing screen; the confirmation shall be refused while a run or an autotune is in progress ([LINK: SWR-UPD-04]); and the restart that puts the new image into service shall be a separate act, equally local. The reason this is not the automatic default-on installation that a general consumer product would be expected to provide is safety rather than preference: this device switches kilowatts into a kiln, and an unattended reboot into untried firmware while a load is inside it is not an acceptable trade for promptness. +<<< +PRIORITY: M +VERIFICATION: T + +[REQUIREMENT] +UID: SWR-UPD-13 +STATEMENT: >>> +**No downgrade from the service.** The system shall refuse an image whose version is not strictly greater than the running version, and shall refuse one whose target is not this target. A deliberate downgrade shall remain possible over the local path of [LINK: SWR-UPD-14] and shall not be reachable through the update service, so that a replayed or rolled-back manifest cannot return a unit to a version whose vulnerability is known. +<<< +PRIORITY: M +VERIFICATION: T + +[REQUIREMENT] +UID: SWR-UPD-14 +STATEMENT: >>> +**The local path stays, as the recovery path.** A firmware update over USB shall remain available for a device whose update service is unreachable, whose new image will not confirm itself, or which has to be downgraded deliberately. It shall require physical access, shall preserve the `nvs`, `kilnfs`, `kilnlog` and `prod` partitions, and shall be a documented procedure carried out by a tool rather than hand-typed commands, because the mistake it invites, erasing the production data block, is not recoverable in the field. +<<< +PRIORITY: M +VERIFICATION: D + +[REQUIREMENT] +UID: SWR-UPD-15 +STATEMENT: >>> +**A new image shall earn its rollback cancellation.** An image booted for the first time shall cancel the rollback of [LINK: SWR-UPD-02] only after it has demonstrated, in the running system, that the supervisor link is delivering valid frames, that both chamber thermocouples read plausibly ([LINK: SWR-SAF-37]), that the configuration and the stored programs are readable, and that the display is alive. Until then it shall remain pending-verify, so that any reset returns the previous image to service. Cancelling the rollback during start-up, before any of this is known, shall be treated as a defect and not as an implementation choice. +<<< +PRIORITY: M +VERIFICATION: T + +[REQUIREMENT] +UID: SWR-UPD-16 +STATEMENT: >>> +**Security releases, separately.** A security fix shall be released separately from functional change where that is technically feasible, shall be marked as a security release in the manifest, and shall be accompanied by an advisory that says what it fixes. The **support period** over which such releases are provided shall be declared in the documentation and shall be at least five years from placing on the market ([LINK: UR-REG-004]), the expected service life of a kiln controller being considerably longer than that floor. +<<< +PRIORITY: M +VERIFICATION: I + [[/SECTION]] [[SECTION]] @@ -1988,7 +2143,7 @@ VERIFICATION: T [REQUIREMENT] UID: SWR-NFR-20 STATEMENT: >>> -The device is designed for a **trusted local network**. It shall not be exposed directly to the internet, and the documentation shall state this. +The device is designed for a **trusted local network**. It shall accept **no inbound connection** from outside that network, it shall not be exposed directly to the internet, and the documentation shall state this. The one connection it originates outwards is the update check of [LINK: SWR-UPD-09], which carries no information about the device ([LINK: SWR-UPD-10]), which can be turned off at the display, and whose absence costs nothing but the check itself. <<< PRIORITY: M VERIFICATION: I @@ -1996,7 +2151,13 @@ VERIFICATION: I [REQUIREMENT] UID: SWR-NFR-21 STATEMENT: >>> -The system shall not transmit any data to any third party. +The system shall not transmit any data to any third party. The update check of [LINK: SWR-UPD-09] is to the **manufacturer's own** service, carries no information about the device ([LINK: SWR-UPD-10]) and is disableable; beyond the three exceptions named below, no outbound connection shall exist, and there shall be no telemetry and no analytics on any route. + +Three exceptions, named here rather than discovered later: + +1. The **update check** of [LINK: SWR-UPD-09], to the manufacturer's own service, carrying nothing about the device. +2. The **SNTP client** behind `port_clock`, which contacts a time server and therefore a third party. It transmits nothing about the device but does reveal that the device exists. Its server shall be configurable and its default shall be stated in the documentation. +3. The **syslog destination** of [LINK: SWR-NET-10], which is off unless the owner sets it and then points at the owner's own server. It is the owner's data going to the owner's host, which is not a third party in any sense that matters, but it crosses the network in cleartext over UDP and the documentation shall say so. <<< PRIORITY: M VERIFICATION: I @@ -2049,6 +2210,24 @@ Uncommanded heater current ([LINK: SWR-SAF-25]) shall de-energise heating within PRIORITY: M VERIFICATION: T +[REQUIREMENT] +UID: SWR-NFR-28 +STATEMENT: >>> +**The build shall emit a machine-readable bill of materials.** A release build shall produce an SBOM in **CycloneDX 1.6 JSON**, and shall be able to produce the same inventory as **SPDX 2.3 JSON**, naming at least the top-level dependencies with their versions and licences: ESP-IDF and every component actually linked, mbedTLS by its own version, the toolchain, the browser assets, and this project itself. It shall be **generated by the build** rather than maintained by hand, because a hand-written inventory of dependencies is wrong within one release of being written and wrong by omission, and it shall be published with the release artefacts and kept for the whole support period ([LINK: SWR-UPD-16]). + +Three properties the generator shall have, each of which is a way this requirement is otherwise met in name only: + +- **The component list comes from the build**, specifically from the artefact the build writes naming what it linked, and not from a list maintained in the generator. +- **A licence is scanned from the component's own sources**, from the `SPDX-License-Identifier` tags the vendor put there, and a component that carries none shall be reported as `NOASSERTION` rather than given a plausible default. A scan is evidence, not a legal conclusion, and the difference shall survive into the document. +- **The same build shall produce the same bytes.** Components sorted, the serial number derived from the inventory rather than generated randomly, and the timestamp overridable, so that a diff between two SBOMs shows the product changing rather than the clock. + +Two things worth recording because they are **not** what a reader expects. The browser assets are **first-party**: there is no vendored third-party JavaScript, which resolves `OQ-04`, and the SBOM states that with file digests rather than by saying nothing. And the independent safety supervisor links no third-party source at all, its register definitions being generated from ST's own SVD ([LINK: SWA-22]). + +This exists because [LINK: UR-REG-004] requires it, and because the question it answers, "is this unit affected by the advisory published this morning", cannot be answered after the fact by a project that did not record what it shipped. +<<< +PRIORITY: M +VERIFICATION: T + [[/SECTION]] [[SECTION]] @@ -2704,8 +2883,11 @@ STATUS: Resolved [QUESTION] UID: OQ-08 STATEMENT: >>> -What replaces the removed over-the-web firmware update ([LINK: SWR-UPD-01])? USB/serial via `esptool`, an image staged over the network but applied only after a physical confirmation at the kiln, or no field update at all? The device currently has **no update path**, so this blocks release rather than merely being open. +**Resolved 2026-10-09: the device fetches, the operator at the display confirms, and the web interface stays read-only.** What replaces the removed over-the-web firmware update ([LINK: SWR-UPD-01]) is a **pull** path, not a staged push: a daily check of a signed static manifest at `update.bitcrushtesting.com` ([LINK: SWR-UPD-09]) that reveals nothing about the device ([LINK: SWR-UPD-10]), an announcement on the local display, and an install that happens only on a deliberate confirmation there ([LINK: SWR-UPD-12], [LINK: SWR-HMI-16]). USB remains as the recovery and downgrade path ([LINK: SWR-UPD-14]). + +Choosing pull over the staged push this question also offered has one decisive consequence: **no inbound route is created at all**, so [LINK: SWR-WEB-26] and `SEC-00` keep their absolute form instead of being narrowed to "read-only except for firmware". What the answer costs is a new outbound connection and a dependency on the manufacturer's service, both carried in `security.md` section 6.2. `SRR-11` stays open until this is built rather than merely specified. <<< +STATUS: Resolved [QUESTION] UID: OQ-09 diff --git a/docs/architecture.md b/docs/architecture.md index b38256c..3b1598e 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -150,10 +150,10 @@ double is a compile-time-checked substitution. | `port_logstore` | `append(record)`, `iterate(range, cb)`, `stats()`, `erase_all()` | `kiln_core/logring` over `port_flash` (`SWA-19`) | | `port_counters` | `load()`, `add_contactor_ops()`, `add_ssr_ops()`, `flush()` | NVS with RAM accumulation (`SWR-CUR-13`); spy | | `port_system` | `reset_cause()`, `fw_info()`, `stats()`, `wdt_subscribe/feed()` | `esp_system` + task WDT; stub | -| `port_update` | `begin/write/finish()`, `confirm_running()`, `rollback()` | `esp_ota_ops`; stub | +| `port_update` | `check()`, `fetch()`, `begin/write/finish()`, `confirm_running()`, `rollback()` | `esp_https_ota` for the pull path of §13.5, `esp_ota_ops` for the slots; stub | | `port_kvstore` | `get/set/erase(namespace, key, blob)` | NVS; in-memory fake | | `port_filestore` | `list/read/write/delete(path)` | `kiln_core/fileslots` over `port_flash` (`SWA-21`); RAM fake on host | -| `port_net` | `state()`, `connect()`, `start_ap()`, `stats()` | WiFi + mDNS + SNTP; stub | +| `port_net` | `status()`, `scan_begin/busy/results()`, `connect()` | WiFi station, scanning and joining (§5.4), plus SNTP; stub. **No access point**: network setup is on the display | ### 5.3 Application (`kiln_app`) @@ -749,7 +749,13 @@ set (`SWR-WEB-23`). | `POST` | `/api/current/calibrate` | One-point calibration against a reference reading | `SWR-CUR-06` | | `GET` | `/api/storage` | Log and filesystem health | `SWR-LOG-15` | | `GET` | `/api/net` | WiFi diagnostics | `SWR-NET-09` | -| `POST` | `/api/ota` | Upload firmware | `SWR-UPD-01` | +| | | **No firmware route.** The update path points outwards, §13.5 | `SWR-UPD-01`, `SWR-UPD-08` | + +> **This table predates the read-only decision of 2026-10-06** and still lists +> the state-changing routes it removed. Every non-`GET` request now returns +> `403 read_only` (`SWR-WEB-26`), and the handlers are deleted from the image +> rather than disabled. Read the method column as "what the route would have +> been"; `kiln_web`'s API surface is the authority. ### 12.2 Request handling @@ -857,6 +863,121 @@ Measured and reported by the instrumented build (`SWR-TST-18`). | Free internal heap, minimum | ≥ 48 kB (`SWR-NFR-12`) | | Application image | ≤ 2 MB (`SWR-NFR-13`) | +### 13.5 Firmware update + +The path decided on 2026-10-09 (`SWR-UPD-09` to `SWR-UPD-16`, `OQ-08`), and the +reasoning for its direction is in +[`security.md` §6.2](security.md#62-the-update-path-and-why-it-points-outwards). +The device **pulls**; the operator at the display **authorises**; the web +interface stays read-only and gains no exception. + +```mermaid +sequenceDiagram + participant UP as update task (core 0) + participant SVC as update.bitcrushtesting.com + participant APP as kiln_app + participant HMI as display + encoder + UP->>SVC: GET /safekiln/stable.json (daily, jittered) + SVC-->>UP: manifest + detached signature + UP->>UP: verify signature, parse, compare semver locally + UP->>APP: available(version, security?) + APP->>HMI: announce, not over a firing screen + HMI->>APP: operator confirms (deliberate act) + APP->>UP: fetch and install + UP->>SVC: GET the image + UP->>UP: stream into the inactive slot, digest + image signature + UP->>APP: ready, restart to apply + HMI->>APP: operator confirms the restart + APP->>UP: set boot partition, reboot + UP->>UP: next boot: pending-verify until the self-checks pass +``` + +Five properties of this that are decisions rather than details: + +1. **The manifest is static and the comparison is local** (`SWR-UPD-10`). One + file for every device, no query string, no identifier, no installed version + in the request. That is what keeps the check out of the telemetry category + (`SEC-06`) and it constrains the service as much as the client: a per-device + URL would break it. +2. **Authenticity does not come from the connection** (`SWR-UPD-11`). The + manifest signature is checked against a public key in the image, from an + offline key that is **not** the secure boot key, and the image is checked + against both the manifest digest and its own appended signature. HTTPS is + required and assumed to fail eventually. +3. **The update task lives on core 0**, with networking, and holds no authority + over heat (`SWA-15`, `SWA-04`). It posts an availability fact to `kiln_app` + and waits; it never reaches into `kiln_core`. +4. **Nothing installs without a local act** (`SWR-UPD-12`, `SWR-HMI-16`), and + the restart is a second one. `SWR-UPD-04`'s refusal during a run or autotune + is enforced in `kiln_app`, where the state machine lives, not in the port. +5. **Rollback is cancelled late** (`SWR-UPD-15`). The first boot of a new image + stays pending-verify until the supervisor link, both thermocouples, the + configuration, the stored programs and the display have all proved themselves + in the running system. `confirm_running()` in start-up code would make + `SWR-UPD-02` decoration. + +#### The manifest + +One static file per channel, served at `/.json`, built and +signed by [`tools/update-manifest.py`](../tools/update-manifest.py). It is an +envelope whose `payload` is the base64 of the **exact bytes that were signed**: + +```json +{ + "alg": "RSA3072-PSS-SHA256", + "key_id": "3f2a91c4", + "payload": "eyJzY2hlbWEiOiAxLCAicHJvZHVjdCI6ICJzYWZla2lsbiIsIC4uLg==", + "sig": "" +} +``` + +Signing the bytes rather than the object is the decision worth defending. A +device that re-serialised the parsed JSON to check a signature would have to +agree with the signing tool about key order, spacing and number formatting for +ever, and the usual failure is a verifier that passes on every manifest it was +tested with and rejects the one that matters. Here the device base64-decodes, +verifies over those bytes, and parses afterwards, so canonicalisation is nobody's +problem. + +The payload, once decoded: + +| Field | Meaning | +|---|---| +| `schema` | `1`. A later format change is detectable rather than confusing | +| `product` | `safekiln` | +| `channel` | `stable`, matching the filename | +| `target` | `esp32s3`, cross-checked by the tool against the image's own chip id | +| `version` | a **release** semantic version, `1.4.2`. Never `1.4.2+7.gabc1234.dirty`: `SWR-UPD-06` allows build metadata on a build that is not on a tag, and `SWR-UPD-13` compares versions, so publishing one would put a non-release in a channel | +| `released` | ISO date, for the operator and the advisory, not for logic | +| `security` | `true` for a security release (`SWR-UPD-16`), which then requires `advisory` | +| `advisory` | relative path to the advisory | +| `image` | relative path to the image | +| `size`, `sha256` | checked before the image is marked bootable (`SWR-UPD-11`) | + +**Every path is relative**, resolved against the manifest's own directory, and +the tool refuses an absolute one. `update.url` exists so a site can mirror the +service rather than let the controller out to the internet (`SRR-13`), and with +relative paths a mirror is a directory copy; one absolute URL would send every +mirrored device back to the origin. + +What the manifest deliberately does **not** carry is release notes. The display +is 128×64 pixels and `SWR-HMI-16` shows a version and whether it is a security +release; a field only a browser could render would become the reason somebody +adds a browser. The advisory is a URL for a human on another device. + +The signing key is **RSA-3072, PSS, SHA-256**, matching the scheme the ESP32-S3 +ROM already verifies for secure boot so the release process has one key size to +think about. It is **not** the secure boot key (`SRR-12`): that one decides what +a board will *boot* and its digest is burnt into eFuses, this one decides what a +board will be *offered*. The public half is compiled in as DER +SubjectPublicKeyInfo, generated by `update-manifest.py pubkey --header`, so +`mbedtls_pk_parse_public_key` can take it without a PEM decoder. + +The partition table needs no change: `otadata`, `ota_0` and `ota_1` are already +there (§10.1), sized at 2 MB against the ≤ 2 MB image budget of §13.4. What is +unbuilt is the client, the verifier, the screen and the discipline in point 5, +and all of it waits on the HTTP stack that §12 still describes as unimplemented. + ## 14. Build and test architecture This section is the implementation of [requirements §7](03_software_req.sdoc). @@ -995,6 +1116,20 @@ flowchart LR I --> J["mergeable"] ``` +The `idf.py build` job carries one step that is not a check: it generates the +bill of materials (`SWR-NFR-28`, [`tools/sbom.py`](../tools/sbom.py)) **inside** +the IDF container. That placement is forced rather than chosen. The component +list comes from the build's own `project_description.json`, which names what was +actually linked, and each component's licence is scanned from the +`SPDX-License-Identifier` tags in its own sources, so both inputs exist only +where the ESP-IDF tree is. A step after the container sees the JSON and none of +the sources, and would produce an inventory with every licence unresolved. + +The release workflow runs the same tool with `--strict`, which fails on a gap in +this project's own build (no image digest, no toolchain), and publishes +CycloneDX and SPDX as release assets with a `SOURCE_DATE_EPOCH` taken from the +tag's commit date, so rebuilding a tag reproduces the SBOM byte for byte. + ## 15. Traceability Requirement-level traceability is maintained mechanically by `tools/trace` diff --git a/docs/coding-standard.md b/docs/coding-standard.md index 342d756..ce9e7eb 100644 --- a/docs/coding-standard.md +++ b/docs/coding-standard.md @@ -110,9 +110,12 @@ in `core/`, `protocol/`, `board/` or `src/`, and all four compile clean at name the controller's safety defaults, is a controller concern; the supervisor has none. -The build still sets C++20 for the supervisor target. Pinning it to 17 is part -of adopting the standard, not a separate improvement, and is listed in -section 10 rather than done piecemeal. +**The build sets it as of 2026-10-09**, in both +`firmware/supervisor/CMakeLists.txt` and the suites' own, so the code the tests +translate is the code that ships. It cost nothing twice over: the four suites +pass unchanged, and the linked image is **byte-identical** to the C++20 one, +same 3 488 bytes and the same `0x6b9284a1` program-memory digest. The language +level moved; not one instruction did. **The controller stays C++20**, per `SWA-20`. @@ -347,7 +350,7 @@ is a description rather than a standard. | | Gap | What closing it takes | |---|---|---| | 1 | **MISRA C++:2023 is a target, not a claim.** No commercial checker has been run. | A licence for one checker (Cppcheck Premium, QAC, LDRA, Polyspace, Parasoft) pointed at `firmware/supervisor` only, which is four core files and 3.5 kB. Then the MISRA Compliance:2020 artefacts: a guideline enforcement plan, a re-categorisation plan, deviation records and a compliance summary. The deviation discipline of section 7 is already that in substance. | -| 2 | **The supervisor builds at C++20**, which MISRA C++:2023 is not written against. | One line in `firmware/supervisor/CMakeLists.txt`. Verified to compile clean at C++17; part of item 1 rather than a change on its own. | +| 2 | ~~The supervisor builds at C++20, which MISRA C++:2023 is not written against.~~ **Done 2026-10-09.** Both the target and the suites build at C++17, the suites pass, and the image is byte-identical to the one C++20 produced. | | | 3 | **No tool qualification argument.** 61508-3 §7.4.4 puts `arm-none-eabi-g++`, `tools/sup-crc.py` and `tools/gen-stm32g031-header.py` in class T3: each transforms or generates what ends up in the image. The CRC stamper is the sharp one, because a silently wrong stamp is exactly what the firmware then trusts. | Version pinning, plus an independent read-back of the stamp rather than trusting the writer. | | 4 | **Worst-case stack is not bounded at build time.** `-fstack-usage` is set and nothing consumes the `.su` files. The 256-word guard catches an overflow at run time, which is the second line of defence, not the first. | A script summing the `.su` files along the call graph. Cheap here specifically: the supervisor has no recursion and no function pointer. | | 5 | ~~The supervisor's tests do not run under a sanitizer.~~ **Done.** `ENABLE_ASAN` on the supervisor's host build and a second `ctest` step in its CI job, mirroring the controller's option name and sanitiser pair. Finding it also fixed the controller's: both had been recovering from UBSan findings and reporting PASSED. | | diff --git a/docs/images/safe-kiln-control.png b/docs/images/safe-kiln-control.png new file mode 100644 index 0000000..e95c472 Binary files /dev/null and b/docs/images/safe-kiln-control.png differ diff --git a/docs/images/web-dashboard.png b/docs/images/web-dashboard.png new file mode 100644 index 0000000..09cd1fc Binary files /dev/null and b/docs/images/web-dashboard.png differ diff --git a/docs/security.md b/docs/security.md index c0e2ab2..81dd0ec 100644 --- a/docs/security.md +++ b/docs/security.md @@ -10,7 +10,7 @@ SPDX-License-Identifier: GPL-3.0-or-later | **Document** | Security Concept | | **Project** | Safe Kiln Controller, PID kiln controller | | **Version** | 0.1 (draft) | -| **Date** | 2026-10-05 | +| **Date** | 2026-10-09 | | **Status** | For review | | **Derives from** | [`03_software_req.sdoc`](03_software_req.sdoc) v0.1, [`architecture.md`](architecture.md) v0.1, [`safety.md`](safety.md) and [`safety.sdoc`](safety.sdoc) v0.1 | | **License** | GPL-3.0-or-later | @@ -65,7 +65,7 @@ Identifiers introduced by this concept extend the scheme of | `SRR` | Security residual risk | | `OQ-S` | Open question, security | -The trust boundaries `B-1` to `B-6` are **not** nodes, and that is deliberate: +The trust boundaries `B-1` to `B-7` are **not** nodes, and that is deliberate: they are the legend of the diagram in [§3](#3-attack-surface-and-trust-boundaries) and carry no chain through them, so splitting them from the picture would help nobody. @@ -109,17 +109,22 @@ flowchart TB BROWSER["Operator's browser"] OTHER["Other LAN devices
(IoT, guests, malware)"] end + subgraph VENDOR["Manufacturer"] + UPDSVC["update.bitcrushtesting.com
signed static manifest"] + end subgraph DEVICE["Safe Kiln Controller"] HTTP["HTTP server
**not implemented**"] API["REST API, kiln_web
built, host-tested"] APP["kiln_app, commands"] SAFE["safety supervisor"] NVS["NVS: WiFi + web password
**plaintext**"] - OTA["OTA update path
**not implemented**"] + OTA["update client
**not implemented**"] + HMI["local display + encoder"] end subgraph PHYS["Physical access"] UART["UART console"] - JTAG["JTAG / SWD"] + JTAG["ESP32 JTAG
off on a provisioned unit"] + SWD["Supervisor SWD
**open, by decision**"] FLASH["SPI flash readout"] end INET -. "must not be routed" .-x HTTP @@ -127,9 +132,14 @@ flowchart TB OTHER --> HTTP HTTP --> API --> APP --> SAFE APP --> NVS - HTTP --> OTA --> NVS + HTTP -. "no route, by design" .-x OTA + OTA -->|"daily GET, nothing about the device"| UPDSVC + UPDSVC -->|"signed manifest, then image"| OTA + OTA -->|"announces"| HMI + HMI -->|"operator confirms: the only authority"| OTA UART --> APP JTAG --> NVS + SWD --> SAFE FLASH --> NVS ``` @@ -142,7 +152,8 @@ The trust boundaries, named: | **B-3** | Unauthenticated → authenticated | State-changing requests | [`kiln_api_needs_auth`](../firmware/components/kiln_web/include/kiln_web/api.h) decides *which*; the transport would decide *whether*. | | **B-4** | Request data → parser | Bodies, query strings, JSON | Bounded buffers in `kiln_web` **[built]**. | | **B-5** | API → control | Commands | `kiln_app`; the safety supervisor holds heat authority regardless ([`SWA-04`](architecture.md#3-key-decisions)). | -| **B-6** | Physical → device | UART, JTAG, flash | **Nothing.** No secure boot, no flash encryption. | +| **B-6** | Physical → device | UART, JTAG, SWD, flash | **Asymmetric, and [§6.1](#61-the-physical-boundary-and-what-each-mcu-can-do-about-it) is why.** On the ESP32, Secure Boot V2 and JTAG disable exist as a provisioning step and are **not** applied by a default build. On the supervisor, **nothing, by decision**. No flash encryption anywhere. | +| **B-7** | Device → manufacturer's update service | One daily outbound HTTPS GET, originated by the device | Authenticity comes from an **offline** signing key, not from the connection ([§6.2](#62-the-update-path-and-why-it-points-outwards)); the install needs a person at the display. Nothing inbound crosses this boundary, and nothing about the device goes out across it. **[spec]** | ## 4. Adversaries @@ -153,25 +164,31 @@ away. ## 5. Threats -The thirteen threats live in [`security.sdoc`](security.sdoc), rated by +The fifteen threats live in [`security.sdoc`](security.sdoc), rated by consequence rather than likelihood. Each names the asset it is aimed at, the adversary who can mount it, and, where it gets there, the **safety hazard** it reaches: that last relation is the claim this document exists to make, and it is now a link to a node in [`safety.sdoc`](safety.sdoc) rather than a sentence. -Four of them, `TH-01` to `TH-04`, are `Resolved`, closed outright by the +Three of them, `TH-01` to `TH-03`, are `Resolved`, closed outright by the read-only decision of 2026-10-06. They are kept rather than deleted, because why a threat is closed is the most useful thing about it. +`TH-04`, hostile firmware, was the fourth until 2026-10-09 and is **`Active` +again**. It was closed by the absence of an update path, and a threat closed by +an absence reopens when the feature arrives: see [§6.2](#62-the-update-path-and-why-it-points-outwards). +`TH-14` and `TH-15`, a hostile or impersonated update service and a downgrade to +a published vulnerability, are new with it, and are the honest price of the path. + ## 6. Security goals and the controls behind them -The twelve security goals live in [`security.sdoc`](security.sdoc), each with the +The fifteen security goals live in [`security.sdoc`](security.sdoc), each with the threats it addresses, the requirements that realise it, and an `IMPLEMENTATION` field carrying what used to be a `[built]` / `[partial]` / `[spec]` / `[absent]` mark in this table. That field is the one to read first. At the time of writing it stands at **6 -built, 1 partial, 2 spec, 2 absent, 1 not needed**, and the reason is that there +built, 1 partial, 5 spec, 2 absent, 1 not needed**, and the reason is that there is still **no HTTP transport on the target**: the REST API is complete and host-tested, but the adapter that would terminate TCP, parse headers and apply rate limiting is not started. Nearly every network control is therefore a @@ -180,6 +197,195 @@ specification, and that remains the single most important fact in this document. `SEC-01` and `SEC-04` are `Withdrawn`, dissolved on 2026-10-06 along with the password itself. +### 6.1 The physical boundary, and what each MCU can do about it + +`B-6` is the only boundary where the two microcontrollers of +[`SWA-22`](04_software_arch.sdoc) differ, and most of the difference is a +property of the silicon rather than a decision anybody is free to revisit. It is +written out here because a single "nothing" in the table above was true until +2026-10-08 and is now true of one half. + +**The ESP32-S3: Secure Boot V2, built and off by default.** +[`sdkconfig.secure`](../firmware/controller/sdkconfig.secure) builds a signed +image, and [`tools/secure-boot.py`](../tools/secure-boot.py) signs it, flashes +it, burns the public-key digest, enables secure boot and disables JTAG, in that +order, refusing each irreversible step until a pre-flight check passes. A board +that has been through it will not run unsigned code and has no debug port. A +board that has not is exactly what `B-6` used to say, and **a default build is +not provisioned**, so the honest status of this control is that the mechanism is +**[built]** and whether a given unit carries it is a production decision. Three +things it does not do, each deliberate and each argued in the header of +`sdkconfig.secure`: it does not burn `DIS_DOWNLOAD_MODE`, because `SRR-11` +leaves serial download as the only route a security fix can take; it does not +enable flash encryption, which is `OQ-S3`, so `SRR-05` stands untouched; and it +does nothing whatever for the supervisor. + +**The supervisor: no secure boot exists to enable.** The +[STM32G031K8T6](../firmware/supervisor/README.md#the-part-stm32g031k8t6) has +nothing corresponding to Secure Boot V2. There is no ROM-verified signature +chain on the G0 line, no one-time-programmable key store, and on this part no +AES, no hardware random number generator and no public-key accelerator, so a +signature chain would have to be written in software and keyed from ordinary +flash, which an adversary able to reflash can replace along with the image it +verifies. What the part does offer is readout and boot protection through option +bytes: + +| Mechanism | What it does | Reversible | +|---|---|---| +| **RDP Level 1** | Flash readout blocked from the debugger and the system bootloader; debug can still attach | Yes, and regression to Level 0 mass-erases the flash | +| **RDP Level 2** | SWD permanently dead, system bootloader gone, option bytes frozen | **No.** No vendor recovery, ever | +| **WRP** | Write and erase protection over a flash area | Yes, unless Level 2 is set | +| **Securable memory + `BOOT_LOCK`** | A region that runs at boot and is then inaccessible until reset, with boot forced from main flash | Clearing it needs an RDP regression on this family; confirm against RM0444 before putting it on a line | +| **`nBOOT_SEL` / `nBOOT0`** | Makes the `BOOT0` pin irrelevant and selects main flash | Yes | + +**No readout protection is set, and RDP Level 2 must not be.** Three reasons, in +the order of their weight: + +1. **There is nothing on the supervisor to keep.** It holds no WiFi + credentials, no password and no key: `A-2` and `A-3` live in the ESP32's NVS, + which is why the diagram above routes `SWD` to the safety supervisor and not + to `NVS`. Its firmware is published under the GPL. RDP is a confidentiality + control, and here it would protect a public artefact. + +2. **It would contradict the independence argument.** + [`firmware/supervisor/README.md`](../firmware/supervisor/README.md) requires + SWD on `PA13`/`PA14` brought out to test points rather than left as pads, + "because the independence argument rests on this firmware being reviewable + and flashable on its own". Level 2 removes bench bring-up of the transport + code that has never run on silicon, read-back of the image as evidence for an + assessment against EN IEC 60730-1 Annex H, diagnosis of a returned unit, and + any safety fix short of replacing the part. `SRR-11` already records that + there is no field update path; closing SWD would extend that from the + controller to the safety function. + +3. **It does not close the attack it appears to close.** The threat is `ADV-3` + reflashing the supervisor so that it permits heat unconditionally. The same + adversary, at the same board, can jumper the permit line instead, which is + cheaper and needs no firmware at all, and `SYS-HW-13`'s independent cutout is + untouched either way ([§7](#7-security-as-a-safety-concern), L5). + [§10.1](#101-on-the-owner-and-installer) already asks the owner to treat + physical access as equivalent to knowing the WiFi password. Locking one of + the two MCUs against an adversary this concept places outside its scope would + buy a word in a table and cost the ability to service the part that holds + heat authority. + +What is done instead is two option-byte settings with a safety argument rather +than a security one, and one runtime check that is already running: + +- **Boot forced from main flash**, through `nBOOT_SEL` and `nBOOT0` + **[spec]**. Not a security control: it removes a state in which a floating or + noise-latched `BOOT0` leaves the part in the system bootloader with the permit + line high-impedance, which is a supervisor that is silently not running. The + external pull-down the pin map already requires makes that state *safe*; this + removes the state. +- **Write protection over the image**, through WRP **[spec]**. The supervisor + firmware contains no flash-write code at all, so this guards against a runaway + rather than against a bug anybody can point to. It is reversible and it costs + nothing. +- **CRC-32 over the whole image, ten times a second** **[built]**: + `sup_flash_ok`, against a digest stamped in after linking by + [`tools/sup-crc.py`](../tools/sup-crc.py), with an unstamped image treated as + a failure rather than as "no expectation". This is the program-memory + integrity control that actually runs, and it catches the realistic fault, + which is corrupted flash and not hostile flash. No option byte does that, and + it carries no `SWR-` of its own, which is a gap in the requirements rather + than in the firmware. + +`OQ-S2` asked whether images should be signed and secure boot enabled, and is +`Resolved` by the two halves above. `SRR-04` stands anyway, because a default +build is unsigned and an unprovisioned board authenticates nothing. + +### 6.2 The update path, and why it points outwards + +**Decided 2026-10-09, resolving `OQ-08` and `OQ-R4`.** The device checks +`update.bitcrushtesting.com` once a day, announces an available release on its +**local display**, and installs it only when the operator confirms there. The web +interface stays read-only. `SWR-UPD-09` to `SWR-UPD-16` are the requirements; +this is why they are shaped that way. + +The driver is regulatory and is not negotiable: +[`UR-REG-004`](01_user_req.sdoc), the Cyber Resilience Act, requires that +security fixes can reach a unit, and `SRR-11` recorded that they could not reach +this one without a visit. `OQ-R4` asked whether that made the sold-units route +impossible, and the answer is no, provided this gets built. + +**The direction is the whole design.** The question `OQ-08` left open offered two +shapes, and they are not equally priced: + +| | What it needs | What it costs | +|---|---|---| +| **Push**: an image staged over the LAN, applied after a physical confirmation | One inbound `POST` route, live whenever the device is armed | `SEC-00` stops being "no network request changes any device state **at all**" and becomes "read-only except for firmware". The strongest control in this document acquires an exception | +| **Pull**: the device fetches, the operator confirms at the display | One outbound GET, and a service to run for the support period | `SEC-00` keeps its absolute form. A new outbound connection, and a dependency on the manufacturer | + +Pull wins because the exception is the expensive part. An inbound route exists +whether or not anybody is standing at the kiln; an outbound GET creates nothing +for an attacker on the LAN to talk to. `SWR-WEB-26` and `SEC-00` are therefore +unchanged by this decision, which is the single most useful sentence in this +subsection. + +**The mechanism, and what each step is for.** + +- **A static, signed manifest.** One file, byte-identical for every device, + fetched over HTTPS. It is signed with an **offline** key and verified against a + public key compiled into the image (`SWR-UPD-11`). The version comparison + happens on the device, which is what lets the request carry nothing about the + device at all (`SWR-UPD-10`): no serial, no installed version, no query + string. The service learns an IP and a time, and that is `SRR-13`. +- **TLS that is required and not load-bearing.** Certificate validation is + mandatory, and the design assumes it will fail one day anyway. An attacker who + takes the host, spoofs the DNS or breaks the connection cannot produce a + manifest or an image that verifies, so what they get is **silence**: a fix + that never arrives rather than a hostile one that does. That failure mode is + `SRR-12`, not a pretence that it cannot happen. +- **The display is the only authority.** No request can initiate, offer, + authorise, postpone or cancel an install (`SWR-UPD-08`). The device decides + when to *ask*; the person at the kiln decides whether to *install* + (`SWR-UPD-12`, `SWR-HMI-16`). +- **Strictly greater versions only.** `SWR-UPD-13` refuses any image that is not + newer than the running one, because a signature does not stop a replay: an old + manifest is genuinely signed and its vulnerability is published. That is + `TH-15`. +- **The new image earns its keep.** `SWR-UPD-15` lets a first boot cancel its + rollback only after the supervisor link, both thermocouples, the stored + configuration and the display have all proved themselves in the running + system. Cancelling it in start-up code is named as a defect, because that is + the usual way this feature is reduced to decoration. +- **USB stays** (`SWR-UPD-14`), as the recovery path for a unit whose service is + unreachable, whose image will not confirm itself, or which has to be + downgraded deliberately. It is also what survives the project losing the + domain. + +**Why the install is not automatic.** The CRA expects security updates to +install automatically by default *where applicable*, and this design deliberately +does not. The basis is the one in [§7](#7-security-as-a-safety-concern): this +device switches kilowatts into a kiln, and rebooting into untried firmware +unattended with a load inside is not an acceptable trade for promptness. The +*check* is automatic and on by default; only the install waits for a person. A +conformity file has to make that argument explicitly rather than leave the +omission to be found, which is why it is also written into `SWR-UPD-12` and +[`UR-REG-004`](01_user_req.sdoc)'s assessment. + +**What this costs, stated as plainly as §6.1 states its own trade.** `TH-04` is +`Active` again after being closed on 2026-10-06; `TH-14` and `TH-15` are new; +`SEC-06` narrows from "no outbound connection" to "one outbound connection, to +the manufacturer, carrying nothing about the device"; and `SRR-12` and `SRR-13` +are new residual risks, one carried by the project and one by the owner. Against +that, `SEC-00` is untouched, `SRR-11` has a specified answer, and the sold-units +route stops being blocked by a decision nobody had taken. + +**The eFuse anti-rollback counter is deliberately not burnt.** It would stop a +downgrade in hardware, which sounds strictly better than `SWR-UPD-13` doing it in +software, and it is not: the counter has few increments, it cannot be undone, and +it would make the fuse rather than the operator the thing that decides whether a +unit can ever be recovered. The same reasoning as `DIS_DOWNLOAD_MODE` in §6.1, +and the same conclusion. + +**Status: all of this is `[spec]`.** The HTTP client, the manifest verifier, the +update screen and the rollback discipline are unwritten, on a target that has no +HTTP transport either (`SRR-01`). `SEC-12` carries the goal, `SRR-11` stays open, +and the deadline that matters is 11 December 2027 for the CRA's main +obligations, with the reporting route live from 11 September 2026. + ## 7. Security as a safety concern This is the part that makes a kiln controller different from a thermostat. @@ -198,7 +404,7 @@ the wrong side of the trust boundary: | **L5 independent hardware cutout** | **Nothing, and this is the point.** It has its own sensor and its own contacts, and it is reachable from no network. Against TH-01 to TH-05 it is the only layer that holds unconditionally. | | **L6 operator attendance** | Everything, if the operator is not there. `SYS-ASM-06` requires attendance during firing; an attack that starts a firing *when nobody expects one* removes L6 by surprise rather than by negligence. | -Three consequences worth stating plainly: +Four consequences worth stating plainly: 1. **`SYS-HW-13`'s independent cutout is a security control, not only a safety one.** It is the one protection in the entire design that no network attacker can @@ -216,6 +422,17 @@ Three consequences worth stating plainly: detector's own rule function. An attacker can clear a *stale* fault; they cannot clear a *live* one and then heat. +4. **Firmware is the one route that reaches every layer at once, which is why + L6 is where the update path is anchored.** An attacker who replaces the + firmware does not have to defeat L1, L2 or L4: they *are* L1, L2 and L4, and + only L3 and L5 remain, both of which are hardware. That is `TH-04`, and it is + why the update path of [§6.2](#62-the-update-path-and-why-it-points-outwards) + puts the decision on the local display rather than on the network. + The person in front of the kiln is L6, and giving them the only authority over + what firmware installs makes the weakest layer in the table the gate on the + strongest attack. It also means the argument for not installing updates + automatically is a safety argument, not a convenience one. + ## 8. What the implementation already gets right Recorded because a security document that lists only gaps misrepresents the @@ -242,12 +459,18 @@ design, and because each of these is a property worth not losing. ## 9. Residual risk -The ten security residual risks live in [`security.sdoc`](security.sdoc), each -with why it stands, **who carries it**, and what mitigation exists today. Two +The thirteen security residual risks live in [`security.sdoc`](security.sdoc), each +with why it stands, **who carries it**, and what mitigation exists today. Four are worth naming here: `SRR-01`, that every network control is a specification and **nothing in this concept may be cited as evidence of a deployed control**; -and `SRR-11`, that removing OTA left the device with no way to receive a -security fix without a physical visit, which **blocks release**. +`SRR-11`, which used to say that removing OTA left no way to receive a security +fix and now says that the way is specified and unbuilt, and which still **blocks +release**; and `SRR-12` and `SRR-13`, the two new costs of +[§6.2](#62-the-update-path-and-why-it-points-outwards), being the manufacturer's +service and signing key as a dependency, and the daily check disclosing that a +device exists. `SRR-14` is the fourth and the least technical: the Cyber +Resilience Act obligations that are **not** firmware have no owner, which +[§13](#13-the-cyber-resilience-act-what-is-left) exists to stop being invisible. There is no `SRR-10`. The numbering has a gap, and keeping it costs less than renumbering identifiers other documents cite. @@ -261,10 +484,12 @@ renumbering identifiers other documents cite. | Do not expose the device to the internet; do not port-forward to it | `SWR-NFR-20`, SRR-03 | | Prefer an isolated network segment or VLAN over a flat home LAN | SRR-09 | | Set a web password; it is optional (`SWR-WEB-23`) and the device ships without one | SEC-01 | -| Set an AP passphrase before relying on the provisioning fallback | SRR-08 | | Treat physical access to the controller as equivalent to knowing the WiFi password | SRR-05 | | **Erase flash before disposing of or selling a device** | SRR-05, ADV-4 | | Fit the independent hardware over-temperature cutout; it is the only protection no attacker can reach | `SYS-HW-13`, [§7](#7-security-as-a-safety-concern) | +| Let the controller reach `update.bitcrushtesting.com` outbound, or mirror the manifest and point `update.url` at the mirror. A segment with no outbound route gets no security fixes | `SWR-UPD-09`, SRR-13 | +| Install an offered update, and understand that it waits for you: nothing installs itself | `SWR-UPD-12`, SRR-11 | +| If you disable the check, take on the job of watching the release channel yourself | `SWR-UPD-09`, SRR-13 | ### 10.2 On anyone implementing the HTTP transport @@ -281,6 +506,7 @@ fact. These are not suggestions. | Enforce the declared body maximum *before* parsing, not during. | `SWR-NFR-19`, SEC-03 | | Keep the server on core 0. Heat authority stays with the safety supervisor. | `SWA-15`, `SWA-04`, SEC-08 | | Do not bind the dev harness to anything but loopback. | [§8](#8-what-the-implementation-already-gets-right) | +| Do not add an inbound firmware route while you are in there. The update path points outwards on purpose, and `SEC-00`'s absolute form is what that bought. | `SWR-UPD-01`, `SWR-UPD-08`, [§6.2](#62-the-update-path-and-why-it-points-outwards) | ### 10.3 On the project @@ -291,6 +517,13 @@ fact. These are not suggestions. | No dependency may be fetched at build time; assets stay vendored. | `UR-CON-04`, ADV-6 | | No telemetry, no analytics, no outbound connection, ever. | `SWR-NFR-21`, SEC-06 | | Relaxing a bound in `SWR-SAF-22` or the ceiling in `SWR-SAF-23` widens an attack surface, not just a safety envelope. | [§7](#7-security-as-a-safety-concern) | +| **RDP Level 2 must not be set on the supervisor.** SWD stays reachable, and the reasons are not matters of taste. | [§6.1](#61-the-physical-boundary-and-what-each-mcu-can-do-about-it), SRR-11 | +| Provisioning a unit with secure boot makes the key holder the only party who can ever update it. Decide whose unit it is before burning. | SRR-11, OQ-S2 | +| The manifest signing key stays **offline** and is not the secure boot key. Two keys, two blast radii. | `SWR-UPD-11`, SRR-12 | +| `update.bitcrushtesting.com` and its domain are a commitment for the whole declared support period. Letting the domain lapse is worse than never having had it, because somebody else can buy it. | SRR-12, `SWR-UPD-16` | +| The manifest stays **static and identical for every device**. A per-device URL, a version query or a user agent carrying the serial would turn the check into telemetry and break `SEC-06`. | `SWR-UPD-10`, SRR-13 | +| Security releases ship separately from functional ones, marked as such, with an advisory. | `SWR-UPD-16`, `UR-REG-004` | +| Do not make the install automatic later "because the CRA prefers it". The manual confirmation is a safety argument, recorded in [§7](#7-security-as-a-safety-concern); reversing it needs that argument answered, not just a flag flipped. | `SWR-UPD-12` | ## 11. Verification @@ -303,6 +536,12 @@ fact. These are not suggestions. | Authentication is constant-time and rate-limited |, | **Not performed**: nothing to test | | OTA rejects an invalid or unauthenticated image |, | **Not performed**: nothing to test | | CSRF defences |, | **None designed** | +| Only signed firmware runs on the ESP32 | `tools/secure-boot.py preflight` reads the eFuse state back off the part; `--self-test` covers its parsing with no board attached | **Verified on a provisioned unit only**; a default build is unsigned | +| The supervisor's program memory is intact | `sup_flash_ok` against the digest `tools/sup-crc.py` stamps in, with host tests over the CRC and over the unstamped case | **Verified** | +| A manifest or image that does not verify is refused | Host tests over the verifier with a tampered manifest, a wrong key, a truncated image and a replayed older version | **Not performed**: the verifier does not exist | +| The update check carries nothing about the device | Test over the request the client builds: no identifier, no version, no query string, byte-identical for two differently configured devices | **Not performed**: nothing to test | +| Only the display can authorise an install | API suite: no route initiates, offers, authorises, postpones or cancels an update; plus inspection that no such handler exists | **Not performed** for the transport; the API suite already proves every non-`GET` route returns `403 read_only` | +| A new image that cannot prove itself is rolled back | On-target test: install an image whose self-check fails, reset, confirm the previous image returns | **Not performed**: needs a device | The pattern is the same one `safety.md` §10 reports: what exists in the host-testable core is tested well, and what needs a device is untested because @@ -313,7 +552,18 @@ it is unbuilt. The five open questions live in [`security.sdoc`](security.sdoc), each related to the residual risk it would settle, so a question cannot drift away from the risk that motivated it. `OQ-S1` and `OQ-S5` are `Resolved`, answered by the read-only -decision of 2026-10-06. +decision of 2026-10-06, and `OQ-S2` is `Resolved` as of 2026-10-09 by +[§6.1](#61-the-physical-boundary-and-what-each-mcu-can-do-about-it): signing and +secure boot on the ESP32 as an opt-in production step, and neither on the +supervisor, where the part has no such mechanism and the readout protection it +does have is refused on purpose. + +Two questions that are not nodes here, because they live in the requirement and +user-requirement documents, were answered on the same day and are the reason +[§6.2](#62-the-update-path-and-why-it-points-outwards) exists: `OQ-08`, what +replaces the removed over-the-web update, and `OQ-R4`, whether the Cyber +Resilience Act made the sold-units route impossible as designed. Both are +`Resolved`; neither is implemented. The traceability tables that used to sit below them are gone. They were a threat to security-goal to requirement grid and a goal to residual-risk grid, both @@ -323,3 +573,72 @@ carried no row for `SEC-00`, the strongest control in the document. Those mappings are relations in [`security.sdoc`](security.sdoc) now, generated in both directions from the relations themselves, and a goal citing a requirement that does not exist is an error in the `requirements` CI job rather than a stale row. + +## 13. The Cyber Resilience Act, what is left + +[`UR-REG-004`](01_user_req.sdoc) applies to the **SoldUnits** route only: on the +published-design route nobody places a product on the market, and unmonetised +open source is outside the Act. The dates are 11 September 2026 for reporting +and 11 December 2027 for the main obligations. + +This section exists because the update path, answered on 2026-10-09, was **one** +essential requirement out of many, and closing it made the rest easier to +mistake for done. Each row below names where the work lives, not only that it is +missing. + +### 13.1 The firmware half + +The essential requirements of Annex I Part I, against what this project has: + +| Requirement | State | +|---|---| +| Security updates can be delivered | **Specified, barely built.** [§6.2](#62-the-update-path-and-why-it-points-outwards), `SWR-UPD-09` to `SWR-UPD-16`. One of the seven implementation steps exists (the manifest format and its signing tool); `SRR-11` still blocks release | +| Shipped in a **secure default configuration** | **Closed 2026-10-09**, and not in the way `OQ-S4` expected: the provisioning access point that could start without a passphrase is **removed** rather than given a rule. Network setup is on the local display (`SWR-NET-11`, `SWR-NET-12`), so the device raises no second radio and `TH-11` and `SRR-08` close with it | +| No known exploitable vulnerabilities | Nothing known. Worth stating that the honest basis for this is a small codebase with no network transport yet, not a penetration test (`SRR-01`) | +| Confidentiality of **stored** data | **`OQ-S3`, reframed from a preference into a requirement.** `net.wifi_pass` is plaintext in NVS (`SRR-05`); the Annex asks for state-of-the-art protection. The routes may diverge, a self-build unencrypted and a sold unit not, as `OQ-S2` let secure boot be per-unit. What cannot happen is the question staying open while units ship | +| Confidentiality of data **in transit** | `SEC-11` is `Absent` by decision, with `SWR-NFR-20`'s trusted-LAN assumption in its place (`SRR-03`). Defensible for a read-only dashboard of kiln temperatures; it is a position to argue in the file, not to leave unmentioned | +| Integrity of stored programs and configuration | Secure boot exists but is **opt-in** ([§6.1](#61-the-physical-boundary-and-what-each-mcu-can-do-about-it)). For a sold unit it should be on by default, which is a production-line decision nobody has recorded, and `SRR-04` stands until the application verifies what it installs | +| Protection from unauthorised access | **`SEC-00` is the strongest answer available**: no network request changes any state, the handlers are deleted rather than gated. Evidence, not work | +| Minimised attack surface | **Evidence, not work.** No inbound update route, no `malloc`, no telemetry, no outbound connection but the three named in `SWR-NFR-21`, fault injection compile-gated out of production images | +| Resilience against denial of service | `SEC-08`: control is isolated from the network by construction, so the worst realistic case is a lost web interface, not a lost kiln | +| Data minimisation | `SWR-UPD-10` keeps the update check free of any device identity; there is no account, no cloud and no analytics | +| **Security event logging, with a user opt-out** | **Was missing entirely; now `SEC-13` and `SWR-LOG-16`.** The event log recorded process events and nothing asked it to record a refused manifest, a rollback, a configuration change or a client joining the access point. The opt-out is required as explicitly as the log | +| **Permanent removal of all data and settings** | **Was an instruction in a manual; now `SEC-14` and `SWR-CFG-09`.** A factory reset at the display, erasing bytes rather than unlinking them, leaving the production data block alone. `ADV-4`, the person who buys a second-hand controller, had no answer but a warning | +| Vulnerability handling that users can rely on | See 13.2: the firmware is the smaller half | + +### 13.2 The half that is not firmware + +Annex I Part II and the Articles. Nothing here is discharged by writing code, +and the project's instinct is to answer a requirement by building something: + +| Obligation | State | Owner | +|---|---|---| +| Coordinated disclosure policy, and a single point of contact | **Done 2026-10-09**: [`SECURITY.md`](../SECURITY.md), with `security@bitcrushtesting.com` as the Article 13(17) contact. **The mailbox has to exist and be read** |, | +| Machine-readable SBOM, kept for the support period | **Done 2026-10-09**: [`tools/sbom.py`](../tools/sbom.py) generates CycloneDX 1.6 and SPDX 2.3 from the build's own component list, with each licence scanned from the component's own `SPDX-License-Identifier` tags and anything untagged reported as `NOASSERTION` rather than guessed. CI generates it inside the IDF container, the release workflow publishes both formats as release assets. What is left is **keeping** them for the support period, which is a retention decision rather than a tool |, | +| Monitoring vulnerabilities in third-party components | No process. ESP-IDF and mbedTLS advisories need a reader |, | +| Security updates free of charge, with an advisory | `SWR-UPD-16` specifies it; the release channel does not exist |, | +| Article 14 reporting: 24 h early warning, 72 h notification, 14-day final report, to ENISA and the CSIRT | **No procedure, nobody named, and it applies from 11 September 2026.** The sharp end of `SRR-14` |, | +| Users informed without undue delay in the same cases | Covered by the same procedure, which does not exist |, | +| Declared support period, at least five years, stated to the user | `SWR-UPD-16` requires the declaration. **The number has not been chosen**, and the service life of a kiln controller is well beyond the floor |, | +| Annex II information for users: contact, point of contact, intended use, limitations, how updates arrive, end of support, secure disposal | Not written. It belongs with the instructions that `SYS-SAF-24` already shapes |, | +| Annex VII technical documentation, including the cybersecurity risk assessment | **Mostly already here.** This document and [`security.sdoc`](security.sdoc) are a risk assessment in all but name; they need framing as the Annex VII one and keeping current, which Article 13(2) requires rather than suggests |, | +| Conformity assessment route, CE marking, EU declaration of conformity | Depends on classification. A kiln controller does not appear in Annex III, so self-assessment should be available, but that is a conclusion to record and defend: [`OQ-R5`](01_user_req.sdoc) |, | +| Evidence of security testing and review | **Evidence, not work**: fuzzing, ASan and UBSan in CI, `clang-tidy` on host and target, MC/DC over the safety logic, requirement-to-source traceability. It needs citing in the file, not performing again |, | + +The Owner column is deliberately empty. Every row of the second table needs a +name against it, and this document cannot supply one. + +### 13.3 What to do first + +Not the longest item, the one that is a weakness today: + +1. ~~Close `OQ-S4`.~~ **Done 2026-10-09**, by deleting the access point rather + than regulating it. The remaining items are all either unbuilt or paperwork. +2. **Create and read the `SECURITY.md` mailbox**, and write the Article 14 + procedure behind it, because that clock starts in September 2026 and runs + whether or not the firmware is finished. +3. **Choose the support period.** It gates `SWR-UPD-16`, the Annex II + information and the SBOM retention, and it is a sentence rather than a + project. +4. Then the update path, `H2` steps 2 to 7, which is the largest piece of + engineering on the list and the one with the latest deadline. diff --git a/docs/security.sdoc b/docs/security.sdoc index ba78630..38eb1ea 100644 --- a/docs/security.sdoc +++ b/docs/security.sdoc @@ -2,7 +2,7 @@ TITLE: Safe Kiln Controller, Security Concept UID: SAFEKILN-SECURITY VERSION: 0.1 (draft) -DATE: 2026-10-08 +DATE: 2026-10-09 OPTIONS: MARKUP: Markdown VIEW_STYLE: Table @@ -462,15 +462,19 @@ RELATIONS: [THREAT] UID: TH-04 STATEMENT: >>> -**Hostile firmware upload.** +**Hostile firmware reaching the device.** <<< CONSEQUENCE: >>> -Would have been total and persistent control of the heater. +Total and persistent control of the heater. <<< -SAFETY_RELEVANT: Closed -STATUS: Resolved +SAFETY_RELEVANT: Yes +STATUS: Active COMMENT: >>> -**Closed by [LINK: SWR-UPD-01].** No image is accepted over the network. Note the cost: the device now has **no field update path at all** ([LINK: OQ-08]), so a security fix needs a physical visit. Carried as [LINK: SRR-11], which blocks release. +**Closed on 2026-10-06, reopened on 2026-10-09.** [LINK: SWR-UPD-01] used to close this threat absolutely, by accepting no image over the network at all. The Cyber Resilience Act requires that security fixes can reach a unit ([LINK: UR-REG-004]), `OQ-08` answered that with the pull path of [LINK: SWR-UPD-09] onwards, and a threat that is closed by the absence of a feature reopens when the feature arrives. Saying so is the point of keeping the node. + +What stands in place of closure is no longer one property but three that have to hold together, and [LINK: SEC-12] is where they are stated: the manifest and the image verify against an **offline** key, nothing on the network can initiate or authorise an install ([LINK: SWR-UPD-08]), and the install waits for a person at the display ([LINK: SWR-UPD-12]). An attacker needs the key **and** somebody at the kiln pressing to confirm. + +Kept as one threat rather than split into push and pull, because the asset and the consequence are unchanged and only the route is new. <<< RELATIONS: - TYPE: Parent @@ -479,9 +483,6 @@ RELATIONS: - TYPE: Parent VALUE: HZ-01 ROLE: Reaches -- TYPE: Child - VALUE: SWR-UPD-01 - ROLE: Closed by [THREAT] UID: TH-05 @@ -492,7 +493,7 @@ VIA: >>> [LINK: ADV-2]; the operator's own browser is the confused deputy. <<< CONSEQUENCE: >>> -Reduced by [LINK: TH-01] to [LINK: TH-04] being closed: the worst a forged request can now do is **edit a stored firing program**, which takes effect only if an operator starts it at the kiln. +Reduced by [LINK: TH-01] to [LINK: TH-03] being closed, and by [LINK: TH-04] having no inbound route to it: the worst a forged request can now do is **edit a stored firing program**, which takes effect only if an operator starts it at the kiln. <<< SAFETY_RELEVANT: Indirect STATUS: Active @@ -623,15 +624,17 @@ STATEMENT: >>> **Open provisioning access point.** <<< VIA: >>> -[LINK: SWR-NET-02] AP fallback; if `net.ap_pass` is empty the AP is open. +The AP fallback of the withdrawn `SWR-NET-02`; if `net.ap_pass` was empty the AP was open. <<< CONSEQUENCE: >>> -Anyone in radio range reaches the provisioning page and can supply their own credentials. +Anyone in radio range reached the provisioning page and could supply their own credentials. <<< -SAFETY_RELEVANT: Yes -STATUS: Active +SAFETY_RELEVANT: Closed +STATUS: Resolved COMMENT: >>> -**Has no security goal.** The stale appendix routed it through `SEC-01`, which is withdrawn. This is the most security-sensitive surface the device has and the one most likely to be reachable without credentials, and it is currently answered by nothing but [LINK: OQ-S4]. Carried as [LINK: SRR-08]. +**Closed 2026-10-09 by deleting the access point**, not by giving it a passphrase rule. It never had a security goal: the stale appendix routed it through `SEC-01`, which is withdrawn, and for a while nothing stood against it but [LINK: OQ-S4]. + +[LINK: SWR-NET-11] and [LINK: SWR-NET-12] move network setup to the local display, so the most security-sensitive surface this device had, a page that exists to accept credentials, reachable by anybody in radio range, is gone rather than guarded. What replaces it needs physical presence, which is the same answer [LINK: SEC-12] gives for firmware and `SEC-00` gives for control. <<< RELATIONS: - TYPE: Parent @@ -689,6 +692,57 @@ RELATIONS: VALUE: ADV-1 ROLE: Exploited by +[THREAT] +UID: TH-14 +STATEMENT: >>> +**A hostile or impersonated update service.** +<<< +VIA: >>> +DNS spoofing or interception on the LAN ([LINK: ADV-1]), a compromise of `update.bitcrushtesting.com` or of the release process behind it ([LINK: ADV-6]), or an attacker on the path from the internet ([LINK: ADV-5]). +<<< +CONSEQUENCE: >>> +A manifest or an image of the attacker's choosing, which is [LINK: A-6] and therefore [LINK: A-1]. It fails unless they also hold the offline signing key; with the key, the last obstacle left is the person at the display. +<<< +SAFETY_RELEVANT: Yes +STATUS: Active +COMMENT: >>> +**This is the threat the update path buys, and it is why [LINK: SWR-UPD-11] refuses to lean on TLS.** Certificate validation is required and is not load-bearing: taking over the host, the DNS or the connection gets an attacker as far as *silence*, because what they serve has to verify against a key that is not on the server. Silence is its own problem, a fix that never arrives rather than a hostile one that does, and it is carried as [LINK: SRR-12] rather than pretended away here. +<<< +RELATIONS: +- TYPE: Parent + VALUE: A-6 + ROLE: Threatens +- TYPE: Parent + VALUE: ADV-5 + ROLE: Exploited by +- TYPE: Parent + VALUE: HZ-01 + ROLE: Reaches + +[THREAT] +UID: TH-15 +STATEMENT: >>> +**Downgrade to a release whose vulnerability is published.** +<<< +VIA: >>> +Replaying an older, genuinely signed manifest, or standing up a mirror and getting it into `update.url`. +<<< +CONSEQUENCE: >>> +A unit returned to a version with a known hole, after which the hole is the attack. The signature verifies, because the image is authentic; it is merely old. +<<< +SAFETY_RELEVANT: Indirect +STATUS: Active +COMMENT: >>> +Worth stating separately from [LINK: TH-14] because a signature does not stop a replay, and the usual reflex, "images are signed", does not answer it. [LINK: SWR-UPD-13] does: no image installs unless its version is **strictly greater** than the running one, and the service offers no route to a downgrade. The eFuse anti-rollback counter is deliberately **not** burnt, for the reason `security.md` section 6.2 gives: it would make the counter, rather than the operator, the thing that decides whether a unit can ever be recovered. +<<< +RELATIONS: +- TYPE: Parent + VALUE: A-6 + ROLE: Threatens +- TYPE: Parent + VALUE: ADV-1 + ROLE: Exploited by + [[/SECTION]] [[SECTION]] @@ -851,7 +905,9 @@ The device reveals and transmits nothing to third parties. IMPLEMENTATION: Built STATUS: Active COMMENT: >>> -Structurally: there is no cloud client, no telemetry, no analytics and no outbound connection in the codebase. This is a property of what was never written, which is why it carries no threat relation: it answers no specific threat and forecloses a category. +Structurally: there is no cloud client, no telemetry and no analytics. This is a property of what was never written, which is why it carries no threat relation: it answers no specific threat and forecloses a category. + +**Amended 2026-10-09**, because "no outbound connection in the codebase" stops being true when the update check of [LINK: SWR-UPD-09] is built. The goal survives the change, and it survives on a distinction worth being explicit about rather than comfortable with: the update service is the **manufacturer's own**, not a third party, and the request carries nothing about the device ([LINK: SWR-UPD-10]) because the manifest is static and the version comparison is local. What it unavoidably reveals is an IP address and a time, to the party that sold the unit, and that is carried as [LINK: SRR-13]. The time client is the other outbound connection and the less tidy one, since an NTP server **is** a third party; [LINK: SWR-NFR-21] now says so out loud. <<< RELATIONS: - TYPE: Child @@ -957,6 +1013,89 @@ RELATIONS: VALUE: SWR-NFR-20 ROLE: Realised by +[SECURITY_GOAL] +UID: SEC-12 +STATEMENT: >>> +**Only firmware the manufacturer signed can be installed, and only a person at the kiln can install it.** +<<< +IMPLEMENTATION: Spec +STATUS: Active +COMMENT: >>> +The goal that carries the reopened [LINK: TH-04]. It is three independent conditions, and the design is worth no more than the weakest of them: + +1. **Authenticity from an offline key.** The manifest is signed and verified against a public key in the image, and the image is verified against its own appended signature as well as the manifest's digest ([LINK: SWR-UPD-11]). Nothing here depends on the server, the DNS or TLS being honest. +2. **No network authority.** No request can initiate, offer, authorise, postpone or cancel an install ([LINK: SWR-UPD-08]); the device decides when to *ask* and the operator decides whether to *install*. `SEC-00` keeps its absolute form because this path creates no inbound route. +3. **A person at the display.** The install happens on a deliberate local confirmation ([LINK: SWR-UPD-12], [LINK: SWR-HMI-16]) and never automatically, which is also what keeps the attacker who somehow holds the key from reaching an unattended kiln. + +`Spec`, and the honest status is weaker than that word suggests: the HTTP client, the manifest verifier, the screen and the rollback discipline of [LINK: SWR-UPD-15] are all unwritten. Until they exist, [LINK: SRR-11] stands and nothing here may be cited as a deployed control. +<<< +RELATIONS: +- TYPE: Parent + VALUE: TH-04 + ROLE: Addresses +- TYPE: Parent + VALUE: TH-14 + ROLE: Addresses +- TYPE: Parent + VALUE: TH-15 + ROLE: Addresses +- TYPE: Child + VALUE: SWR-UPD-08 + ROLE: Realised by +- TYPE: Child + VALUE: SWR-UPD-11 + ROLE: Realised by +- TYPE: Child + VALUE: SWR-UPD-12 + ROLE: Realised by +- TYPE: Child + VALUE: SWR-UPD-13 + ROLE: Realised by +- TYPE: Child + VALUE: SWR-UPD-15 + ROLE: Realised by + +[SECURITY_GOAL] +UID: SEC-13 +STATEMENT: >>> +**What happened to the device is recorded, and the owner may turn that off.** +<<< +IMPLEMENTATION: Spec +STATUS: Active +COMMENT: >>> +Required as of 2026-10-09 by [LINK: SWR-LOG-16], and the gap it closes had never been named: the event log existed for *process* events, and nothing asked it to record a refused manifest, a rollback, a configuration change or a client joining the provisioning access point. Those are the records that answer "was this attempted here", which is a question no amount of prevention answers after the fact. + +Two halves worth keeping together. [LINK: UR-REG-004] asks for the log **and** for a user opt-out, and the second half is not a loophole: a device that records access to itself regardless of its owner's wishes is a surveillance feature wearing a security label. The same reasoning as [LINK: SWR-UPD-10]'s refusal to put an identifier in the update check. + +It also has a failure mode of its own, which is why the requirement is explicit about it: a log that captures credentials or request bodies is a second copy of [LINK: SRR-05] in a file the operator can read over the network. +<<< +RELATIONS: +- TYPE: Child + VALUE: SWR-LOG-16 + ROLE: Realised by + +[SECURITY_GOAL] +UID: SEC-14 +STATEMENT: >>> +**The owner can permanently erase everything the device knows, from the device.** +<<< +IMPLEMENTATION: Spec +STATUS: Active +COMMENT: >>> +Required as of 2026-10-09 by [LINK: SWR-CFG-09]. Until then the answer to [LINK: ADV-4], the person who buys a second-hand controller, was an instruction in a manual: "erase flash before disposing of or selling a device". That is an obligation most owners will not discharge, it needs a cable and a tool, and [LINK: UR-REG-004] asks for the capability to be **in the product**. + +The distinction that makes this a real requirement rather than a menu entry: erasure means the bytes are gone, not that the index no longer points at them. The test reads the raw partition back and looks for the secret. A factory reset that clears a flag and leaves `net.wifi_pass` recoverable in a flash dump would satisfy a tick-box and nothing else. + +It does **not** erase the production data block of [LINK: SWR-PROD-01]: a serial number identifies the unit for its whole life and is not the owner's data. That boundary is the one place this goal and [LINK: A-4] disagree, and the partition split already decided it. +<<< +RELATIONS: +- TYPE: Parent + VALUE: TH-06 + ROLE: Addresses +- TYPE: Child + VALUE: SWR-CFG-09 + ROLE: Realised by + [[/SECTION]] [[SECTION]] @@ -1030,16 +1169,16 @@ RELATIONS: [SECURITY_RESIDUAL_RISK] UID: SRR-04 STATEMENT: >>> -**Firmware images are validated but not authenticated.** [LINK: SWR-UPD-03] requires checking an image is *valid for this target*; no requirement anywhere asks for a **signature**, and secure boot is not enabled. +**Firmware images are validated but not authenticated, in the shipped firmware.** [LINK: SWR-UPD-03] requires checking an image is *valid for this target*. A requirement asking for a **signature** finally exists, [LINK: SWR-UPD-11] as of 2026-10-09, and secure boot has existed as a provisioning step since 2026-10-08; neither is implemented in the application, and a default build is neither signed nor provisioned. <<< WHY_IT_STANDS: >>> -Signing was never specified. +Signing is specified now and built nowhere. The secure boot mechanism is opt-in rather than default, so an unprovisioned board authenticates nothing, and [LINK: SWR-UPD-11]'s manifest and image verification is a requirement with no code behind it yet. <<< CARRIED_BY: >>> The project. <<< MITIGATION: >>> -Only [LINK: SWR-UPD-08]'s authentication stands between an attacker and [LINK: TH-04], and that is specification only. With secure boot absent, physical reflash ([LINK: ADV-3]) bypasses it entirely. Open as [LINK: OQ-S2]. +Only [LINK: SWR-UPD-08]'s authentication stands between an attacker and [LINK: TH-04], and that is specification only. On an unprovisioned board, physical reflash ([LINK: ADV-3]) bypasses it entirely. [LINK: OQ-S2] is `Resolved` as of 2026-10-09 without closing this: a unit taken through `tools/secure-boot.py` will not run unsigned code, the supervisor has no equivalent and is deliberately not getting one, and no requirement asks for either. What is left for this risk is a `SWR-` for signing, not a mechanism. <<< STATUS: Active RELATIONS: @@ -1059,7 +1198,7 @@ CARRIED_BY: >>> The owner, and anyone who disposes of a device. <<< MITIGATION: >>> -None. [LINK: ADV-4] is the under-considered case: a device sold on or thrown out carries the credentials with it. Open as [LINK: OQ-S3]. +[LINK: SEC-14]'s factory reset, specified on 2026-10-09 as [LINK: SWR-CFG-09] and not yet built, which turns [LINK: ADV-4] from "a device sold on carries the credentials with it" into "a device sold on without being reset does". That is a real improvement and not a solution: the credentials are still plaintext while the device is in service, which is [LINK: OQ-S3] and is no longer a matter of taste, [LINK: UR-REG-004] asking for stored data to be protected by state-of-the-art means. <<< STATUS: Active RELATIONS: @@ -1110,16 +1249,16 @@ RELATIONS: [SECURITY_RESIDUAL_RISK] UID: SRR-08 STATEMENT: >>> -**The AP fallback may be open.** [LINK: SWR-NET-02] starts an access point with a provisioning page; nothing requires `net.ap_pass` to be non-empty. +**The AP fallback may be open.** The withdrawn `SWR-NET-02` started an access point with a provisioning page, and nothing required `net.ap_pass` to be non-empty. <<< WHY_IT_STANDS: >>> -No minimum-passphrase rule exists. +It does not. **Closed 2026-10-09 by removing the access point**, not by adding the minimum-passphrase rule this asked for. [LINK: SWR-NET-11] and [LINK: SWR-NET-12] put network setup on the local display, `net.ap_ssid` and `net.ap_pass` are gone from the schema, and the device raises no second radio for anybody to reach. <<< CARRIED_BY: >>> -The installer. +Nobody, now. It was the installer's. <<< MITIGATION: >>> -None. The provisioning page is the most security-sensitive surface the device has, and it is the one most likely to be reachable without credentials. Open as [LINK: OQ-S4]. +The surface is deleted rather than guarded, which is the strongest form this document recognises and the same move `SEC-00` made for the web interface. What replaces it can only be used by somebody standing at the kiln. <<< STATUS: Active RELATIONS: @@ -1150,16 +1289,16 @@ RELATIONS: [SECURITY_RESIDUAL_RISK] UID: SRR-11 STATEMENT: >>> -**No field update path.** Removing OTA closed [LINK: TH-04] completely and left the device with no way to receive a fix, including a security fix, without physical access. +**No field update path, in a shipped image.** Removing OTA closed [LINK: TH-04] completely and left the device with no way to receive a fix, including a security fix, without physical access. <<< WHY_IT_STANDS: >>> -[LINK: SWR-UPD-01] was inverted deliberately; the replacement is [LINK: OQ-08] and is not yet specified. +**Specified 2026-10-09, built not at all.** `OQ-08` is resolved and [LINK: SWR-UPD-09] to [LINK: SWR-UPD-16] say what the path is, so what stands between a unit and a security fix is no longer a decision anybody still has to take. It is the HTTP client, the manifest verifier, the update screen and the rollback discipline, none of which exist, on a target that has no HTTP transport either ([LINK: SRR-01]). <<< CARRIED_BY: >>> -The project. **This blocks release**, not merely an open question. +The project. **This blocks release**, and it blocks the SoldUnits route specifically, because [LINK: UR-REG-004]'s main obligations apply from 11 December 2027. <<< MITIGATION: >>> -None. A vulnerability found after shipping currently requires visiting every device. +[LINK: SWR-UPD-14]'s USB path, which is real today and needs a visit to every device. Nothing else, until the pull path is written. <<< STATUS: Active RELATIONS: @@ -1167,6 +1306,68 @@ RELATIONS: VALUE: TH-04 ROLE: Remains against +[SECURITY_RESIDUAL_RISK] +UID: SRR-12 +STATEMENT: >>> +**The update service is a dependency, and the signing key is the fleet.** Every unit that updates itself depends on `update.bitcrushtesting.com` resolving, answering and being honest, and on a key the project keeps. Lose the key and no unit can be updated again; lose the host, let the domain lapse or let somebody else acquire it, and the same is true with an additional hazard attached. +<<< +WHY_IT_STANDS: >>> +Inherent in any pull update path. The alternative, no update path, is [LINK: SRR-11], and it is worse. +<<< +CARRIED_BY: >>> +The project, for the lifetime of the support period, which outlasts most of the decisions in this document. +<<< +MITIGATION: >>> +The key is offline and is not the secure boot key; [LINK: SWR-UPD-11] means a compromise of the host alone yields silence rather than control; [LINK: SWR-UPD-12] means even a compromise of the key still needs somebody at the kiln; `update.url` lets a site mirror the service; and [LINK: SWR-UPD-14]'s USB path survives the service disappearing entirely. What has no technical mitigation is the domain and the key outliving the project's interest in them, which is an organisational commitment and should be written as one. +<<< +STATUS: Active +RELATIONS: +- TYPE: Parent + VALUE: SEC-12 + ROLE: Remains under + +[SECURITY_RESIDUAL_RISK] +UID: SRR-13 +STATEMENT: >>> +**The check tells the manufacturer that a device exists, and needs the device to reach the internet.** A daily HTTPS GET discloses an IP address and a time to the party that sold the unit, and a device on a segment with no outbound route never checks at all. +<<< +WHY_IT_STANDS: >>> +Any pull path reveals this much by existing. It is the price of not building a push path, which would have cost [LINK: SEC-00]'s absolute form instead. +<<< +CARRIED_BY: >>> +The owner. +<<< +MITIGATION: >>> +[LINK: SWR-UPD-10] keeps the request free of anything about the device: static manifest, local comparison, no identifier, no version, no query. The check is disableable at the display and redirectable with `update.url`, so a site that will not let the controller out can mirror the manifest internally. Note the tension with [LINK: SRR-09], which advises an isolated segment: that advice and the update path now pull in opposite directions, and the documentation has to say which the owner should prefer and why, rather than printing both. +<<< +STATUS: Active +RELATIONS: +- TYPE: Parent + VALUE: SEC-06 + ROLE: Remains under + +[SECURITY_RESIDUAL_RISK] +UID: SRR-14 +STATEMENT: >>> +**The Cyber Resilience Act's non-firmware obligations have no owner, no dates and no artefacts.** No published disclosure policy until 2026-10-09, no machine-readable SBOM, no procedure for the Article 14 reporting route, no declared support period, no Annex II information for users, and no decision on the conformity assessment route. None of it is code, and none of it is discharged by writing code. +<<< +WHY_IT_STANDS: >>> +The project's instinct, and the reason its technical documentation is unusually good, is to answer a requirement by building something. Roughly half of what [LINK: UR-REG-004] requires cannot be built: it is a mailbox somebody reads, a file kept for five years, a date declared in a manual, and a report filed within 24 hours by a person who knows they have to. +<<< +CARRIED_BY: >>> +The project, and specifically whoever signs the declaration of conformity. The **reporting** half is the sharp end: it applies from **11 September 2026**, more than a year before the main obligations of 11 December 2027, and it does not wait for the firmware. +<<< +MITIGATION: >>> +Two of the rows are closed as of 2026-10-09. `SECURITY.md` carries the disclosure policy, the single point of contact and the reporting commitments. The SBOM of [LINK: SWR-NFR-28] is a real build output, `tools/sbom.py`, generated from the component list the build writes and from the licence tags in each component's own sources, published in both CycloneDX and SPDX by the release workflow; what remains of that row is **retaining** the documents for the support period, which needs the period chosen. + +Everything else stands. [LINK: SWR-UPD-16] requires the support period to be declared and nobody has declared it, and a requirement is not an artefact: `security.md` section 13 is the inventory, and most rows of its second table still need a name against them. The reporting procedure is the one with a date attached. +<<< +STATUS: Active +RELATIONS: +- TYPE: Parent + VALUE: SEC-12 + ROLE: Remains under + [[/SECTION]] [[SECTION]] @@ -1200,9 +1401,9 @@ UID: OQ-S2 STATEMENT: >>> Should firmware images be **signed** ([LINK: SWR-UPD-03] requires validity, not authenticity), and should secure boot be enabled? <<< -STATUS: Active +STATUS: Resolved COMMENT: >>> -Both have real field-recovery costs for an open-source device users are expected to build themselves. Bound up with [LINK: OQ-08], since whatever replaces the removed update path has to answer this at the same time. +**Answered 2026-10-09, differently for each of the two microcontrollers of [LINK: SWA-22], with the argument in `security.md` section 6.1.** ESP32-S3: **yes**, signed images and Secure Boot V2, but as a per-unit provisioning step (`sdkconfig.secure`, `tools/secure-boot.py`) rather than a project default, because the field-recovery cost this question named is real and falls on self-builders: the key holder becomes the only party who can ever update a provisioned board. Supervisor (STM32G031K8T6): **no**, and there is nothing to enable, the G0 line having no ROM-verified signature chain and this part no key store or crypto accelerator; the readout protection it does have is refused on purpose, because RDP Level 2 is irreversible and would close the SWD that [LINK: SWA-22]'s independence argument depends on, while [LINK: ADV-3] can jumper the permit line more cheaply than reflash anything. Program-memory integrity is covered at run time by a CRC-32 over the whole image instead. This closes the question without closing [LINK: SRR-04], which stands while the default build is unsigned and no requirement asks otherwise. [LINK: OQ-08] is untouched, and now has a signing mechanism to use. <<< RELATIONS: - TYPE: Parent @@ -1216,7 +1417,9 @@ Should flash encryption be enabled by default? <<< STATUS: Active COMMENT: >>> -It complicates self-builders and field debugging, and it is the only answer to [LINK: SRR-05]. +It complicates self-builders and field debugging, and it is the only answer to [LINK: SRR-05] while the device is in service. + +**Reframed 2026-10-09, and the framing is the point.** This was recorded as a trade-off the project could decline, between a security property and the convenience of people who build their own boards. On the SoldUnits route it is not: [LINK: UR-REG-004] requires the confidentiality of stored data to be protected by state-of-the-art means, and the user's WiFi password sits in plaintext NVS. The two routes can diverge here, a self-build staying unencrypted and a sold unit not, in the same way [LINK: OQ-S2] let secure boot be a per-unit provisioning decision; what cannot happen is the question staying open while units ship. [LINK: SEC-14]'s factory reset reduces the disposal case and does nothing for a board lifted out of a working kiln. <<< RELATIONS: - TYPE: Parent @@ -1228,9 +1431,13 @@ UID: OQ-S4 STATEMENT: >>> Should `net.ap_pass` have an enforced minimum, or should the access point refuse to start open? <<< -STATUS: Active +STATUS: Resolved COMMENT: >>> [LINK: TH-11] currently has no security goal at all, so this question is the only thing standing against it. + +**Promoted on 2026-10-09 from an open question to the one on the critical path, and answered the same day by removing what it asked about.** [LINK: UR-REG-004] requires a product to be shipped in a secure default configuration, and an access point that will start with no passphrase is a default-insecure state rather than a flexible one. It was the only item on the Act's list that was a live weakness in code that existed; the rest was unbuilt or paperwork. + +The answer is neither of the two this question offered. There is no minimum passphrase and no refusal to start open, because **there is no access point**: [LINK: SWR-NET-11] and [LINK: SWR-NET-12] put network setup on the local display, `net.ap_ssid` and `net.ap_pass` leave the schema, and [LINK: TH-11] and [LINK: SRR-08] close with them. A rule about a surface is worth less than not having the surface. <<< RELATIONS: - TYPE: Parent diff --git a/docs/v-model-process.md b/docs/v-model-process.md index c1d40c4..1393feb 100644 --- a/docs/v-model-process.md +++ b/docs/v-model-process.md @@ -37,7 +37,7 @@ User Requirements ──────────────────── | 2 | System Requirements | `02_system_req.sdoc` | `SYS-` | `UR-` | System Tests | | 3 | Software Requirements | `03_software_req.sdoc` | `SWR-` | `SYS-` | Integration Tests | | 4 | Software Architecture | `04_software_arch.sdoc`| `SWA-` | `SWR-` | Software Tests | -| 5 | Unit Design | `05_unit_design.sdoc` | `SWD-` | `SWA-` | Unit Tests | +| 5 | Unit Design | Doxygen in the source | see §4.5 | `SWA-` | Unit Tests | | 6 | Implementation | `src/` | – | `SWD-` | – | | # | Test level | Document | UID prefix | Verifies | @@ -134,7 +134,7 @@ in section 8. - **Exit criteria:** every `SWR-` is allocated to at least one component; every interface is specified on both sides. -### 4.5 Unit Design (`SWD-`) +### 4.5 Unit Design - **Purpose:** specify each unit in enough detail to implement and test it. - **Input:** software architecture. @@ -143,6 +143,40 @@ in section 8. - **Exit criteria:** every `SWA-` component is broken down into units; every unit design element is testable in isolation. +**This level is generated from the source and has no `.sdoc` of its own**, and +the departure from the pattern is deliberate. Every other level describes +something that does not exist yet; this one describes code that does. A +separate document saying what a function's parameters, ranges and error +behaviour are is a second description of the same thing, and when the two +disagree it is found by whoever is auditing rather than by whoever is editing. + +So the unit design lives in Doxygen comments beside each unit, and +[`tools/udd.sh`](../tools/udd.sh) produces the document. Three consequences +worth stating: + +- **There are no `SWD-` identifiers.** A unit's identity is its name, which the + compiler already enforces and nothing can silently rename. What rule 6 of + section 8 asks of a `SWD-`, that it trace up and down, is carried by + `\implements`, `\derivedfrom` and `\verifiedby`, each of which becomes a + cross-referenced index page in the generated document. +- **The gate is doxygen's warnings**, with `WARN_AS_ERROR`, so an undocumented + function, struct or parameter fails CI rather than producing a document with + a hole in it. That needs `EXTRACT_ALL = NO` **and** `HIDE_UNDOC_MEMBERS = + NO`, which is the only one of the four combinations that warns; the + Doxyfile's table records the other three, each of which is silent. +- **Coverage is counted separately**, by `tools/udd-coverage.py`, and the + separation has earned itself twice. Doxygen cannot see a file that carries no + `\file` block at all, members included, and says nothing about it: two of + the four headers were in exactly that state while the build was green. It + also cannot notice that an `EXCLUDE_SYMBOLS` pattern meant to exempt the + board layer has reached into the safety function and quietly removed five + documented constants, which is what happened and what the count caught. + +The fields each unit carries, and why those: `firmware/supervisor/Doxyfile` +states the five questions an assessment under EN ISO 13849-1:2023 cl. 4.6 or +EN IEC 60730-1 Annex H actually asks of a safety function, and each alias +exists to answer one of them in a fixed place. + ## 5. Implementation - **Purpose:** realise the unit design in source code. @@ -347,7 +381,7 @@ and its realisation is visible rather than assumed away. | 2 System requirements | [`02_system_req.sdoc`](02_system_req.sdoc) | `SYS-HW-`, `SYS-SAF-`, `SYS-ASM-` | written | | 3 Software requirements | [`03_software_req.sdoc`](03_software_req.sdoc) | `SWR-` + area | written | | 4 Software architecture | [`04_software_arch.sdoc`](04_software_arch.sdoc) | `SWA-` | written | -| 5 Unit design | `05_unit_design.sdoc` | `SWD-` | **not written** | +| 5 Unit design | Doxygen comments in the source, built by [`tools/udd.sh`](../tools/udd.sh) | not `SWD-`, see below | **Written for the supervisor, and generated rather than maintained.** All four headers complete: 76 of 76 public functions and constants, with no exemption in `core/` or `protocol/`. Enforced two ways, and both are needed. The controller has none. | | 7 Unit tests | `07_unit_tests.sdoc` | `UT-` | **not written** | | 8 Software tests | `08_software_tests.sdoc` | `SWT-` | **not written** | | 9 Integration tests | `09_integration_tests.sdoc` | `IT-` | **not written** | @@ -407,12 +441,19 @@ finished units placed on the market by Bitcrush Testing, and a published design built by somebody else who then becomes the manufacturer of the finished machine. `UR-REG-` items carry a `ROUTE` field for this reason. -One finding from writing that section deserves to be read by anyone planning a +One finding from writing that section deserved to be read by anyone planning a release: **the Cyber Resilience Act requires security updates to be available, -and this device has no field update path at all.** That is `UR-REG-004` against -`SRR-11`, and it means `OQ-08` is now a regulatory deadline rather than an -engineering preference. Two further questions, `OQ-R1` on whether the controller -is a machinery safety component and `OQ-R2` on the radio conformity route, decide +and this device had no field update path at all.** That was `UR-REG-004` against +`SRR-11`, and it made `OQ-08` a regulatory deadline rather than an engineering +preference. `OQ-08` and `OQ-R4` were answered on 2026-10-09: the device pulls a +signed manifest from `update.bitcrushtesting.com`, the local display announces an +available release, and the operator confirms there, with the web interface +staying read-only ([`security.md` §6.2](security.md), `SWR-UPD-09` to +`SWR-UPD-16`). The deadline has not gone away, it has changed character: +`SRR-11` now stands on **implementation** rather than on an open decision, and +the CRA's reporting obligations start on 11 September 2026 regardless of what the +firmware does. Two further questions, `OQ-R1` on whether the controller is a +machinery safety component and `OQ-R2` on the radio conformity route, still decide how expensive the sold-units route is. None of section 2 is a conformity assessment, and `SYS-SAF-24` already requires the documentation to say what this device is not. diff --git a/firmware/controller/components/kiln_core/include/kiln_core/configmodel.h b/firmware/controller/components/kiln_core/include/kiln_core/configmodel.h index 9d6620c..12fad39 100644 --- a/firmware/controller/components/kiln_core/include/kiln_core/configmodel.h +++ b/firmware/controller/components/kiln_core/include/kiln_core/configmodel.h @@ -71,8 +71,9 @@ typedef enum { typedef enum { KILN_WIFI_STA = 0, - KILN_WIFI_AP, - KILN_WIFI_STA_AP_FALLBACK, /* SWR-NET-02 */ + /* Station and nothing else since the provisioning AP was removed: the + * operator joins a network at the display (SWR-NET-11, SWR-NET-12), so + * there is no second mode to configure and no `net.wifi_mode` item. */ KILN_WIFI_MODE_COUNT, } kiln_wifi_mode_t; @@ -159,11 +160,8 @@ typedef struct { uint16_t alarm_duration_s; /* network */ - uint8_t wifi_mode; /* kiln_wifi_mode_t */ char wifi_ssid[KILN_CFG_STR_LEN]; char wifi_pass[KILN_CFG_PASS_LEN]; - char ap_ssid[KILN_CFG_STR_LEN]; - char ap_pass[KILN_CFG_PASS_LEN]; char hostname[KILN_CFG_HOST_LEN]; char ntp_server[KILN_CFG_HOST_LEN]; char timezone[KILN_CFG_HOST_LEN]; diff --git a/firmware/controller/components/kiln_core/src/configmodel.cpp b/firmware/controller/components/kiln_core/src/configmodel.cpp index 078236a..b8594b9 100644 --- a/firmware/controller/components/kiln_core/src/configmodel.cpp +++ b/firmware/controller/components/kiln_core/src/configmodel.cpp @@ -10,7 +10,6 @@ namespace { const char *const k_recovery_names[] = { "abort", "resume" }; -const char *const k_wifi_names[] = { "sta", "ap", "sta_ap_fallback" }; const char *const k_units_names[] = { "C", "F" }; const char *const k_lang_names[] = { "en", "de" }; const char *const k_tc_names[] = { "B", "E", "J", "K", "N", "R", "S", "T" }; @@ -122,11 +121,12 @@ const kiln_cfg_item_t k_items[] = { NUM("hmi.alarm_duration_s", "s", "SWR-RUN-06", KILN_CFG_T_U16, alarm_duration_s, 0, 600, 30, 0), /* network */ - ENUMI("net.wifi_mode", "SWR-NET-02", wifi_mode, k_wifi_names, KILN_WIFI_MODE_COUNT, KILN_WIFI_STA_AP_FALLBACK, BOOTR), - STR("net.wifi_ssid", "SWR-NET-01", wifi_ssid, KILN_CFG_STR_LEN, "", BOOTR), - STR("net.wifi_pass", "SWR-NET-01", wifi_pass, KILN_CFG_PASS_LEN, "", BOOTR | SECRET), - STR("net.ap_ssid", "SWR-NET-02", ap_ssid, KILN_CFG_STR_LEN, "safekiln", BOOTR), - STR("net.ap_pass", "SWR-NET-02", ap_pass, KILN_CFG_PASS_LEN, "", BOOTR | SECRET), + /* Set at the display (SWR-NET-12) rather than typed into a configuration + * editor, and not BOOTR: joining a network takes effect when the operator + * confirms it, which is the moment they are standing there to see whether + * it worked. */ + STR("net.wifi_ssid", "SWR-NET-01", wifi_ssid, KILN_CFG_STR_LEN, "", 0), + STR("net.wifi_pass", "SWR-NET-01", wifi_pass, KILN_CFG_PASS_LEN, "", SECRET), STR("net.hostname", "SWR-NET-04", hostname, KILN_CFG_HOST_LEN, "kiln", BOOTR), STR("net.ntp_server", "SWR-LOG-12", ntp_server,KILN_CFG_HOST_LEN, "pool.ntp.org", 0), STR("net.timezone", "SWR-LOG-12", timezone, KILN_CFG_HOST_LEN, "UTC0", 0), diff --git a/firmware/controller/components/kiln_hal_esp32s3/src/hal_net.cpp b/firmware/controller/components/kiln_hal_esp32s3/src/hal_net.cpp index 9ad4073..3fca617 100644 --- a/firmware/controller/components/kiln_hal_esp32s3/src/hal_net.cpp +++ b/firmware/controller/components/kiln_hal_esp32s3/src/hal_net.cpp @@ -1,7 +1,7 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later * - * WiFi station with access-point fallback and SNTP (SWR-NET-01..SWR-NET-09, + * WiFi station, scanning, joining and SNTP (SWR-NET-01..SWR-NET-12, * except SWR-NET-04: see the note on mDNS below). * * --------------------------------------------------------------------------- @@ -62,8 +62,7 @@ typedef struct { uint32_t retry_ms; int64_t first_attempt_us; - uint16_t fallback_after_s; /* SWR-NET-02 */ - bool ap_started; + bool scanning; /* SWR-NET-11 */ bool sta_configured; esp_timer_handle_t retry_timer; } net_t; @@ -90,60 +89,103 @@ bool copy_checked(void *dst, size_t cap, const char *src, const char *what) return true; } -/* --- the AP fallback (SWR-NET-02, SWR-NET-05) ----------------------------- */ +/* --- scanning and joining (SWR-NET-11, SWR-NET-12) ------------------------ */ -/* SWR-NET-05: at least eight characters, device-unique, derived from the MAC so - * it can be printed on the display and on a label rather than being a shared - * secret every Safe Kiln Controller in the world has. */ -void default_ap_pass(char *out, size_t n) +/* There is no access point here any more. It used to come up when the station + * could not join, serving a provisioning page, and with it came a second + * passphrase to get wrong and a second radio anybody in the building could + * reach. The operator sets WiFi up at the display instead, which is a place + * only somebody at the kiln can use. */ + +kiln_err_t net_scan_begin(void *ctx) { - uint8_t mac[6] = {}; - (void)esp_read_mac(mac, ESP_MAC_WIFI_SOFTAP); - (void)snprintf(out, n, "kiln%02X%02X%02X", mac[3], mac[4], mac[5]); + (void)ctx; + if (s_net.scanning) { + return KILN_OK; + } + /* Active, all channels, and NOT blocking: a blocking scan would stall this + * task for two seconds, and the display has to keep saying "scanning". */ + wifi_scan_config_t sc = {}; + sc.show_hidden = false; + if (esp_wifi_scan_start(&sc, false) != ESP_OK) { + return KILN_ERR_IO; + } + s_net.scanning = true; + return KILN_OK; } -void start_ap(const kiln_config_t *cfg) +bool net_scan_busy(void *ctx) { - if (s_net.ap_started) { - return; + (void)ctx; + return s_net.scanning; +} + +uint8_t net_scan_results(void *ctx, kiln_net_ap_t *out, uint8_t max) +{ + (void)ctx; + if ((out == nullptr) || (max == 0u)) { + return 0; } - /* As elsewhere in this component: ESP-IDF's idiom is zero then assign, and - * wifi_config_t carries enums with no zero enumerator. The fields this - * code depends on are all set below; the rest the driver fills from its - * own defaults. - * NOLINTNEXTLINE(bugprone-invalid-enum-default-initialization) */ - wifi_config_t ap = {}; - const char *ssid = (cfg->ap_ssid[0] != '\0') ? cfg->ap_ssid : "safekiln"; - if (!copy_checked(ap.ap.ssid, sizeof(ap.ap.ssid), ssid, "net.ap_ssid")) { - ssid = "safekiln"; - (void)copy_checked(ap.ap.ssid, sizeof(ap.ap.ssid), ssid, "fallback"); + uint16_t found = 0; + if (esp_wifi_scan_get_ap_num(&found) != ESP_OK || found == 0u) { + return 0; } - ap.ap.ssid_len = (uint8_t)strlen(ssid); /* just copied from here */ - ap.ap.max_connection = 4; - ap.ap.channel = 1; - - if (cfg->ap_pass[0] != '\0' && strlen(cfg->ap_pass) >= 8u && - copy_checked(ap.ap.password, sizeof(ap.ap.password), cfg->ap_pass, - "net.ap_pass")) { - ap.ap.authmode = WIFI_AUTH_WPA2_PSK; - } else { - /* SWR-NET-05 again: never an open access point. An open AP serving the - * provisioning page would hand the kiln to anyone in radio range, and - * "the installer did not set one" is not a reason to do that. */ - char gen[16]; - default_ap_pass(gen, sizeof(gen)); - (void)copy_checked(ap.ap.password, sizeof(ap.ap.password), gen, "default"); - ap.ap.authmode = WIFI_AUTH_WPA2_PSK; - ESP_LOGW(TAG, "no AP passphrase configured; using the device default '%s'", gen); + if (found > max) { found = max; } + + /* One record at a time rather than an array of wifi_ap_record_t on the + * stack: the IDF record is ~80 bytes and twelve of them is a kilobyte this + * task does not have (architecture 13.4). */ + static wifi_ap_record_t recs[KILN_NET_SCAN_MAX]; + uint16_t n = (found > KILN_NET_SCAN_MAX) ? KILN_NET_SCAN_MAX : found; + if (esp_wifi_scan_get_ap_records(&n, recs) != ESP_OK) { + return 0; + } + + uint8_t kept = 0; + for (uint16_t i = 0; i < n && kept < max; i++) { + if (recs[i].ssid[0] == '\0') { + continue; /* hidden: nothing to show and nothing to pick */ + } + /* memcpy rather than a cast: the driver's SSID is uint8_t[33] and + * ours is char[33], the octets are the same octets, and reinterpreting + * the pointer to say so is a cast the profile forbids for good reason. + * Copying needs no claim about aliasing at all. */ + memcpy(out[kept].ssid, recs[i].ssid, sizeof(out[kept].ssid) - 1u); + out[kept].ssid[sizeof(out[kept].ssid) - 1u] = '\0'; + out[kept].rssi = recs[i].rssi; + out[kept].secured = (recs[i].authmode != WIFI_AUTH_OPEN); + kept++; + } + return kept; +} + +kiln_err_t net_connect(void *ctx, const char *ssid, const char *pass) +{ + (void)ctx; + if ((ssid == nullptr) || (ssid[0] == '\0')) { + return KILN_ERR_INVALID_ARG; + } + /* NOLINTNEXTLINE(bugprone-invalid-enum-default-initialization) */ + wifi_config_t sta = {}; + if (!copy_checked(sta.sta.ssid, sizeof(sta.sta.ssid), ssid, "ssid")) { + return KILN_ERR_RANGE; + } + if ((pass != nullptr) && (pass[0] != '\0') && + !copy_checked(sta.sta.password, sizeof(sta.sta.password), pass, "passphrase")) { + return KILN_ERR_RANGE; } - (void)esp_wifi_set_mode(s_net.sta_configured ? WIFI_MODE_APSTA : WIFI_MODE_AP); - (void)esp_wifi_set_config(WIFI_IF_AP, &ap); - s_net.ap_started = true; - s_net.state = KILN_NET_AP_FALLBACK; - (void)snprintf(s_net.ssid, sizeof(s_net.ssid), "%s", ssid); - (void)snprintf(s_net.ip, sizeof(s_net.ip), "%s", "192.168.4.1"); - ESP_LOGW(TAG, "access point '%s' up: no station connection", ssid); + (void)esp_wifi_disconnect(); + (void)esp_wifi_set_mode(WIFI_MODE_STA); + if (esp_wifi_set_config(WIFI_IF_STA, &sta) != ESP_OK) { + return KILN_ERR_IO; + } + s_net.sta_configured = true; + s_net.retry_ms = RETRY_MIN_MS; + s_net.state = KILN_NET_CONNECTING; + (void)copy_checked(s_net.ssid, sizeof(s_net.ssid), ssid, "ssid"); + ESP_LOGI(TAG, "joining '%s' as asked at the display", ssid); + return (esp_wifi_connect() == ESP_OK) ? KILN_OK : KILN_ERR_IO; } /* --- events ------------------------------------------------------------- */ @@ -158,7 +200,11 @@ void retry_now(void *arg) void on_wifi(void *arg, esp_event_base_t base, int32_t id, void *data) { - const kiln_config_t *cfg = static_cast(arg); + /* The configuration was read here to decide when to raise the access + * point. There is no access point now, and the handler needs nothing from + * it; the argument stays because the event loop was registered with it and + * a future handler may want it. */ + (void)arg; if (base == WIFI_EVENT && id == WIFI_EVENT_STA_START) { s_net.state = KILN_NET_CONNECTING; @@ -167,6 +213,14 @@ void on_wifi(void *arg, esp_event_base_t base, int32_t id, void *data) return; } + /* SWR-NET-11: the scan is asynchronous, and this is the only thing that + * knows it has finished. Without it the display says "scanning" for ever + * and the results are never read. */ + if (base == WIFI_EVENT && id == WIFI_EVENT_SCAN_DONE) { + s_net.scanning = false; + return; + } + if (base == WIFI_EVENT && id == WIFI_EVENT_STA_DISCONNECTED) { const wifi_event_sta_disconnected_t *d = static_cast(data); @@ -177,15 +231,12 @@ void on_wifi(void *arg, esp_event_base_t base, int32_t id, void *data) s_net.state = KILN_NET_CONNECTING; s_net.ip[0] = '\0'; - /* SWR-NET-02: give up on the station after the configured period and - * bring the AP up, so a kiln on a changed network is still reachable - * to be told the new one. */ - const int64_t trying_s = - (esp_timer_get_time() - s_net.first_attempt_us) / 1000000; - if (!s_net.ap_started && trying_s >= (int64_t)s_net.fallback_after_s) { - start_ap(cfg); - } - + /* No fallback to bring up: a kiln whose network changed is told the + * new one at the display (SWR-NET-11), and meanwhile it fires exactly + * as well as it did before, which SWR-NET-07 requires anyway. + * + * The retry below therefore runs for ever rather than until something + * else takes over, which is SWR-NET-03 read literally. */ /* SWR-NET-03: exponential backoff, event-driven, never a spin. */ (void)esp_timer_stop(s_net.retry_timer); (void)esp_timer_start_once(s_net.retry_timer, @@ -263,12 +314,15 @@ kiln_err_t kiln_hal_net_init(const kiln_config_t *cfg, kiln_port_net_t *out) memset(&s_net, 0, sizeof(s_net)); s_net.state = KILN_NET_DOWN; s_net.retry_ms = RETRY_MIN_MS; - s_net.fallback_after_s = 60; /* SWR-NET-02 default */ (void)snprintf(s_net.hostname, sizeof(s_net.hostname), "%s", (cfg->hostname[0] != '\0') ? cfg->hostname : "safekiln"); - out->ctx = &s_net; - out->status = net_status; + out->ctx = &s_net; + out->status = net_status; + out->scan_begin = net_scan_begin; + out->scan_busy = net_scan_busy; + out->scan_results = net_scan_results; + out->connect = net_connect; if (esp_netif_init() != ESP_OK) { return KILN_ERR_IO; @@ -277,7 +331,6 @@ kiln_err_t kiln_hal_net_init(const kiln_config_t *cfg, kiln_port_net_t *out) return KILN_ERR_IO; /* already created is fine upstream */ } (void)esp_netif_create_default_wifi_sta(); - (void)esp_netif_create_default_wifi_ap(); const wifi_init_config_t ic = WIFI_INIT_CONFIG_DEFAULT(); if (esp_wifi_init(&ic) != ESP_OK) { @@ -312,13 +365,15 @@ kiln_err_t kiln_hal_net_init(const kiln_config_t *cfg, kiln_port_net_t *out) s_net.sta_configured = true; (void)copy_checked(s_net.ssid, sizeof(s_net.ssid), cfg->wifi_ssid, "ssid"); } else { - /* Credentials that cannot be used are the same as none, and the AP - * is how the operator gets a chance to correct them. */ - start_ap(cfg); + /* Credentials that cannot be used are the same as none: the radio + * stays a station with nothing to join, and the operator corrects + * them at the display (SWR-NET-12). */ + ESP_LOGW(TAG, "stored credentials are unusable; waiting for the display"); + (void)esp_wifi_set_mode(WIFI_MODE_STA); } } else { - ESP_LOGW(TAG, "no stored credentials; starting the provisioning AP"); - start_ap(cfg); + ESP_LOGW(TAG, "no stored credentials; set the network up at the display"); + (void)esp_wifi_set_mode(WIFI_MODE_STA); } if (esp_wifi_start() != ESP_OK) { diff --git a/firmware/controller/components/kiln_hal_esp32s3/src/hal_prod.cpp b/firmware/controller/components/kiln_hal_esp32s3/src/hal_prod.cpp index 3f635c0..a04b203 100644 --- a/firmware/controller/components/kiln_hal_esp32s3/src/hal_prod.cpp +++ b/firmware/controller/components/kiln_hal_esp32s3/src/hal_prod.cpp @@ -45,7 +45,7 @@ bool s_ready; bool get_str(nvs_handle_t h, const char *key, char *out, size_t cap) { size_t len = cap; - esp_err_t e = nvs_get_str(h, key, out, &len); + const esp_err_t e = nvs_get_str(h, key, out, &len); if (e != ESP_OK) { ESP_LOGW(TAG, "%s: %s", key, esp_err_to_name(e)); out[0] = '\0'; diff --git a/firmware/controller/components/kiln_hmi/include/kiln_hmi/hmi.h b/firmware/controller/components/kiln_hmi/include/kiln_hmi/hmi.h index e46f3dd..6781948 100644 --- a/firmware/controller/components/kiln_hmi/include/kiln_hmi/hmi.h +++ b/firmware/controller/components/kiln_hmi/include/kiln_hmi/hmi.h @@ -35,6 +35,14 @@ constexpr size_t KILN_HMI_MAX_PROGRAMS = 20; /* FR-PRG: the store's slot count */ constexpr size_t KILN_HMI_NAME_LEN = 24; +/* SWR-NET-11. Twelve because the screen shows four at a time and a studio sees + * a handful: a list long enough to need a minute of turning is a list nobody + * reads to the end. The strongest are kept, which is the order the scan + * returns them in. */ +constexpr size_t KILN_HMI_MAX_NETWORKS = 12; +constexpr size_t KILN_HMI_SSID_LEN = 33; /* 32 octets and a NUL */ +constexpr size_t KILN_HMI_PASS_LEN = 64; /* WPA-PSK is 8..63 and a NUL */ + /* What the operator may set in motion from the local input (SWR-HMI-10). */ typedef enum { KILN_HMI_ACT_NONE = 0, @@ -44,11 +52,20 @@ typedef enum { KILN_HMI_ACT_ABORT, KILN_HMI_ACT_ACK_FAULT, KILN_HMI_ACT_ACK_SEGMENT, + /* SWR-NET-11, SWR-NET-12. The caller runs the scan and the join, because + * this component commands nothing; it only says what the operator asked + * for. CONNECT names the network by its index into the view's scan + * results, and the passphrase is read with kiln_hmi_passphrase() rather + * than copied through this struct, which is returned by value ten times a + * second. */ + KILN_HMI_ACT_WIFI_SCAN, + KILN_HMI_ACT_WIFI_CONNECT, } kiln_hmi_action_kind_t; typedef struct { kiln_hmi_action_kind_t kind; uint8_t program_index; + uint8_t network_index; } kiln_hmi_action_t; /* Everything the screens display, gathered by the caller once per refresh. @@ -79,6 +96,16 @@ typedef struct { bool net_up; char hostname[32]; char ip[16]; + char net_ssid[KILN_HMI_SSID_LEN]; /* the one it is joined to */ + + /* SWR-NET-11: what the last scan found. `net_scanning` is the difference + * between "no networks here" and "ask again in a moment", which is the + * whole of what an operator needs during the two seconds a scan takes. */ + bool net_scanning; + uint8_t net_count; + char net_list_ssid[KILN_HMI_MAX_NETWORKS][KILN_HMI_SSID_LEN]; + int8_t net_list_rssi[KILN_HMI_MAX_NETWORKS]; + bool net_list_secured[KILN_HMI_MAX_NETWORKS]; /* SWR-HMI-08 */ char version[24]; @@ -102,6 +129,8 @@ typedef enum { KILN_HMI_SCREEN_PROGRAMS, KILN_HMI_SCREEN_CONFIRM, KILN_HMI_SCREEN_NETWORK, + KILN_HMI_SCREEN_NETWORKS, /* SWR-NET-11: the scan list */ + KILN_HMI_SCREEN_PASSPHRASE, /* SWR-NET-12: one knob, one character */ KILN_HMI_SCREEN_DIAG, KILN_HMI_SCREEN_INFO, KILN_HMI_SCREEN_COUNT, @@ -116,6 +145,13 @@ typedef struct { kiln_hmi_action_kind_t pending; /* what CONFIRM will do if accepted */ uint8_t pending_program; + /* SWR-NET-11, SWR-NET-12 */ + uint8_t net_sel; /* row in the scan list */ + uint8_t net_top; /* first visible row */ + uint8_t pass_len; + uint8_t charset_sel; /* which character the knob is on */ + char pass[KILN_HMI_PASS_LEN]; + /* SWR-HMI-12 */ uint32_t idle_ms; uint16_t dim_timeout_s; @@ -139,4 +175,11 @@ static inline void kiln_hmi_clear_dirty(kiln_hmi_t *h) { h->dirty = fa /* SWR-HMI-12: blanked after the timeout, and never while a fault is up. */ static inline bool kiln_hmi_dimmed(const kiln_hmi_t *h) { return h->dimmed; } +/* The passphrase the operator has typed, valid when a KILN_HMI_ACT_WIFI_CONNECT + * is returned and empty for an open network. It stays in this struct rather + * than travelling in the action because an action is returned by value on every + * refresh, and because the one copy that exists should be the one being + * edited. */ +static inline const char *kiln_hmi_passphrase(const kiln_hmi_t *h) { return h->pass; } + #endif /* KILN_HMI_H */ diff --git a/firmware/controller/components/kiln_hmi/src/hmi.cpp b/firmware/controller/components/kiln_hmi/src/hmi.cpp index 513e71e..982ad0c 100644 --- a/firmware/controller/components/kiln_hmi/src/hmi.cpp +++ b/firmware/controller/components/kiln_hmi/src/hmi.cpp @@ -15,6 +15,26 @@ namespace { +/* SWR-NET-12. A WPA passphrase is printable ASCII, so the knob has to reach + * all of it: lowercase first because most passphrases are mostly lowercase, + * then uppercase, digits and symbols, then the two rows that are not + * characters at all. + * + * DEL and DONE live at the END of the set rather than the start. At the start + * they sit between the operator and the letters on every single character; at + * the end they are one turn backwards from the first letter, which is where a + * knob reaches them fastest. */ +const char k_charset[] = + "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" + "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ "; + +constexpr uint8_t K_CHARS = (uint8_t)(sizeof(k_charset) - 1u); +constexpr uint8_t K_SEL_DEL = K_CHARS; /* one past the last char */ +constexpr uint8_t K_SEL_OK = (uint8_t)(K_CHARS + 1u); +constexpr uint8_t K_SEL_N = (uint8_t)(K_CHARS + 2u); + float to_display_c(const kiln_hmi_view_t *v, float c) { /* SWR-HMI-13: degF is a display conversion and nothing else. Every stored, @@ -253,10 +273,100 @@ void draw_network(kiln_hmi_t *h, const kiln_hmi_view_t *v) * standing at the kiln actually has. */ kiln_fb_text(&h->fb, 0, 0, "NETWORK", 1, true); kiln_fb_hline(&h->fb, 0, 9, KILN_DISPLAY_W, true); - kiln_fb_text(&h->fb, 0, 14, v->net_up ? "connected" : "not connected", 1, true); - kiln_fb_text(&h->fb, 0, 26, v->hostname, 1, true); - kiln_fb_text(&h->fb, 0, 38, v->ip, 1, true); - kiln_fb_text(&h->fb, 0, 54, "display only", 1, true); + kiln_fb_text(&h->fb, 0, 13, v->net_up ? "connected" : "not connected", 1, true); + kiln_fb_text(&h->fb, 0, 23, v->net_up ? v->net_ssid : "", 1, true); + kiln_fb_text(&h->fb, 0, 33, v->hostname, 1, true); + kiln_fb_text(&h->fb, 0, 43, v->ip, 1, true); + /* SWR-NET-11: this is the only route into WiFi setup, and it says so. The + * device raises no access point, so if this screen cannot be reached the + * network cannot be configured at all. */ + kiln_fb_text(&h->fb, 0, 54, "press: set up wifi", 1, true); +} + +/* SWR-NET-11. Four rows at a time, strongest first, with a bar for signal and + * a mark for "this one wants a passphrase". No SSID is truncated silently: + * the row is as wide as the screen and a long name is cut with an ellipsis so + * the operator can see that it was cut. */ +void draw_networks(kiln_hmi_t *h, const kiln_hmi_view_t *v) +{ + kiln_fb_text(&h->fb, 0, 0, "WIFI NETWORKS", 1, true); + kiln_fb_hline(&h->fb, 0, 9, KILN_DISPLAY_W, true); + + if (v->net_count == 0u) { + kiln_fb_text(&h->fb, 0, 24, + v->net_scanning ? "scanning..." : "none found", 1, true); + kiln_fb_text(&h->fb, 0, 54, "hold: back", 1, true); + return; + } + + for (uint8_t row = 0; row < 4u; row++) { + const uint8_t i = (uint8_t)(h->net_top + row); + if (i >= v->net_count) { break; } + + char line[24]; + /* 18 characters of SSID is what fits beside the marks at this size. */ + /* The precision is the point: truncation here is deliberate, and + * writing it as "%s" into a short buffer makes it look accidental to + * the compiler, which says so (-Wformat-truncation, and GCC is right). + * An explicit bound states that 18 characters is the design. */ + char name[19]; + (void)snprintf(name, sizeof(name), "%.*s", (int)(sizeof(name) - 1u), + v->net_list_ssid[i]); + if (strlen(v->net_list_ssid[i]) > sizeof(name) - 1u) { + name[sizeof(name) - 2u] = '.'; + name[sizeof(name) - 3u] = '.'; + } + (void)snprintf(line, sizeof(line), "%c%s%s", + (i == h->net_sel) ? '>' : ' ', + name, + v->net_list_secured[i] ? " *" : ""); + kiln_fb_text(&h->fb, 0, (int)(13 + row * 10), line, 1, true); + } + + /* Sized for the widest this can print rather than for the line it is + * drawn on: the compiler is right that %u of an unsigned is ten digits, + * and a truncated footer is a worse answer than a wide buffer. */ + char foot[40]; + (void)snprintf(foot, sizeof(foot), "%u of %u * needs key", + (unsigned)(h->net_sel + 1u), (unsigned)v->net_count); + kiln_fb_text(&h->fb, 0, 54, foot, 1, true); +} + +/* SWR-NET-12. One knob, one character at a time. The passphrase is shown in + * clear: it is the operator's own network, they are standing in front of the + * kiln, and a row of asterisks on a 128x64 display means typing it blind with + * a rotary encoder, which is how it gets typed wrong four times. */ +void draw_passphrase(kiln_hmi_t *h, const kiln_hmi_view_t *v) +{ + (void)v; + kiln_fb_text(&h->fb, 0, 0, "PASSPHRASE", 1, true); + kiln_fb_hline(&h->fb, 0, 9, KILN_DISPLAY_W, true); + + /* The tail, because that is where the cursor is: 20 characters fit and a + * longer passphrase scrolls under them. */ + const uint8_t shown = (h->pass_len > 20u) ? 20u : h->pass_len; + char tail[22]; + (void)snprintf(tail, sizeof(tail), "%s", h->pass + (h->pass_len - shown)); + kiln_fb_text(&h->fb, 0, 14, tail, 1, true); + kiln_fb_text(&h->fb, (int)(shown * 6), 14, "_", 1, true); + + char pick[24]; + if (h->charset_sel == K_SEL_DEL) { + (void)snprintf(pick, sizeof(pick), "[ delete ]"); + } else if (h->charset_sel == K_SEL_OK) { + /* The length rule is shown where it is enforced, so "nothing happened + * when I pressed" never has to be guessed at. */ + (void)snprintf(pick, sizeof(pick), "%s", + (h->pass_len >= 8u) ? "[ connect ]" : "[ 8 or more ]"); + } else { + (void)snprintf(pick, sizeof(pick), " %c", k_charset[h->charset_sel]); + } + kiln_fb_text(&h->fb, 0, 30, pick, 1, true); + + char foot[40]; + (void)snprintf(foot, sizeof(foot), "%u chars hold: cancel", + (unsigned)h->pass_len); + kiln_fb_text(&h->fb, 0, 54, foot, 1, true); } void draw_diag(kiln_hmi_t *h, const kiln_hmi_view_t *v) @@ -444,7 +554,81 @@ kiln_hmi_action_t kiln_hmi_update(kiln_hmi_t *h, const kiln_hmi_view_t *view, } break; - default: /* NETWORK, DIAG, INFO: read-only, any press returns */ + case KILN_HMI_SCREEN_NETWORK: + /* SWR-NET-11: the status screen is where setting up WiFi starts, + * because it is where an operator goes when the network is the + * thing on their mind. */ + if (ev == KILN_INPUT_LONG_PRESS) { + h->screen = KILN_HMI_SCREEN_MENU; + } else if (ev == KILN_INPUT_PRESS) { + act.kind = KILN_HMI_ACT_WIFI_SCAN; + h->net_sel = 0; + h->net_top = 0; + h->screen = KILN_HMI_SCREEN_NETWORKS; + } + break; + + case KILN_HMI_SCREEN_NETWORKS: + if (ev == KILN_INPUT_CW) { step(&h->net_sel, view->net_count, true); } + else if (ev == KILN_INPUT_CCW) { step(&h->net_sel, view->net_count, false); } + else if (ev == KILN_INPUT_LONG_PRESS) { + /* Back, and a second chance to scan: an empty list usually + * means the scan ran before the radio was ready. */ + h->screen = KILN_HMI_SCREEN_NETWORK; + } else if (ev == KILN_INPUT_PRESS && view->net_count > 0u && + h->net_sel < view->net_count) { + if (view->net_list_secured[h->net_sel]) { + h->pass_len = 0; + h->pass[0] = '\0'; + h->charset_sel = 0; + h->screen = KILN_HMI_SCREEN_PASSPHRASE; + } else { + /* An open network needs no passphrase, and asking for one + * would be a blank screen the operator has to guess past. */ + h->pass_len = 0; + h->pass[0] = '\0'; + act.kind = KILN_HMI_ACT_WIFI_CONNECT; + act.network_index = h->net_sel; + h->screen = KILN_HMI_SCREEN_NETWORK; + } + } + if (h->net_sel < h->net_top) { h->net_top = h->net_sel; } + else if (h->net_sel >= h->net_top + 4u) { h->net_top = (uint8_t)(h->net_sel - 3u); } + break; + + case KILN_HMI_SCREEN_PASSPHRASE: + if (ev == KILN_INPUT_CW) { step(&h->charset_sel, K_SEL_N, true); } + else if (ev == KILN_INPUT_CCW) { step(&h->charset_sel, K_SEL_N, false); } + else if (ev == KILN_INPUT_LONG_PRESS) { + /* Abandon it, and take the typed passphrase with it rather + * than leaving half of one in memory for the next attempt. */ + h->pass_len = 0; + h->pass[0] = '\0'; + h->screen = KILN_HMI_SCREEN_NETWORKS; + } else if (ev == KILN_INPUT_PRESS) { + if (h->charset_sel == K_SEL_DEL) { + if (h->pass_len > 0u) { + h->pass_len--; + h->pass[h->pass_len] = '\0'; + } + } else if (h->charset_sel == K_SEL_OK) { + /* WPA-PSK is 8 to 63 characters. A shorter one cannot be + * right, and accepting it here would spend the join + * attempt and the operator's patience to find that out. */ + if (h->pass_len >= 8u) { + act.kind = KILN_HMI_ACT_WIFI_CONNECT; + act.network_index = h->net_sel; + h->screen = KILN_HMI_SCREEN_NETWORK; + } + } else if (h->pass_len + 1u < KILN_HMI_PASS_LEN) { + h->pass[h->pass_len] = k_charset[h->charset_sel]; + h->pass_len++; + h->pass[h->pass_len] = '\0'; + } + } + break; + + default: /* DIAG, INFO: read-only, any press returns */ if (ev == KILN_INPUT_PRESS || ev == KILN_INPUT_LONG_PRESS) { h->screen = KILN_HMI_SCREEN_MENU; } @@ -481,7 +665,9 @@ kiln_hmi_action_t kiln_hmi_update(kiln_hmi_t *h, const kiln_hmi_view_t *view, } break; case KILN_HMI_SCREEN_CONFIRM: draw_confirm(h, view); break; - case KILN_HMI_SCREEN_NETWORK: draw_network(h, view); break; + case KILN_HMI_SCREEN_NETWORK: draw_network(h, view); break; + case KILN_HMI_SCREEN_NETWORKS: draw_networks(h, view); break; + case KILN_HMI_SCREEN_PASSPHRASE: draw_passphrase(h, view); break; case KILN_HMI_SCREEN_DIAG: draw_diag(h, view); break; case KILN_HMI_SCREEN_INFO: draw_info(h, view); break; case KILN_HMI_SCREEN_MAIN: diff --git a/firmware/controller/components/kiln_ports/include/kiln_ports/port_net.h b/firmware/controller/components/kiln_ports/include/kiln_ports/port_net.h index 8db2354..31d7cc5 100644 --- a/firmware/controller/components/kiln_ports/include/kiln_ports/port_net.h +++ b/firmware/controller/components/kiln_ports/include/kiln_ports/port_net.h @@ -1,6 +1,23 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later - * Connectivity status for the HMI and the API (SWR-NET-09). + * + * Connectivity: status, scanning and joining a network (SWR-NET-09, SWR-NET-11, + * SWR-NET-12). + * + * --------------------------------------------------------------------------- + * There is no access point here, and that is the design + * --------------------------------------------------------------------------- + * The device used to fall back to its own AP and serve a provisioning page on + * it (the old SWR-NET-02). That is gone: a kiln controller that raises an + * access point is a second network interface, with its own passphrase to get + * wrong, reachable by anybody in the building, serving a page whose whole + * purpose is to accept credentials. The display and the encoder are already + * there, the operator is already standing at them, and what they can do there + * no passer-by can do at all. + * + * So the device scans, the operator picks a network and types the passphrase on + * the local display, and the only radio the firmware ever brings up is a + * station. Whoever can set up the WiFi is whoever can reach the kiln. */ #ifndef KILN_PORT_NET_H #define KILN_PORT_NET_H @@ -12,7 +29,6 @@ typedef enum { KILN_NET_DOWN = 0, KILN_NET_CONNECTING, KILN_NET_STA_CONNECTED, - KILN_NET_AP_FALLBACK, /* SWR-NET-02 */ } kiln_net_state_t; typedef struct { @@ -26,9 +42,38 @@ typedef struct { bool time_synced; } kiln_net_status_t; +/* The most networks a scan will report. Sixteen rather than "all of them": + * the display shows a handful, the records are ~80 bytes each inside the + * driver, and a dense band can return fifty. */ +constexpr uint8_t KILN_NET_SCAN_MAX = 16; + +/* One network the scan found. `secured` drives whether the operator is asked + * for a passphrase at all, so it is carried rather than inferred from an + * authmode enum the core would have to know about. */ +typedef struct { + char ssid[33]; + int8_t rssi; + bool secured; +} kiln_net_ap_t; + typedef struct kiln_port_net { void *ctx; kiln_err_t (*status)(void *ctx, kiln_net_status_t *out); + + /* SWR-NET-11. `scan_begin` returns at once; `scan_busy` says whether the + * radio is still looking, so the display can say "scanning" rather than + * "no networks found" during the two seconds it takes. A scan runs while + * a firing runs: it is a receive-only operation on the other core and + * SWR-NET-07 already forbids the network from touching a run. */ + kiln_err_t (*scan_begin)(void *ctx); + bool (*scan_busy)(void *ctx); + /* Writes at most `max` entries, strongest first, and returns how many. */ + uint8_t (*scan_results)(void *ctx, kiln_net_ap_t *out, uint8_t max); + + /* SWR-NET-12. Join this network now. The caller persists the credentials; + * this only changes what the radio is doing, so a failed join leaves the + * stored configuration to be corrected rather than silently kept. */ + kiln_err_t (*connect)(void *ctx, const char *ssid, const char *pass); } kiln_port_net_t; #endif diff --git a/firmware/controller/components/kiln_ports/include/kiln_ports/port_update.h b/firmware/controller/components/kiln_ports/include/kiln_ports/port_update.h index ac555ee..869e9c7 100644 --- a/firmware/controller/components/kiln_ports/include/kiln_ports/port_update.h +++ b/firmware/controller/components/kiln_ports/include/kiln_ports/port_update.h @@ -1,7 +1,7 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later * - * Firmware update -- SWR-UPD-01..SWR-UPD-05, SWR-UPD-07. + * Firmware update -- SWR-UPD-01..SWR-UPD-16. * * Streamed in bounded chunks because SWR-NFR-11 leaves no room to buffer a 2 MB * image in RAM. SWR-UPD-02's rollback is the adapter's job (dual OTA slots and a @@ -11,6 +11,21 @@ * SWR-UPD-04 -- refusing an update while a run or autotune is in progress -- is a * run-controller decision, deliberately not enforced here: the port would have * to know the state machine, and the check belongs where the state lives. + * + * The path is a PULL (OQ-08, resolved 2026-10-09): the device fetches a signed + * static manifest and the operator at the display authorises the install. Two + * consequences for this interface: + * + * `check` TAKES NO ARGUMENT DESCRIBING THIS DEVICE, and that is a requirement + * rather than an omission. SWR-UPD-10 wants the request to carry no serial, no + * installed version and no query string, so the manifest is identical for every + * unit and the comparison happens here. An interface that accepted "the + * current version" would invite a client that sends it. + * + * NOTHING HERE AUTHORISES AN INSTALL. `install` is called by the application + * only after a local confirmation (SWR-UPD-12, SWR-HMI-16); there is no network + * route to it (SWR-UPD-08), and the port deliberately offers no "install when + * available" convenience that could be wired to one. */ #ifndef KILN_PORT_UPDATE_H #define KILN_PORT_UPDATE_H @@ -25,6 +40,10 @@ typedef enum { KILN_UPD_VERIFYING, KILN_UPD_READY, /* verified and marked bootable: restart to apply */ KILN_UPD_FAILED, + /* Appended rather than inserted, so the existing values keep their meaning + * wherever a state has already been reported or logged. */ + KILN_UPD_CHECKING, /* SWR-UPD-09: fetching and verifying the manifest */ + KILN_UPD_AVAILABLE, /* a verified release is newer: waiting for a human */ } kiln_upd_state_t; typedef struct { @@ -34,6 +53,17 @@ typedef struct { kiln_err_t last_error; } kiln_upd_progress_t; +/* What a verified manifest names. `version` is the SWR-UPD-06 semantic version + * in the same text form as kiln_fw_info_t::version, because the comparison is + * between those two and nothing else. `security` carries SWR-UPD-16's marking, + * which the display shows (SWR-HMI-16) and which no logic may use to install + * anything by itself. */ +typedef struct { + char version[32]; + bool security; + uint32_t image_size; +} kiln_upd_release_t; + typedef struct kiln_port_update { void *ctx; /* total_bytes may be 0 for a chunked upload. */ @@ -45,7 +75,24 @@ typedef struct kiln_port_update { void (*abort)(void *ctx); kiln_err_t (*progress)(void *ctx, kiln_upd_progress_t *out); - /* SWR-UPD-02: the running image has proved itself; cancel the rollback. */ + /* SWR-UPD-09..SWR-UPD-11, SWR-UPD-13: fetch the manifest, verify its signature + * against the key compiled into this image, and report the release it names + * if that release is newer than the running one. Returns KILN_ERR_NOT_FOUND + * when there is nothing newer, which is the ordinary answer and not a fault: + * SWR-UPD-09 makes a failed check a diagnostic. A manifest whose signature + * does not verify is discarded without `out` being touched. */ + kiln_err_t (*check)(void *ctx, kiln_upd_release_t *out); + + /* SWR-UPD-12: install the release `check` reported, called ONLY after a local + * confirmation. Streams into the inactive slot, verifies the digest from the + * manifest and the image's own signature, then marks it bootable; the restart + * is a separate decision made above this port. */ + kiln_err_t (*install)(void *ctx, const kiln_upd_release_t *rel); + + /* SWR-UPD-02 and SWR-UPD-15: the running image has proved itself; cancel the + * rollback. Call it when the supervisor link, both thermocouples, the + * configuration, the stored programs and the display have all been seen + * working in the running system, NOT during start-up. */ kiln_err_t (*confirm_running)(void *ctx); bool (*running_is_pending_verify)(void *ctx); kiln_err_t (*rollback)(void *ctx); diff --git a/firmware/controller/components/kiln_web/src/api.cpp b/firmware/controller/components/kiln_web/src/api.cpp index 18ced99..9403d76 100644 --- a/firmware/controller/components/kiln_web/src/api.cpp +++ b/firmware/controller/components/kiln_web/src/api.cpp @@ -806,7 +806,16 @@ kiln_err_t handle_current(kiln_api_ctx_t *ctx, const kiln_api_req_t *req, kiln_json_kv_bool(&j, "reference_rejected", c->ref_rejected); kiln_json_kv_uint(&j, "flags", kiln_current_flags(c)); - /* SWR-CUR-07, with the assumption stated as the requirement demands. */ + /* SWR-CUR-07, with the assumption stated as the requirement demands. + * + * `channels` and `mains_v` are here because the interface has to say + * what produced the kilowatts: power is the measured current times the + * configured supply voltage, and a reader whose supply is 240 V needs + * to see which figure was used. One channel is structural rather than + * configurable, single phase having been settled by OQ-06, so it is + * stated as a fact rather than counted. */ + kiln_json_kv_uint(&j, "channels", 1u); + kiln_json_kv_num(&j, "mains_v", (double)c->cfg.mains_v, 0); kiln_json_kv_num(&j, "apparent_va", kiln_app_apparent_va(app), 0); kiln_json_kv_num(&j, "energy_wh", kiln_app_energy_wh(app), 1); kiln_json_kv_str(&j, "power_basis", @@ -907,13 +916,12 @@ kiln_err_t handle_net(kiln_api_ctx_t *ctx, kiln_api_resp_t *resp) kiln_net_status_t ns = {}; if ((ctx->net != nullptr) && (ctx->net->status != nullptr) && ctx->net->status(ctx->net->ctx, &ns) == KILN_OK) { - static const char *const states[] = { "down", "connecting", "connected", - "ap_fallback" }; + static const char *const states[] = { "down", "connecting", "connected" }; /* The table must cover the enum, checked at compile time rather than by * a runtime bound the compiler can prove is always true. The runtime * guard stays for a value an adapter may have corrupted, and compares * the underlying integer so it remains a real test. */ - static_assert(std::size(states) == KILN_NET_AP_FALLBACK + 1, + static_assert(std::size(states) == KILN_NET_STA_CONNECTED + 1, "states[] must cover every kiln_net_state_t"); const size_t state_idx = static_cast(ns.state); kiln_json_kv_str(&j, "state", diff --git a/firmware/controller/host/webhost/webhost.cpp b/firmware/controller/host/webhost/webhost.cpp index 1f64a1e..415a74c 100644 --- a/firmware/controller/host/webhost/webhost.cpp +++ b/firmware/controller/host/webhost/webhost.cpp @@ -16,6 +16,12 @@ * seeing the UI and for driving the API suite by hand. * * firmware/controller/host/webhost/build.sh && ./webhost --port 8080 --accel 60 + * + * `--fire` exists because of SWR-WEB-26. The interface is read-only, so a + * firing cannot be started from the browser, and an idle dashboard shows almost + * none of what this harness is for. It starts one of the built-in examples + * (SWR-PRG-09) through the same `kiln_app_start` the local HMI calls, so what + * the browser then shows is a real run of the real logic rather than a mock. */ #include @@ -126,6 +132,10 @@ void device_init(void) } (void)kiln_app_boot(&g_app, KILN_RESET_POWER_ON, -1.0f); + /* The built-in examples of SWR-PRG-09, so the Programs view has something in + * it. Idempotent by design, and the device does this on every boot too. */ + (void)kiln_program_store_seed(&g_fs_port); + g_api.app = &g_app; g_api.filestore = &g_fs_port; g_api.logstore = &g_log_port; @@ -456,11 +466,45 @@ void push_sse(void) } } +/* Start one of the built-in examples, by index or by name. Returns false and + * says why rather than starting something the caller did not ask for. */ +bool fire_example(const char *which) +{ + const uint8_t n = kiln_profile_example_count(); + for (uint8_t i = 0; i < n; i++) { + kiln_program_t p; + if (kiln_profile_example(i, &p) != KILN_OK) { + continue; + } + char index[4]; + (void)snprintf(index, sizeof(index), "%u", (unsigned)i); + if ((strcmp(which, index) != 0) && (strcmp(which, p.name) != 0)) { + continue; + } + if (kiln_app_start(&g_app, &p) != KILN_OK) { + (void)fprintf(stderr, "could not start \"%s\"\n", p.name); + return false; + } + printf("Firing \"%s\"\n", p.name); + return true; + } + (void)fprintf(stderr, "no example called \"%s\". There are %u:\n", which, + (unsigned)n); + for (uint8_t i = 0; i < n; i++) { + kiln_program_t p; + if (kiln_profile_example(i, &p) == KILN_OK) { + (void)fprintf(stderr, " %u %s\n", (unsigned)i, p.name); + } + } + return false; +} + } // namespace int main(int argc, char **argv) { int port = 8080; + const char *fire = NULL; for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "--port") == 0 && i + 1 < argc) { @@ -472,6 +516,9 @@ int main(int argc, char **argv) else if (strcmp(argv[i], "--web") == 0 && i + 1 < argc) { (void)snprintf(g_web_dir, sizeof(g_web_dir), "%s", argv[++i]); } + else if (strcmp(argv[i], "--fire") == 0 && i + 1 < argc) { + fire = argv[++i]; + } else { (void)fprintf(stderr, "Safe Kiln Controller development harness -- real firmware logic, simulated kiln.\n" @@ -479,6 +526,9 @@ int main(int argc, char **argv) " --port N listen port (default 8080)\n" " --accel X simulated time multiplier (default 60)\n" " --web DIR directory of web assets (default ./web)\n" + " --fire P start a built-in example at once, by index or name.\n" + " The web interface is read-only (SWR-WEB-26), so this\n" + " is the only way to see a run in it.\n" "\n" "NOT a production server: single-threaded, no TLS, no authentication.\n"); return 1; @@ -495,6 +545,10 @@ int main(int argc, char **argv) device_init(); + if ((fire != NULL) && !fire_example(fire)) { + return 1; + } + const int listener = socket(AF_INET, SOCK_STREAM, 0); if (listener < 0) { perror("socket"); return 1; } int one = 1; diff --git a/firmware/controller/main/main.cpp b/firmware/controller/main/main.cpp index 9806c6d..9123972 100644 --- a/firmware/controller/main/main.cpp +++ b/firmware/controller/main/main.cpp @@ -22,6 +22,7 @@ #include "kiln_app/app.h" #include "kiln_app/run_index.h" +#include "kiln_app/settings.h" #include "kiln_core/faults.h" #include "kiln_core/fileslots.h" #include "kiln_core/suplink.h" @@ -429,6 +430,13 @@ namespace { */ kiln_hmi_t s_hmi; +/* SWR-NET-11. The scan results live here rather than in the view builder, + * which runs ten times a second: asking the driver for them on every frame + * would be a copy of a kilobyte per frame to show four rows that change twice + * a minute. */ +kiln_net_ap_t s_scan[KILN_HMI_MAX_NETWORKS]; +uint8_t s_scan_count; + void hmi_apply(const kiln_hmi_action_t *a) { /* The HMI asks; kiln_app decides. Every one of these can be refused -- @@ -454,6 +462,36 @@ void hmi_apply(const kiln_hmi_action_t *a) * the belt to that braces. */ e = KILN_ERR_NOT_FOUND; break; + + case KILN_HMI_ACT_WIFI_SCAN: + /* SWR-NET-11. The results arrive asynchronously; the view builder + * collects them once the driver says the scan is done. */ + s_scan_count = 0; + e = (s_net_port.scan_begin != nullptr) + ? s_net_port.scan_begin(s_net_port.ctx) : KILN_ERR_UNSUPPORTED; + break; + + case KILN_HMI_ACT_WIFI_CONNECT: { + /* SWR-NET-12. Persist first, then join: a device that joins without + * remembering comes back from a power cut with no network and nobody + * at the display, which is the state this whole screen exists to get + * out of. */ + if (a->network_index >= s_scan_count) { + e = KILN_ERR_NOT_FOUND; + break; + } + const char *ssid = s_scan[a->network_index].ssid; + const char *pass = kiln_hmi_passphrase(&s_hmi); + (void)snprintf(s_app.cfg.wifi_ssid, sizeof(s_app.cfg.wifi_ssid), "%s", ssid); + (void)snprintf(s_app.cfg.wifi_pass, sizeof(s_app.cfg.wifi_pass), "%s", pass); + e = kiln_settings_save(&s_kv, &s_app.cfg); + if (e == KILN_OK) { + e = (s_net_port.connect != nullptr) + ? s_net_port.connect(s_net_port.ctx, ssid, pass) + : KILN_ERR_UNSUPPORTED; + } + break; + } default: return; } if (e != KILN_OK) { @@ -495,8 +533,8 @@ void hmi_build_view(kiln_hmi_view_t *v) kiln_net_status_t ns = {}; if (s_net_port.status != nullptr && s_net_port.status(s_net_port.ctx, &ns) == KILN_OK) { - v->net_up = (ns.state == KILN_NET_STA_CONNECTED) || - (ns.state == KILN_NET_AP_FALLBACK); + v->net_up = (ns.state == KILN_NET_STA_CONNECTED); + (void)snprintf(v->net_ssid, sizeof(v->net_ssid), "%s", ns.ssid); /* The device's own name, not the SSID: SWR-HMI-07 asks where the web * interface is, and "safekiln" is half that answer. */ (void)snprintf(v->hostname, sizeof(v->hostname), "%s", ns.hostname); @@ -507,6 +545,22 @@ void hmi_build_view(kiln_hmi_view_t *v) (void)snprintf(v->hostname, sizeof(v->hostname), "%s", "wifi down"); (void)snprintf(v->ip, sizeof(v->ip), "%s", "-"); } + + /* SWR-NET-11: collect the scan once, when the radio says it has finished. */ + if (s_net_port.scan_busy != nullptr) { + v->net_scanning = s_net_port.scan_busy(s_net_port.ctx); + if (!v->net_scanning && s_scan_count == 0u && + s_net_port.scan_results != nullptr) { + s_scan_count = s_net_port.scan_results(s_net_port.ctx, s_scan, + (uint8_t)KILN_HMI_MAX_NETWORKS); + } + } + v->net_count = s_scan_count; + for (uint8_t i = 0; i < s_scan_count && i < KILN_HMI_MAX_NETWORKS; i++) { + (void)snprintf(v->net_list_ssid[i], KILN_HMI_SSID_LEN, "%s", s_scan[i].ssid); + v->net_list_rssi[i] = s_scan[i].rssi; + v->net_list_secured[i] = s_scan[i].secured; + } } void hmi_task(void *arg) diff --git a/firmware/controller/sdkconfig.defaults b/firmware/controller/sdkconfig.defaults index 3a8526f..87a8055 100644 --- a/firmware/controller/sdkconfig.defaults +++ b/firmware/controller/sdkconfig.defaults @@ -31,6 +31,33 @@ CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 +# --- SWR-UPD-02 / SWR-UPD-15: rollback. The bootloader marks a newly set image +# `pending-verify` and reverts to the previous slot on the next reset unless the +# running image cancels it. The cancellation belongs where the image has proved +# itself (supervisor link, both couples, config, display), NOT in start-up code: +# cancelling it early turns this flag into decoration, which SWR-UPD-15 names as a +# defect rather than a choice. +CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y + +# Two update-related options deliberately NOT set here, each with its reason: +# +# CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK burns a monotonic eFuse counter so an +# older image cannot run at all. It has few increments, cannot be undone, and +# would make the fuse rather than the operator decide whether a unit can be +# recovered. SWR-UPD-13 refuses a downgrade in software instead; see +# docs/security.md section 6.2. +# +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP must stay off. SWR-UPD-11 requires HTTPS with +# certificate validation, while deliberately not depending on it: authenticity +# comes from the offline manifest key, so plain HTTP would lose the one thing TLS +# does buy here, which is privacy of the request. +# +# Signature verification on a board without secure boot (the +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT family) is wanted by SWR-UPD-11 so that +# an unprovisioned unit still authenticates what it installs. It is left for the +# update client's own commit, because the exact option names move between IDF +# versions and setting them blind here would be a configuration nobody has built. + # --- SWR-NFR-25 --- CONFIG_COMPILER_WARN_WRITE_STRINGS=y CONFIG_COMPILER_OPTIMIZATION_SIZE=y diff --git a/firmware/controller/test/host/unit/test_configmodel.cpp b/firmware/controller/test/host/unit/test_configmodel.cpp index 224d163..b3e0310 100644 --- a/firmware/controller/test/host/unit/test_configmodel.cpp +++ b/firmware/controller/test/host/unit/test_configmodel.cpp @@ -94,7 +94,7 @@ KILN_TEST(swrcfg02_the_minimum_item_set_is_present) "current.overcurrent_a", "current.contactor_life_ops", "current.enabled", "log.interval_s", "hmi.units", "hmi.dim_timeout_s", "hmi.alarm_duration_s", - "net.wifi_mode", "net.wifi_ssid", "net.hostname", "net.ntp_server", + "net.wifi_ssid", "net.hostname", "net.ntp_server", "net.timezone", }; @@ -214,7 +214,9 @@ KILN_TEST(swrcfg07_secrets_are_flagged_so_they_are_never_serialised_outward) { /* security.web_password was removed on 2026-10-06: SWR-WEB-26 left nothing * over the network to authenticate, so there was nothing for it to guard. */ - const char *secrets[] = { "net.wifi_pass", "net.ap_pass" }; + /* net.ap_pass went with the provisioning access point (SWR-NET-11): the + device raises no AP, so there is no second passphrase to keep. */ + const char *secrets[] = { "net.wifi_pass" }; for (size_t i = 0; i < sizeof(secrets) / sizeof(secrets[0]); i++) { const kiln_cfg_item_t *it = kiln_config_find(secrets[i]); CHECK_MSG(it != NULL, "%s is not in the schema", secrets[i]); diff --git a/firmware/controller/test/host/unit/test_hmi.cpp b/firmware/controller/test/host/unit/test_hmi.cpp index 5eef9f1..16f95aa 100644 --- a/firmware/controller/test/host/unit/test_hmi.cpp +++ b/firmware/controller/test/host/unit/test_hmi.cpp @@ -509,3 +509,239 @@ KILN_TEST(swa22_a_missing_supervisor_is_shown_differently_from_one_that_tripped) CHECK(memcmp(kiln_hmi_frame(&fired), kiln_hmi_frame(&absent), KILN_DISPLAY_BYTES) != 0); } + +/* --- WiFi setup at the display (SWR-NET-11, SWR-NET-12) ------------------ */ + +static kiln_hmi_view_t net_view(void) +{ + kiln_hmi_view_t v = base_view(); + v.net_count = 3; + (void)snprintf(v.net_list_ssid[0], KILN_HMI_SSID_LEN, "studio"); + v.net_list_rssi[0] = -42; + v.net_list_secured[0] = true; + (void)snprintf(v.net_list_ssid[1], KILN_HMI_SSID_LEN, "kiln-shed"); + v.net_list_rssi[1] = -67; + v.net_list_secured[1] = true; + (void)snprintf(v.net_list_ssid[2], KILN_HMI_SSID_LEN, "guest-open"); + v.net_list_rssi[2] = -71; + v.net_list_secured[2] = false; + return v; +} + +/* Walk to the network screen through the menu, the way an operator does. */ +static void to_network(kiln_hmi_t *h, const kiln_hmi_view_t *v) +{ + (void)feed(h, v, KILN_INPUT_PRESS); /* main -> menu */ + for (int i = 0; i < 3; i++) { (void)feed(h, v, KILN_INPUT_CW); } + (void)feed(h, v, KILN_INPUT_PRESS); /* -> network */ +} + +/* + * @relation(SWR-NET-11, scope=function) + */ +KILN_TEST(swrnet11_the_network_screen_is_the_way_into_wifi_setup) +{ + kiln_hmi_t h; kiln_hmi_init(&h, 0); + const kiln_hmi_view_t v = net_view(); + to_network(&h, &v); + CHECK(h.screen == KILN_HMI_SCREEN_NETWORK); + + /* Pressing asks for a scan and moves to the list. Without this there is + * no route to WiFi setup at all, the access point having been removed. */ + const kiln_hmi_action_t a = feed(&h, &v, KILN_INPUT_PRESS); + CHECK(a.kind == KILN_HMI_ACT_WIFI_SCAN); + CHECK(h.screen == KILN_HMI_SCREEN_NETWORKS); +} + +/* + * @relation(SWR-NET-11, scope=function) + */ +KILN_TEST(swrnet11_scanning_and_finding_nothing_look_different) +{ + kiln_hmi_view_t v = net_view(); + v.net_count = 0; + + kiln_hmi_t busy; kiln_hmi_init(&busy, 0); + to_network(&busy, &v); + v.net_scanning = true; + (void)feed(&busy, &v, KILN_INPUT_PRESS); + + kiln_hmi_t done; kiln_hmi_init(&done, 0); + to_network(&done, &v); + v.net_scanning = false; + (void)feed(&done, &v, KILN_INPUT_PRESS); + + /* "none found" after two seconds of scanning is a different instruction to + * the operator than "still looking". */ + CHECK(memcmp(kiln_hmi_frame(&busy), kiln_hmi_frame(&done), + KILN_DISPLAY_BYTES) != 0); +} + +/* + * @relation(SWR-NET-12, scope=function) + */ +KILN_TEST(swrnet12_an_open_network_needs_no_passphrase) +{ + kiln_hmi_t h; kiln_hmi_init(&h, 0); + const kiln_hmi_view_t v = net_view(); + to_network(&h, &v); + (void)feed(&h, &v, KILN_INPUT_PRESS); /* -> the list */ + + (void)feed(&h, &v, KILN_INPUT_CW); + (void)feed(&h, &v, KILN_INPUT_CW); /* the open one */ + const kiln_hmi_action_t a = feed(&h, &v, KILN_INPUT_PRESS); + + CHECK(a.kind == KILN_HMI_ACT_WIFI_CONNECT); + CHECK(a.network_index == 2); + CHECK_MSG(kiln_hmi_passphrase(&h)[0] == '\0', + "an open network must not carry a passphrase"); +} + +/* + * @relation(SWR-NET-12, scope=function) + */ +KILN_TEST(swrnet12_a_secured_network_asks_for_a_passphrase_and_types_it) +{ + kiln_hmi_t h; kiln_hmi_init(&h, 0); + const kiln_hmi_view_t v = net_view(); + to_network(&h, &v); + (void)feed(&h, &v, KILN_INPUT_PRESS); /* -> the list */ + (void)feed(&h, &v, KILN_INPUT_PRESS); /* "studio" */ + CHECK(h.screen == KILN_HMI_SCREEN_PASSPHRASE); + + /* The knob starts on 'a'; eight presses give the shortest legal WPA + * passphrase, which is the boundary SWR-NET-12 names. */ + for (int i = 0; i < 8; i++) { (void)feed(&h, &v, KILN_INPUT_PRESS); } + CHECK_MSG(strcmp(kiln_hmi_passphrase(&h), "aaaaaaaa") == 0, + "typed %s", kiln_hmi_passphrase(&h)); + + /* One turn backwards from the first character reaches "connect", which is + * why delete and connect sit at the end of the set rather than the start. */ + (void)feed(&h, &v, KILN_INPUT_CCW); + const kiln_hmi_action_t a = feed(&h, &v, KILN_INPUT_PRESS); + CHECK(a.kind == KILN_HMI_ACT_WIFI_CONNECT); + CHECK(a.network_index == 0); + CHECK(h.screen == KILN_HMI_SCREEN_NETWORK); +} + +/* + * @relation(SWR-NET-12, scope=function) + */ +KILN_TEST(swrnet12_a_passphrase_shorter_than_eight_is_not_accepted) +{ + kiln_hmi_t h; kiln_hmi_init(&h, 0); + const kiln_hmi_view_t v = net_view(); + to_network(&h, &v); + (void)feed(&h, &v, KILN_INPUT_PRESS); + (void)feed(&h, &v, KILN_INPUT_PRESS); /* passphrase */ + + for (int i = 0; i < 7; i++) { (void)feed(&h, &v, KILN_INPUT_PRESS); } + (void)feed(&h, &v, KILN_INPUT_CCW); /* "connect" */ + const kiln_hmi_action_t a = feed(&h, &v, KILN_INPUT_PRESS); + + /* WPA-PSK cannot be seven characters. Accepting it would spend a join + * attempt to discover what the standard already says. */ + CHECK(a.kind == KILN_HMI_ACT_NONE); + CHECK(h.screen == KILN_HMI_SCREEN_PASSPHRASE); +} + +/* + * @relation(SWR-NET-12, scope=function) + */ +KILN_TEST(swrnet12_delete_removes_the_last_character) +{ + kiln_hmi_t h; kiln_hmi_init(&h, 0); + const kiln_hmi_view_t v = net_view(); + to_network(&h, &v); + (void)feed(&h, &v, KILN_INPUT_PRESS); + (void)feed(&h, &v, KILN_INPUT_PRESS); + + (void)feed(&h, &v, KILN_INPUT_PRESS); /* 'a' */ + (void)feed(&h, &v, KILN_INPUT_CW); /* 'b' */ + (void)feed(&h, &v, KILN_INPUT_PRESS); + CHECK(strcmp(kiln_hmi_passphrase(&h), "ab") == 0); + + /* Two turns backwards from 'b' is "delete". */ + (void)feed(&h, &v, KILN_INPUT_CCW); + (void)feed(&h, &v, KILN_INPUT_CCW); + (void)feed(&h, &v, KILN_INPUT_CCW); + (void)feed(&h, &v, KILN_INPUT_PRESS); + CHECK_MSG(strcmp(kiln_hmi_passphrase(&h), "a") == 0, + "after delete: %s", kiln_hmi_passphrase(&h)); + + /* Deleting past the start is not an underflow. */ + (void)feed(&h, &v, KILN_INPUT_PRESS); + (void)feed(&h, &v, KILN_INPUT_PRESS); + CHECK(kiln_hmi_passphrase(&h)[0] == '\0'); +} + +/* + * @relation(SWR-NET-12, scope=function) + */ +KILN_TEST(swrnet12_abandoning_entry_takes_the_passphrase_with_it) +{ + kiln_hmi_t h; kiln_hmi_init(&h, 0); + const kiln_hmi_view_t v = net_view(); + to_network(&h, &v); + (void)feed(&h, &v, KILN_INPUT_PRESS); + (void)feed(&h, &v, KILN_INPUT_PRESS); + for (int i = 0; i < 5; i++) { (void)feed(&h, &v, KILN_INPUT_PRESS); } + CHECK(kiln_hmi_passphrase(&h)[0] != '\0'); + + (void)feed(&h, &v, KILN_INPUT_LONG_PRESS); + CHECK(h.screen == KILN_HMI_SCREEN_NETWORKS); + CHECK_MSG(kiln_hmi_passphrase(&h)[0] == '\0', + "half a passphrase was left behind for the next attempt"); +} + +/* + * @relation(SWR-NET-12, scope=function) + */ +KILN_TEST(swrnet12_the_charset_reaches_every_printable_character) +{ + /* A passphrase this cannot type is a network this kiln cannot join, and + * the device raises no access point to fall back to. */ + kiln_hmi_t h; kiln_hmi_init(&h, 0); + const kiln_hmi_view_t v = net_view(); + to_network(&h, &v); + (void)feed(&h, &v, KILN_INPUT_PRESS); + (void)feed(&h, &v, KILN_INPUT_PRESS); + + bool seen[127] = { false }; + for (int i = 0; i < 200; i++) { + kiln_hmi_t probe = h; + probe.pass_len = 0; + probe.pass[0] = '\0'; + (void)feed(&probe, &v, KILN_INPUT_PRESS); + const unsigned char c = (unsigned char)probe.pass[0]; + if (c >= 32u && c < 127u) { seen[c] = true; } + (void)feed(&h, &v, KILN_INPUT_CW); + } + for (unsigned char c = 32; c < 127u; c++) { + CHECK_MSG(seen[c], "the knob cannot reach '%c' (%u)", c, (unsigned)c); + } +} + +/* + * @relation(SWR-NET-11, scope=function) + */ +KILN_TEST(swrnet11_the_list_scrolls_and_keeps_the_selection_visible) +{ + kiln_hmi_view_t v = net_view(); + v.net_count = KILN_HMI_MAX_NETWORKS; + for (uint8_t i = 0; i < KILN_HMI_MAX_NETWORKS; i++) { + (void)snprintf(v.net_list_ssid[i], KILN_HMI_SSID_LEN, "net-%u", (unsigned)i); + v.net_list_secured[i] = true; + } + + kiln_hmi_t h; kiln_hmi_init(&h, 0); + to_network(&h, &v); + (void)feed(&h, &v, KILN_INPUT_PRESS); + + for (uint8_t i = 0; i < KILN_HMI_MAX_NETWORKS; i++) { + CHECK_MSG(h.net_sel >= h.net_top && h.net_sel < h.net_top + 4u, + "selection %u is outside the window at %u", (unsigned)h.net_sel, + (unsigned)h.net_top); + (void)feed(&h, &v, KILN_INPUT_CW); + } +} diff --git a/firmware/supervisor/CMakeLists.txt b/firmware/supervisor/CMakeLists.txt index fb9caa3..aca556d 100644 --- a/firmware/supervisor/CMakeLists.txt +++ b/firmware/supervisor/CMakeLists.txt @@ -16,7 +16,16 @@ cmake_minimum_required(VERSION 3.16) project(kiln_supervisor C CXX ASM) -set(CMAKE_CXX_STANDARD 20) +# C++17, and the version matters: MISRA C++:2023 is written against C++17, and +# the supervisor is the component the project intends to hold to that subset +# (docs/coding-standard.md). Building at C++20 while naming C++17 as the +# target standard would have been a discrepancy an assessor finds before we do. +# +# Nothing was given up to move: the supervisor uses constexpr, nullptr, +# static_assert, noexcept and three attributes, and no language feature newer +# than C++11. It compiles clean at 17, at 14 and at 11; 17 is chosen to match +# the subset rather than to reach for anything in it. +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(supervisor.elf diff --git a/firmware/supervisor/Doxyfile b/firmware/supervisor/Doxyfile new file mode 100644 index 0000000..78e8702 --- /dev/null +++ b/firmware/supervisor/Doxyfile @@ -0,0 +1,243 @@ +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# The supervisor's Unit Design Document, generated from the source. +# +# tools/udd.sh build it into build-udd/ +# doxygen firmware/supervisor/Doxyfile +# +# =========================================================================== +# WHY THE UDD IS GENERATED AND NOT WRITTEN +# =========================================================================== +# Level 5 of the V-model (docs/v-model-process.md) wants, per unit: its +# functions, its parameters and their value ranges, its algorithms, its state +# machines and its error behaviour, each traceable up to the architecture and +# down to a test. A separate document saying all that about code is a document +# that disagrees with the code, and the disagreement is discovered by whoever +# is auditing rather than by whoever is editing. +# +# So the unit design lives in the headers, beside the thing it describes, and +# this produces the document from it. The traceability is the same mechanism: +# \implements and \verifiedby below become cross-referenced index pages, so +# "which unit realises SWR-SAF-37" and "what covers sup_step" are answerable +# from the generated document rather than from a maintained table. +# +# --------------------------------------------------------------------------- +# WHAT AN ASSESSOR IS LOOKING FOR, AND WHICH ALIAS CARRIES IT +# --------------------------------------------------------------------------- +# EN ISO 13849-1:2023 cl. 4.6 and EN IEC 60730-1 Annex H do not prescribe a +# document format. What a notified body reads a unit design for is narrower +# than "documentation" and is always the same five questions: +# +# What is this for, and what requirement makes it exist? \implements +# What may I pass it, and what will it give me back? \param, \retval, +# \range +# What does it do when the input is wrong? \errorbehaviour +# Why is it like this rather than the obvious way? \rationale +# How do I know it works? \verifiedby +# +# The aliases exist so those five are answered in a fixed place per unit rather +# than being somewhere in a paragraph, and so that a missing one is visible. +# \rationale is the one people leave out and the one an assessor asks about +# first on a safety function: a decision with no recorded reason has to be +# re-derived by the person reviewing it. + +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "Safe Kiln Controller: Supervisor Unit Design" +PROJECT_BRIEF = "Level 5 of the V-model, generated from the source (SWA-22)" +OUTPUT_DIRECTORY = build-udd +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English + +# The supervisor is C++ written in a C shape: no templates, no classes, no +# namespaces outside the board layer. This output mode suits it and keeps the +# document readable by somebody who does not write C++ for a living, which an +# assessor may not. +OPTIMIZE_OUTPUT_FOR_C = YES + +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../.. +JAVADOC_AUTOBRIEF = YES +TAB_SIZE = 4 +MARKDOWN_SUPPORT = YES +AUTOLINK_SUPPORT = YES + +# --- the fields a unit design has to carry ------------------------------- +# +# Each \xrefitem builds its own index page, which is what turns these from +# comments into traceability: "Requirements implemented" lists every unit +# against the SWR- it realises, and the reverse direction is one click. +ALIASES += "implements=\xrefitem implements \"Implements\" \"Requirements implemented\" " +ALIASES += "derivedfrom=\xrefitem derivedfrom \"Derived from\" \"Architecture traceability\" " +ALIASES += "verifiedby=\xrefitem verifiedby \"Verified by\" \"Unit verification\" " +ALIASES += "errorbehaviour=\par Error behaviour:^^" +ALIASES += "rationale=\par Design rationale:^^" +ALIASES += "rangeof=\par Permitted range:^^" +ALIASES += "statemachine=\par State machine:^^" +ALIASES += "sideeffects=\par Side effects:^^" +ALIASES += "reentrancy=\par Reentrancy:^^" +ALIASES += "resources=\par Resource use:^^" +ALIASES += "safetyclass=\xrefitem safetyclass \"Safety class\" \"Safety classification\" " + +# --- what goes in --------------------------------------------------------- +# +# core/ and protocol/ are the safety function and are documented to the letter. +# board/ and src/ are the silicon and the composition root; they are in the +# document because a unit design that stops at the platform boundary does not +# describe the unit that ships. +INPUT = core/include \ + core/src \ + protocol/include \ + src \ + board \ + doc +FILE_PATTERNS = *.h *.cpp *.dox +RECURSIVE = YES +EXCLUDE = test +EXCLUDE_PATTERNS = */build/* */stm32g031.h +USE_MDFILE_AS_MAINPAGE = + +# stm32g031.h is excluded deliberately: it is 4 000 generated register +# definitions from ST's CMSIS-SVD, it is not anybody's unit design, and +# including it would bury the four files that are. + +# --- the one exemption, at the hardware boundary -------------------------- +# +# Register addresses and pin numbers, 44 of them across board/pins.h and +# board/cortex_m0plus.h. The files stay IN the document, with their \file +# blocks, the pin table and the compile-time proofs that no two pins share a +# bit; what is exempted is an individual entry per register address. +# +# The reason is the one the board layer's .clang-tidy already gives for its own +# exemptions: a finding inherent to the hardware boundary is exempted THERE and +# nowhere else. The provenance of these numbers is what an assessor needs and +# it is stated once, in the file blocks: the pinout and alternate functions +# from STM32CubeMX's MCU database, the register bits from the CMSIS-SVD, +# neither from anybody's recollection. Forty-four entries saying "SYST_RVR is +# the SysTick reload register" would add no fact that the name does not. +# +# core/ and protocol/, which are the safety function, carry NO exemption of any +# kind and are complete at 76 of 76. +# The permit polarities and SUP_BIT are NOT in this list and are documented +# individually: a polarity is the difference between permitting heat and +# refusing it, and SUP_BIT is what the compile-time pin-map proofs are built +# from. The exemption covers addresses and numbers, not meaning. +# SUP_RCC_APBENR* and SUP_RCC_IOPENR* rather than SUP_RCC_*: the wider pattern +# reached into core/ and silently removed selfcheck.h's five clock-integrity +# constants, which are part of the safety function and are documented. Nothing +# warned, because excluding a symbol is not the same as it being undocumented; +# the coverage count caught it, which is the second time that number has earned +# its place. +EXCLUDE_SYMBOLS = SYST_* SUP_PIN_* SUP_PORT* SUP_SYSCLK_HZ \ + SUP_AF_* SUP_RCC_APBENR* SUP_RCC_IOPENR* \ + SUP_PERMIT_GPIO_* + +# --- extraction: the half of the gate doxygen can enforce ------------------ +# +# These four values are the only combination that makes an undocumented +# function fail the build, which was established by experiment rather than by +# reading, because the interaction is not obvious and two of the four +# combinations are silent: +# +# EXTRACT_ALL HIDE_UNDOC_MEMBERS undocumented function +# NO YES SILENT, the member is simply dropped +# NO NO WARNS <-- what is set here +# YES YES silent: doxygen disables the warning +# YES NO silent, same reason +# +# EXTRACT_ALL = YES is the trap: it looks like "document everything" and it +# switches WARN_IF_UNDOCUMENTED off, so the document fills with empty entries +# and the build stays green. For a safety target that is the worst of the four. +# +# HIDE_UNDOC_MEMBERS = NO is what makes the difference, and it has a visible +# cost: an undocumented member appears in the document as a bare declaration. +# That is the right cost. A gap you can see in the output is a gap somebody +# fixes; a member silently dropped is a unit design that looks finished. +# +# WHAT NEITHER SETTING CAN CATCH, and the reason tools/udd-coverage.py exists: +# a file with no \file block at all is invisible to doxygen entirely, members +# and all, with no warning of any kind. Two of this component's four headers +# were in exactly that state while the build was green. Checking that every +# input file carries a \file block is not something doxygen will do, so the +# script does it. +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +INTERNAL_DOCS = NO +SHOW_INCLUDE_FILES = YES +SHOW_USED_FILES = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO + +# Source browsing is on: an assessor reading a unit design wants the code one +# click away, and a generated document that hides it invites the question of +# whether the two agree. +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = NO +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES + +# --- warnings are the gate ------------------------------------------------ +QUIET = YES +WARNINGS = YES +# Every one of these is on, and each catches a different way a unit design can +# be incomplete: +# +# WARN_IF_UNDOCUMENTED a function, struct or constant with nothing said +# WARN_IF_DOC_ERROR a comment that does not mean what it looks like +# WARN_IF_INCOMPLETE_DOC a documented function missing some of its parameters +# WARN_NO_PARAMDOC ... or missing all of them +# +# FAIL_ON_WARNINGS rather than YES: it finishes the run and reports everything, +# then fails. YES stops at the first, which turns documenting a component into +# as many build cycles as it has gaps. +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_IF_INCOMPLETE_DOC = YES +WARN_NO_PARAMDOC = YES +WARN_AS_ERROR = FAIL_ON_WARNINGS +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = build-udd/doxygen-warnings.txt + +# --- output --------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_COLORSTYLE = LIGHT +GENERATE_TREEVIEW = YES +DISABLE_INDEX = NO +FULL_SIDEBAR = NO +SEARCHENGINE = YES + +# LaTeX is off by default because it needs a TeX installation that nothing else +# in this project needs. Turn it on when a PDF has to be handed over: the +# document is the same either way, which is the point of generating it. +GENERATE_LATEX = NO +GENERATE_XML = YES +XML_OUTPUT = xml + +# XML is on so the document is machine-readable as well as human-readable: a +# traceability check that wants to ask "is every SWR-SAF- realised by a unit" +# reads the XML rather than scraping HTML. + +# --- diagrams ------------------------------------------------------------- +# +# HAVE_DOT is set to YES by tools/udd.sh, which refuses to run without +# graphviz. It stopped being optional when the headers gained \dot blocks of +# their own: the trip logic's state machine in trip.h and the program-sequence +# graph in selfcheck.h. Those two are the pictures an assessment of a safety +# function asks for, and \dot was chosen over PlantUML because graphviz is +# already installed beside doxygen for the call graphs, while PlantUML would +# add a Java runtime and a jar to vendor for notation this does not need. +# +# The value here stays NO so that a bare `doxygen Doxyfile` outside the script +# produces a document rather than an error about a tool it was not told about. +HAVE_DOT = NO +CALL_GRAPH = NO +CALLER_GRAPH = NO +INCLUDE_GRAPH = NO +INCLUDED_BY_GRAPH = NO diff --git a/firmware/supervisor/board/cortex_m0plus.h b/firmware/supervisor/board/cortex_m0plus.h index 4b5ef67..06e50f3 100644 --- a/firmware/supervisor/board/cortex_m0plus.h +++ b/firmware/supervisor/board/cortex_m0plus.h @@ -16,6 +16,17 @@ * same on every Cortex-M0+ implementation, which is why they can be written * down here without a vendor file to derive them from. */ +/** + * @file cortex_m0plus.h + * @brief Cortex-M0+ core registers used by the supervisor. + * + * @derivedfrom SWA-22. + * + * Core peripherals rather than STM32 ones: SysTick and the registers the + * start-up path touches. Separate from `stm32g031.h` because that file is + * generated from ST's CMSIS-SVD and this is the ARM core underneath it. + */ + #ifndef SUP_CORTEX_M0PLUS_H #define SUP_CORTEX_M0PLUS_H diff --git a/firmware/supervisor/board/pins.h b/firmware/supervisor/board/pins.h index 94214bc..3fe723e 100644 --- a/firmware/supervisor/board/pins.h +++ b/firmware/supervisor/board/pins.h @@ -34,6 +34,21 @@ * supervisor). USART2_RX would be PA3, and PA3 is used as a plain input * instead, so the receiver is not merely unused, it is unwired. */ +/** + * @file pins.h + * @brief The supervisor pin map for the STM32G031K8T6 (LQFP32). + * + * @derivedfrom SWA-22. The assignment itself is in + * `firmware/supervisor/README.md`, with the three properties of + * it that must survive any change: everything on port A, PA9 to + * PA12 avoided entirely, and the UART's receive pin never + * configured so the link is unwired rather than merely unused. + * + * The `static_assert`s below are the unit design of this file: they prove at + * compile time that no two pins share a bit and that nothing landed on the + * remappable PA9..PA14 range. + */ + #ifndef SUP_PINS_H #define SUP_PINS_H @@ -133,6 +148,20 @@ * is a window at every reset where the element's state is whatever the board * leaks to, which is the inverse of the open-drain problem tasklist K1 records * about the chain this replaces. */ +/** + * @brief Polarity of the permit output: 1 means a high level permits heat. + * + * @rangeof 1. A board that inverts the drive must change this. + * + * @errorbehaviour + * This places a requirement on the hardware, and it is the one to check first + * on a new board: every GPIO is a high-impedance input between reset and the + * first instruction, so the series element must be held **off by an external + * pull-down** rather than by this pin. Without it there is a window at every + * reset where the element's state is whatever the board leaks to. + * + * @implements SWR-SAF-22 + */ #define SUP_PERMIT_ACTIVE_HIGH 1 /* --- the permit readback (SWR-SAF-38) ----------------------------------- @@ -153,6 +182,17 @@ * inverts it must change this, and the firmware checks sense against command, so * getting it backwards fails loudly on the first cycle rather than quietly * agreeing half the time. */ +/** + * @brief Polarity of the permit readback: 1 means a high level reads energised. + * + * @rangeof 1. A board that inverts the sense must change this. + * + * @errorbehaviour + * The firmware checks sense against command, so getting this backwards fails + * loudly on the first cycle rather than quietly agreeing half the time. + * + * @implements SWR-SAF-38 + */ #define SUP_PERMIT_SENSE_ACTIVE_HIGH 1 /* --- why the second couple has a ~FAULT pin too ------------------------- @@ -184,6 +224,20 @@ * addition carries where a bitwise OR absorbs, so the two agree if and only if * no bit appears twice. No , no popcount, no constexpr function: it holds * in a freestanding build. */ +/** + * @brief The bit a pin number occupies in a port register. + * + * @param p Pin number, 0 to 15. + * @return `1u << p`. + * + * @rationale + * A function-like macro rather than a `constexpr` function because it is used + * inside the `static_assert`s below in a freestanding build with no `` + * and no `popcount`. Those assertions are the unit design of this file: + * sum-equals-OR is the whole trick, since both fold the same `1u << pin` + * terms, addition carries where a bitwise OR absorbs, and the two agree if and + * only if no bit appears twice. + */ #define SUP_BIT(p) (1u << (p)) /* Written out rather than folded by a variadic macro: the preprocessor does not diff --git a/firmware/supervisor/core/include/sup/max31856.h b/firmware/supervisor/core/include/sup/max31856.h index fec9798..3085ff8 100644 --- a/firmware/supervisor/core/include/sup/max31856.h +++ b/firmware/supervisor/core/include/sup/max31856.h @@ -1,7 +1,15 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** + * @file max31856.h + * @brief The MAX31856's register layout and the decode of one burst read. * - * The MAX31856's register layout and the decode of one burst read. + * @derivedfrom SWA-22 and SWA-01: everything that decides is platform-free. + * @safetyclass Produces the measurement the trip logic acts on. A wrong decode + * is a wrong temperature, which is the hazard the backstop exists + * for, so this is in the tested core rather than on the board. * * This is in sup_core, next to the trip logic, for the reason main.cpp states * about itself: everything that *decides* anything is platform-free and tested @@ -21,6 +29,15 @@ * them. What it does not want is two different readings of the same part, so * the register decode agrees on purpose while the decisions made from it do * not. + * + * @par Provenance of the numbers + * Every constant below is from the MAX31856 datasheet (Maxim/ADI 19-100116, + * tables 2 to 6), named rather than written as a literal at the point of use. + * + * @verifiedby `test_max31856.cpp`. Its vectors were produced by encoding known + * temperatures into the datasheet's register layout, not by + * recording what this decoder returned, which would have tested + * the decoder against itself. */ #ifndef SUP_MAX31856_H #define SUP_MAX31856_H @@ -30,98 +47,206 @@ #include "sup_proto.h" /* SUP_TC_FAULT_* */ -/* --- registers (datasheet table 2) --------------------------------------- */ -constexpr uint8_t SUP_TC_REG_CR0 = 0x00u; -constexpr uint8_t SUP_TC_REG_CR1 = 0x01u; -constexpr uint8_t SUP_TC_REG_MASK = 0x02u; -constexpr uint8_t SUP_TC_REG_CJTH = 0x0Au; /* the burst read starts here */ -constexpr uint8_t SUP_TC_REG_SR = 0x0Fu; /* ... and ends here */ -constexpr uint8_t SUP_TC_REG_WRITE = 0x80u; /* address | 0x80 selects a write */ +/** + * @name Register addresses (datasheet table 2) + * @rangeof Fixed by the part. Compile-time constants. + * @{ + */ +constexpr uint8_t SUP_TC_REG_CR0 = 0x00u; /**< Configuration 0. */ +constexpr uint8_t SUP_TC_REG_CR1 = 0x01u; /**< Configuration 1. */ +constexpr uint8_t SUP_TC_REG_MASK = 0x02u; /**< Fault mask. */ +constexpr uint8_t SUP_TC_REG_CJTH = 0x0Au; /**< Cold junction high; the burst read starts here. */ +constexpr uint8_t SUP_TC_REG_SR = 0x0Fu; /**< Status; the burst read ends here. */ +constexpr uint8_t SUP_TC_REG_WRITE = 0x80u; /**< OR with an address to select a write. */ +/** @} */ -/* CJTH, CJTL, LTCBH, LTCBM, LTCBL, SR: six registers in one transaction. +/** + * @brief Bytes in one burst read: CJTH, CJTL, LTCBH, LTCBM, LTCBL, SR. * - * One transaction rather than six is a correctness requirement, not an + * @rangeof 6. Compile-time constant. + * + * @rationale + * One transaction rather than six is a **correctness requirement**, not an * optimisation: the temperature and the fault status must describe the same * conversion, and two transactions can straddle one and produce a reading the - * fault bits disown. */ + * fault bits disown. + * + * @implements SWR-SAF-22 + */ constexpr unsigned SUP_TC_BURST_BYTES = 6u; /* --- the values written at init (datasheet tables 3 to 5) ---------------- */ -/* CR0: continuous conversion, open-circuit detect on, 50 Hz rejection. +/** + * @name CR0: continuous conversion, open-circuit detect, 50 Hz rejection + * + * @errorbehaviour + * OCFAULT is the bit that matters most here. It **defaults to 00**, which + * means the part will not report an open couple, and an over-temperature + * backstop whose sensor can fall off without saying so is not a backstop. * - * OCFAULT is the bit that matters most here. It defaults to 00, which means - * the part will NOT report an open couple, and an over-temperature backstop - * whose sensor can fall off without saying so is not a backstop. */ -constexpr uint8_t SUP_TC_CR0_CMODE_AUTO = 0x80u; -constexpr uint8_t SUP_TC_CR0_OCFAULT_1 = 0x10u; /* open-circuit detect, < 5 kohm */ -constexpr uint8_t SUP_TC_CR0_FILTER_50 = 0x01u; /* 0 = 60 Hz, 1 = 50 Hz (SWR-ACQ-06) */ + * @implements SWR-ACQ-06 + * @{ + */ +constexpr uint8_t SUP_TC_CR0_CMODE_AUTO = 0x80u; /**< Continuous conversion. */ +constexpr uint8_t SUP_TC_CR0_OCFAULT_1 = 0x10u; /**< Open-circuit detect, < 5 kohm. */ +constexpr uint8_t SUP_TC_CR0_FILTER_50 = 0x01u; /**< 0 is 60 Hz, 1 is 50 Hz. */ +/** @brief The value written to CR0 at init. */ constexpr uint8_t SUP_TC_CR0_VALUE = (uint8_t)(SUP_TC_CR0_CMODE_AUTO | SUP_TC_CR0_OCFAULT_1 | SUP_TC_CR0_FILTER_50); +/** @} */ -/* CR1: 4-sample averaging and type K. +/** + * @name CR1: four-sample averaging and type K + * + * @rationale + * Type K is fixed, not configured: SWR-ACQ-02 settles the thermocouple type, + * and the supervisor has no receive path to be told a different one. That is + * the same reason the link is simplex. * - * Type K is fixed, not configured: SWR-ACQ-02 settles the thermocouple type, and - * the supervisor has no receive path to be told a different one. That is the - * same reason the link is simplex. */ -constexpr uint8_t SUP_TC_CR1_AVG_4 = 0x20u; -constexpr uint8_t SUP_TC_CR1_TYPE_K = 0x03u; + * @implements SWR-ACQ-02 + * @{ + */ +constexpr uint8_t SUP_TC_CR1_AVG_4 = 0x20u; /**< Average four samples. */ +constexpr uint8_t SUP_TC_CR1_TYPE_K = 0x03u; /**< Thermocouple type K. */ +/** @brief The value written to CR1 at init, and read back by @ref sup_tc_cr1_ok. */ constexpr uint8_t SUP_TC_CR1_VALUE = (uint8_t)(SUP_TC_CR1_AVG_4 | SUP_TC_CR1_TYPE_K); +/** @} */ -/* MASK: 0x00, every fault allowed through to the ~FAULT pin. +/** + * @brief MASK: 0x00, every fault allowed through to the ~FAULT pin. + * + * @rangeof 0x00. Compile-time constant. + * + * @errorbehaviour + * It **defaults to 0xFF**, which masks every fault off the pin. Writing this + * is what makes the ~FAULT input on PA3 mean anything at all, and it is + * written **first** so there is no window in which the part is converting + * while its fault output is still inert. * - * It defaults to 0xFF, which masks every fault OFF the pin. Writing this is - * what makes the ~FAULT input on PA3 mean anything at all, and it is written - * FIRST so there is no window in which the part is converting while its fault - * output is still inert. */ + * @implements SWR-SAF-22 + */ constexpr uint8_t SUP_TC_MASK_VALUE = 0x00u; -/* --- status register bits (datasheet table 6) ---------------------------- */ -constexpr uint8_t SUP_TC_SR_CJ_RANGE = 0x80u; -constexpr uint8_t SUP_TC_SR_TC_RANGE = 0x40u; -constexpr uint8_t SUP_TC_SR_CJ_HIGH = 0x20u; -constexpr uint8_t SUP_TC_SR_CJ_LOW = 0x10u; -constexpr uint8_t SUP_TC_SR_TC_HIGH = 0x08u; -constexpr uint8_t SUP_TC_SR_TC_LOW = 0x04u; -constexpr uint8_t SUP_TC_SR_OVUV = 0x02u; -constexpr uint8_t SUP_TC_SR_OPEN = 0x01u; +/** + * @name Status register bits (datasheet table 6) + * @rangeof Fixed by the part. @ref sup_tc_faults maps these to the + * `SUP_TC_FAULT_*` set that crosses the link. + * @{ + */ +constexpr uint8_t SUP_TC_SR_CJ_RANGE = 0x80u; /**< Cold junction out of range. */ +constexpr uint8_t SUP_TC_SR_TC_RANGE = 0x40u; /**< Thermocouple out of range. */ +constexpr uint8_t SUP_TC_SR_CJ_HIGH = 0x20u; /**< Cold junction above its threshold. */ +constexpr uint8_t SUP_TC_SR_CJ_LOW = 0x10u; /**< Cold junction below its threshold. */ +constexpr uint8_t SUP_TC_SR_TC_HIGH = 0x08u; /**< Thermocouple above its threshold. */ +constexpr uint8_t SUP_TC_SR_TC_LOW = 0x04u; /**< Thermocouple below its threshold. */ +constexpr uint8_t SUP_TC_SR_OVUV = 0x02u; /**< Over or under voltage on an input. */ +constexpr uint8_t SUP_TC_SR_OPEN = 0x01u; /**< Open circuit detected. */ +/** @} */ +/** + * @brief One decoded burst: two temperatures, a fault word and a verdict. + * + * @rangeof Temperatures are q7 (1/128 degC), the part's own unit. See + * @ref SUP_Q7_PER_C for why the whole supervisor measures in it, and + * note what it buys here: the hot junction is a shift of the register + * bytes and nothing more, so there is no scaling step in which a + * reading can be rounded, truncated or promoted to a type this + * processor cannot multiply. + */ typedef struct { - /* q7: 1/128 degC, the part's own unit. See SUP_Q7_PER_C in sup_proto.h for - * why the whole supervisor measures temperature in it, and note what it - * buys right here: the hot junction is a shift of the register bytes and - * nothing more, so there is no scaling step in which a reading can be - * rounded, truncated or promoted to a type this processor cannot multiply. */ - int32_t chamber_q7; /* linearised hot junction, 1/128 degC */ - int32_t cj_q7; /* cold junction, 1/128 degC */ - uint16_t fault_bits; /* SUP_TC_FAULT_*, 0 for none */ - /* A conversion completed and the part reported nothing wrong with it. - * False leaves chamber_q7 at 0, which is never read by a caller that checks - * this first, and is a deliberately useless value for one that does not. */ + int32_t chamber_q7; /**< Linearised hot junction, 1/128 degC. */ + int32_t cj_q7; /**< Cold junction, 1/128 degC. */ + uint16_t fault_bits; /**< `SUP_TC_FAULT_*` set, 0 for none. */ + + /** + * @brief A conversion completed and the part reported nothing wrong with it. + * + * False leaves @ref chamber_q7 at 0, which is never read by a caller that + * checks this first, and is a deliberately useless value for one that does + * not. + */ bool valid; } sup_tc_sample_t; -/* Map a status register byte to SUP_TC_FAULT_* bits. +/** + * @brief Map a status register byte to `SUP_TC_FAULT_*` bits. + * + * @param[in] sr The status register as read. + * @return The corresponding fault set, 0 when the part reports nothing wrong. + * + * @rangeof `sr` is the eight bits of the status register; bits above those are + * ignored rather than rejected, since the register is a byte. + * + * @rationale + * Taken as `unsigned` rather than `uint8_t` because a `uint8_t` argument + * promotes to `int` at every mask inside, which is signed arithmetic in a + * bitwise expression and the high-integrity profile objects. + * + * @sideeffects None. Pure function. * - * Taken as unsigned rather than uint8_t because a uint8_t argument promotes to - * int at every mask inside. */ + * @implements SWR-SAF-22 + * @verifiedby `test_max31856.cpp`, each status bit on its own and in + * combination. + */ uint16_t sup_tc_faults(unsigned sr); -/* Decode one SUP_TC_BURST_BYTES burst starting at CJTH. +/** + * @brief Decode one burst read into a sample. + * + * @param[in] regs The @ref SUP_TC_BURST_BYTES bytes read starting at CJTH. + * @param[out] out The decoded sample. Always written. + * + * @rangeof `regs` must hold exactly @ref SUP_TC_BURST_BYTES bytes. The hot + * junction is a 19-bit signed value at 2^-7 degC per LSB; the cold + * junction is at 2^-6 and is shifted left by one, which is exact. + * + * @errorbehaviour + * A null pointer, or a burst that is all 0x00 or all 0xFF, yields + * @ref SUP_TC_FAULT_COMMS and `valid == false`. Those two patterns are a part + * that is absent, unpowered or on a dead bus, which the status register alone + * **cannot** report, because the status register is part of the burst that did + * not arrive. * - * `regs` must hold SUP_TC_BURST_BYTES bytes. A null pointer, or a burst that is - * all 0x00 or all 0xFF, yields SUP_TC_FAULT_COMMS and valid == false: those two - * patterns are a part that is absent, unpowered or on a dead bus, which the - * status register alone cannot report because it is part of the burst that did - * not arrive. */ + * @rationale + * This is arithmetic nobody can check by reading, which is why it is here + * rather than on the board: two's-complement reassembly across three bytes + * with a sign-extending shift. A logical shift instead of an arithmetic one + * reads -1 degC as +524287, which is above the backstop, so a cold kiln would + * trip. That is the specific mistake the host tests exist to catch. + * + * @sideeffects Writes `*out`. No allocation, no I/O. + * + * @implements SWR-SAF-22, SWR-ACQ-02 + * @verifiedby `test_max31856.cpp`, with vectors encoded from the datasheet's + * layout rather than recorded from this function, including + * negative temperatures and both dead-bus patterns. + */ void sup_tc_decode(const uint8_t *regs, sup_tc_sample_t *out); -/* True when `readback` is what SUP_TC_CR1_VALUE wrote. +/** + * @brief Whether a CR1 readback matches what was written. + * + * @param[in] readback The byte read back from CR1 after configuration. + * @return True when it equals @ref SUP_TC_CR1_VALUE. * - * The init self-test reads CR1 back rather than trusting the write. A missing - * part reads 0x00 or 0xFF depending on which way the bus floats, and both are - * distinguishable from a configured CR1, which is what makes sup_init's - * selftest_ok argument mean something. */ + * @rangeof `readback` is one register byte, taken as `unsigned` for the same + * promotion reason as @ref sup_tc_faults. + * + * @errorbehaviour + * A missing part reads 0x00 or 0xFF depending on which way the bus floats, and + * both are distinguishable from a configured CR1. That is what makes + * @ref sup_init 's `selftest_ok` argument mean something rather than being an + * assumption the caller passes along. + * + * @rationale + * The init self-test reads CR1 back rather than trusting the write, because a + * write to an absent part succeeds exactly as a write to a present one does. + * + * @implements SWR-SAF-36 + * @verifiedby `test_max31856.cpp`: the configured value, both float patterns, + * and a neighbouring value that must not pass. + */ bool sup_tc_cr1_ok(unsigned readback); #endif /* SUP_MAX31856_H */ diff --git a/firmware/supervisor/core/include/sup/selfcheck.h b/firmware/supervisor/core/include/sup/selfcheck.h index 5470779..548642a 100644 --- a/firmware/supervisor/core/include/sup/selfcheck.h +++ b/firmware/supervisor/core/include/sup/selfcheck.h @@ -1,8 +1,18 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** + * @file selfcheck.h + * @brief The supervisor's self-diagnostics: clock, program memory, RAM, stack + * and program sequence. * - * The supervisor's start-up and periodic self-checks: clock integrity and - * program-memory integrity. + * @derivedfrom SWA-22 and SWA-01. + * @safetyclass The diagnostic measures of EN IEC 60730-1 Annex H for software + * class B or C: invariable memory, variable memory, stack, + * program sequence and clock. A single-channel supervisor claims + * diagnostic coverage only for the failures it can observe, and + * this file is what it observes. * * Both are here rather than in main.cpp for the reason the trip logic is: they * are decisions about register values and memory contents, they are pure @@ -16,6 +26,16 @@ * and a single-channel supervisor claims diagnostic coverage only for the * failures it can actually observe. The three measures the supervisor now has * are this file's two plus the windowed watchdog in main.cpp. + * + * @errorbehaviour + * Every check here reports a boolean, and a false one reaches the trip logic + * through `diag_ok` on the input snapshot, which revokes the self-test rather + * than merely tripping (SWR-SAF-36). That makes it **unclearable by the + * button**: a supervisor whose memory, stack, clock, image or program sequence + * has failed is not in the category an operator can acknowledge. + * + * @implements SWR-SAF-33, SWR-SAF-34, SWR-SAF-35, SWR-SAF-36 + * @verifiedby `test_selfcheck.cpp`. */ #ifndef SUP_SELFCHECK_H #define SUP_SELFCHECK_H @@ -32,30 +52,56 @@ * with the reference manual, so every check below is phrased as an invariant * that holds whatever the encoding turns out to be. */ -constexpr uint32_t SUP_RCC_CR_HSIRDY = 1u << 10u; -constexpr uint32_t SUP_RCC_CR_PLLON = 1u << 24u; -constexpr uint32_t SUP_RCC_CFGR_SW_Msk = 7u << 0u; -constexpr uint32_t SUP_RCC_CFGR_SWS_Pos = 3u; -constexpr uint32_t SUP_RCC_CFGR_SWS_Msk = 7u << SUP_RCC_CFGR_SWS_Pos; +/** + * @name Clock register bits (RM0444 RCC_CR and RCC_CFGR) + * @rangeof Bit positions from ST's CMSIS-SVD, as everything in `stm32g031.h` + * is. What is deliberately **not** used is the SWS encoding: the SVD + * carries no enumerated values for it and its RCC_CR reset value + * disagrees with the reference manual, so every check below is + * phrased as an invariant that holds whatever the encoding is. + * @{ + */ +constexpr uint32_t SUP_RCC_CR_HSIRDY = 1u << 10u; /**< HSI16 is ready. */ +constexpr uint32_t SUP_RCC_CR_PLLON = 1u << 24u; /**< The PLL is enabled. */ +constexpr uint32_t SUP_RCC_CFGR_SW_Msk = 7u << 0u; /**< Clock switch selection. */ +constexpr uint32_t SUP_RCC_CFGR_SWS_Pos = 3u; /**< Clock switch status position. */ +constexpr uint32_t SUP_RCC_CFGR_SWS_Msk = 7u << SUP_RCC_CFGR_SWS_Pos; /**< ... and its mask. */ +/** @} */ -/* True when the clock tree is the one the firmware was written against. +/** + * @brief Whether the clock tree is the one the firmware was written against. + * + * @param[in] rcc_cr RCC_CR as read. + * @param[in] rcc_cfgr RCC_CFGR as read. + * @return True when all three invariants below hold. * + * @rangeof Both arguments are whole register words; bits this does not name + * are ignored. + * + * @rationale * Three invariants, none of which needs the SWS encoding: * - * SWS == SW. The clock switch *status* must agree with the clock switch + * - **SWS == SW.** The clock switch *status* must agree with the clock switch * *selection*. This catches a switch that did not take effect and a source - * that changed underneath us, and it is true for any selection. + * that changed underneath us, and it is true for any selection, which is why + * it does not need the encoding the SVD does not carry. + * - **HSIRDY set.** The firmware runs from HSI16 by keeping the reset default, + * which `board_clocks_init` states rather than writes, so the oscillator it + * depends on has to be running. + * - **PLLON clear.** `SUP_SYSCLK_HZ` assumes no PLL. A PLL that became enabled + * means the system clock is not 16 MHz and every timer derived from it is + * wrong. * - * HSIRDY set. The firmware runs from HSI16 by keeping the reset default - * (board_clocks_init states this rather than writing it), so the oscillator - * it depends on has to be running. + * @errorbehaviour + * False leads to `SUP_TRIP_SELF_TEST`, which never permits heat and which + * `sup_clear` deliberately refuses to clear: a supervisor that cannot trust + * its own time base must not be talked back into service by a button. * - * PLLON clear. SUP_SYSCLK_HZ assumes no PLL. A PLL that became enabled means - * the system clock is not 16 MHz, and every timer derived from it is wrong. + * @sideeffects None. Pure function. * - * Returning false leads to SUP_TRIP_SELF_TEST, which never permits heat and - * which sup_clear deliberately refuses to clear: a supervisor that cannot - * trust its own time base must not be talked back into service by a button. */ + * @implements SWR-SAF-36 + * @verifiedby `test_selfcheck.cpp`: each invariant violated on its own. + */ bool sup_clock_ok(uint32_t rcc_cr, uint32_t rcc_cfgr); /* --- program memory integrity ------------------------------------------- @@ -67,21 +113,66 @@ bool sup_clock_ok(uint32_t rcc_cr, uint32_t rcc_cfgr); * vectors, which is worth more than the handful of microseconds the peripheral * would save on a check that runs once per boot over 4 kB. */ +/** + * @brief CRC-32 over a buffer, the standard reflected polynomial, in software. + * + * @param[in] data Start of the region. + * @param[in] len Length in bytes. + * @return The checksum. + * + * @rationale + * Software rather than the STM32's CRC peripheral on purpose: it makes the + * computation a pure function that the host tests exercise against known + * vectors, which is worth more than the handful of microseconds the peripheral + * would save on a check that runs once per boot over 4 kB. + * + * @sideeffects None. Pure function. + * + * @verifiedby `test_selfcheck.cpp`, against known vectors. + */ uint32_t sup_crc32(const void *data, size_t len); -/* True when `len` bytes at `data` hash to `expected`. +/** + * @brief What the digest placeholder reads before the build has stamped it. * - * The expected value is patched into the image after linking by - * tools/sup-crc.py, over the region the linker script marks. A corrupted or - * partially-programmed image therefore fails to match and the supervisor comes - * up refusing heat, rather than running whatever the flash happens to hold. + * @rangeof 0xFFFFFFFF, which is also what erased flash reads as. * - * SUP_CRC_UNPROGRAMMED is what the placeholder reads before the tool has run. - * It is treated as a FAILURE and not as "skip the check", because an image that + * @errorbehaviour + * Treated as a **failure** and not as "skip the check", because an image that * reached a board without passing through the build step that stamps it is - * exactly the image whose integrity is unknown. */ + * exactly the image whose integrity is unknown. + * + * @implements SWR-SAF-36 + */ constexpr uint32_t SUP_CRC_UNPROGRAMMED = 0xFFFFFFFFu; +/** + * @brief Whether the program image still hashes to the digest stamped into it. + * + * @param[in] data Start of the region covered, the vector table. + * @param[in] len Length of the region, up to `_sup_crc_region_end`. + * @param[in] expected The stamped digest. + * @return True when they agree. + * + * @rangeof `expected` is a CRC-32, or @ref SUP_CRC_UNPROGRAMMED when the image + * was never stamped. + * + * @errorbehaviour + * A corrupted or partially programmed image fails to match and the supervisor + * comes up refusing heat, rather than running whatever the flash happens to + * hold. An unstamped image fails too, for the reason given on + * @ref SUP_CRC_UNPROGRAMMED. + * + * @rationale + * The digest sits immediately after the region because a digest cannot cover + * itself, and `tools/sup-crc.py` checks that invariant rather than trusting + * the linker script to maintain it. + * + * @resources Runs over roughly 3.5 kB; called once at start-up. + * + * @implements SWR-SAF-36 + * @verifiedby `test_selfcheck.cpp`, including the unstamped case. + */ bool sup_flash_ok(const void *data, size_t len, uint32_t expected); /* --- RAM integrity ------------------------------------------------------ @@ -96,24 +187,79 @@ bool sup_flash_ok(const void *data, size_t len, uint32_t expected); * both states, and the address-dependent pair catches the failure a simple * all-ones/all-zeros pair misses: two words that are physically the same * storage because an address line is stuck. */ +/** + * @brief How many patterns the RAM test writes. + * + * @rangeof 5. Compile-time constant. + * + * @rationale + * Between them every bit of every word is driven to both states, and the + * **address-dependent** pair catches the failure a simple all-ones and + * all-zeros pair misses: two words that are physically the same storage + * because an address line is stuck. Those two pass every uniform pattern, + * since both hold the same value and both read back what was written, and fail + * only when asked to hold two different values at once. + * + * @implements SWR-SAF-33 + */ constexpr unsigned SUP_RAM_PATTERN_COUNT = 5u; -/* A declaration, not a definition: the array is defined in selfcheck.cpp with - * its initialiser, so there is no initialisation of any kind in this header to - * be ordered against anything. The check reports the extern declaration - * regardless. +/** + * @brief The patterns, in order. + * + * @rationale + * A declaration, not a definition: the array is defined in `selfcheck.cpp` + * with its initialiser, so there is no initialisation of any kind in this + * header to be ordered against anything. clang-tidy reports the extern + * declaration regardless, which is what the suppression below is for, and it + * has to sit on the line immediately before the declaration. + * + * @implements SWR-SAF-33 * NOLINTNEXTLINE(bugprone-dynamic-static-initializers) */ extern const uint32_t SUP_RAM_PATTERNS[SUP_RAM_PATTERN_COUNT]; -/* True when the block holds every pattern written to it. +/** + * @brief Whether a block of RAM holds back every pattern written to it. + * + * @param[in,out] block Start of the block. **Destructive**: see below. + * @param[in] words Length in **words**, not bytes. + * @return True when every pattern read back as written. * - * `words` is a word count, not a byte count. The block must not overlap the - * caller's stack or the save buffer it is using, for the obvious reason. */ + * @errorbehaviour + * Destructive by contract: it leaves the block holding the last pattern it + * wrote, so the caller saves and restores. That is the price of testing the + * actual storage rather than a copy of it, and it is why the periodic test + * walks a small block at a time. The block must not overlap the caller's stack + * or the save buffer it is using. + * + * @sideeffects Overwrites `block`. + * + * @implements SWR-SAF-33 + * @verifiedby `test_selfcheck.cpp` over the loop; the two failure returns + * inside it are unreachable from a host test, because host RAM + * cannot be made to fail on demand, which is why the judgement is + * split into @ref sup_ram_word_ok and tested there. + */ bool sup_ram_block_ok(volatile uint32_t *block, size_t words); -/* True when `read_back` is what `written` should have produced. +/** + * @brief Whether one word read back as it was written. + * + * @param[in] written The value written. + * @param[in] read_back The value read. + * @return True when they are equal. + * + * @rationale + * Split out of @ref sup_ram_block_ok 's loop so the comparison is testable + * without needing RAM that can be made to fail, which is the one thing a host + * test cannot arrange. The loop around it is four lines; the judgement in it + * is tested, for a bit stuck high, a bit stuck low and both polarities of a + * wrong word. * - * Split out from the loop so the comparison is testable without needing RAM - * that can be made to fail, which is the one thing a host test cannot arrange. */ + * @sideeffects None. Pure function. + * + * @implements SWR-SAF-33 + * @verifiedby `test_selfcheck.cpp`. + */ bool sup_ram_word_ok(uint32_t written, uint32_t read_back); /* Pick the next block to test, advancing `cursor` through [lo, hi) and @@ -131,6 +277,38 @@ bool sup_ram_word_ok(uint32_t written, uint32_t read_back); * `lo` and `hi` are expected word-aligned; a window that is not is clamped * inward rather than rejected, because a misaligned bound is a linker-script * mistake that should degrade to testing less, not to testing nothing. */ +/** + * @brief Pick the next block to test, walking a window and wrapping at the top. + * + * @param[in] lo Low bound of the window, word-aligned. + * @param[in] hi High bound, exclusive, word-aligned. + * @param[in] words Block length in words. + * @param[in,out] cursor Position in the walk; advanced on success. + * @param[out] out_addr Address of the block to test. + * @return True when a block was chosen. + * @retval false The window cannot hold a whole block. + * + * @rangeof `lo` and `hi` are expected word-aligned. A window that is not is + * **clamped inward** rather than rejected, because a misaligned bound + * is a linker-script mistake that should degrade to testing less, not + * to testing nothing. + * + * @errorbehaviour + * Returning false leaves the cursor alone and is **not** an error: on a target + * where the stack has grown close to the guard there is simply nowhere safe to + * test this cycle, and reporting a diagnostic failure for that would be a + * nuisance trip. A nuisance trip is worse than a missed cycle of a test that + * runs ten times a second. + * + * @rationale + * Addresses are `uint32_t` rather than pointers so the walk is arithmetic a + * host test can drive with fabricated addresses. The caller turns the result + * back into a pointer, which is the one step that needs a real address space. + * + * @implements SWR-SAF-33 + * @verifiedby `test_selfcheck.cpp`, including the wrap and the too-small + * window. + */ bool sup_ram_next_block(uint32_t lo, uint32_t hi, size_t words, uint32_t *cursor, uint32_t *out_addr); @@ -146,11 +324,59 @@ bool sup_ram_next_block(uint32_t lo, uint32_t hi, size_t words, * storage reads as and a guard that matches the failure it looks for is no * guard at all. */ +/** + * @brief The pattern the stack guard is filled with. + * + * @rangeof 0xA5C3A5C3. Compile-time constant. + * + * @rationale + * Deliberately not 0x00000000 or 0xFFFFFFFF, because those are what + * uninitialised or erased storage reads as, and a guard that matches the + * failure it looks for is no guard at all. + * + * @implements SWR-SAF-34 + */ constexpr uint32_t SUP_STACK_GUARD_PATTERN = 0xA5C3A5C3u; -/* True when every word of the guard still holds the pattern. */ +/** + * @brief Whether every word of the stack guard still holds the pattern. + * + * @param[in] guard Start of the guard region. + * @param[in] words Its length in words. + * @return True when the stack has not grown into it. + * + * @rangeof The region the linker script reserves, 256 words. + * + * @errorbehaviour + * A stack that has grown into the guard has corrupted nothing that matters, + * because the region is reserved and holds no variables, which is what makes + * this a warning rather than a post-mortem. + * + * @rationale + * **Every** word is checked, not a sample: the stack arrives at the top of the + * region, and a sampled check would miss the shallow overflow, which is the + * one still worth catching. + * + * @resources Runs every cycle, ten times a second, over 1 kB. + * + * @implements SWR-SAF-34 + * @verifiedby `test_selfcheck.cpp`: a guard with one word disturbed, at both + * ends and in the middle. + */ bool sup_stack_guard_ok(const volatile uint32_t *guard, size_t words); +/** + * @brief Fill the stack guard with @ref SUP_STACK_GUARD_PATTERN. + * + * @param[out] guard Start of the guard region. + * @param[in] words Its length in words. + * + * @sideeffects Overwrites the region. Called once, at start-up, before the + * stack can have grown into it. + * + * @implements SWR-SAF-34 + * @verifiedby `test_selfcheck.cpp`, paired with @ref sup_stack_guard_ok. + */ void sup_stack_guard_fill(volatile uint32_t *guard, size_t words); /* --- program flow ------------------------------------------------------- @@ -163,25 +389,112 @@ void sup_stack_guard_fill(volatile uint32_t *guard, size_t words); * line, or one that a corrupted branch entered halfway through. Both of those * produce a cycle that finishes on time with the wrong work done. */ +/** + * @brief The stages of one supervisor cycle, in the order they must run. + * + * @statemachine + * Each stage announces itself through @ref sup_flow_mark, and the verdict is + * taken once at the end by @ref sup_flow_complete. Any departure from this + * path, a skip, a repeat or a reorder, reaches the same place: + * + * @dot + * digraph flow { + * rankdir=LR; + * node [shape=box, style=rounded, fontname="Helvetica", fontsize=10]; + * edge [fontname="Helvetica", fontsize=9]; + * + * begin [shape=point, width=0.12, label=""]; + * read [label="READ\nthermocouple burst"]; + * step [label="STEP\ntrip logic"]; + * perm [label="PERMIT\ndrive the line"]; + * rep [label="REPORT\nencode the frame"]; + * ok [label="complete", penwidth=2]; + * broken [label="broken\ndiag_ok false\nnext cycle", style="rounded,bold"]; + * + * begin -> read [label="sup_flow_begin"]; + * read -> step; + * step -> perm; + * perm -> rep; + * rep -> ok [label="all four, once, in order"]; + * + * read -> broken [label="out of order", style=dashed]; + * step -> broken [label="or twice", style=dashed]; + * perm -> broken [style=dashed]; + * rep -> broken [label="or the cycle ended\nbefore REPORT", style=dashed]; + * } + * @enddot + * + * This is what a watchdog cannot see. A watchdog notices a cycle that stopped; + * it cannot notice one that ran on time having skipped PERMIT, which is the + * stage that drives the line the kiln depends on. + * + * @implements SWR-SAF-35 + */ typedef enum { - SUP_FLOW_READ = 0, /* the thermocouple burst was read */ - SUP_FLOW_STEP, /* the trip logic was stepped */ - SUP_FLOW_PERMIT, /* the permit line was driven */ - SUP_FLOW_REPORT, /* the frame was encoded and queued */ - SUP_FLOW_COUNT + SUP_FLOW_READ = 0, /**< The thermocouple burst was read. */ + SUP_FLOW_STEP, /**< The trip logic was stepped. */ + SUP_FLOW_PERMIT, /**< The permit line was driven. */ + SUP_FLOW_REPORT, /**< The frame was encoded and queued. */ + SUP_FLOW_COUNT /**< Count of stages; not a stage. */ } sup_flow_stage_t; +/** + * @brief Program sequence state for one cycle. + * @implements SWR-SAF-35 + */ typedef struct { - uint8_t next; /* the stage expected next */ - bool broken; /* a stage arrived out of order, or twice */ + uint8_t next; /**< The stage expected next. */ + bool broken; /**< A stage arrived out of order, or twice. */ } sup_flow_t; +/** + * @brief Begin a cycle's sequence monitoring. + * + * @param[out] f Sequence state, reset to expect the first stage. + * + * @errorbehaviour + * The verdict necessarily lands in the **following** cycle, since a sequence + * can only be judged once it has finished, which costs 100 ms against + * SWR-NFR-04's 500 ms. + * + * @implements SWR-SAF-35 + * @verifiedby `test_selfcheck.cpp`. + */ void sup_flow_begin(sup_flow_t *f); -/* Announce a stage. Announcing one out of order, or twice, breaks the cycle. */ +/** + * @brief Announce that a stage has run. + * + * @param[in,out] f Sequence state. + * @param[in] stage The stage that just completed. + * + * @errorbehaviour + * Announcing a stage out of order, or twice, marks the cycle broken and + * @ref sup_flow_complete then returns false. The state is not reset by this: + * a broken cycle stays broken until the next @ref sup_flow_begin. + * + * @implements SWR-SAF-35 + * @verifiedby `test_selfcheck.cpp`: skipped, repeated and reordered stages. + */ void sup_flow_mark(sup_flow_t *f, sup_flow_stage_t stage); -/* True only when every stage ran exactly once and in order. */ +/** + * @brief Whether every stage ran exactly once and in order. + * + * @param[in] f Sequence state at the end of a cycle. + * @return True only when the cycle did all of its work, in order. + * + * @rationale + * This catches what a watchdog cannot. A watchdog notices a loop that stopped; + * it cannot notice a loop that ran but skipped the step that drives the permit + * line, or one that a corrupted branch entered halfway through. Both produce a + * cycle that finishes on time with the wrong work done. + * + * @sideeffects None. Pure function. + * + * @implements SWR-SAF-35 + * @verifiedby `test_selfcheck.cpp`. + */ bool sup_flow_complete(const sup_flow_t *f); #endif /* SUP_SELFCHECK_H */ diff --git a/firmware/supervisor/core/include/sup/trip.h b/firmware/supervisor/core/include/sup/trip.h index 5835e8a..c56cd60 100644 --- a/firmware/supervisor/core/include/sup/trip.h +++ b/firmware/supervisor/core/include/sup/trip.h @@ -1,5 +1,15 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** + * @file trip.h + * @brief The supervisor's trip logic: the whole safety function. + * + * @derivedfrom SWA-22, the independent safety supervisor. + * @safetyclass EN IEC 60730-1 Annex H software class B or C, the control + * function under assessment. EN ISO 13849-1:2023 safety-related + * part; no performance level is claimed (`docs/safety.md`). * * The supervisor's trip logic (SWA-22, docs/safety-supervisor.md section 3). * @@ -50,16 +60,61 @@ * must stay above that side's KILN_TEMP_CEILING_C of 1300 degC. The 50 degC * between them is the margin (SWR-SAF-23); see safety-supervisor.md section 4 for * why the ceiling moved down rather than this moving up. */ +/** + * @brief Absolute over-temperature backstop: 1350 degC, in q7. + * + * @rangeof 1350 degC expressed as 1/128 degC counts. Compile-time constant; + * there is no configuration item for it and no way to raise it at + * run time, which is the property the safety and security arguments + * both rest on. + * + * @rationale + * It must agree with `KILN_SUPERVISOR_TRIP_C` on the ESP32 and must stay above + * that side's 1300 degC ceiling. The 50 degC between them is the margin: the + * controller stops first and the supervisor is the backstop, so the two never + * race to trip on the same reading. `docs/safety-supervisor.md` section 4 has + * why the ceiling moved down rather than this moving up. + * + * @implements SWR-SAF-23 + * @verifiedby `test_trip.cpp`, at the threshold and one LSB either side. + */ constexpr int32_t SUP_OVERTEMP = sup_c_to_q7(1350); /* A reported front-end fault, or an unusable reading, must persist before it * latches: a single bad conversion on a noisy bus is not a dead sensor. Heat * is withheld immediately either way, so the grace delays the *latch*, not the * protection. */ +/** + * @brief How long a front-end fault must persist before the trip latches: 1 s. + * + * @rangeof Whole milliseconds. Compile-time constant. + * + * @errorbehaviour + * Heat is withheld on the **first** cycle that reports a fault. This interval + * delays only the latch, so a single bad conversion on a noisy bus costs one + * cycle of heating rather than an operator visit. + * + * @implements SWR-SAF-22 + * @verifiedby `test_trip.cpp`: a fault that clears inside the grace does not + * latch; one that persists does. + */ constexpr uint32_t SUP_FAULT_GRACE_MS = 1000u; /* How long the clear button must be held. Long enough to be deliberate, short * enough not to be a puzzle. See the note on edge triggering below. */ +/** + * @brief How long the clear button must be held before a latch is cleared: 500 ms. + * + * @rangeof Whole milliseconds. Compile-time constant. + * + * @rationale + * A deliberate act rather than a contact bounce. The button acknowledges a + * condition the operator has seen and dealt with, so the gesture should be one + * nobody performs by brushing past the panel. + * + * @implements SWR-SAF-18 + * @verifiedby `test_trip.cpp`: a short press does not clear; a held one does. + */ constexpr uint32_t SUP_CLEAR_HOLD_MS = 500u; /* SWR-SAF-37: how far the two chamber couples may disagree, and for how long. @@ -80,7 +135,34 @@ constexpr uint32_t SUP_CLEAR_HOLD_MS = 500u; * enough that the comparison is about the sensors and not about the kiln. Two * probes at opposite ends of a chamber would need a band so wide as to detect * nothing. SWR-SAF-37 says so, and the commissioning documentation has to. */ +/** + * @brief How far two chamber couples may differ before it is a fault: 50 degC, in q7. + * + * @rangeof 50 degC expressed as 1/128 degC counts. Compile-time constant. + * + * @rationale + * Wide on purpose, and the limitation has to be stated rather than implied: it + * catches a **grossly** wrong couple, which is the hazard, and not one reading + * five degrees low. A band tight enough for that would stop healthy firings, + * and a nuisance trip is how a protection comes to be disabled. + * + * @implements SWR-SAF-37 + * @verifiedby `test_trip.cpp`: inside the band both couples are used; outside + * it the higher is acted on and the disagreement latches. + */ constexpr int32_t SUP_DISAGREE = sup_c_to_q7(50); +/** + * @brief How long two couples must disagree before the trip latches: 10 s. + * + * @rangeof Whole milliseconds. Compile-time constant. + * + * @errorbehaviour + * Protection does not wait for this: the **higher** reading is acted on from + * the first cycle of disagreement. The interval delays the latch only. + * + * @implements SWR-SAF-37 + * @verifiedby `test_trip.cpp`, at the boundary of the interval. + */ constexpr uint32_t SUP_DISAGREE_MS = 10000u; /* SWR-SAF-38: how long after withdrawing the permit the coil may still read as @@ -89,101 +171,335 @@ constexpr uint32_t SUP_DISAGREE_MS = 10000u; * Longer than the contactor's drop-out plus the readback divider's settling, and * shorter than anything that matters. 2 s matches the interval SWR-SAF-27 already * uses for the ESP32's weld discrimination, for the same physical reason. */ +/** + * @brief How long the coil may read energised after the permit is withdrawn: 2 s. + * + * @rangeof Whole milliseconds. Compile-time constant. + * + * @rationale + * The contactor is a mechanical device behind a charge pump that decays rather + * than switches, so "energised" remains true for a while after the permit goes + * away. This is the settling time that distinguishes that from a coil that is + * stuck, which is a welded contactor and a different fault entirely. + * + * @implements SWR-SAF-22 + * @verifiedby `test_trip.cpp`: a readback that clears inside the interval is + * not a fault; one that persists latches. + */ constexpr uint32_t SUP_PERMIT_SETTLE_MS = 2000u; +/** + * @brief One cycle's view of the world, as handed to @ref sup_step. + * + * @rangeof Temperatures are q7 (1/128 degC). Every `bool` is **positive + * logic**, so a zero-filled snapshot means "nothing proven" and + * withholds heat. That is the convention the whole structure follows + * and the reason it is safe to forget a field. + * + * @errorbehaviour + * The one deliberate exception to the convention is @ref permit_sense, and it + * is documented on the field itself. + * + * @implements SWR-SAF-22, SWR-SAF-36, SWR-SAF-37, SWR-SAF-38 + */ typedef struct { - int32_t chamber_q7; /* couple 1, linearised, 1/128 degC */ - bool chamber_valid; /* a conversion completed and was in range */ - /* SWR-SAF-37: the second chamber couple, on its own SPI bus and its own - * front end. Zero-initialised to invalid, so a caller that does not fit a - * second couple gets single-channel behaviour rather than a false - * agreement between a reading and a zero. */ + int32_t chamber_q7; /**< Couple 1, linearised, 1/128 degC. */ + bool chamber_valid; /**< A conversion completed and was in range. */ + + /** + * @brief Couple 2, on its own SPI bus and its own front end (SWR-SAF-37). + * + * Zero-initialised to invalid, so a caller that does not fit a second + * couple gets single-channel behaviour rather than a false agreement + * between a reading and a zero. + */ int32_t chamber2_q7; - bool chamber2_valid; - uint16_t fault_bits; /* KILN_TC_FAULT_*, 0 for none */ - bool clear_pressed; /* the local clear button, debounced by the cycle */ - /* SWR-SAF-38: the coil drive node, sensed. True means energised. + bool chamber2_valid; /**< Couple 2 produced a usable reading. */ + + uint16_t fault_bits; /**< `SUP_TC_FAULT_*` set, 0 for none. */ + bool clear_pressed; /**< The local clear button, debounced by the cycle. */ + + /** + * @brief The coil drive node, sensed. True means energised (SWR-SAF-38). * * Positive logic again, but note what the safe default is here: a - * zero-initialised input reads "not energised", which is the BENIGN value, - * because the dangerous direction is a coil that stays on after the permit - * is withdrawn. A board with no readback fitted therefore reports no fault - * rather than a permanent one, and SWR-SAF-38 is explicit that the - * diagnostic is absent on such a board rather than passing. */ + * zero-initialised input reads "not energised", which is the **benign** + * value, because the dangerous direction is a coil that stays on after the + * permit is withdrawn. A board with no readback fitted therefore reports + * no fault rather than a permanent one, and SWR-SAF-38 is explicit that + * the diagnostic is **absent** on such a board rather than passing. + */ bool permit_sense; - /* SWR-SAF-36: every self-diagnostic passed this cycle. + + /** + * @brief Every self-diagnostic passed this cycle (SWR-SAF-36). * - * POSITIVE logic, so that a zero-initialised input means "not proven - * healthy" and withholds heat. That is the same convention chamber_valid - * uses and for the same reason: the safe state has to be the one you get - * by forgetting to set a field. + * Positive logic, so that a zero-initialised input means "not proven + * healthy" and withholds heat. Same convention as @ref chamber_valid and + * for the same reason: the safe state has to be the one you get by + * forgetting to set a field. * - * A false here is heavier than a thermocouple fault. It clears selftest_ok, - * which makes the trip unclearable by the button, because a supervisor - * whose RAM, stack or program sequence has failed cannot be trusted to - * evaluate the condition the operator would be acknowledging. */ + * A false here is heavier than a thermocouple fault. It clears + * @ref sup_t::selftest_ok, which makes the trip unclearable by the button, + * because a supervisor whose RAM, stack or program sequence has failed + * cannot be trusted to evaluate the condition the operator would be + * acknowledging. + */ bool diag_ok; } sup_input_t; +/** + * @brief The trip logic's own state: the decision, and the timers behind it. + * + * @rangeof All intervals are whole milliseconds and saturate rather than wrap. + * + * @rationale + * Held in a structure the caller owns rather than in globals, which is what + * lets a host test construct any situation it likes and step it without a + * kiln, a clock or a board. + * + * @implements SWR-SAF-18, SWR-SAF-22, SWR-SAF-36, SWR-SAF-37 + */ typedef struct { - bool permit; /* heat is allowed *now* */ - bool tripped; /* latched, needs a local clear */ - sup_trip_reason_t reason; /* why, latched with the trip */ - bool selftest_ok; - uint32_t fault_ms; /* how long the fault has persisted */ - /* Whether a usable reading has *ever* arrived. Before the first one the - * supervisor withholds permission but does not latch: "the sensor never - * got going" and "the sensor was working and stopped" are different, and - * only the second is a fault to acknowledge. Without this the stale timer - * runs from the first cycle and latches at boot if the front end's first - * conversion takes longer than the grace, which is a trip with nothing - * wrong behind it. */ + bool permit; /**< Heat is allowed *now*. */ + bool tripped; /**< Latched; needs a local clear. */ + sup_trip_reason_t reason; /**< Why, latched with the trip. */ + bool selftest_ok; /**< The start-up self-test has not been revoked. */ + uint32_t fault_ms; /**< How long the front-end fault has persisted. */ + + /** + * @brief Whether a usable reading has *ever* arrived. + * + * Before the first one the supervisor withholds permission but does not + * latch: "the sensor never got going" and "the sensor was working and + * stopped" are different, and only the second is a fault to acknowledge. + * Without this the stale timer runs from the first cycle and latches at + * boot whenever the front end's first conversion takes longer than the + * grace, which is a trip with nothing wrong behind it. + */ bool seen_valid; - /* The clear button is edge triggered, and these are why. + + /** + * @brief Whether the clear button has been seen released since it last acted. * - * A latch cleared on the pin *level* is not a latch: a button shorted to - * ground, or one stuck down, would clear it on every cycle, and the - * supervisor would then permit heat whenever the instantaneous condition - * happened to be good. That is the latch defeated by a single solder - * bridge. + * The button is edge triggered, and this is why. A latch cleared on the + * pin **level** is not a latch: a button shorted to ground, or one stuck + * down, would clear it on every cycle, and the supervisor would then + * permit heat whenever the instantaneous condition happened to be good. + * That is the latch defeated by a single solder bridge. * - * So the input has to be seen *released* before it can clear anything - * (`clear_armed`), and it has to be held (`clear_s`). A shorted line - * never arms, because it is never seen released, including at power-on. */ + * So the input has to be seen released before it can clear anything, and + * then held for @ref SUP_CLEAR_HOLD_MS. A shorted line never arms, because + * it is never seen released, including at power-on. + */ bool clear_armed; - uint32_t clear_ms; - /* How long the two couples have disagreed, and how long the coil has read - * energised while the permit was withdrawn. Both delay the LATCH, not the - * protection: heat is withheld on the first cycle either way. */ + uint32_t clear_ms; /**< How long the armed button has been held. */ + + /** + * @brief How long the two couples have disagreed. + * + * Delays the **latch**, not the protection: the higher reading is acted on + * from the first cycle either way. + */ uint32_t disagree_ms; + + /** + * @brief How long the coil has read energised while the permit was withdrawn. + * + * Delays the latch for the same reason as @ref disagree_ms, and gives the + * charge pump time to decay before a slow release is called a stuck coil. + */ uint32_t permit_stuck_ms; } sup_t; -/* Comes up refusing heat: chamber_valid is false until a conversion has been - * seen, and permit is conjunctive, so absence of evidence is not permission. */ +/** + * @brief Initialise the trip state so that it comes up refusing heat. + * + * @param[out] s Trip state to initialise. Must not be NULL. + * @param[in] selftest_ok Result of the start-up self-test: the front ends + * configured, a first conversion seen, and the + * diagnostics of @ref selfcheck.h passed. + * + * @rangeof selftest_ok: `true` only when every start-up check passed. A caller + * that cannot determine this passes `false`. + * + * @errorbehaviour + * The permit is **conjunctive**: it requires the self-test, a valid chamber + * reading and no latched trip, all at once. After this call none of those + * hold, so heat is refused until each is positively established. Absence of + * evidence is not permission. + * + * @rationale + * A state structure that is zero-initialised and then "configured" has a + * window in which it is neither. Starting from refusal removes the window: the + * dangerous direction requires work and the safe direction is the default, + * which is the same convention `diag_ok` uses on the input snapshot. + * + * @sideeffects + * None beyond `*s`. No allocation, no I/O, no globals. + * + * @reentrancy + * Not reentrant with respect to the same `s`; the supervisor is single + * threaded and calls it once, before the cycle starts. + * + * @implements SWR-SAF-22, SWR-SAF-23 + * @verifiedby `test_trip.cpp`, the start-up cases: a supervisor that has not + * seen a conversion does not permit heat even with a plausible + * temperature in hand. + */ void sup_init(sup_t *s, bool selftest_ok); -/* One cycle. dt_ms is the elapsed time since the previous call, in whole - * milliseconds. +/** + * @brief Advance the trip logic by one cycle and decide whether heat is permitted. + * + * This is the unit the whole component exists for. It is a pure function of + * `*in`, `dt_ms` and the timers inside `*s`: no globals, no platform headers, + * no clock of its own. + * + * @param[in,out] s Trip state, previously initialised by @ref sup_init. + * @param[in] in The cycle's input snapshot: both chamber readings and + * their validity, the front-end fault lines, the clear + * button, the coil readback and `diag_ok`. + * @param[in] dt_ms Elapsed time since the previous call. + * + * @rangeof dt_ms: whole milliseconds, 0 to UINT32_MAX. The nominal value is the + * 100 ms cycle; any value is accepted and the latch timers saturate + * rather than wrap. + * @rangeof in: every temperature is q7 (1/128 degC); every interval is whole + * milliseconds. `chamber_valid` and `diag_ok` are positive logic, so a + * zero-filled snapshot withholds heat. + * + * @statemachine + * Permitting is conjunctive and latching is one-way within a power cycle. A + * latched trip is not cleared by the condition going away on its own, and + * never by anything arriving over the link, because there is no receiver. + * + * @dot + * digraph trip { + * rankdir=LR; + * node [shape=box, style=rounded, fontname="Helvetica", fontsize=10]; + * edge [fontname="Helvetica", fontsize=9]; * - * Unsigned, which removes a guard rather than hiding one: the float version had - * to begin by rejecting a negative or NaN interval, because either would have - * run the latch timers backwards or stalled them for ever. Neither value - * exists in a uint32_t, so the condition is now unrepresentable instead of - * checked. The timers saturate rather than wrap, so an interval of any size is - * safe too. */ + * init [shape=point, width=0.12, label=""]; + * waiting [label="WAITING\nno permit, no latch"]; + * permit [label="PERMITTING\nheat allowed", penwidth=2]; + * latched [label="LATCHED\nheat refused\nreason held"]; + * revoked [label="REVOKED\nself-test gone\nunclearable", style="rounded,bold"]; + * + * init -> waiting [label="sup_init"]; + * waiting -> permit [label="first valid reading,\nself-test ok,\nno fault"]; + * waiting -> latched [label="a trip condition\npast its grace"]; + * permit -> latched [label="over-temperature,\ntc fault, stale,\ndisagree, permit stuck"]; + * latched -> permit [label="clear armed and held,\ncondition no longer true"]; + * latched -> latched [label="clear while the\ncondition still holds"]; + * permit -> revoked [label="diag_ok false"]; + * latched -> revoked [label="diag_ok false"]; + * revoked -> revoked [label="clear: refused\n(SWR-SAF-36)"]; + * } + * @enddot + * + * WAITING does not latch, and the distinction is deliberate: "the sensor never + * got going" and "the sensor was working and stopped" are different, and only + * the second is a fault for an operator to acknowledge. REVOKED is reachable + * from either working state and leaves by no edge at all within a power cycle. + * + * @errorbehaviour + * Every input is treated as untrustworthy until it says otherwise: + * - a reading that is not valid is not a reading, and heat is refused; + * - a reported front-end fault refuses heat on the first cycle and latches + * only after @ref SUP_FAULT_GRACE_MS, so one bad conversion on a noisy bus + * is not a dead sensor; + * - two couples that disagree by more than @ref SUP_DISAGREE act on the + * **higher** reading immediately, and latch after @ref SUP_DISAGREE_MS; + * - a coil that reads energised while the permit is withdrawn latches after + * @ref SUP_PERMIT_SETTLE_MS; + * - a false `diag_ok` revokes the self-test, which is unclearable by the + * button (SWR-SAF-36). + * + * @rationale + * `dt_ms` is unsigned, and that removes a guard rather than hiding one. The + * earlier floating-point version had to begin by rejecting a negative or NaN + * interval, because either would have run the latch timers backwards or + * stalled them for ever. Neither value exists in a `uint32_t`: the condition + * is unrepresentable instead of checked, which is a stronger property than a + * check that somebody could delete. + * + * Acting on the higher of two valid readings is the half that does the safety + * work. A couple reading low is the dangerous failure, because it lets a hot + * kiln look cool, and an average would let one couple reading 200 degC low + * pull the pair 100 degC low: the failure dressed as redundancy. + * + * @resources + * No allocation and no recursion. Bounded in time: a fixed sequence of + * comparisons with no loop over input. + * + * @reentrancy + * Not reentrant with respect to the same `s`. Called from one place, once per + * cycle, from the supervisor's only thread of control. + * + * @implements SWR-SAF-22, SWR-SAF-23, SWR-SAF-36, SWR-SAF-37 + * @verifiedby `test_trip.cpp`, which exercises each rule at its boundary in + * LSBs either side of the threshold, and reaches 100 % MC/DC over + * this unit (`tools/mcdc.sh`, floor 80 %). + */ void sup_step(sup_t *s, const sup_input_t *in, uint32_t dt_ms); -/* Clears a latched trip. +/** + * @brief Clear a latched trip. + * + * @param[in,out] s Trip state. Must not be NULL. * - * sup_step() calls this itself when the clear button has been armed and held, - * so the whole behaviour is in the tested core rather than in the board layer. - * It stays public because a test should be able to drive it directly. + * @errorbehaviour + * Clearing does not make the kiln safe; it makes the supervisor willing to + * look again. The permit remains conjunctive, so if the condition that caused + * the trip is still true the next @ref sup_step latches it again on the same + * cycle. A revoked self-test (SWR-SAF-36) is **not** cleared by this: a + * supervisor whose memory, stack, clock, image or program sequence has failed + * is not in the category an operator can acknowledge. * - * There is no path to this from the link: the supervisor has no receiver. */ + * @rationale + * @ref sup_step calls this itself once the clear button has been armed and + * held, so the arming behaviour lives in the tested core rather than in the + * board layer where nothing exercises it. It stays public because a test + * should be able to drive the transition directly rather than through a + * simulated button. + * + * There is no path to this from the serial link: the supervisor has no + * receiver, which is why its independence is a property of the wiring and not + * of a check in software. + * + * @sideeffects + * Resets the latch and the timers behind it. Does not touch the self-test flag. + * + * @implements SWR-SAF-18, SWR-SAF-36 + * @verifiedby `test_trip.cpp`: a live condition relatches on the next cycle, + * and a revoked self-test survives a clear. + */ void sup_clear(sup_t *s); -/* The flags byte for the wire, derived rather than tracked separately. */ +/** + * @brief Build the status flags byte that goes on the wire. + * + * @param[in] s Trip state. + * @param[in] in The same input snapshot that was passed to @ref sup_step. + * @return The flags byte of the frame described in @ref sup_proto.h. + * @retval 0 No flag set: nothing valid, nothing permitted, nothing latched. + * + * @rangeof return value: each bit is one `SUP_FLAG_*` of @ref sup_proto.h. + * + * @rationale + * Derived on demand rather than tracked in a field that is updated alongside + * the state. A separate copy of the truth is a copy that can disagree with it, + * and this one would disagree exactly when the frame mattered most: after a + * trip. + * + * @sideeffects + * None. Pure function of its arguments. + * + * @implements SWR-SAF-38 + * @verifiedby `test_proto.cpp` and `test_trip.cpp`: the flags a given state + * produces, including after a latch. + */ uint8_t sup_flags(const sup_t *s, const sup_input_t *in); #endif /* SUP_TRIP_H */ diff --git a/firmware/supervisor/doc/00-mainpage.dox b/firmware/supervisor/doc/00-mainpage.dox new file mode 100644 index 0000000..4f5b464 --- /dev/null +++ b/firmware/supervisor/doc/00-mainpage.dox @@ -0,0 +1,124 @@ +/* SPDX-FileCopyrightText: 2026 Bitcrush Testing + * SPDX-License-Identifier: GPL-3.0-or-later + * + * The front matter of the generated Unit Design Document. Prose only: this + * file declares no code and exists to be read first. + */ + +/** +@mainpage Supervisor Unit Design Document + +@section udd_what This document + +This is level 5 of the V-model described in `docs/v-model-process.md`, for the +independent safety supervisor of `SWA-22`: the second microcontroller that +reads the chamber thermocouples, holds one element of the contactor coil, and +takes instruction from nothing. + +**It is generated from the source and has no separate existence.** The unit +design lives in the headers beside the code it describes, because a unit design +kept in another file is a document that disagrees with the code, and the +disagreement is found by whoever is auditing rather than by whoever is editing. +What is read here was compiled. + +@section udd_scope Scope, and what is deliberately outside it + +| In | Out | +|---|---| +| `core/`, the trip logic, the front-end decode and the self-diagnostics | The controller (ESP32-S3), which is a separate argument and a separate document | +| `protocol/`, the wire format the supervisor transmits | `board/stm32g031.h`, 4 000 register definitions generated from ST's CMSIS-SVD, which is nobody's unit design | +| `src/`, the composition root and the cycle | The host test harness | +| `board/`, the silicon boundary | | + +The supervisor is **3 488 bytes of program memory** and four source files carry +the whole safety function. That is the reason this document can be read end to +end, and the reason the architecture put the safety function on its own part. + +@section udd_reading What each unit states, and why those five things + +A unit entry answers the same five questions in the same order, because they +are the questions an assessment under EN ISO 13849-1:2023 cl. 4.6 or +EN IEC 60730-1 Annex H actually asks of a safety function: + +- **@c \\implements** the requirement that makes the unit exist, and + **@c \\derivedfrom** the architecture decision above it. A unit with neither + is a unit nobody asked for. +- **@c \\param** and **@c \\retval** with **@c \\range**: what may be passed and + what comes back, in units and bounds rather than in types alone. `uint32_t` + is a type; "milliseconds since the previous call, saturating" is an interface. +- **@c \\errorbehaviour**: what happens when the input is wrong. On a safety + function this is not an edge case, it is most of the specification. +- **@c \\rationale**: why it is this way and not the obvious way. This is the + one that gets left out and the first one an assessor asks about, because a + decision with no recorded reason has to be re-derived by whoever reviews it, + and re-derivation is where a safety argument quietly changes. +- **@c \\verifiedby**: the test that covers it. Every unit here is exercised on + a development host with no hardware, which is `SWA-01` applied to the + component whose whole argument is that it can be verified independently. + +@section udd_safety What this component is, in safety terms + +The supervisor exists so that the loss of the controller, by any means, does +not become the loss of protection. It is single-channel and holds **one series +element** of the contactor coil: it can refuse heat on its own and cannot +command it on its own. + +@warning **No performance level and no SIL is claimed.** `docs/safety.md` +states the position and this document does not improve on it. What is claimed +is narrower and checkable: a documented language subset, the diagnostics listed +below, MC/DC over the trip logic, and an architecture that keeps the safety +function on a part the network cannot reach. + +The diagnostics of EN IEC 60730-1 Annex H that this component implements, each +documented in @ref selfcheck.h : + +| Measure | Unit | +|---|---| +| Invariable memory (program memory) | `sup_flash_ok`, CRC-32 against a digest stamped in after linking | +| Variable memory | `sup_ram_word_ok` and the walking pattern test, including an address-dependent pattern | +| Stack | A 256-word guard, filled at start-up and checked in full every cycle | +| Program sequence | Four stages that announce themselves, verified once per cycle | +| Clock | Cross-checked against the LSI through a windowed watchdog | + +@section udd_diagrams The two diagrams + +Both are drawn from `\dot` blocks in the headers beside the code they +describe, so they are versioned with it and cannot drift from it the way a +picture in another document does: + +- The **trip logic's state machine**, on @ref sup_step : what permits heat, + what latches, what clears a latch, and the one state that nothing clears + within a power cycle. +- The **program-sequence graph**, on @ref sup_flow_stage_t : the four stages of + a cycle and the ways a cycle can finish on time having done the wrong work, + which is what a watchdog cannot see. + +@section udd_trace Traceability + +Three index pages carry it, each generated from the comments rather than +maintained: + +- \ref implements "Requirements implemented": every unit against the `SWR-` it + realises. +- \ref derivedfrom "Architecture traceability": every unit against the `SWA-` + it comes from. +- \ref verifiedby "Unit verification": every unit against the test that covers + it. + +The reverse direction, requirement to source, is also enforced outside this +document: `strictdoc export` fails the build when a `@relation` marker in the +source names a requirement that does not exist. + +@section udd_limits What this document does not tell you + +Stated here rather than discovered later: + +- **It describes units, not the system.** Whether the units compose into a + protection that holds is `docs/safety.md` and `docs/safety-supervisor.md`. +- **It is not a test report.** @c \\verifiedby names the test; whether it + passed is the CI run and the coverage report. +- **The transport code has never run on silicon.** The SPI bring-up, the + chip-select timing, the SysTick period and the USART configuration are + written and unproven, which `firmware/supervisor/README.md` says plainly and + which no amount of documentation changes. +*/ diff --git a/firmware/supervisor/protocol/include/sup_proto.h b/firmware/supervisor/protocol/include/sup_proto.h index c8b0f8d..4dded28 100644 --- a/firmware/supervisor/protocol/include/sup_proto.h +++ b/firmware/supervisor/protocol/include/sup_proto.h @@ -1,21 +1,55 @@ /* SPDX-FileCopyrightText: 2026 Bitcrush Testing * SPDX-License-Identifier: GPL-3.0-or-later + */ + +/** + * @file sup_proto.h + * @brief The supervisor link wire format, and the units either side of it. * - * The supervisor link wire format (SWA-22, docs/safety-supervisor.md section 5). + * @derivedfrom SWA-22, the independent safety supervisor, and + * `docs/safety-supervisor.md` section 5. + * @safetyclass Carries the output of a safety function. A frame that decodes + * wrongly is a misreported trip, so the encoding is specified + * here once and checked by both sides' tests. * * One header, two consumers: the STM32 supervisor that emits these frames and - * the ESP32 adapter that consumes them. The layout is declared once because a + * the ESP32 adapter that consumes them. The layout is declared once because a * wire format described in two places eventually disagrees with itself. * - * The link is **simplex**. The supervisor transmits; it has no receive path at - * all. With the thermocouple type fixed to K (SWR-ACQ-02) there is nothing the - * ESP32 could usefully tell it, and having no receiver is a stronger claim than - * having one and being trusted not to act on what arrives. + * The link is **simplex**. The supervisor transmits; it has no receive path at + * all. With the thermocouple type fixed to K (SWR-ACQ-02) there is nothing the + * ESP32 could usefully tell it, and having no receiver is a stronger claim + * than having one and being trusted not to act on what arrives. * - * Sharing this header does not weaken the independence SWA-22 buys. It is + * Sharing this header does not weaken the independence SWA-22 buys. It is * declarative: no trip logic crosses the boundary, and the only shared * behaviour is the CRC, whose failure mode is a rejected frame, which both * sides already treat as silence. + * + * @par The frame + * + * off size field + * 0 1 SOF, 0xA5 + * 1 1 version + * 2 1 seq wraps; a repeat or a gap is detectable + * 3 2 chamber_dc int16 LE, 0.1 degC + * 5 2 cj_dc int16 LE, 0.1 degC + * 7 2 fault_bits uint16 LE, SUP_TC_FAULT_* values + * 9 1 flags SUP_FLAG_* + * 10 1 trip_reason sup_trip_reason_t + * 11 2 crc16 LE CCITT-FALSE over bytes 0..10 + * + * 13 bytes at 10 Hz is 130 B/s, which is nothing at 115200 baud. Fixed length + * means there is no length field to be wrong about, and the receiver resyncs + * by sliding a window until the CRC checks rather than trusting the SOF alone. + * + * Two trip reasons were appended for the second couple and the permit + * readback. The **layout is unchanged** and so is @ref SUP_VERSION : appending + * enum values is backward compatible, and the ESP32's decoder already treats a + * reason it does not recognise as a trip rather than as OK. The second + * couple's reading is not carried separately; `chamber_dc` is the higher of + * the two, which is the value the backstop acts on. Reporting both would widen + * the frame, and nothing on the ESP32 side needs the pair yet. */ #ifndef SUP_PROTO_H #define SUP_PROTO_H @@ -23,167 +57,318 @@ #include #include -/* --- frame --------------------------------------------------------------- - * - * off size field - * 0 1 SOF, 0xA5 - * 1 1 version - * 2 1 seq wraps; a repeat or a gap is detectable - * 3 2 chamber_dc int16 LE, 0.1 degC - * 5 2 cj_dc int16 LE, 0.1 degC - * 7 2 fault_bits uint16 LE, KILN_TC_FAULT_* values - * 9 1 flags SUP_FLAG_* - * 10 1 trip_reason sup_trip_reason_t - * - * Two trip reasons were appended for the second couple and the permit readback. - * The LAYOUT is unchanged and so is SUP_VERSION: appending enum values is - * backward compatible, and the ESP32's decoder already treats a reason it does - * not recognise as a trip rather than as OK. The second couple's reading is not - * carried separately; chamber_dc is the higher of the two, which is the value - * the backstop acts on. Reporting both would widen the frame, and nothing on the - * ESP32 side needs the pair yet. - * 11 2 crc16 LE CCITT-FALSE over bytes 0..10 - * - * 13 bytes at 10 Hz is 130 B/s, which is nothing at 115200 baud. Fixed length - * means there is no length field to be wrong about, and the receiver resyncs by - * sliding a window until the CRC checks rather than trusting the SOF alone. */ +/** + * @brief Length of one frame on the wire: 13 bytes, always. + * @rangeof Compile-time constant. There is no short frame and no long one. + * @rationale + * Fixed length means there is no length field to be wrong about, and no way + * for a corrupted one to make the receiver wait for bytes that never come. + * @implements SWR-SAF-38 + * @verifiedby `test_proto.cpp`: every encode writes exactly this many bytes. + */ constexpr size_t SUP_FRAME_BYTES = 13u; + +/** + * @brief Start-of-frame byte, 0xA5. + * @rangeof Compile-time constant. + * @rationale + * An alternating bit pattern rather than 0x00 or 0xFF, both of which a stuck + * or floating line produces on its own. It is a hint for resynchronisation and + * not a guarantee: @ref sup_decode trusts the CRC, not this byte. + * @verifiedby `test_proto.cpp`, including a payload byte that happens to equal + * the SOF. + */ constexpr uint8_t SUP_SOF = 0xA5u; + +/** + * @brief Wire format version carried in every frame. + * @rangeof 1. Compile-time constant. + * @rationale + * Appending trip reasons did **not** bump this, deliberately: the layout is + * unchanged and a decoder that does not know a reason already treats it as a + * trip. A version bump is for a change that moves a field, and reserving it + * for that keeps it meaningful. + * @errorbehaviour + * A receiver seeing a version it does not know should discard the frame, which + * is the same thing it does with silence. + * @implements SWR-SAF-38 + */ constexpr uint8_t SUP_VERSION = 1u; -/* Temperatures travel as tenths of a degree, the same encoding the log record - * uses, so the two never need converting between each other. */ +/** + * @brief Wire temperature unit: tenths of a degree Celsius. + * @rangeof Compile-time constant, 10 counts per degree. + * @rationale + * The same encoding the log record uses, so the two never need converting + * between each other. The wire is tenths and the supervisor's interior is q7; + * @ref sup_q7_to_dc is the single place the two meet. + */ constexpr int32_t SUP_DC_PER_C = 10; -/* --- the supervisor's internal temperature unit --------------------------- +/** + * @brief The supervisor's internal temperature unit: 1/128 degC, signed. * - * 1/128 degC, signed, held in an int32_t, and called q7 after the seven - * fractional bits. Everything inside the supervisor measures temperature in - * it: the decode produces it, the trip logic compares it, and the only - * conversion is to tenths at the wire. + * @rangeof Compile-time constant, 128 counts per degree. Held in an `int32_t` + * and called q7 after its seven fractional bits. * - * It is the MAX31856's own unit, which is the whole reason to pick it. The + * @rationale + * It is the MAX31856's own unit, which is the whole reason to pick it. The * part reports the linearised hot junction as a 19-bit signed value with * 2^-7 degC per LSB, so the decode is a shift and nothing else: no scaling, no - * rounding, and no value that the part can produce and this cannot hold. The - * cold junction's 2^-6 degC becomes q7 by a left shift of one, which is exact. + * rounding, and no value the part can produce that this cannot hold. The cold + * junction's 2^-6 degC becomes q7 by a left shift of one, which is exact. + * + * It is declared here, in the header both the trip core and the front-end + * decode include, because a unit named in two places is a unit that eventually + * means two things. * - * This is here, in the header both the trip core and the front-end decode - * include, because a unit named in two places is a unit that eventually means - * two things. It is not on the wire: the wire is tenths, as above. + * Why integers at all, since this used to be float: on a Cortex-M0+ there is + * no FPU, so every compare and multiply was a libgcc soft-float call, and the + * supervisor's safety function depended on a library it did not build. + * `docs/coding-standard.md` section 5 has the argument. * - * Why integers at all, since this used to be float: on a Cortex-M0+ there is no - * FPU, so every compare and multiply was a libgcc soft-float call, and the - * supervisor's safety function depended on a library it did not build. See - * docs/coding-standard.md section 5. */ + * @verifiedby `test_proto.cpp`, over the conversions in both directions. + */ constexpr int32_t SUP_Q7_PER_C = 128; -/* Degrees to q7, for a threshold written as a whole number of degrees. +/** + * @brief Convert whole degrees Celsius to q7. * - * A constexpr function rather than a macro: it is typed, it is scoped, and it - * evaluates its argument once, none of which a macro can promise. The whole - * supervisor is written this way now -- there is not one object-like macro left - * in core or protocol -- because a macro has no type for the compiler to check - * and the high-integrity profile says so (cppcoreguidelines-macro-to-enum). - * There is deliberately no float overload. */ + * @param[in] c Temperature in whole degrees Celsius. + * @return The same temperature in 1/128 degC counts. + * + * @rangeof `c` is any `int32_t` whose product with 128 is representable, which + * covers every temperature a kiln or a thermocouple can reach by four + * orders of magnitude. Callers pass literals. + * + * @errorbehaviour + * None to speak of: the operation is a multiply with no failure mode in the + * intended range. It is deliberately **not** defended against overflow, + * because every call site in the firmware passes a compile-time literal and a + * runtime check would suggest otherwise. + * + * @rationale + * A `constexpr` function rather than a macro: it is typed, it is scoped, and + * it evaluates its argument once, none of which a macro can promise. The whole + * supervisor is written this way now, with not one object-like macro left in + * `core` or `protocol`, because a macro has no type for the compiler to check + * and the high-integrity profile says so. There is deliberately no float + * overload. + * + * Thresholds are written through this so they stay readable as the numbers the + * safety concept states, and the multiply is the compiler's. + * + * @verifiedby `test_proto.cpp`, round-tripped against @ref sup_q7_to_dc. + */ constexpr int32_t sup_c_to_q7(int32_t c) { return c * SUP_Q7_PER_C; } -/* Reported in every frame, including after a trip: the supervisor keeps talking - * so the ESP32 can say *why* the heat went away. */ +/** + * @brief Why the supervisor tripped, reported in every frame. + * + * @rationale + * Reported even after a trip, and especially then: the supervisor keeps + * talking so the ESP32 can say *why* the heat went away. A backstop that goes + * silent when it acts leaves the operator with a dead kiln and no sentence to + * read. + * + * @errorbehaviour + * Values are appended, never renumbered. A decoder meeting a reason it does + * not know treats it as a trip rather than as OK, so a newer supervisor talking + * to an older controller fails towards refusing heat. + * + * @implements SWR-SAF-38 + */ typedef enum { - SUP_TRIP_NONE = 0, - SUP_TRIP_OVERTEMP, /* above the hard-coded backstop */ - SUP_TRIP_TC_FAULT, /* front end reported a fault, past its grace */ - SUP_TRIP_SENSOR_STALE, /* a reading was working and stopped */ - SUP_TRIP_SELF_TEST, /* start-up self-test failed; never permits */ - SUP_TRIP_TC_DISAGREE, /* the two chamber couples do not agree */ - SUP_TRIP_PERMIT_STUCK, /* the permit was withdrawn and the coil stayed on */ - SUP_TRIP_COUNT + SUP_TRIP_NONE = 0, /**< Not tripped. */ + SUP_TRIP_OVERTEMP, /**< Above the hard-coded backstop. */ + SUP_TRIP_TC_FAULT, /**< Front end reported a fault, past its grace. */ + SUP_TRIP_SENSOR_STALE, /**< A reading was working and stopped. */ + SUP_TRIP_SELF_TEST, /**< Start-up self-test failed; never permits. */ + SUP_TRIP_TC_DISAGREE, /**< The two chamber couples do not agree. */ + SUP_TRIP_PERMIT_STUCK, /**< Permit withdrawn and the coil stayed on. */ + SUP_TRIP_COUNT /**< Count of reasons; not a reason. */ } sup_trip_reason_t; -/* uint32_t, not the uint8_t field they live in: a narrower constant promotes - * to *int* before a bitwise operator, so composing a mask would be signed - * arithmetic. Same reasoning as the KILN_TC_FAULT_* masks in kiln/types.h. */ -/* The values the fault_bits field carries. +/** + * @name Front-end fault bits, carried in the frame's `fault_bits` field * - * These were previously named only in a comment pointing at KILN_TC_FAULT_* in - * kiln/types.h, which is the one kind of coupling a wire format must not have: - * a field whose meaning is written down on one side of a link and referred to - * from the other eventually disagrees across it, and the disagreement is a - * misreported fault rather than a build error. + * @rationale + * These were previously named only in a comment pointing at `KILN_TC_FAULT_*` + * in `kiln/types.h`, which is the one kind of coupling a wire format must not + * have: a field whose meaning is written down on one side of a link and + * referred to from the other eventually disagrees across it, and the + * disagreement is a misreported fault rather than a build error. * * So they are declared here, in the header both sides already share, and - * kiln_core/suplink.cpp static_asserts that each one equals its KILN_TC_FAULT_* - * counterpart. The agreement is now the compiler's to check. - * - * uint32_t for the same reason as the flags below: a narrower constant promotes - * to int before a bitwise operator. */ -constexpr uint32_t SUP_TC_FAULT_OPEN = 1u << 0u; /* open circuit */ -constexpr uint32_t SUP_TC_FAULT_SHORT_VCC = 1u << 1u; /* short to supply */ -constexpr uint32_t SUP_TC_FAULT_SHORT_GND = 1u << 2u; /* short to ground */ -constexpr uint32_t SUP_TC_FAULT_CJ_RANGE = 1u << 3u; /* cold junction range */ -constexpr uint32_t SUP_TC_FAULT_TC_RANGE = 1u << 4u; /* thermocouple range */ -constexpr uint32_t SUP_TC_FAULT_OVUV = 1u << 5u; /* over/under voltage */ -constexpr uint32_t SUP_TC_FAULT_COMMS = 1u << 6u; /* front end silent */ - -constexpr uint32_t SUP_FLAG_PERMIT = 1u << 0u; /* permitting heat now */ -constexpr uint32_t SUP_FLAG_TRIPPED = 1u << 1u; /* latched; local clear */ -constexpr uint32_t SUP_FLAG_TC_VALID = 1u << 2u; /* reading is usable */ -constexpr uint32_t SUP_FLAG_SELFTEST_OK = 1u << 3u; -/* SWR-SAF-37: the second chamber couple is usable. Clear means the supervisor is - * running on one channel: still protecting, but with no cross-check, so the - * ESP32 should say so rather than let a degraded state look like a healthy one. */ + * `kiln_core/suplink.cpp` `static_assert`s that each equals its + * `KILN_TC_FAULT_*` counterpart. The agreement is the compiler's to check. + * + * `uint32_t` rather than the `uint16_t` field they live in: a narrower + * constant promotes to **int** before a bitwise operator, so composing a mask + * would be signed arithmetic. + * + * @implements SWR-SAF-22 + * @verifiedby `test_max31856.cpp` decodes each one from the register bits; + * `kiln_core/suplink.cpp` asserts they match the other side. + * @{ + */ +constexpr uint32_t SUP_TC_FAULT_OPEN = 1u << 0u; /**< Open circuit. */ +constexpr uint32_t SUP_TC_FAULT_SHORT_VCC = 1u << 1u; /**< Short to supply. */ +constexpr uint32_t SUP_TC_FAULT_SHORT_GND = 1u << 2u; /**< Short to ground. */ +constexpr uint32_t SUP_TC_FAULT_CJ_RANGE = 1u << 3u; /**< Cold junction out of range. */ +constexpr uint32_t SUP_TC_FAULT_TC_RANGE = 1u << 4u; /**< Thermocouple out of range. */ +constexpr uint32_t SUP_TC_FAULT_OVUV = 1u << 5u; /**< Over or under voltage. */ +constexpr uint32_t SUP_TC_FAULT_COMMS = 1u << 6u; /**< Front end silent. */ +/** @} */ + +/** + * @name Status flags, carried in the frame's `flags` field + * + * @rationale + * Derived from the trip state on demand by `sup_flags` rather than tracked + * alongside it: a second copy of the truth can disagree with the first, and it + * would disagree exactly when the frame mattered most, which is after a trip. + * + * `uint32_t` for the same promotion reason as the fault bits above. + * + * @implements SWR-SAF-38 + * @verifiedby `test_trip.cpp` and `test_proto.cpp`. + * @{ + */ +constexpr uint32_t SUP_FLAG_PERMIT = 1u << 0u; /**< Permitting heat right now. */ +constexpr uint32_t SUP_FLAG_TRIPPED = 1u << 1u; /**< Latched; cleared locally only. */ +constexpr uint32_t SUP_FLAG_TC_VALID = 1u << 2u; /**< Chamber reading is usable. */ +constexpr uint32_t SUP_FLAG_SELFTEST_OK = 1u << 3u; /**< Start-up self-test passed. */ +/** + * @brief The second chamber couple is usable. + * + * Clear means the supervisor is running on one channel: still protecting, but + * with no cross-check, so the ESP32 should say so rather than let a degraded + * state look like a healthy one (SWR-SAF-37). + */ constexpr uint32_t SUP_FLAG_TC2_VALID = 1u << 4u; +/** @} */ -/* Tenths of a degree, as on the wire, rather than degrees in a float. +/** + * @brief One decoded report: the frame's fields, in the frame's own units. * - * The struct carries the encoded unit so that sup_encode is a byte copy and - * holds no arithmetic at all: the one place a temperature is scaled is - * sup_q7_to_dc below, which is where the rounding and the saturation can be - * tested on their own. The consumer converts to whatever it wants at its own - * boundary, which on the ESP32 is a processor with an FPU. */ + * @rationale + * Temperatures are tenths of a degree, as on the wire, rather than degrees in + * a float. The struct carries the encoded unit so that @ref sup_encode is a + * byte copy and holds no arithmetic at all: the one place a temperature is + * scaled is @ref sup_q7_to_dc, which is where the rounding and the saturation + * can be tested on their own. The consumer converts to whatever it wants at + * its own boundary, which on the ESP32 is a processor with an FPU. + */ typedef struct { - uint8_t version; - uint8_t seq; - int16_t chamber_dc; - int16_t cj_dc; - uint16_t fault_bits; - uint8_t flags; - sup_trip_reason_t trip_reason; + uint8_t version; /**< @ref SUP_VERSION as sent. */ + uint8_t seq; /**< Wraps; a repeat or a gap is detectable. */ + int16_t chamber_dc; /**< Chamber temperature, 0.1 degC, the higher of the two couples. */ + int16_t cj_dc; /**< Cold junction temperature, 0.1 degC. */ + uint16_t fault_bits; /**< `SUP_TC_FAULT_*` set. */ + uint8_t flags; /**< `SUP_FLAG_*` set. */ + sup_trip_reason_t trip_reason; /**< Why it tripped, or @ref SUP_TRIP_NONE. */ } sup_report_t; -/* q7 to tenths of a degree: rounded to nearest, away from zero at the half, - * and saturating at the ends of int16_t. +/** + * @brief Convert q7 to tenths of a degree, rounded and saturating. + * + * @param[in] q7 Temperature in 1/128 degC counts. + * @return The same temperature in 0.1 degC, clamped to `int16_t`. + * @retval 32767 The input was above what the wire can carry. + * @retval -32767 The input was below it. + * + * @rangeof Accepts the whole of `int32_t`. Rounds to nearest, away from zero + * at the half, and saturates at the ends of `int16_t`. * - * Total by construction, which is the property that matters and the reason it - * is a function with its own tests rather than an expression at the call site. - * The float version it replaces had to begin by asking whether its argument was - * a NaN, because the cast of one is undefined; an int32_t has no such value, so - * every input now has a defined output and the check is gone rather than merely - * passing. + * @errorbehaviour + * **Total by construction**, which is the property that matters and the reason + * this is a function with its own tests rather than an expression at the call + * site. The float version it replaces had to begin by asking whether its + * argument was a NaN, because the cast of one is undefined; an `int32_t` has no + * such value, so every input now has a defined output and the check is gone + * rather than merely passing. * - * The scaling needs no division: 10/128 is 5/64 exactly, so it is a multiply by - * five and a shift of six. */ + * @rationale + * The scaling needs no division: 10/128 is 5/64 exactly, so it is a multiply + * by five and a shift of six. + * + * @verifiedby `test_proto.cpp`, at the saturation boundaries in both + * directions and at the rounding half. + */ int16_t sup_q7_to_dc(int32_t q7); -/* CCITT-FALSE, the same polynomial and seed the log records use. Carried here - * rather than shared with kiln_core so the supervisor depends on nothing of - * the ESP32's; the two implementations are checked against one vector in the - * host tests of both projects. */ +/** + * @brief CRC-16 CCITT-FALSE over a buffer. + * + * @param[in] data Bytes to sum. Must not be NULL when `len` is non-zero. + * @param[in] len Number of bytes. + * @return The checksum. + * + * @rangeof Any length. The polynomial and seed are the ones the log records + * use. + * + * @rationale + * Carried here rather than shared with `kiln_core` so the supervisor depends + * on nothing of the ESP32's. The two implementations are checked against one + * common vector in the host tests of both projects, which is the cheapest + * arrangement that keeps them equal without coupling them. + * + * @verifiedby `test_proto.cpp` against a known vector, and the same vector in + * the controller's suite. + */ uint16_t sup_crc16(const uint8_t *data, size_t len); -/* Writes exactly SUP_FRAME_BYTES. Returns bytes written, or 0 if out is null. */ +/** + * @brief Encode one report into a frame. + * + * @param[in] r Report to encode. + * @param[out] out Buffer of at least @ref SUP_FRAME_BYTES bytes. + * @param[in] cap Capacity of `out`. + * @return Bytes written. + * @retval 0 `out` was NULL, or `cap` was too small to hold a frame. + * + * @errorbehaviour + * Writes nothing and returns zero rather than writing a partial frame. A + * truncated frame would fail the receiver's CRC anyway, so the only thing a + * partial write could add is a buffer overrun. + * + * @sideeffects + * Writes exactly @ref SUP_FRAME_BYTES bytes to `out` on success. No allocation. + * + * @verifiedby `test_proto.cpp`, including the undersized-buffer and NULL cases. + */ size_t sup_encode(const sup_report_t *r, uint8_t *out, size_t cap); -/* Decodes one frame from the front of `buf`. +/** + * @brief Decode one frame from the front of a buffer. + * + * @param[in] buf Received bytes. + * @param[in] len How many are available. + * @param[out] out Filled in only when a whole valid frame was found. + * @param[out] skip How many bytes the caller should discard before trying + * again. + * @return Bytes consumed. + * @retval 0 There is not yet a valid frame at the front of `buf`. * - * Returns the number of bytes consumed, which is 0 when there is not yet a - * valid frame at the front. `*skip` is set to how many bytes the caller - * should discard before trying again: that is how a receiver resyncs after - * line noise without needing an escape scheme. */ + * @errorbehaviour + * The CRC decides, not the SOF byte. When the front of the buffer is not a + * valid frame, `*skip` says how far to slide the window, which is how a + * receiver resynchronises after line noise without needing an escape scheme. + * A payload byte that happens to equal @ref SUP_SOF therefore costs a + * resynchronisation and never a wrong decode. + * + * @rationale + * Returning a consumed count and a skip count, rather than a boolean, keeps + * the buffer management in the caller where the buffer is, and keeps this + * function free of state between calls. It can be tested by handing it bytes. + * + * @verifiedby `test_proto.cpp`: a clean frame, a frame behind noise, a frame + * with one bit flipped, and a buffer holding only part of one. + */ size_t sup_decode(const uint8_t *buf, size_t len, sup_report_t *out, size_t *skip); #endif /* SUP_PROTO_H */ diff --git a/firmware/supervisor/test/host/CMakeLists.txt b/firmware/supervisor/test/host/CMakeLists.txt index 6081c96..422bd23 100644 --- a/firmware/supervisor/test/host/CMakeLists.txt +++ b/firmware/supervisor/test/host/CMakeLists.txt @@ -10,7 +10,10 @@ cmake_minimum_required(VERSION 3.16) project(kiln_supervisor_tests CXX) -set(CMAKE_CXX_STANDARD 20) +# C++17 to match firmware/supervisor/CMakeLists.txt: the suites compile the same +# core sources, and a test build at a different standard tests a different +# translation of the code than the one that ships. +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_compile_options(-Wall -Wextra -Werror -Wshadow) diff --git a/fixture/README.md b/fixture/README.md index 56acd1c..f5418bc 100644 --- a/fixture/README.md +++ b/fixture/README.md @@ -30,7 +30,7 @@ change is only the change. ```sh pip install pinside # or run from a checkout, see its README -pinside check hardware/kilncontrol.kicad_pcb --baseline fixture/pinside-baseline.json +pinside check hardware/safekiln.kicad_pcb --baseline fixture/pinside-baseline.json pinside project fixture/kilncontrol-fixture.json --out fixture/board pinside generate fixture/kilncontrol-fixture.json --out fixture/firmware bash fixture/firmware/test/run.sh # 128 host checks, no hardware needed diff --git a/fixture/kilncontrol-fixture.json b/fixture/kilncontrol-fixture.json index 98f90d7..f328511 100644 --- a/fixture/kilncontrol-fixture.json +++ b/fixture/kilncontrol-fixture.json @@ -14,7 +14,7 @@ "mirror": "x" }, "dut": { - "board": "/Users/bernhardtrinnes/Developer/Bitcrush/kilncontrol/hardware/kilncontrol.kicad_pcb", + "board": "/Users/bernhardtrinnes/Developer/Bitcrush/kilncontrol/hardware/safekiln.kicad_pcb", "logic_voltage": 3.3, "require_all_test_points": true }, diff --git a/fixture/pinside-baseline.json b/fixture/pinside-baseline.json index 35bfd74..1a5bd89 100644 --- a/fixture/pinside-baseline.json +++ b/fixture/pinside-baseline.json @@ -1,6 +1,6 @@ { "version": 1, - "board": "hardware/kilncontrol.kicad_pcb", + "board": "hardware/safekiln.kicad_pcb", "accepted": [ { "code": "PS022", diff --git a/hardware/kilncontrol.kicad_pcb b/hardware/safekiln.kicad_pcb similarity index 61% rename from hardware/kilncontrol.kicad_pcb rename to hardware/safekiln.kicad_pcb index d6b6c87..f66a951 100644 --- a/hardware/kilncontrol.kicad_pcb +++ b/hardware/safekiln.kicad_pcb @@ -242,16 +242,17 @@ (embedded_fonts no) ) (footprint "Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12" + (locked yes) (layer "F.Cu") (uuid "02f6e9d9-63a0-4bea-bf5f-9b7b0475bf82") - (at 54.1 62.57 -90) + (at 54.1 63.9 -90) (descr "USB Type-C receptacle for USB 2.0 and PD, http://www.krhro.com/uploads/soft/180320/1-1P320120243.pdf") (tags "usb usb-c 2.0 pd") (property "Reference" "J2" (at 0 -5.645 90) (layer "F.SilkS") (hide yes) - (uuid "f5fe6972-cd77-4b62-b2c0-746f3b075626") + (uuid "ea39d4ff-4a1f-436b-90ad-44b8e8e6d2e0") (effects (font (size 1 1) @@ -262,7 +263,7 @@ (property "Value" "USB-C" (at 0 5.1 90) (layer "F.Fab") - (uuid "18147e6d-8a77-49b0-8549-b4871b46bdfd") + (uuid "9949b68e-a76a-42b7-92a4-d7c51746401d") (effects (font (size 1 1) @@ -275,7 +276,7 @@ (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "57cf0a5e-d2f1-4463-9db6-bd006dbec772") + (uuid "001d85f9-b74a-45b4-9914-d3ef159a5574") (effects (font (size 1.27 1.27) @@ -288,7 +289,7 @@ (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "8330f9e6-564a-4c79-b84b-db02b9d6ab11") + (uuid "9078f3db-4dd3-4638-b60a-ebea3662ed6e") (effects (font (size 1.27 1.27) @@ -523,7 +524,7 @@ (size 0.3 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/USB_DM") + (net "/USB_DN") (pinfunction "D-_A7") (pintype "bidirectional") (uuid "0a4e8ee5-6e58-4996-9448-1ac677071e7e") @@ -600,7 +601,7 @@ (size 0.3 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/USB_DM") + (net "/USB_DN") (pinfunction "D-_B7") (pintype "bidirectional") (uuid "23391e60-8d64-4f33-9cd6-c0bd93cbb244") @@ -696,12 +697,13 @@ (footprint "Diode_SMD:D_SOD-123" (layer "F.Cu") (uuid "036b7bd4-76e2-4fe5-b7d3-dc80753c685b") - (at 112 53.35 90) + (at 113.4 57.6 90) (descr "SOD-123") (tags "SOD-123") (property "Reference" "D8" (at 0 -2 90) (layer "F.SilkS") + (hide yes) (uuid "ed63597a-92a4-4c69-a72e-c3bc80ab3547") (effects (font @@ -953,17 +955,6 @@ (layer "F.Fab") (uuid "bb5abe1a-ef76-4362-86f6-047bb978eb89") ) - (fp_text user "${REFERENCE}" - (at 0 -2 90) - (layer "F.Fab") - (uuid "9faadebf-0e46-45a2-a450-744de9a93364") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) (pad "1" smd roundrect (at -1.65 0 90) (size 0.9 1.2) @@ -997,160 +988,6 @@ ) ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "0591f141-6e36-47bc-a586-dc0430555151") - (at 94 71) - (property "Reference" "TP12" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "fa1d54db-3ccb-412e-a17b-1cec8e76d56a") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Value" "TC2_DRDY" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "f4a0eb08-70cd-41b2-b3d0-7484d232fe7a") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "27d9e4de-0a6f-48eb-aee1-faf46178eb7c") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "4ffae17c-e3eb-4bfa-955c-2db4016ade49") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property ki_fp_filters "Pin* Test*") - (path "/10406339-5c06-4550-8a14-f68ee18e4a61") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) - ) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "70746ce4-6381-424a-9490-08978c6ea051") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "bc9f17c1-4be2-42a4-a06c-78969cfd3311") - ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "8ee98bec-f0d8-4bab-9001-bd2a70c7c78c") - ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "d958da52-864f-4fef-9eef-2134e1914bb9") - ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "eeb944b6-4e00-4f7a-971b-81b72fef382a") - ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "d7f2b89e-2355-48cb-b2ea-33732d43b5b5") - ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "d620bc35-1bb4-488c-a6d8-52859695d2f3") - ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "7e58009b-3cb2-4e91-ad24-fb39bb9dc08b") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC2_DRDY") - (pinfunction "1_1") - (pintype "passive") - (uuid "5ac5655e-76d0-4967-8efb-c49d67c3ad9b") - ) - (embedded_fonts no) - ) (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") (uuid "070204b6-7598-4112-a91c-712ea0a7c2a7") @@ -1447,7 +1284,7 @@ (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/MCU_EN") + (net "/ESP32_EN") (pintype "passive") (uuid "ef5f8a3a-9aa3-41c9-bb69-c4a6b148a1c2") ) @@ -1627,17 +1464,16 @@ ) (embedded_fonts no) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Diode_SMD:D_SMA" (layer "F.Cu") - (uuid "09573afb-c2bd-44b4-abc9-3cbc6aad9326") - (at 140.0075 113.25 180) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R6" - (at 0 -1.17 0) + (uuid "099495e4-0b25-439c-b703-a97b385410e1") + (at 60.75 48.75 90) + (descr "Diode SMA (DO-214AC)") + (tags "Diode SMA (DO-214AC)") + (property "Reference" "D1" + (at 0 -2.5 90) (layer "F.SilkS") - (hide yes) - (uuid "47a93764-c425-4eba-878a-2de828178cc6") + (uuid "4b44efc1-6949-45c7-9151-f6953f800ee6") (effects (font (size 1 1) @@ -1645,11 +1481,11 @@ ) ) ) - (property "Value" "100R" - (at 0 1.17 0) + (property "Value" "SS34" + (at 0 2.6 90) (layer "F.Fab") (hide yes) - (uuid "c657e636-a8d5-4a6d-b6a3-12af335c144f") + (uuid "6b610045-35a1-4b2f-9f57-d82710f3e859") (effects (font (size 1 1) @@ -1658,33 +1494,37 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "1befb977-a4b6-4e6d-b5e3-4a2a3e4f186d") + (uuid "272fb95c-99ea-45d8-97ef-f8a7cfb16f65") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "f76ca832-d8fe-4cbb-b746-393c39157301") + (uuid "4f1f9fe3-79f4-4316-8b4d-d0c353507d1b") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property "LCSC" "C25076" - (at 0 0 180) + (property "LCSC" "C8678" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "de2fc641-889b-4024-b1b0-77d2e0d3b82f") + (uuid "cab696ec-c064-4234-83a3-28f0eb194b53") (effects (font (size 1 1) @@ -1692,8 +1532,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/568f069f-36ad-4056-8b1a-5b7d6b931f92") + (property ki_fp_filters "TO-???* *_Diode_* *SingleDiode* D_*") + (path "/9ff0b56c-d5bc-4583-945e-df35ef5749e2") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -1705,228 +1545,64 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -3.51 -1.65) + (end 2 -1.65) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "af7b97d7-8ade-41eb-8c30-9e484e30b284") + (uuid "167e0009-a76d-45f2-9f7e-d2843b32ba32") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -3.51 -1.65) + (end -3.51 1.65) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "cf99296f-a80d-4e2e-a39f-1d29f105d055") + (uuid "3606aec7-bacb-4a7e-82f2-c5b92b0822df") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_line + (start -3.51 1.65) + (end 2 1.65) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "5b6cc8f4-9ff3-4df6-ab5b-3ffa33ccc21f") + ) + (fp_line + (start 3.5 -1.75) + (end 3.5 1.75) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "a5647578-dccf-426e-9f5b-b813e30ebef8") + (uuid "fd8a2539-3f3c-48b7-b44e-30b26d9b22d2") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_line + (start -3.5 -1.75) + (end 3.5 -1.75) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "6f0564a9-d6e0-4cd9-b833-b165292d46d7") + (layer "F.CrtYd") + (uuid "064ec2b1-8dfa-4d4b-a087-eeb56f52f610") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "ce086f32-c57d-4459-a60e-f04aced94fb7") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) + (fp_line + (start 3.5 1.75) + (end -3.5 1.75) + (stroke + (width 0.05) + (type solid) ) - ) - (pad "1" smd roundrect - (at -0.51 0 180) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_P") - (pintype "passive") - (uuid "42a12847-c0db-4d1a-b582-c49cb51f4440") - ) - (pad "2" smd roundrect - (at 0.51 0 180) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_TP") - (pintype "passive") - (uuid "6f48224f-46f2-462a-849d-a070e75fb1c6") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "Diode_SMD:D_SMA" - (layer "F.Cu") - (uuid "099495e4-0b25-439c-b703-a97b385410e1") - (at 60.75 48.75 90) - (descr "Diode SMA (DO-214AC)") - (tags "Diode SMA (DO-214AC)") - (property "Reference" "D1" - (at 0 -2.5 90) - (layer "F.SilkS") - (uuid "4b44efc1-6949-45c7-9151-f6953f800ee6") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "SS34" - (at 0 2.6 90) - (layer "F.Fab") - (hide yes) - (uuid "6b610045-35a1-4b2f-9f57-d82710f3e859") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 90) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "272fb95c-99ea-45d8-97ef-f8a7cfb16f65") - (effects - (font - (size 1.27 1.27) - (thickness 0.15) - ) - ) - ) - (property "Description" "" - (at 0 0 90) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "4f1f9fe3-79f4-4316-8b4d-d0c353507d1b") - (effects - (font - (size 1.27 1.27) - (thickness 0.15) - ) - ) - ) - (property "LCSC" "C8678" - (at 0 0 90) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "cab696ec-c064-4234-83a3-28f0eb194b53") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "TO-???* *_Diode_* *SingleDiode* D_*") - (path "/9ff0b56c-d5bc-4583-945e-df35ef5749e2") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) - ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -3.51 -1.65) - (end 2 -1.65) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "167e0009-a76d-45f2-9f7e-d2843b32ba32") - ) - (fp_line - (start -3.51 -1.65) - (end -3.51 1.65) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "3606aec7-bacb-4a7e-82f2-c5b92b0822df") - ) - (fp_line - (start -3.51 1.65) - (end 2 1.65) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "5b6cc8f4-9ff3-4df6-ab5b-3ffa33ccc21f") - ) - (fp_line - (start 3.5 -1.75) - (end 3.5 1.75) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "fd8a2539-3f3c-48b7-b44e-30b26d9b22d2") - ) - (fp_line - (start -3.5 -1.75) - (end 3.5 -1.75) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "064ec2b1-8dfa-4d4b-a087-eeb56f52f610") - ) - (fp_line - (start 3.5 1.75) - (end -3.5 1.75) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "d2907bd5-0c1d-4da2-84eb-7411a5369cbe") + (layer "F.CrtYd") + (uuid "d2907bd5-0c1d-4da2-84eb-7411a5369cbe") ) (fp_line (start -3.5 1.75) @@ -2246,7 +1922,7 @@ (footprint "Package_TO_SOT_SMD:SOT-223-3_TabPin2" (layer "F.Cu") (uuid "0e66ad0d-9164-481c-b23d-fec9a5b3a04f") - (at 68.05 58 -90) + (at 68.05 57.8 -90) (descr "module CMS SOT223 4 pins") (tags "CMS SOT") (property "Reference" "U2" @@ -2961,14 +2637,14 @@ (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") (uuid "1269296d-5fd0-4271-b2b7-fa68986a197e") - (at 139.9575 96.75 180) + (at 139.9 101.65 180) (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "resistor") (property "Reference" "R5" (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "a2d68492-b5be-4216-bb2f-7f30cded83c6") + (uuid "318c47af-af14-4820-a813-5a6b24044b48") (effects (font (size 1 1) @@ -2980,7 +2656,7 @@ (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "0561728c-2b0d-4824-baf3-a93c32b46691") + (uuid "774a8977-f381-43f8-be9f-2fa117c4c7bc") (effects (font (size 1 1) @@ -2992,7 +2668,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "9707bd49-6adf-4ef6-8bbd-11ba93b76e93") + (uuid "33f4c231-0e0d-4593-88d5-6e23dfe8bcfe") (effects (font (size 1.27 1.27) @@ -3003,7 +2679,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "4494eca1-6fdb-4fa1-b396-7162def68289") + (uuid "9cee60f9-cb5c-489a-ac53-57fb9cc11393") (effects (font (size 1.27 1.27) @@ -3119,17 +2795,17 @@ ) ) ) - (footprint "Package_TO_SOT_SMD:SOT-23" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "16cea19f-6984-4721-8346-4de2379fdcc6") - (at 138.2175 59.75) - (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") - (tags "SOT TO_SOT_SMD") - (property "Reference" "Q1" - (at 0 -2.4 0) + (uuid "1495e328-15dc-4880-9d19-677b06181735") + (at 121.75 44.25) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP34" + (at 0 -1.648 0) (layer "F.SilkS") (hide yes) - (uuid "d17db920-69b1-4b8c-8ff5-864f5c49cc08") + (uuid "2d543ef2-7359-4c9e-a259-eeb5bc1ff214") (effects (font (size 1 1) @@ -3137,11 +2813,11 @@ ) ) ) - (property "Value" "AO3400A" - (at 0 2.4 0) + (property "Value" "COIL_PERMIT" + (at 0 1.75 0) (layer "F.Fab") (hide yes) - (uuid "e5397bcd-7940-4f4c-b321-f4eea05de14e") + (uuid "9c7d4e74-1eae-4967-970e-9a7617f0504b") (effects (font (size 1 1) @@ -3151,347 +2827,269 @@ ) (property "Datasheet" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "a24e691c-b340-4417-9130-e5d16c3af681") + (uuid "6d3c4be6-b304-46b9-a321-8f95500895ee") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "e31eb099-91ac-4bb8-9d4a-f8fe83cfe48a") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C20917" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "c6a2bb5f-acb6-4647-abd6-31faed9e4d8a") + (uuid "c45f8ee0-e361-4e99-ad35-adb2c8f6823a") (effects (font - (size 1 1) + (size 1.27 1.27) (thickness 0.15) ) ) ) - (path "/2d7fb491-203b-47d1-b082-820c9c9f8e79") + (property ki_fp_filters "Pin* Test*") + (path "/21389f5f-96fa-4ecd-8a33-a1428f801b2b") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "3" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.76 -1.56) - (end 0.76 -1.56) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "8ff4b01e-762c-4b6f-af4a-3ac30a5f46e8") + (uuid "a7adbae5-8311-4460-8e46-c9a46dd1d36f") ) (fp_line - (start -0.76 -1.51) - (end -0.76 -1.56) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "f4f3214e-a4a8-45fd-a933-3522ac6724d9") + (uuid "ba0e1dad-f34f-4236-8f57-85f05c37c85f") ) (fp_line - (start -0.76 0.39) - (end -0.76 -0.39) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "0bf3a269-cbe9-4c2b-ae12-882eb6d9ef4e") + (uuid "8bd4f1bd-b5b0-4547-8d80-bab8151efaed") ) (fp_line - (start -0.76 1.56) - (end -0.76 1.51) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "cd1476bc-c877-4ded-a3fb-07e09f8ac238") + (uuid "31e4b765-d829-4b7b-95cc-ee94a67f9e44") ) (fp_line - (start 0.76 -1.56) - (end 0.76 -0.56) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "4503bfd3-b64e-46ac-b901-d91ed230167f") + (layer "F.CrtYd") + (uuid "c0f61d07-47c1-4252-9c31-16efdfc48140") ) (fp_line - (start 0.76 0.56) - (end 0.76 1.56) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "ea2bd19e-f2b7-495c-ac4b-3d4b58243674") + (layer "F.CrtYd") + (uuid "4067555f-d85b-4357-bc69-59bb78b82653") ) (fp_line - (start 0.76 1.56) - (end -0.76 1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "d5626eaa-8ac3-4ee4-a96a-2a901deb0f6f") - ) - (fp_poly - (pts - (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) - ) + (start 1.25 1.25) + (end -1.25 1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (fill yes) - (layer "F.SilkS") - (uuid "77d67be8-dd11-42ac-88d3-3091902c9db6") + (layer "F.CrtYd") + (uuid "14339070-db2f-4719-bc46-f9d477042330") ) (fp_line - (start -1.93 -1.5) - (end -0.9 -1.5) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "80499d34-2f8b-454b-ac1b-e66dd4b8f612") + (uuid "abb53ff1-454d-46e6-9a7a-b84907601c67") ) - (fp_line - (start -1.93 -0.39) - (end -1.93 -1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "0be86605-5511-4d6d-b916-1bd1233d75c2") - ) - (fp_line - (start -1.93 0.39) - (end -0.9 0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "a46ecdf6-0324-424f-9d61-64f71d36bc8c") - ) - (fp_line - (start -1.93 1.5) - (end -1.93 0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "fcc211e4-a9fb-4449-8a6d-abbcef012475") - ) - (fp_line - (start -0.9 -1.7) - (end 0.9 -1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "0cf4a779-73a4-4341-8397-4d46d148a040") - ) - (fp_line - (start -0.9 -1.5) - (end -0.9 -1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "d348d233-2ba4-4b1b-a195-3ef75a86f4ab") - ) - (fp_line - (start -0.9 -0.39) - (end -1.93 -0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "e64c1b1b-2906-4f6a-89c2-c16d9701fad1") - ) - (fp_line - (start -0.9 0.39) - (end -0.9 -0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "b97f0f19-da8f-4ca7-82e3-83a615b081e2") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/COIL_PERMIT") + (pinfunction "1_1") + (pintype "passive") + (uuid "f96e52e3-7592-48f3-ba74-fa946506dcda") ) - (fp_line - (start -0.9 1.5) - (end -1.93 1.5) - (stroke - (width 0.05) - (type solid) + (embedded_fonts no) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "167f91af-be98-4982-ac47-5ce9fa6ee3e1") + (at 135 49.69 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R32" + (at 0 -1.17 90) + (layer "F.SilkS") + (hide yes) + (uuid "80b169c1-54bc-4a18-977e-9c51a2a1a01e") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.CrtYd") - (uuid "f43ef91b-8f92-47a1-9fa8-538977878c7d") ) - (fp_line - (start -0.9 1.7) - (end -0.9 1.5) - (stroke - (width 0.05) - (type solid) + (property "Value" "10k" + (at 0 1.17 90) + (layer "F.Fab") + (hide yes) + (uuid "73b7be15-d9af-4355-9d46-10a6a80d35dc") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.CrtYd") - (uuid "dd7552bf-d099-4683-bbf8-4322aeaa27b2") ) - (fp_line - (start 0.9 -1.7) - (end 0.9 -0.55) - (stroke - (width 0.05) - (type solid) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "748012e2-7ac9-488c-9817-2c5776db7c44") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.CrtYd") - (uuid "0ddc4ffb-cc84-467f-a116-11bb4ae84ab2") ) - (fp_line - (start 0.9 -0.55) - (end 1.93 -0.55) - (stroke - (width 0.05) - (type solid) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "c8dc44d9-371a-4573-8206-89acd0d26c6b") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.CrtYd") - (uuid "d2eee73e-884e-4cfc-a3c0-d6d49411ca4d") ) - (fp_line - (start 0.9 0.55) - (end 0.9 1.7) - (stroke - (width 0.05) - (type solid) + (property ki_fp_filters "R_*") + (path "/9f40e584-5411-4a10-bd2b-36cb34015acb") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") ) - (layer "F.CrtYd") - (uuid "3ed13095-0389-430c-88b4-e237374f0dbe") ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 0.9 1.7) - (end -0.9 1.7) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "5b745145-6508-471b-a53f-2bf968fab5cb") + (layer "F.SilkS") + (uuid "a5a273c6-b769-4ae3-8f92-a94b0c4dd2c9") ) (fp_line - (start 1.93 -0.55) - (end 1.93 0.55) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "fd0558f7-63f7-4012-90f2-77315dced18d") + (layer "F.SilkS") + (uuid "5dbcfd72-7899-4633-9c34-23e2a9f5b17d") ) - (fp_line - (start 1.93 0.55) - (end 0.9 0.55) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "ee69f5e5-aa87-461f-b818-48974c7656c5") + (uuid "744eebdc-e80f-4776-8488-28c33dc4fc7c") ) - (fp_poly - (pts - (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) - ) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "15a92a51-1822-4dda-8001-257952e2cccc") + (uuid "1645273e-44a8-42cb-8ac9-7d25eb89582c") ) (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") - (uuid "5d428e3b-5bb2-48dc-8e83-cb52e9ba6577") + (uuid "dc0b7d63-5a94-447c-a9e8-060df6b1f97f") (effects (font - (size 0.72 0.72) - (thickness 0.11) + (size 0.26 0.26) + (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.9375 -0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "Net-(Q1-G)") - (pinfunction "G_1") - (pintype "input") - (uuid "9a15b6fc-3d74-4c41-b24c-6a75fc1cbb82") - ) - (pad "2" smd roundrect - (at -0.9375 0.95) - (size 1.475 0.6) + (at -0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "GND") - (pinfunction "S_2") + (net "/COIL_DRV") (pintype "passive") - (uuid "ae5991c0-6878-478a-a65a-ad9dcb27417a") + (uuid "667b5d4d-c44c-42f9-97f4-71fa1954efec") ) - (pad "3" smd roundrect - (at 0.9375 0) - (size 1.475 0.6) + (pad "2" smd roundrect + (at 0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/SSR1_DRV") - (pinfunction "D_3") + (net "/COIL_FEEDBACK") (pintype "passive") - (uuid "890b9bb8-e2f1-4e51-ba9a-8b507de5bcb4") + (uuid "47abcb6b-f6fd-4b1e-928a-9f5d6bd84adb") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -3503,16 +3101,17 @@ ) ) ) - (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (footprint "Package_TO_SOT_SMD:SOT-23" (layer "F.Cu") - (uuid "1752a5fe-bd88-468d-acdc-6774466f0f95") - (at 145.735 77.5 90) - (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") - (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") - (property "Reference" "J10" - (at 2.25 -5.12 90) + (uuid "16cea19f-6984-4721-8346-4de2379fdcc6") + (at 138.2175 59.75) + (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") + (tags "SOT TO_SOT_SMD") + (property "Reference" "Q1" + (at 0 -2.4 0) (layer "F.SilkS") - (uuid "b1ebb5d3-999c-4c28-93e7-f16c583aab8d") + (hide yes) + (uuid "d17db920-69b1-4b8c-8ff5-864f5c49cc08") (effects (font (size 1 1) @@ -3520,10 +3119,11 @@ ) ) ) - (property "Value" "CT 30A/1V (opt)" - (at 2.25 4.92 90) + (property "Value" "AO3400A" + (at 0 2.4 0) (layer "F.Fab") - (uuid "245472ee-1038-418b-8bfa-9ba2a82f177a") + (hide yes) + (uuid "e5397bcd-7940-4f4c-b321-f4eea05de14e") (effects (font (size 1 1) @@ -3532,10 +3132,10 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "169046e7-c2b2-4653-b8c1-ef1ba97b75f6") + (uuid "a24e691c-b340-4417-9130-e5d16c3af681") (effects (font (size 1.27 1.27) @@ -3543,22 +3143,22 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "4e031895-5b14-40b7-bf3f-a6e4bca41f6d") + (uuid "e31eb099-91ac-4bb8-9d4a-f8fe83cfe48a") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C474881" - (at 0 0 90) + (property "LCSC" "C20917" + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "9c5bc808-1353-477d-8427-56e9972cfdbf") + (uuid "c6a2bb5f-acb6-4647-abd6-31faed9e4d8a") (effects (font (size 1 1) @@ -3566,359 +3166,314 @@ ) ) ) - (property ki_fp_filters "TerminalBlock*:*") - (path "/4d46b63a-4232-40c9-8531-949dd1bf29d4") + (path "/2d7fb491-203b-47d1-b082-820c9c9f8e79") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1" "3" "2") ) ) - (attr through_hole) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 7.62 -4.12) - (end 7.62 3.92) + (start -0.76 -1.56) + (end 0.76 -1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "3bee68bb-e258-4ef5-a4f7-e89ed478a9f5") + (uuid "8ff4b01e-762c-4b6f-af4a-3ac30a5f46e8") ) (fp_line - (start -3.12 -4.12) - (end 7.62 -4.12) + (start -0.76 -1.51) + (end -0.76 -1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "8361d7ac-eb87-4a5b-85dc-acf86c115728") + (uuid "f4f3214e-a4a8-45fd-a933-3522ac6724d9") ) (fp_line - (start 6.812 -0.5) - (end 7.62 -0.5) + (start -0.76 0.39) + (end -0.76 -0.39) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "a78c60bb-440d-4dd6-925c-eb4734e4afee") + (uuid "0bf3a269-cbe9-4c2b-ae12-882eb6d9ef4e") ) (fp_line - (start 1.88 -0.5) - (end 3.188 -0.5) + (start -0.76 1.56) + (end -0.76 1.51) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "3f5a65b1-d4e8-4298-8a3c-03531f36a5f7") + (uuid "cd1476bc-c877-4ded-a3fb-07e09f8ac238") ) (fp_line - (start -3.12 -0.5) - (end -1.88 -0.5) + (start 0.76 -1.56) + (end 0.76 -0.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "f91f5510-345c-4090-a8bc-802efce6532e") + (uuid "4503bfd3-b64e-46ac-b901-d91ed230167f") ) (fp_line - (start 6.812 0.5) - (end 7.62 0.5) + (start 0.76 0.56) + (end 0.76 1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "3c421890-18b1-44b6-a0f2-53d04cf3aef8") + (uuid "ea2bd19e-f2b7-495c-ac4b-3d4b58243674") ) (fp_line - (start 1.88 0.5) - (end 3.188 0.5) + (start 0.76 1.56) + (end -0.76 1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "cc1174ba-59ed-4c9e-b984-f9f3f424606a") + (uuid "d5626eaa-8ac3-4ee4-a96a-2a901deb0f6f") ) - (fp_line - (start -3.12 0.5) - (end -1.88 0.5) - (stroke - (width 0.12) - (type solid) + (fp_poly + (pts + (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) ) - (layer "F.SilkS") - (uuid "098187c2-ba72-4ad7-be19-86ab47858ff4") - ) - (fp_line - (start 5.543 1.8) - (end 7.62 1.8) (stroke (width 0.12) (type solid) ) + (fill yes) (layer "F.SilkS") - (uuid "9a99f70d-e182-4a37-ae3b-fce540eaab6c") + (uuid "77d67be8-dd11-42ac-88d3-3091902c9db6") ) (fp_line - (start 1.88 1.8) - (end 4.457 1.8) + (start -1.93 -1.5) + (end -0.9 -1.5) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "c58cfd8c-3ec1-4876-98eb-ed6763ef468b") + (layer "F.CrtYd") + (uuid "80499d34-2f8b-454b-ac1b-e66dd4b8f612") ) (fp_line - (start -3.12 1.8) - (end -1.88 1.8) + (start -1.93 -0.39) + (end -1.93 -1.5) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "1754b1a2-602a-4f6a-92fd-30dbc5b87e1f") + (layer "F.CrtYd") + (uuid "0be86605-5511-4d6d-b916-1bd1233d75c2") ) (fp_line - (start 7.62 3.92) - (end 0.3 3.92) + (start -1.93 0.39) + (end -0.9 0.39) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "605426ec-6aaf-4e18-a0cc-0cea826d013b") + (layer "F.CrtYd") + (uuid "a46ecdf6-0324-424f-9d61-64f71d36bc8c") ) (fp_line - (start -0.3 3.92) - (end -3.12 3.92) + (start -1.93 1.5) + (end -1.93 0.39) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "45ac927b-19fb-4599-9172-519dea222a1b") + (layer "F.CrtYd") + (uuid "fcc211e4-a9fb-4449-8a6d-abbcef012475") ) (fp_line - (start -3.12 3.92) - (end -3.12 -4.12) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "97d2ab68-af2d-4b76-9289-be42bc428a5f") - ) - (fp_poly - (pts - (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) - ) + (start -0.9 -1.7) + (end 0.9 -1.7) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (fill yes) - (layer "F.SilkS") - (uuid "f928be52-fdbb-43c4-90ee-66eef3feee7a") + (layer "F.CrtYd") + (uuid "0cf4a779-73a4-4341-8397-4d46d148a040") ) - (fp_rect - (start -3.5 -4.5) - (end 8 4.31) + (fp_line + (start -0.9 -1.5) + (end -0.9 -1.7) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "508e14c6-55de-4c17-8845-2a26e6a92ee7") + (uuid "d348d233-2ba4-4b1b-a195-3ef75a86f4ab") ) (fp_line - (start 7.5 -4) - (end 7.5 3.8) + (start -0.9 -0.39) + (end -1.93 -0.39) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "7bfd977a-2e67-4caa-9f46-1f0d47895386") + (layer "F.CrtYd") + (uuid "e64c1b1b-2906-4f6a-89c2-c16d9701fad1") ) (fp_line - (start -3 -4) - (end 7.5 -4) + (start -0.9 0.39) + (end -0.9 -0.39) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "a6b73d08-cb32-4252-b417-4bb78a0fcd3a") + (layer "F.CrtYd") + (uuid "b97f0f19-da8f-4ca7-82e3-83a615b081e2") ) (fp_line - (start 6.018 -1.213) - (end 3.787 1.018) + (start -0.9 1.5) + (end -1.93 1.5) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "45c7b004-029c-4282-be2e-6fa96d24d828") + (layer "F.CrtYd") + (uuid "f43ef91b-8f92-47a1-9fa8-538977878c7d") ) (fp_line - (start 1.018 -1.213) - (end -1.213 1.018) + (start -0.9 1.7) + (end -0.9 1.5) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "929bf325-172d-4058-b87b-84fb37bf41ec") + (layer "F.CrtYd") + (uuid "dd7552bf-d099-4683-bbf8-4322aeaa27b2") ) (fp_line - (start 6.213 -1.018) - (end 3.982 1.213) + (start 0.9 -1.7) + (end 0.9 -0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "40d36862-0faf-4647-939b-e3067fd0e045") + (layer "F.CrtYd") + (uuid "0ddc4ffb-cc84-467f-a116-11bb4ae84ab2") ) (fp_line - (start 1.213 -1.018) - (end -1.018 1.213) + (start 0.9 -0.55) + (end 1.93 -0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "e9e3ffc0-f899-4069-8907-7601b3f7bf97") + (layer "F.CrtYd") + (uuid "d2eee73e-884e-4cfc-a3c0-d6d49411ca4d") ) (fp_line - (start -3 -0.5) - (end 7.5 -0.5) + (start 0.9 0.55) + (end 0.9 1.7) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "00a7394b-628e-48db-8842-bcd82351a0d6") + (layer "F.CrtYd") + (uuid "3ed13095-0389-430c-88b4-e237374f0dbe") ) (fp_line - (start -3 0.5) - (end 7.5 0.5) + (start 0.9 1.7) + (end -0.9 1.7) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "cdc91042-8f11-48b3-9c79-ebbee235a8c9") + (layer "F.CrtYd") + (uuid "5b745145-6508-471b-a53f-2bf968fab5cb") ) (fp_line - (start -3 1.8) - (end 7.5 1.8) + (start 1.93 -0.55) + (end 1.93 0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "9a751d8a-bb87-412a-8733-5707262f7853") + (layer "F.CrtYd") + (uuid "fd0558f7-63f7-4012-90f2-77315dced18d") ) (fp_line - (start -3 1.85) - (end -3 -4) + (start 1.93 0.55) + (end 0.9 0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "333ca05b-7e5f-4cf9-84c0-a6f0e039120d") + (layer "F.CrtYd") + (uuid "ee69f5e5-aa87-461f-b818-48974c7656c5") ) - (fp_line - (start 7.5 3.8) - (end -1.05 3.8) + (fp_poly + (pts + (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) + ) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "8d595c81-f084-41f9-9df1-90db7ad4b3d1") - ) - (fp_line - (start -1.05 3.8) - (end -3 1.85) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "729cd5c2-0b97-4206-a6a8-0c90d9930d6e") - ) - (fp_circle - (center 5 0) - (end 6.6 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "2b552b59-7742-4d86-a299-0d6592f2f0e6") - ) - (fp_circle - (center 0 0) - (end 1.6 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "4083ae03-7660-4473-aa1b-faf4c69f6b0b") + (uuid "15a92a51-1822-4dda-8001-257952e2cccc") ) (fp_text user "${REFERENCE}" - (at 2.25 2.65 90) + (at 0 0 90) (layer "F.Fab") - (uuid "194948e9-32de-4eb6-a603-8823c8ce4688") + (uuid "5d428e3b-5bb2-48dc-8e83-cb52e9ba6577") (effects (font - (size 1 1) - (thickness 0.15) + (size 0.72 0.72) + (thickness 0.11) ) ) ) - (pad "1" thru_hole roundrect - (at 0 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (roundrect_rratio 0.089286) - (net "/CT_IN") - (pinfunction "Pin_1_1") + (pad "1" smd roundrect + (at -0.9375 -0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(Q1-G)") + (pinfunction "G_1") + (pintype "input") + (uuid "9a15b6fc-3d74-4c41-b24c-6a75fc1cbb82") + ) + (pad "2" smd roundrect + (at -0.9375 0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pinfunction "S_2") (pintype "passive") - (uuid "1f91dafa-ba15-40e4-8936-0cbb90b34d6a") + (uuid "ae5991c0-6878-478a-a65a-ad9dcb27417a") ) - (pad "2" thru_hole circle - (at 5 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/VBIAS") - (pinfunction "Pin_2_2") + (pad "3" smd roundrect + (at 0.9375 0) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/SSR_DRV") + (pinfunction "D_3") (pintype "passive") - (uuid "59ce2a9d-7de2-4f5a-bd1d-4e436fb4f0cb") + (uuid "890b9bb8-e2f1-4e51-ba9a-8b507de5bcb4") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" (offset (xyz 0 0 0) ) @@ -3930,17 +3485,16 @@ ) ) ) - (footprint "Capacitor_SMD:C_0805_2012Metric" + (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" (layer "F.Cu") - (uuid "195ae28b-f594-4336-8279-f4c559b14a4c") - (at 128.25 44.45 90) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") - (tags "capacitor") - (property "Reference" "C24" - (at 0 -1.68 90) + (uuid "1752a5fe-bd88-468d-acdc-6774466f0f95") + (at 145.8 90.2 90) + (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") + (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") + (property "Reference" "J10" + (at 2.25 -5.12 90) (layer "F.SilkS") - (hide yes) - (uuid "bb9834f2-f23c-49b4-806c-ab7297ff2dc6") + (uuid "b1ebb5d3-999c-4c28-93e7-f16c583aab8d") (effects (font (size 1 1) @@ -3948,11 +3502,10 @@ ) ) ) - (property "Value" "3.3uF" - (at 0 1.68 90) + (property "Value" "CT 30A/1V" + (at 2.25 4.92 90) (layer "F.Fab") - (hide yes) - (uuid "6bf5f039-ea86-4bb4-b755-2c90c3124797") + (uuid "245472ee-1038-418b-8bfa-9ba2a82f177a") (effects (font (size 1 1) @@ -3964,7 +3517,7 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "6e815b04-3f36-4c5a-9acc-d624a8a16a0a") + (uuid "169046e7-c2b2-4653-b8c1-ef1ba97b75f6") (effects (font (size 1.27 1.27) @@ -3975,19 +3528,19 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "f209004c-e510-4c41-af5a-c6d5732b5a88") + (uuid "4e031895-5b14-40b7-bf3f-a6e4bca41f6d") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C159781" + (property "LCSC" "C474881" (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "cff5ee81-d5d3-41ee-9050-b346950e9792") + (uuid "9c5bc808-1353-477d-8427-56e9972cfdbf") (effects (font (size 1 1) @@ -3995,8 +3548,8 @@ ) ) ) - (property ki_fp_filters "C_*") - (path "/a37ff629-c731-4830-967d-0953fcf07a41") + (property ki_fp_filters "TerminalBlock*:*") + (path "/4d46b63a-4232-40c9-8531-949dd1bf29d4") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -4005,393 +3558,317 @@ (pins "1" "2") ) ) - (attr smd) + (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.261252 -0.735) - (end 0.261252 -0.735) + (start 7.62 -4.12) + (end 7.62 3.92) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "00ee914c-4fdb-4bb5-95bd-03b5279b4c48") + (uuid "3bee68bb-e258-4ef5-a4f7-e89ed478a9f5") ) (fp_line - (start -0.261252 0.735) - (end 0.261252 0.735) + (start -3.12 -4.12) + (end 7.62 -4.12) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "26b0a8c0-6016-4e32-807f-afc0b9e2f435") + (uuid "8361d7ac-eb87-4a5b-85dc-acf86c115728") ) - (fp_rect - (start -1.7 -0.98) - (end 1.7 0.98) + (fp_line + (start 6.812 -0.5) + (end 7.62 -0.5) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (fill no) - (layer "F.CrtYd") - (uuid "304c2869-28e4-4569-8d0a-abb0a7441d3d") + (layer "F.SilkS") + (uuid "a78c60bb-440d-4dd6-925c-eb4734e4afee") ) - (fp_rect - (start -1 -0.625) - (end 1 0.625) + (fp_line + (start 1.88 -0.5) + (end 3.188 -0.5) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "6c647ce1-381c-4bf7-84ad-e38fb48fdc63") + (layer "F.SilkS") + (uuid "3f5a65b1-d4e8-4298-8a3c-03531f36a5f7") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "79271b90-6ffc-4a8d-831b-2c1dfb396a1f") - (effects - (font - (size 0.5 0.5) - (thickness 0.08) - ) + (fp_line + (start -3.12 -0.5) + (end -1.88 -0.5) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "f91f5510-345c-4090-a8bc-802efce6532e") ) - (pad "1" smd roundrect - (at -0.95 0 90) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/HEAT_EN_DC") - (pintype "passive") - (uuid "1d04307c-fdff-4bd0-b959-792f7bdb1a89") - ) - (pad "2" smd roundrect - (at 0.95 0 90) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pintype "passive") - (uuid "4a6727f7-0350-4e34-878f-75a06b76bbed") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) + (fp_line + (start 6.812 0.5) + (end 7.62 0.5) + (stroke + (width 0.12) + (type solid) ) - ) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "1c13fee2-5e0a-4849-9a17-a276cefb870f") - (at 139.735 106.5) - (property "Reference" "TP30" - (at 0 -1.648 0) - (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "c4475bb8-cea5-4893-8d7d-1febef79140f") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (uuid "3c421890-18b1-44b6-a0f2-53d04cf3aef8") ) - (property "Value" "TC2_N" - (at 0 1.75 0) - (unlocked yes) + (fp_line + (start 1.88 0.5) + (end 3.188 0.5) + (stroke + (width 0.12) + (type solid) + ) (layer "F.SilkS") - (hide yes) - (uuid "bd82f9c9-0f88-4991-bf05-ec374863f57b") - (effects - (font - (size 1 1) - (line_spacing 0) - ) + (uuid "cc1174ba-59ed-4c9e-b984-f9f3f424606a") + ) + (fp_line + (start -3.12 0.5) + (end -1.88 0.5) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "098187c2-ba72-4ad7-be19-86ab47858ff4") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "0028d503-00a7-49c6-a1c3-c6b82c97c355") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "5ef9b30c-5d17-4600-80f7-a0c1c47ee8f5") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property ki_fp_filters "Pin* Test*") - (path "/9d18e2ea-a418-4217-b56e-33918843be8c") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) - ) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 5.543 1.8) + (end 7.62 1.8) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "c405ffdc-013c-4a17-b41d-07c6c5bcf321") + (uuid "9a99f70d-e182-4a37-ae3b-fce540eaab6c") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start 1.88 1.8) + (end 4.457 1.8) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "43b58872-3b7f-467f-85d2-f6add457f54a") + (uuid "c58cfd8c-3ec1-4876-98eb-ed6763ef468b") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -3.12 1.8) + (end -1.88 1.8) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "737f9439-8a52-4b1f-b3cd-15110609e011") + (uuid "1754b1a2-602a-4f6a-92fd-30dbc5b87e1f") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start 7.62 3.92) + (end 0.3 3.92) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "bb17b1a1-068c-4afd-bcb4-58ed305de048") + (uuid "605426ec-6aaf-4e18-a0cc-0cea826d013b") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -0.3 3.92) + (end -3.12 3.92) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "2b85836f-652a-4dd7-b0c1-1798d6439130") + (layer "F.SilkS") + (uuid "45ac927b-19fb-4599-9172-519dea222a1b") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start -3.12 3.92) + (end -3.12 -4.12) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "2d382529-5662-4b40-978a-948ccdaff02a") + (layer "F.SilkS") + (uuid "97d2ab68-af2d-4b76-9289-be42bc428a5f") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (fp_poly + (pts + (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) + ) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "a6787776-8d94-4505-94c9-fd8e2a9a67e2") + (fill yes) + (layer "F.SilkS") + (uuid "f928be52-fdbb-43c4-90ee-66eef3feee7a") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (fp_rect + (start -3.5 -4.5) + (end 8 4.31) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "1f30ce54-c034-4e1d-9432-6f7223b74df4") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC2_N") - (pinfunction "1_1") - (pintype "passive") - (uuid "a60fd1ca-ad39-4a90-9ad0-59a20c44382d") - ) - (embedded_fonts no) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "1eabae31-21fa-42c7-9886-c51a6908dd83") - (at 107.75 83) - (property "Reference" "TP32" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (uuid "275eaa97-32ca-43f6-8c64-88cbd5f6a642") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Value" "MCU_EN" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "c7cfb88d-78fa-4189-bc3d-806e1027edf8") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (uuid "508e14c6-55de-4c17-8845-2a26e6a92ee7") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "bd4bcc66-05ad-4374-8757-6736196219ec") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start 7.5 -4) + (end 7.5 3.8) + (stroke + (width 0.1) + (type solid) ) - ) - (property "Description" "" - (at 0 0 0) (layer "F.Fab") - (hide yes) - (uuid "fe82f38e-abed-4a47-a7e2-4e79e4ef1e23") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property ki_fp_filters "Pin* Test*") - (path "/776a7b64-a406-435b-9ac8-c79e5b6dff4e") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) + (uuid "7bfd977a-2e67-4caa-9f46-1f0d47895386") ) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start -3 -4) + (end 7.5 -4) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "50546616-5173-4951-88e9-ffbc1dd7c1a4") + (layer "F.Fab") + (uuid "a6b73d08-cb32-4252-b417-4bb78a0fcd3a") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start 6.018 -1.213) + (end 3.787 1.018) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "e185ea89-ed9e-4ac1-aea6-914c4f691280") + (layer "F.Fab") + (uuid "45c7b004-029c-4282-be2e-6fa96d24d828") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start 1.018 -1.213) + (end -1.213 1.018) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "0ae8f55b-3269-4c3c-9948-09481d2ba5d0") + (layer "F.Fab") + (uuid "929bf325-172d-4058-b87b-84fb37bf41ec") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start 6.213 -1.018) + (end 3.982 1.213) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "585156e8-4fca-4ecc-984a-0e2266df92c7") + (layer "F.Fab") + (uuid "40d36862-0faf-4647-939b-e3067fd0e045") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start 1.213 -1.018) + (end -1.018 1.213) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "9cfae6ad-f24e-4b8d-af8c-6cc4a5c217e5") + (layer "F.Fab") + (uuid "e9e3ffc0-f899-4069-8907-7601b3f7bf97") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start -3 -0.5) + (end 7.5 -0.5) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "43bfaf85-daa6-46de-99b0-523768d89e74") + (layer "F.Fab") + (uuid "00a7394b-628e-48db-8842-bcd82351a0d6") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start -3 0.5) + (end 7.5 0.5) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "02223c5a-dc1b-4b72-878a-9cdb45405f93") + (layer "F.Fab") + (uuid "cdc91042-8f11-48b3-9c79-ebbee235a8c9") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -3 1.8) + (end 7.5 1.8) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "bb235a59-1545-4149-8f7c-0c2345bf520d") + (layer "F.Fab") + (uuid "9a751d8a-bb87-412a-8733-5707262f7853") + ) + (fp_line + (start -3 1.85) + (end -3 -4) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "333ca05b-7e5f-4cf9-84c0-a6f0e039120d") + ) + (fp_line + (start 7.5 3.8) + (end -1.05 3.8) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "8d595c81-f084-41f9-9df1-90db7ad4b3d1") + ) + (fp_line + (start -1.05 3.8) + (end -3 1.85) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "729cd5c2-0b97-4206-a6a8-0c90d9930d6e") + ) + (fp_circle + (center 5 0) + (end 6.6 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "2b552b59-7742-4d86-a299-0d6592f2f0e6") + ) + (fp_circle + (center 0 0) + (end 1.6 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "4083ae03-7660-4473-aa1b-faf4c69f6b0b") ) (fp_text user "${REFERENCE}" - (at 0 -1.65 0) - (unlocked yes) + (at 2.25 2.65 90) (layer "F.Fab") - (uuid "7c56200c-3abb-430a-b01b-4ef119e96a0b") + (uuid "194948e9-32de-4eb6-a603-8823c8ce4688") (effects (font (size 1 1) @@ -4399,28 +3876,53 @@ ) ) ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/MCU_EN") - (pinfunction "1_1") + (pad "1" thru_hole roundrect + (at 0 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.089286) + (net "/CT_IN") + (pinfunction "Pin_1_1") (pintype "passive") - (uuid "3d49f643-8f9e-427c-a7d9-309c59a1aa1a") + (uuid "1f91dafa-ba15-40e4-8936-0cbb90b34d6a") + ) + (pad "2" thru_hole circle + (at 5 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/VBIAS") + (pinfunction "Pin_2_2") + (pintype "passive") + (uuid "59ce2a9d-7de2-4f5a-bd1d-4e436fb4f0cb") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") - (uuid "202c61a2-26fb-4c09-aa91-52da443d588c") - (at 144.9675 42.25) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R21" - (at 0 -1.17 0) + (uuid "195ae28b-f594-4336-8279-f4c559b14a4c") + (at 128.25 44.45 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") + (tags "capacitor") + (property "Reference" "C24" + (at 0 -1.68 90) (layer "F.SilkS") (hide yes) - (uuid "94cbaf6e-3861-4e89-94b5-725234294c0d") + (uuid "bb9834f2-f23c-49b4-806c-ab7297ff2dc6") (effects (font (size 1 1) @@ -4428,11 +3930,11 @@ ) ) ) - (property "Value" "1k" - (at 0 1.17 0) + (property "Value" "3.3uF" + (at 0 1.68 90) (layer "F.Fab") (hide yes) - (uuid "27df0b48-6281-4e13-afb7-3c1ea874a849") + (uuid "6bf5f039-ea86-4bb4-b755-2c90c3124797") (effects (font (size 1 1) @@ -4441,10 +3943,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "42d67a07-4af5-49c3-b67f-c807e0bdc789") + (uuid "6e815b04-3f36-4c5a-9acc-d624a8a16a0a") (effects (font (size 1.27 1.27) @@ -4452,22 +3954,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "ea93d60e-94d6-4a04-b5aa-363867025930") + (uuid "f209004c-e510-4c41-af5a-c6d5732b5a88") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C11702" - (at 0 0 0) + (property "LCSC" "C159781" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "3f019808-c310-4eaa-9b34-81f598402669") + (uuid "cff5ee81-d5d3-41ee-9050-b346950e9792") (effects (font (size 1 1) @@ -4475,8 +3977,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/5cdbaf04-eab7-4fda-99c2-f9e438ac1547") + (property ki_fp_filters "C_*") + (path "/a37ff629-c731-4830-967d-0953fcf07a41") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -4488,78 +3990,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.261252 -0.735) + (end 0.261252 -0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "8f7ccb6f-f931-4d98-b277-a6781b4d6193") + (uuid "00ee914c-4fdb-4bb5-95bd-03b5279b4c48") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.261252 0.735) + (end 0.261252 0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "92306c78-44ba-4077-915d-858f748829d7") + (uuid "26b0a8c0-6016-4e32-807f-afc0b9e2f435") ) (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (start -1.7 -0.98) + (end 1.7 0.98) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "71eb41d0-e406-4600-9f93-cbe305a0cf63") + (uuid "304c2869-28e4-4569-8d0a-abb0a7441d3d") ) (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (start -1 -0.625) + (end 1 0.625) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "778aba0c-c164-4c74-8ac5-abf543c4e124") + (uuid "6c647ce1-381c-4bf7-84ad-e38fb48fdc63") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "6355f4f0-73c2-409c-8a0c-8965c83eb285") + (uuid "79271b90-6ffc-4a8d-831b-2c1dfb396a1f") (effects (font - (size 0.26 0.26) - (thickness 0.04) + (size 0.5 0.5) + (thickness 0.08) ) ) ) (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) + (at -0.95 0 90) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "+5V") + (net "/HEAT_EN_DC") (pintype "passive") - (uuid "85efdb57-3606-4080-87ba-d45847c8bbb0") + (uuid "1d04307c-fdff-4bd0-b959-792f7bdb1a89") ) (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) + (at 0.95 0 90) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "Net-(D7-A)") + (net "GND") (pintype "passive") - (uuid "b2f60d7c-d87b-4a88-9c54-1b094fc52435") + (uuid "4a6727f7-0350-4e34-878f-75a06b76bbed") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" (offset (xyz 0 0 0) ) @@ -4571,17 +4073,17 @@ ) ) ) - (footprint "Package_TO_SOT_SMD:SOT-23" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "23cd50e0-ae0c-4a52-a3ae-a68f30fc77aa") - (at 122.9375 48.3) - (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") - (tags "SOT TO_SOT_SMD") - (property "Reference" "Q5" - (at 0 -2.4 0) + (uuid "1c1d749f-f3fa-44ab-8033-f65f512b4d52") + (at 125.19 91.3 180) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R7" + (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "03ef6ede-1c39-474d-bc48-6ac679eceb2b") + (uuid "456b5a2f-035f-4470-90a4-14f527981b28") (effects (font (size 1 1) @@ -4589,11 +4091,11 @@ ) ) ) - (property "Value" "AO3400A" - (at 0 2.4 0) + (property "Value" "10k" + (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "f9030cc5-8998-467c-829a-0ead0db41eca") + (uuid "ab698a33-effd-4c89-9a52-cfecb98dc981") (effects (font (size 1 1) @@ -4605,7 +4107,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "90ad2e1f-6e23-49a1-8c51-476fda5e2b6b") + (uuid "33452f5f-dcac-4f69-8017-80f7bbb5afb7") (effects (font (size 1.27 1.27) @@ -4616,482 +4118,512 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "46b4cc45-e50e-468a-9e19-0247de46a0e2") + (uuid "78e7b728-9caa-4bef-ac55-c37b488710f0") (effects (font (size 1.27 1.27) ) ) ) - (path "/cdb29f85-c6dd-4ab6-9dd2-a291668c04a3") + (property ki_fp_filters "R_*") + (path "/a17956d8-0551-46e1-a9e7-d2d8702eedcc") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "3" "2") + (pins "1" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.76 -1.56) - (end 0.76 -1.56) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "ca227dc9-9691-4cbf-9311-c87b6be166cb") + (uuid "6d93a954-943b-4256-a5b0-65e55d2a2afe") ) (fp_line - (start -0.76 -1.51) - (end -0.76 -1.56) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e8145da8-03ac-48b2-8df4-19bade6e9bdc") + (uuid "04e71fa7-93fc-468c-bd01-18de6dd6a6ec") ) - (fp_line - (start -0.76 0.39) - (end -0.76 -0.39) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "12f9d832-de33-46c3-8f04-2f29f683b34e") + (fill no) + (layer "F.CrtYd") + (uuid "58a237cc-3800-41dd-8662-72672681768f") ) - (fp_line - (start -0.76 1.56) - (end -0.76 1.51) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "1afbc592-2a23-4994-9fd9-32273c92f59a") - ) + (fill no) + (layer "F.Fab") + (uuid "e775264e-68c2-4fcc-bb05-491556b0f9de") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "aa57a1ac-8d5d-4ed8-84bc-0c13a4d2691a") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/SUPERVISOR_TX") + (pintype "passive") + (uuid "fce47f8f-96e4-4a86-9ca4-0c009f4aeec0") + ) + (pad "2" smd roundrect + (at 0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pintype "passive") + (uuid "fbad56f4-9293-48c6-bb36-882bf95b5c9f") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (layer "F.Cu") + (uuid "1e0602d5-284b-4e65-8930-9c69f66db1b6") + (at 145.7675 113.15 90) + (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") + (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") + (property "Reference" "J7" + (at 2.25 -5.12 90) + (layer "F.SilkS") + (uuid "b1607345-d70e-4afd-b03f-b1bdd0ff10a4") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "TC2 KILN (K)" + (at 2.25 4.92 90) + (layer "F.Fab") + (uuid "471b4621-5cfa-491a-add7-a83612290396") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "a7bcad55-6407-40d3-835a-b66835fad87e") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "7051b49a-6259-491b-b494-e7233ba95e14") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "TerminalBlock*:*") + (path "/5c9db875-727d-42ed-91de-640844aaff8a") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 0.76 -1.56) - (end 0.76 -0.56) + (start 7.62 -4.12) + (end 7.62 3.92) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "168939f4-4070-4a56-b9a9-c689100185f6") + (uuid "aca481f6-4d3f-4538-a493-a91f99a54893") ) (fp_line - (start 0.76 0.56) - (end 0.76 1.56) + (start -3.12 -4.12) + (end 7.62 -4.12) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "378facae-ad9a-40fa-b738-974f571c9892") + (uuid "a99d8006-c8cd-41fb-871c-878759ed928c") ) (fp_line - (start 0.76 1.56) - (end -0.76 1.56) + (start 6.812 -0.5) + (end 7.62 -0.5) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "9227c38a-9d59-4b6b-8169-ed0e1b89bfc9") + (uuid "6bd1e74e-90b0-452a-aeef-df9fd62cd5ae") ) - (fp_poly - (pts - (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) - ) + (fp_line + (start 1.88 -0.5) + (end 3.188 -0.5) (stroke (width 0.12) (type solid) ) - (fill yes) (layer "F.SilkS") - (uuid "d8320ea8-a0c5-488a-85d5-52986c55e533") + (uuid "f09d132e-66bb-4fbc-85a2-6de1a2c6edff") ) (fp_line - (start -1.93 -1.5) - (end -0.9 -1.5) + (start -3.12 -0.5) + (end -1.88 -0.5) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "895bf798-7a16-491a-bddd-84cbae908bd0") + (layer "F.SilkS") + (uuid "adb01e95-1cbc-4c53-990a-a482592a1b0d") ) (fp_line - (start -1.93 -0.39) - (end -1.93 -1.5) + (start 6.812 0.5) + (end 7.62 0.5) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "23148da5-1daa-4278-b448-5796b89c1f5c") + (layer "F.SilkS") + (uuid "dc705398-595d-4182-83c4-ff9651133999") ) (fp_line - (start -1.93 0.39) - (end -0.9 0.39) + (start 1.88 0.5) + (end 3.188 0.5) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "a561ae80-224a-42ff-b557-70ea4542861b") + (layer "F.SilkS") + (uuid "53fee752-17ec-485d-af05-20ac078acc30") ) (fp_line - (start -1.93 1.5) - (end -1.93 0.39) + (start -3.12 0.5) + (end -1.88 0.5) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "6f0c6c49-5f53-477a-b167-b5654b63ec5a") + (layer "F.SilkS") + (uuid "cb973f01-f6d0-4164-8f66-6a9b592fab6f") ) (fp_line - (start -0.9 -1.7) - (end 0.9 -1.7) + (start 5.543 1.8) + (end 7.62 1.8) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "0d2b3a75-0eb8-44a6-88d9-902938de14c7") + (layer "F.SilkS") + (uuid "b3d27f03-5e5c-4825-9dc2-a64826655d7e") ) (fp_line - (start -0.9 -1.5) - (end -0.9 -1.7) + (start 1.88 1.8) + (end 4.457 1.8) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "d49ad362-8ff7-456e-b5d3-2669512ec618") + (layer "F.SilkS") + (uuid "770cff8b-191f-4730-8cf4-65e854e59761") ) (fp_line - (start -0.9 -0.39) - (end -1.93 -0.39) + (start -3.12 1.8) + (end -1.88 1.8) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "d5c5648f-9e4c-4186-a26d-cf501daf1b04") + (layer "F.SilkS") + (uuid "3c8781ae-641c-4175-9903-34eabac0c9b1") ) (fp_line - (start -0.9 0.39) - (end -0.9 -0.39) + (start 7.62 3.92) + (end 0.3 3.92) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "2c61dd88-fce9-4fd9-bad3-191f66aff53f") + (layer "F.SilkS") + (uuid "2cf3ba98-1d43-4ada-bf0f-db380660894c") ) (fp_line - (start -0.9 1.5) - (end -1.93 1.5) + (start -0.3 3.92) + (end -3.12 3.92) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "0b69e825-15d3-4b4a-8ea4-a49df51dc9be") + (layer "F.SilkS") + (uuid "a5e024f2-e5d3-43d4-bdda-11dfbd679016") ) (fp_line - (start -0.9 1.7) - (end -0.9 1.5) + (start -3.12 3.92) + (end -3.12 -4.12) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "73d28aa7-a6f6-43cf-ac18-02a1ed1e2cbd") + (layer "F.SilkS") + (uuid "73cb47f6-b2b8-4c7e-b79c-9c109afe65f5") ) - (fp_line - (start 0.9 -1.7) - (end 0.9 -0.55) + (fp_poly + (pts + (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) + ) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "b6d71139-8edb-440b-bf13-d5343cb4cd32") + (fill yes) + (layer "F.SilkS") + (uuid "5b22037e-036c-43fd-97a3-92c6704be610") ) - (fp_line - (start 0.9 -0.55) - (end 1.93 -0.55) + (fp_rect + (start -3.5 -4.5) + (end 8 4.31) (stroke (width 0.05) (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "9ddb307c-ff61-4d95-82f4-1d563c5c4498") + (uuid "e68d58ac-3eb8-4145-83a8-bf13ff0750c9") ) (fp_line - (start 0.9 0.55) - (end 0.9 1.7) + (start 7.5 -4) + (end 7.5 3.8) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "2909a757-0e80-4277-bc0c-7df9d0898cc6") + (layer "F.Fab") + (uuid "bf361013-30eb-41bb-8e3e-705f2ff05034") ) (fp_line - (start 0.9 1.7) - (end -0.9 1.7) + (start -3 -4) + (end 7.5 -4) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "7d05aa30-296a-4fe3-89b7-2326f3012e7a") + (layer "F.Fab") + (uuid "71a03ccb-f722-4ad1-ae1b-8af097caa505") ) (fp_line - (start 1.93 -0.55) - (end 1.93 0.55) + (start 6.018 -1.213) + (end 3.787 1.018) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "425843d1-d550-4b19-945e-961a002c1d5d") + (layer "F.Fab") + (uuid "b59a4bd8-144a-4976-b048-30faba96d0d4") ) (fp_line - (start 1.93 0.55) - (end 0.9 0.55) + (start 1.018 -1.213) + (end -1.213 1.018) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "493770e3-22f7-4c06-9931-475f5d0a5c4e") + (layer "F.Fab") + (uuid "ddd87a20-d702-4e86-af9d-506f2d9c16d8") ) - (fp_poly - (pts - (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) - ) + (fp_line + (start 6.213 -1.018) + (end 3.982 1.213) (stroke (width 0.1) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "1d886a98-48f6-439f-8fa2-8c78c7688c51") - ) - (fp_text user "${REFERENCE}" - (at 0 0 90) (layer "F.Fab") - (uuid "9b6d2185-9a44-4637-8bd0-21f8c099609a") - (effects - (font - (size 0.72 0.72) - (thickness 0.11) - ) - ) - ) - (pad "1" smd roundrect - (at -0.9375 -0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_FAULT") - (pinfunction "G_1") - (pintype "input") - (uuid "58e50a89-839b-4120-bdf1-6aad0a5cc51e") - ) - (pad "2" smd roundrect - (at -0.9375 0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pinfunction "S_2") - (pintype "passive") - (uuid "fd3ff98b-2947-4969-9194-48f412500286") - ) - (pad "3" smd roundrect - (at 0.9375 0) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/COIL_RTN2") - (pinfunction "D_3") - (pintype "passive") - (uuid "0cf65950-ae3e-4fea-8f17-8e90ec900365") + (uuid "5f7f6f3c-7614-41e4-ad5a-0493dd0a49e5") ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) + (fp_line + (start 1.213 -1.018) + (end -1.018 1.213) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "011f5ef2-923a-46e1-bc1e-277e2ddf3eb1") ) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "23fa571d-e9ec-427b-83fe-24b5d24d450f") - (at 75.75 50.5) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R3" - (at 0 -1.17 0) - (layer "F.SilkS") - (hide yes) - (uuid "19a383b8-d623-41b6-b145-f9bd193b2342") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -3 -0.5) + (end 7.5 -0.5) + (stroke + (width 0.1) + (type solid) ) - ) - (property "Value" "10k" - (at 0 1.17 0) (layer "F.Fab") - (hide yes) - (uuid "3050e7c7-a979-4adb-ae07-dc9f5d84f459") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (uuid "0ca9e7bb-d12c-4217-bd61-e4987237389e") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "47ded2a6-7b10-4623-99f1-09cd5e4e7624") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start -3 0.5) + (end 7.5 0.5) + (stroke + (width 0.1) + (type solid) ) - ) - (property "Description" "" - (at 0 0 0) (layer "F.Fab") - (hide yes) - (uuid "7e9d7e99-fd6b-4d7e-81ce-6fc488255c75") - (effects - (font - (size 1.27 1.27) - ) - ) + (uuid "f6cc3a30-1dce-47b6-9b20-ea090276e389") ) - (property "LCSC" "C25744" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "898ed9a4-2cd9-4850-aaa8-c50378c50ef6") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -3 1.8) + (end 7.5 1.8) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "64fdbbb9-4e09-451b-bff2-d240737df285") ) - (property ki_fp_filters "R_*") - (path "/6e749520-2256-48ed-aa1d-72cd1c1543ab") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") + (fp_line + (start -3 1.85) + (end -3 -4) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "a16c220d-32bb-4fdd-a611-86374752e4f0") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start 7.5 3.8) + (end -1.05 3.8) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "2c7c8531-f94f-4179-8ea4-6a47f89a7942") + (layer "F.Fab") + (uuid "22e4af80-bc6a-455e-9679-ac3124ba7ba9") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -1.05 3.8) + (end -3 1.85) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "492b41d5-3700-4bbd-a519-dbbdb3b67f64") + (layer "F.Fab") + (uuid "87df5da9-8dbf-40ac-af57-9d54e6ac3e58") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_circle + (center 5 0) + (end 6.6 0) (stroke - (width 0.05) + (width 0.1) (type solid) ) (fill no) - (layer "F.CrtYd") - (uuid "4b558f7e-512e-4f5c-b291-1da356b479f1") + (layer "F.Fab") + (uuid "ecb155fe-9a74-45ea-bc4e-9d0e2cd89b3d") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_circle + (center 0 0) + (end 1.6 0) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "6c36e967-123c-4ec5-b197-c2f4775e9600") + (uuid "78e7981a-e419-4f0a-8437-d86b63b8caa5") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 2.25 2.65 90) (layer "F.Fab") - (uuid "37fc92f9-db19-444b-a3ec-66bb2428fc55") + (uuid "360439d8-acc2-46f8-a915-40adafd1a27c") (effects (font - (size 0.26 0.26) - (thickness 0.04) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") + (pad "1" thru_hole roundrect + (at 0 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.089286) + (net "/TC2_N") + (pinfunction "Pin_1_1") (pintype "passive") - (uuid "e501da6b-1740-40eb-aee5-9e96782e67b8") + (uuid "90d12b56-011e-4eec-813e-1be614eb5025") ) - (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/MCU_EN") + (pad "2" thru_hole circle + (at 5 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/TC2_P") + (pinfunction "Pin_2_2") (pintype "passive") - (uuid "2b169d76-17c9-44c0-8f10-bf681d4704d6") + (uuid "b64a2d7e-88d5-499d-a900-fe11b028c15c") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" (offset (xyz 0 0 0) ) @@ -5105,14 +4637,14 @@ ) (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "25913f20-6ca4-490b-8627-b91cc457600c") - (at 58.85 85.8) - (property "Reference" "TP25" + (uuid "1eabae31-21fa-42c7-9886-c51a6908dd83") + (at 97 85.25) + (property "Reference" "TP32" (at 0 -1.648 0) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "a60be4c4-6599-442f-b5cb-2685ddfd3339") + (uuid "275eaa97-32ca-43f6-8c64-88cbd5f6a642") (effects (font (size 1 1) @@ -5120,12 +4652,12 @@ ) ) ) - (property "Value" "ENC_B" + (property "Value" "ESP32_EN" (at 0 1.75 0) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "876005fc-4f92-40d0-b133-b2def5850f99") + (uuid "c7cfb88d-78fa-4189-bc3d-806e1027edf8") (effects (font (size 1 1) @@ -5137,7 +4669,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "50cd8d53-4c20-4c76-a93f-eed195e598d1") + (uuid "bd4bcc66-05ad-4374-8757-6736196219ec") (effects (font (size 1.27 1.27) @@ -5148,7 +4680,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "2a5d6f61-3475-4ee6-be41-39195f823bd8") + (uuid "fe82f38e-abed-4a47-a7e2-4e79e4ef1e23") (effects (font (size 1.27 1.27) @@ -5156,7 +4688,7 @@ ) ) (property ki_fp_filters "Pin* Test*") - (path "/a3c87345-b0a6-4482-8430-d7c658bb7dfd") + (path "/776a7b64-a406-435b-9ac8-c79e5b6dff4e") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -5174,7 +4706,7 @@ (type default) ) (layer "F.SilkS") - (uuid "dd28f64c-0d43-4d1b-afeb-c8ad8522784f") + (uuid "50546616-5173-4951-88e9-ffbc1dd7c1a4") ) (fp_line (start -0.95 0.95) @@ -5184,7 +4716,7 @@ (type default) ) (layer "F.SilkS") - (uuid "cdf3e671-6e99-41c5-b27a-4c95469b5a56") + (uuid "e185ea89-ed9e-4ac1-aea6-914c4f691280") ) (fp_line (start 0.95 -0.95) @@ -5194,7 +4726,7 @@ (type default) ) (layer "F.SilkS") - (uuid "96bd4554-6bf3-48ba-b1f9-4337ab07a18f") + (uuid "0ae8f55b-3269-4c3c-9948-09481d2ba5d0") ) (fp_line (start 0.95 0.95) @@ -5204,7 +4736,7 @@ (type default) ) (layer "F.SilkS") - (uuid "e53eca97-87c6-4ee4-b7b1-845924464b1c") + (uuid "585156e8-4fca-4ecc-984a-0e2266df92c7") ) (fp_line (start -1.25 -1.25) @@ -5214,7 +4746,7 @@ (type default) ) (layer "F.CrtYd") - (uuid "33a2a858-24e1-4f68-9946-0cf9ee9e6196") + (uuid "9cfae6ad-f24e-4b8d-af8c-6cc4a5c217e5") ) (fp_line (start -1.25 -1.25) @@ -5224,7 +4756,7 @@ (type default) ) (layer "F.CrtYd") - (uuid "d28bb497-356b-44c0-9ae3-8fe106ad153a") + (uuid "43bfaf85-daa6-46de-99b0-523768d89e74") ) (fp_line (start 1.25 1.25) @@ -5234,7 +4766,7 @@ (type default) ) (layer "F.CrtYd") - (uuid "0272e39f-5674-4c0f-a076-d3be5cb659e8") + (uuid "02223c5a-dc1b-4b72-878a-9cdb45405f93") ) (fp_line (start 1.25 1.25) @@ -5244,30 +4776,30 @@ (type default) ) (layer "F.CrtYd") - (uuid "5e578a02-828f-4af5-a984-a0eb02518228") + (uuid "bb235a59-1545-4149-8f7c-0c2345bf520d") ) (pad "1" smd rect (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") - (net "/ENC_B") + (net "/ESP32_EN") (pinfunction "1_1") (pintype "passive") - (uuid "f43a870d-40ff-45ef-8abd-2b1e53c2a827") + (uuid "3d49f643-8f9e-427c-a7d9-309c59a1aa1a") ) (embedded_fonts no) ) - (footprint "Capacitor_SMD:C_0805_2012Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "2ce6b036-e3c1-4968-bb59-681c6809cb5f") - (at 74.75 48.3 90) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") - (tags "capacitor") - (property "Reference" "C6" - (at 0 -1.68 90) + (uuid "1ec44e12-6b62-49d6-9aae-b95d465a5df1") + (at 126.675 120.7) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP12" + (at 0 -1.648 0) (layer "F.SilkS") (hide yes) - (uuid "9d1df33a-5bdb-462a-ad2e-fb3396484b91") + (uuid "e59c4775-ff37-4520-94d3-077df4047388") (effects (font (size 1 1) @@ -5275,11 +4807,11 @@ ) ) ) - (property "Value" "10uF" - (at 0 1.68 90) + (property "Value" "TC2_MOSI" + (at 0 1.75 0) (layer "F.Fab") (hide yes) - (uuid "45b4d653-7bec-4d7b-b8cb-9da99ea4fbfd") + (uuid "a7b63f45-da16-4236-b33b-78f91fa52c2b") (effects (font (size 1 1) @@ -5288,147 +4820,144 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "4b887a3e-37ef-45d0-b845-99678bea2136") + (uuid "ba34433c-553c-44c9-bc23-83b5490f9b7f") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "29cbd410-eec7-4540-b2a1-bc63a3d9dbd1") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C15850" - (at 0 0 90) + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "5b29eb0a-737b-40d6-88be-07d8ba5f391e") + (uuid "be2a96b6-4802-4dac-98b2-f75f6e3ab26e") (effects (font - (size 1 1) + (size 1.27 1.27) (thickness 0.15) ) ) ) - (property ki_fp_filters "C_*") - (path "/92df9b1e-e78c-418a-8feb-9dbc5f1305a2") + (property ki_fp_filters "Pin* Test*") + (path "/ee5385e1-92e0-4151-99f5-3e3e0f5ce8fe") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.261252 -0.735) - (end 0.261252 -0.735) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "fc06b8f4-e956-4f0e-8ece-475452defda3") + (uuid "6a345043-25ab-4543-80d4-f1a19cd527ae") ) (fp_line - (start -0.261252 0.735) - (end 0.261252 0.735) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "bcd1032e-f05c-4adf-a1bb-c6ae2b87b5f6") + (uuid "30d768fd-1cd9-4e76-b662-4988cf9c026b") ) - (fp_rect - (start -1.7 -0.98) - (end 1.7 0.98) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "04f7823e-4d28-4a40-8c8a-6d217e2b261e") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b6efba3f-30c5-4b47-ab9f-645c47922042") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "3e872c21-2a20-4dd0-9964-2c217369a52c") + (uuid "eb93dafb-50d6-41c0-aa64-aff12bed345e") ) - (fp_rect - (start -1 -0.625) - (end 1 0.625) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "5b0875e6-8353-4a21-a580-83045955fdca") + (layer "F.CrtYd") + (uuid "e1b8766d-5552-49fe-9698-dd8ee123b5c9") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "a56ceda3-613b-43a7-a0fd-56ace696ebad") - (effects - (font - (size 0.5 0.5) - (thickness 0.08) - ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "dbd23f64-a326-4a84-8a75-1db5a963df85") ) - (pad "1" smd roundrect - (at -0.95 0 90) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pintype "passive") - (uuid "f06eb688-50bb-4a36-a877-2c9661e1472f") + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5223ad4d-6dfd-4c3d-b09b-e7903e30cb5d") ) - (pad "2" smd roundrect - (at 0.95 0 90) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC2_MOSI") + (pinfunction "1_1") (pintype "passive") - (uuid "83decc6d-4af7-4d3e-bf36-c67deed9d584") + (uuid "ba8efbd1-c161-45ab-87f2-87603e841612") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "RF_Module:ESP32-S3-WROOM-1" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "2e54718d-dffe-4be4-bf13-922769ac065d") - (at 87.035 52.85) - (descr "2.4 GHz Wi-Fi and Bluetooth module https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf") - (tags "2.4 GHz Wi-Fi and Bluetooth module") - (property "Reference" "U1" - (at -10.5 11.4 90) - (unlocked yes) + (uuid "202c61a2-26fb-4c09-aa91-52da443d588c") + (at 144.9675 42.25) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R21" + (at 0 -1.17 0) (layer "F.SilkS") - (uuid "40616b32-945f-497a-81f8-648aef8d7f73") + (hide yes) + (uuid "94cbaf6e-3861-4e89-94b5-725234294c0d") (effects (font (size 1 1) @@ -5436,12 +4965,11 @@ ) ) ) - (property "Value" "ESP32-S3-WROOM-1" - (at 0 14.6 0) - (unlocked yes) + (property "Value" "1k" + (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "5152d472-9f80-4688-8362-d991ace514f3") + (uuid "27df0b48-6281-4e13-afb7-3c1ea874a849") (effects (font (size 1 1) @@ -5449,38 +4977,34 @@ ) ) ) - (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf" + (property "Datasheet" "" (at 0 0 0) - (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "1fe735c8-a6cc-4b58-b97a-615e81e1487a") + (uuid "42d67a07-4af5-49c3-b67f-c807e0bdc789") (effects (font (size 1.27 1.27) - (thickness 0.15) ) ) ) - (property "Description" "RF Module, ESP32-S3 SoC, Wi-Fi 802.11b/g/n, Bluetooth, BLE, 32-bit, 3.3V, onboard antenna, SMD" + (property "Description" "" (at 0 0 0) - (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "62891ebf-6d0d-4233-a83f-adf4d1e39364") + (uuid "ea93d60e-94d6-4a04-b5aa-363867025930") (effects (font (size 1.27 1.27) - (thickness 0.15) ) ) ) - (property "LCSC" "C2913198" + (property "LCSC" "C11702" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "e82a8900-5662-4b5e-b21c-5689b5d3ce0d") + (uuid "3f019808-c310-4eaa-9b34-81f598402669") (effects (font (size 1 1) @@ -5488,94 +5012,238 @@ ) ) ) - (property ki_fp_filters "ESP32?S3?WROOM?1*") - (path "/ef1b19f9-eca5-4dcf-bb24-e7a713cc132a") + (property ki_fp_filters "R_*") + (path "/5cdbaf04-eab7-4fda-99c2-f9e438ac1547") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "3" "27" "39" "38" "15" "4" "5" "6" "7" "12" "17" "18" "19" "20" - "21" "22" "8" "9" "2" "1" "40" "41" "37" "36" "10" "11" "13" "14" "23" - "28" "29" "30" "31" "32" "33" "34" "35" "26" "16" "24" "25" - ) + (pins "1" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -9.2 -12.9) - (end -9.2 -6.7) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e300dc06-6e91-434f-b167-6269817cc492") + (uuid "8f7ccb6f-f931-4d98-b277-a6781b4d6193") ) (fp_line - (start -9.2 -12.9) - (end 9.2 -12.9) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "ed92499f-a1bc-4e6b-a2f9-bfe2a601a7cc") + (uuid "92306c78-44ba-4077-915d-858f748829d7") ) - (fp_line - (start -9.2 11.95) - (end -9.2 12.95) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "7bb7d799-1579-47ac-a391-db631b3f0286") + (fill no) + (layer "F.CrtYd") + (uuid "71eb41d0-e406-4600-9f93-cbe305a0cf63") ) - (fp_line - (start -9.2 12.95) - (end -7.7 12.95) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "65fa6ec3-e915-4970-b2d3-71a86997ad1a") + (fill no) + (layer "F.Fab") + (uuid "778aba0c-c164-4c74-8ac5-abf543c4e124") ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "6355f4f0-73c2-409c-8a0c-8965c83eb285") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+5V") + (pintype "passive") + (uuid "85efdb57-3606-4080-87ba-d45847c8bbb0") + ) + (pad "2" smd roundrect + (at 0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(D7-A)") + (pintype "passive") + (uuid "b2f60d7c-d87b-4a88-9c54-1b094fc52435") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Package_TO_SOT_SMD:SOT-23" + (layer "F.Cu") + (uuid "23cd50e0-ae0c-4a52-a3ae-a68f30fc77aa") + (at 122.9375 48.3) + (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") + (tags "SOT TO_SOT_SMD") + (property "Reference" "Q5" + (at 0 -2.4 0) + (layer "F.SilkS") + (hide yes) + (uuid "03ef6ede-1c39-474d-bc48-6ac679eceb2b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "AO3400A" + (at 0 2.4 0) + (layer "F.Fab") + (hide yes) + (uuid "f9030cc5-8998-467c-829a-0ead0db41eca") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "90ad2e1f-6e23-49a1-8c51-476fda5e2b6b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "46b4cc45-e50e-468a-9e19-0247de46a0e2") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (path "/cdb29f85-c6dd-4ab6-9dd2-a291668c04a3") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "3" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 9.2 -12.9) - (end 9.2 -6.7) + (start -0.76 -1.56) + (end 0.76 -1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "eb729a4d-2dc9-4d27-b5c1-66a3f4edb799") + (uuid "ca227dc9-9691-4cbf-9311-c87b6be166cb") ) (fp_line - (start 9.2 12.95) - (end 7.7 12.95) + (start -0.76 -1.51) + (end -0.76 -1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "10a635ad-59d8-436e-896a-7826955df5a3") + (uuid "e8145da8-03ac-48b2-8df4-19bade6e9bdc") ) (fp_line - (start 9.2 12.95) - (end 9.2 11.95) + (start -0.76 0.39) + (end -0.76 -0.39) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "2039317c-86d2-43cf-a028-adb52372a813") + (uuid "12f9d832-de33-46c3-8f04-2f29f683b34e") + ) + (fp_line + (start -0.76 1.56) + (end -0.76 1.51) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1afbc592-2a23-4994-9fd9-32273c92f59a") + ) + (fp_line + (start 0.76 -1.56) + (end 0.76 -0.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "168939f4-4070-4a56-b9a9-c689100185f6") + ) + (fp_line + (start 0.76 0.56) + (end 0.76 1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "378facae-ad9a-40fa-b738-974f571c9892") + ) + (fp_line + (start 0.76 1.56) + (end -0.76 1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9227c38a-9d59-4b6b-8169-ed0e1b89bfc9") ) (fp_poly (pts - (xy -9.2 -6.025) (xy -9.7 -6.025) (xy -9.2 -6.525) (xy -9.2 -6.025) + (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) ) (stroke (width 0.12) @@ -5583,142 +5251,245 @@ ) (fill yes) (layer "F.SilkS") - (uuid "c57f2c11-7095-46bd-baa7-d52bfef712ba") + (uuid "d8320ea8-a0c5-488a-85d5-52986c55e533") ) (fp_line - (start -24 -27.75) - (end -24 -6.75) + (start -1.93 -1.5) + (end -0.9 -1.5) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "f19db3f2-208b-4b9e-9fc2-ebd74b29f206") + (uuid "895bf798-7a16-491a-bddd-84cbae908bd0") ) (fp_line - (start -24 -6.75) - (end -9.75 -6.75) + (start -1.93 -0.39) + (end -1.93 -1.5) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "fae43624-b5aa-473b-8293-55c94b40f12c") + (uuid "23148da5-1daa-4278-b448-5796b89c1f5c") ) (fp_line - (start -9.75 13.45) - (end -9.75 -6.75) + (start -1.93 0.39) + (end -0.9 0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "df204c61-ee2c-4ec4-956e-bbc63a462797") + (uuid "a561ae80-224a-42ff-b557-70ea4542861b") ) (fp_line - (start -9.75 13.45) - (end 9.75 13.45) + (start -1.93 1.5) + (end -1.93 0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "dcea79bd-b1c7-4a29-840b-944bd16dc7bc") + (uuid "6f0c6c49-5f53-477a-b167-b5654b63ec5a") ) (fp_line - (start 9.75 -6.75) - (end 9.75 13.45) + (start -0.9 -1.7) + (end 0.9 -1.7) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "baf40590-53e1-4c18-b4e1-03391bbca5f9") + (uuid "0d2b3a75-0eb8-44a6-88d9-902938de14c7") ) (fp_line - (start 9.75 -6.75) - (end 24 -6.75) + (start -0.9 -1.5) + (end -0.9 -1.7) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "56a14170-e2b1-405d-b8a9-6b2da2c13df2") + (uuid "d49ad362-8ff7-456e-b5d3-2669512ec618") ) (fp_line - (start 24 -27.75) - (end -24 -27.75) + (start -0.9 -0.39) + (end -1.93 -0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "252cfbd5-1b64-41b3-9611-cd82afe5f9c4") + (uuid "d5c5648f-9e4c-4186-a26d-cf501daf1b04") ) (fp_line - (start 24 -6.75) - (end 24 -27.75) + (start -0.9 0.39) + (end -0.9 -0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "949a0a62-62a0-4351-a97a-b899cd131485") + (uuid "2c61dd88-fce9-4fd9-bad3-191f66aff53f") ) (fp_line - (start -9 -12.75) - (end 9 -12.75) + (start -0.9 1.5) + (end -1.93 1.5) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "cf02ad75-129b-42c3-9de3-56707124a4dd") + (layer "F.CrtYd") + (uuid "0b69e825-15d3-4b4a-8ea4-a49df51dc9be") ) (fp_line - (start -9 -6.75) - (end 9 -6.75) + (start -0.9 1.7) + (end -0.9 1.5) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "071d167b-fa16-43fa-82e3-26ac4a640912") + (layer "F.CrtYd") + (uuid "73d28aa7-a6f6-43cf-ac18-02a1ed1e2cbd") ) (fp_line - (start -9 12.75) - (end -9 -12.75) + (start 0.9 -1.7) + (end 0.9 -0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "eeca646b-a5b6-46db-9202-36906f12fd1d") + (layer "F.CrtYd") + (uuid "b6d71139-8edb-440b-bf13-d5343cb4cd32") ) (fp_line - (start -9 12.75) - (end 9 12.75) + (start 0.9 -0.55) + (end 1.93 -0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "067a73a5-5cec-448d-a63b-3888fc485463") + (layer "F.CrtYd") + (uuid "9ddb307c-ff61-4d95-82f4-1d563c5c4498") ) (fp_line - (start 9 12.75) - (end 9 -12.75) + (start 0.9 0.55) + (end 0.9 1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "2909a757-0e80-4277-bc0c-7df9d0898cc6") + ) + (fp_line + (start 0.9 1.7) + (end -0.9 1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7d05aa30-296a-4fe3-89b7-2326f3012e7a") + ) + (fp_line + (start 1.93 -0.55) + (end 1.93 0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "425843d1-d550-4b19-945e-961a002c1d5d") + ) + (fp_line + (start 1.93 0.55) + (end 0.9 0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "493770e3-22f7-4c06-9931-475f5d0a5c4e") + ) + (fp_poly + (pts + (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) + ) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "1bca657a-2215-4b0f-8723-e7770b344df8") + (uuid "1d886a98-48f6-439f-8fa2-8c78c7688c51") ) - (fp_text user "Antenna" - (at -0.05 -9.44 0) - (layer "Cmts.User") - (uuid "7670f03c-3732-4788-b6b8-a5c55b181c51") + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "9b6d2185-9a44-4637-8bd0-21f8c099609a") + (effects + (font + (size 0.72 0.72) + (thickness 0.11) + ) + ) + ) + (pad "1" smd roundrect + (at -0.9375 -0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_PERMIT") + (pinfunction "G_1") + (pintype "input") + (uuid "58e50a89-839b-4120-bdf1-6aad0a5cc51e") + ) + (pad "2" smd roundrect + (at -0.9375 0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pinfunction "S_2") + (pintype "passive") + (uuid "fd3ff98b-2947-4969-9194-48f412500286") + ) + (pad "3" smd roundrect + (at 0.9375 0) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_RTN1") + (pinfunction "D_3") + (pintype "passive") + (uuid "0cf65950-ae3e-4fea-8f17-8e90ec900365") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "23fa571d-e9ec-427b-83fe-24b5d24d450f") + (at 75.75 50.5) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R3" + (at 0 -1.17 0) + (layer "F.SilkS") + (hide yes) + (uuid "19a383b8-d623-41b6-b145-f9bd193b2342") (effects (font (size 1 1) @@ -5726,22 +5497,46 @@ ) ) ) - (fp_text user "KEEP-OUT ZONE" - (at 0 -18.92 0) - (layer "Cmts.User") - (uuid "55b1bf87-ed60-40b0-bbc4-357739613951") + (property "Value" "10k" + (at 0 1.17 0) + (layer "F.Fab") + (hide yes) + (uuid "3050e7c7-a979-4adb-ae07-dc9f5d84f459") (effects (font - (size 2 2) + (size 1 1) (thickness 0.15) ) ) ) - (fp_text user "${REFERENCE}" - (at 0 -0.6 0) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "47ded2a6-7b10-4623-99f1-09cd5e4e7624") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "7e9d7e99-fd6b-4d7e-81ce-6fc488255c75") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25744" + (at 0 0 0) (unlocked yes) (layer "F.Fab") - (uuid "c21c329f-559c-46bf-889d-014a2b476464") + (hide yes) + (uuid "898ed9a4-2cd9-4850-aaa8-c50378c50ef6") (effects (font (size 1 1) @@ -5749,619 +5544,677 @@ ) ) ) - (pad "" smd rect - (at -2.9 1.06) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "28b3b6d2-27db-4965-be6b-039b8b2f7d8e") - ) - (pad "" smd rect - (at -2.9 2.46 270) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "26a7cc12-30e8-4ff5-bc96-b043ec082638") - ) - (pad "" smd rect - (at -2.9 3.86) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "8c4df76c-7f2b-45f1-be84-fcad87e48788") + (property ki_fp_filters "R_*") + (path "/6e749520-2256-48ed-aa1d-72cd1c1543ab") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) ) - (pad "" smd rect - (at -1.5 1.06 270) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "2de30a5d-3769-4dec-b161-af6967e14e4a") + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.153641 -0.38) + (end 0.153641 -0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2c7c8531-f94f-4179-8ea4-6a47f89a7942") ) - (pad "" smd rect - (at -1.5 2.46 270) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "5158d1a7-86fa-40fb-9baa-70375cd78fcd") + (fp_line + (start -0.153641 0.38) + (end 0.153641 0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "492b41d5-3700-4bbd-a519-dbbdb3b67f64") ) - (pad "" smd rect - (at -1.5 3.86 270) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "3ac6e8d1-2fdc-4e60-8470-32fcd3bcd489") + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "4b558f7e-512e-4f5c-b291-1da356b479f1") ) - (pad "" smd rect - (at -0.1 1.06 270) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "b0aae9e1-2ee0-4efe-a1c7-00a0a75aeb89") + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "6c36e967-123c-4ec5-b197-c2f4775e9600") ) - (pad "" smd rect - (at -0.1 2.46 270) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "f5b12c39-0c81-4e31-9049-34c4cb9c9df5") + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "37fc92f9-db19-444b-a3ec-66bb2428fc55") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) ) - (pad "" smd rect - (at -0.1 3.86 270) - (size 0.9 0.9) - (layers "F.Paste") - (uuid "65235ac2-4689-48ce-8b6d-c26619bc5868") - ) - (pad "1" smd rect - (at -8.75 -5.26) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "GND") - (pinfunction "GND_1") - (pintype "power_in") - (uuid "33253889-b560-461b-bbbf-fdf87df467d8") - ) - (pad "2" smd rect - (at -8.75 -3.99) - (size 1.5 0.9) + (pad "1" smd roundrect + (at -0.51 0) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) (net "+3.3V") - (pinfunction "3V3_2") - (pintype "power_in") - (uuid "fc079eb5-4b2f-4397-9256-6a1395df50be") + (pintype "passive") + (uuid "e501da6b-1740-40eb-aee5-9e96782e67b8") ) - (pad "3" smd rect - (at -8.75 -2.72) - (size 1.5 0.9) + (pad "2" smd roundrect + (at 0.51 0) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") - (net "/MCU_EN") - (pinfunction "EN_3") - (pintype "input") - (uuid "a18d5bdd-5dea-4517-a30f-7316a1020cbf") + (roundrect_rratio 0.25) + (net "/ESP32_EN") + (pintype "passive") + (uuid "2b169d76-17c9-44c0-8f10-bf681d4704d6") ) - (pad "4" smd rect - (at -8.75 -1.45) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/SSR1") - (pinfunction "IO4_4") - (pintype "bidirectional") - (uuid "0b955083-7fe1-47cf-992f-94633c96de44") + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) ) - (pad "5" smd rect - (at -8.75 -0.18) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/SSR2") - (pinfunction "IO5_5") - (pintype "bidirectional") - (uuid "e051a867-9a45-44e6-8caf-6deda3e3c659") + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "25913f20-6ca4-490b-8627-b91cc457600c") + (at 58.85 85.8) + (property "Reference" "TP25" + (at 0 -1.648 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "a60be4c4-6599-442f-b5cb-2685ddfd3339") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) ) - (pad "6" smd rect - (at -8.75 1.09) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/HEAT_EN") - (pinfunction "IO6_6") - (pintype "bidirectional") - (uuid "4f7d01ec-e628-484c-bcbd-e6bf38aac9dd") + (property "Value" "ENC_B" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "876005fc-4f92-40d0-b133-b2def5850f99") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) ) - (pad "7" smd rect - (at -8.75 2.36) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/ALARM") - (pinfunction "IO7_7") - (pintype "bidirectional") - (uuid "e61c7b47-ce2e-4ed5-a2e8-5dd4aa6900e8") + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "50cd8d53-4c20-4c76-a93f-eed195e598d1") + (effects + (font + (size 1.27 1.27) + ) + ) ) - (pad "8" smd rect - (at -8.75 3.63) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/ENC_BTN") - (pinfunction "IO15_8") - (pintype "bidirectional") - (uuid "dd1c350c-c086-458f-9194-2d0f838feaf6") + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "2a5d6f61-3475-4ee6-be41-39195f823bd8") + (effects + (font + (size 1.27 1.27) + ) + ) ) - (pad "9" smd rect - (at -8.75 4.9) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/ENC_A") - (pinfunction "IO16_9") - (pintype "bidirectional") - (uuid "28c9e909-20c0-4972-934e-c8a485ba263b") + (property ki_fp_filters "Pin* Test*") + (path "/a3c87345-b0a6-4482-8430-d7c658bb7dfd") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) ) - (pad "10" smd rect - (at -8.75 6.17) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/ENC_B") - (pinfunction "IO17_10") - (pintype "bidirectional") - (uuid "217a0f51-0ecc-4fec-b98a-65cc9f6be7b1") + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.95 -0.95) + (end 0.95 -0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "dd28f64c-0d43-4d1b-afeb-c8ad8522784f") ) - (pad "11" smd rect - (at -8.75 7.44) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/I2C_SCL") - (pinfunction "IO18_11") - (pintype "bidirectional") - (uuid "8d3f1066-6215-4cf1-a56e-4c34f196bb0c") + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "cdf3e671-6e99-41c5-b27a-4c95469b5a56") ) - (pad "12" smd rect - (at -8.75 8.71) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/I2C_SDA") - (pinfunction "IO8_12") - (pintype "bidirectional") - (uuid "b3ce9c14-0583-4292-9154-ec9fd49a8b89") + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "96bd4554-6bf3-48ba-b1f9-4337ab07a18f") ) - (pad "13" smd rect - (at -8.75 9.98) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/USB_DM") - (pinfunction "USB_D-_13") - (pintype "bidirectional") - (uuid "6a7129b8-a07d-4687-9f8f-f90a8a3dfe4b") + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "e53eca97-87c6-4ee4-b7b1-845924464b1c") ) - (pad "14" smd rect - (at -8.75 11.25 180) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/USB_DP") - (pinfunction "USB_D+_14") - (pintype "bidirectional") - (uuid "790bd3f6-13bb-4e37-8550-9cab01e4aa91") + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "33a2a858-24e1-4f68-9946-0cf9ee9e6196") ) - (pad "15" smd rect - (at -6.985 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO3-Pad15)") - (pinfunction "IO3_15") - (pintype "bidirectional+no_connect") - (uuid "b93d0bc2-3a62-4b18-80ef-a5a388afdc93") + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "d28bb497-356b-44c0-9ae3-8fe106ad153a") ) - (pad "16" smd rect - (at -5.715 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO46-Pad16)") - (pinfunction "IO46_16") - (pintype "bidirectional+no_connect") - (uuid "9ec86e9c-9096-4663-bb11-aa02ce189ea2") + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "0272e39f-5674-4c0f-a076-d3be5cb659e8") ) - (pad "17" smd rect - (at -4.445 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/TC2_CS") - (pinfunction "IO9_17") - (pintype "bidirectional") - (uuid "492fd588-9751-4ebb-b9b7-5cb4692d18da") + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "5e578a02-828f-4af5-a984-a0eb02518228") ) - (pad "18" smd rect - (at -3.175 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/TC1_CS") - (pinfunction "IO10_18") - (pintype "bidirectional") - (uuid "6b852021-44ef-44c7-aee9-cc4b5315ade7") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/ENC_B") + (pinfunction "1_1") + (pintype "passive") + (uuid "f43a870d-40ff-45ef-8abd-2b1e53c2a827") ) - (pad "19" smd rect - (at -1.905 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/SPI_MOSI") - (pinfunction "IO11_19") - (pintype "bidirectional") - (uuid "d6092111-a44f-4f8d-a6a7-a2b2d5840c6e") + (embedded_fonts no) + ) + (footprint "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" + (layer "F.Cu") + (uuid "26200c0d-b56d-4531-b426-ece2933cc706") + (at 133.2875 117.85 180) + (descr "TSSOP, 14 Pin (JEDEC MO-153 variation AB-1, 1.00mm body thickness, https://www.jedec.org/document_search?search_api_views_fulltext=MO-153)") + (tags "TSSOP SO") + (property "Reference" "U4" + (at 0 -3.45 0) + (layer "F.SilkS") + (hide yes) + (uuid "72420210-d602-4bda-821d-d7792a58a8ef") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (pad "20" smd rect - (at -0.635 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/SPI_SCK") - (pinfunction "IO12_20") - (pintype "bidirectional") - (uuid "7253ec94-f7ae-4bf0-97df-44b3a1980f64") + (property "Value" "MAX31856" + (at 0 3.45 0) + (layer "F.Fab") + (hide yes) + (uuid "d96a40cb-61d2-4b7b-aa98-840c4430e630") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (pad "21" smd rect - (at 0.635 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/SPI_MISO") - (pinfunction "IO13_21") - (pintype "bidirectional") - (uuid "fb24376c-7476-441c-81f5-e0ef140e5090") + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "8c6c0f14-65a5-4367-b48d-1c17f15a928d") + (effects + (font + (size 1.27 1.27) + ) + ) ) - (pad "22" smd rect - (at 1.905 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/TC1_DRDY") - (pinfunction "IO14_22") - (pintype "bidirectional") - (uuid "b36fe6c7-ae38-4272-af00-229df5c7373b") + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "5cd0448b-dfc8-4b68-8738-15d46229b24a") + (effects + (font + (size 1.27 1.27) + ) + ) ) - (pad "23" smd rect - (at 3.175 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/TC2_DRDY") - (pinfunction "IO21_23") - (pintype "bidirectional") - (uuid "40b30f0d-a08c-4386-a200-4df8651276e5") + (property ki_fp_filters "TSSOP*14*4.4x5mm*P0.65mm*") + (path "/7dd60915-db54-4045-8a23-164ea8f83fbe") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "4" "3" "2" "6" "5" "1" "8" "14" "7" "13" "9" "10" "11" "12") + ) ) - (pad "24" smd rect - (at 4.445 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO47-Pad24)") - (pinfunction "IO47_24") - (pintype "bidirectional+no_connect") - (uuid "92862683-e8b6-427d-bcce-6e44cb9c1102") + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 2.31 2.61) + (end -2.31 2.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "021e93ac-0910-4883-a0af-ef74744d8ac6") ) - (pad "25" smd rect - (at 5.715 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO48-Pad25)") - (pinfunction "IO48_25") - (pintype "bidirectional+no_connect") - (uuid "56de2018-a62b-4d24-b255-cafb94bf093a") + (fp_line + (start 2.31 2.41) + (end 2.31 2.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1b8761ba-27b5-47f6-8d5d-6528e0f283a6") ) - (pad "26" smd rect - (at 6.985 12.5 270) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO45-Pad26)") - (pinfunction "IO45_26") - (pintype "bidirectional+no_connect") - (uuid "8bada65e-d13e-45ce-9eef-14a6aac2a09e") + (fp_line + (start 2.31 -2.61) + (end 2.31 -2.41) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d7e28389-3008-4da8-8d65-cf15b169f2f9") ) - (pad "27" smd rect - (at 8.75 11.25) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/MCU_IO0") - (pinfunction "IO0_27") - (pintype "bidirectional") - (uuid "926f7d60-325a-427a-aab7-b421a707484c") + (fp_line + (start -2.31 2.61) + (end -2.31 2.41) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0f0273e9-135c-4e18-92ee-e9ce6f19f0c9") ) - (pad "28" smd rect - (at 8.75 9.98) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO35-Pad28)") - (pinfunction "IO35_28") - (pintype "bidirectional+no_connect") - (uuid "8636099c-cf33-432d-ae05-04074ba1e243") + (fp_line + (start -2.31 -2.41) + (end -2.31 -2.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d962408d-9a3b-4942-9ee3-b170eaff5b82") ) - (pad "29" smd rect - (at 8.75 8.71) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO36-Pad29)") - (pinfunction "IO36_29") - (pintype "bidirectional+no_connect") - (uuid "f79787a5-cc6c-4d30-9d44-fb0887226588") + (fp_line + (start -2.31 -2.61) + (end 2.31 -2.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "65dd1616-12ea-4f9f-a76a-0bcffdfd6b21") ) - (pad "30" smd rect - (at 8.75 7.44) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO37-Pad30)") - (pinfunction "IO37_30") - (pintype "bidirectional+no_connect") - (uuid "a151bdd7-8dde-428e-aa40-2567a30bedcd") + (fp_poly + (pts + (xy -2.95 -2.41) (xy -3.29 -2.88) (xy -2.61 -2.88) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) + (layer "F.SilkS") + (uuid "2c28a406-acdd-4529-8590-06257f8fea9b") ) - (pad "31" smd rect - (at 8.75 6.17) - (size 1.5 0.9) - (layers "F.Cu" "F.Mask" "F.Paste") - (net "/LID_SENSE") - (pinfunction "IO38_31") - (pintype "bidirectional") - (uuid "fc6b9edc-ef8d-44d3-84a0-3e9caa32118a") + (fp_line + (start 3.85 2.4) + (end 2.45 2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "8f70b844-255f-46c8-ac9d-caf400da2345") ) - (pad "32" smd rect - (at 8.75 4.9) - (size 1.5 0.9) + (fp_line + (start 3.85 -2.4) + (end 3.85 2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "81de0e99-b455-4e9e-ada5-82ff9cff7fcd") + ) + (fp_line + (start 2.45 2.75) + (end -2.45 2.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "e21beeeb-89de-42ee-9e3e-934920867036") + ) + (fp_line + (start 2.45 2.4) + (end 2.45 2.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "6e0d7916-b1f7-4560-b55b-c4d2705208fe") + ) + (fp_line + (start 2.45 -2.4) + (end 3.85 -2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "2925387f-cfea-4e53-9d56-35d0a1cd23df") + ) + (fp_line + (start 2.45 -2.75) + (end 2.45 -2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5b84a3d6-6ba2-4d42-8c5c-4f57f245ef2f") + ) + (fp_line + (start -2.45 2.75) + (end -2.45 2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7500ee93-29bb-4f43-a681-2f8f2b937fab") + ) + (fp_line + (start -2.45 2.4) + (end -3.85 2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "80317fdb-a8a3-4013-8040-83c124d6a1ad") + ) + (fp_line + (start -2.45 -2.4) + (end -2.45 -2.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "661c263e-d895-4698-be8e-b34758638a22") + ) + (fp_line + (start -2.45 -2.75) + (end 2.45 -2.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "856ed727-b930-412e-b0ff-31e936f66214") + ) + (fp_line + (start -3.85 2.4) + (end -3.85 -2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "0b708ceb-4f98-4885-8eb8-59571d670dd8") + ) + (fp_line + (start -3.85 -2.4) + (end -2.45 -2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "02eeb71b-5049-4912-8279-e30f330e189b") + ) + (fp_poly + (pts + (xy -1.2 -2.5) (xy 2.2 -2.5) (xy 2.2 2.5) (xy -2.2 2.5) (xy -2.2 -1.5) + ) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "ae0cd8b2-97cd-46ba-a79f-2249bc4bc897") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "1b0e6756-39e2-48e7-a8e2-1da493c2161d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" smd roundrect + (at -2.8625 -1.95 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO39-Pad32)") - (pinfunction "IO39_32") - (pintype "bidirectional+no_connect") - (uuid "3ad072ff-6dc5-4f8e-b66e-d24731bfdf94") + (roundrect_rratio 0.25) + (net "GND") + (pinfunction "AGND_1") + (pintype "power_in") + (uuid "b016b2e2-6722-45ae-a246-f14f6535ee5c") ) - (pad "33" smd rect - (at 8.75 3.63) - (size 1.5 0.9) + (pad "2" smd roundrect + (at -2.8625 -1.3 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO40-Pad33)") - (pinfunction "IO40_33") - (pintype "bidirectional+no_connect") - (uuid "a9f7eba0-035f-4b55-8c4a-aa937ef7668b") + (roundrect_rratio 0.25) + (net "/TC2_N") + (pinfunction "BIAS_2") + (pintype "input") + (uuid "6f0b279a-e62d-41a9-bf8c-8f3f5af97fa4") ) - (pad "34" smd rect - (at 8.75 2.36) - (size 1.5 0.9) + (pad "3" smd roundrect + (at -2.8625 -0.65 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "unconnected-(U1-IO41-Pad34)") - (pinfunction "IO41_34") - (pintype "bidirectional+no_connect") - (uuid "c4cdea27-9c9c-4149-883c-b8b86ee68fc4") + (roundrect_rratio 0.25) + (net "/TC2_TN") + (pinfunction "T-_3") + (pintype "input") + (uuid "a497c0c5-f5c9-4f6c-9785-7e87beb06b0d") ) - (pad "35" smd rect - (at 8.75 1.09) - (size 1.5 0.9) + (pad "4" smd roundrect + (at -2.8625 0 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "/EXP_IO42") - (pinfunction "IO42_35") - (pintype "bidirectional") - (uuid "682a7bb6-5f61-4b18-94ea-36bfac16e677") + (roundrect_rratio 0.25) + (net "/TC2_TP") + (pinfunction "T+_4") + (pintype "input") + (uuid "5fdae16f-6a30-463a-8134-d7ed4f95bce5") ) - (pad "36" smd rect - (at 8.75 -0.18) - (size 1.5 0.9) + (pad "5" smd roundrect + (at -2.8625 0.65 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "/UART_RXD0") - (pinfunction "RXD0_36") - (pintype "bidirectional") - (uuid "b3e6ba82-ca6b-49e6-8984-f2b265731866") + (roundrect_rratio 0.25) + (net "+3.3V") + (pinfunction "AVDD_5") + (pintype "power_in") + (uuid "86187ede-9cbd-485e-bab1-f50708119c6f") ) - (pad "37" smd rect - (at 8.75 -1.45) - (size 1.5 0.9) + (pad "6" smd roundrect + (at -2.8625 1.3 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "/UART_TXD0") - (pinfunction "TXD0_37") - (pintype "bidirectional") - (uuid "00483ddf-8908-46e0-87a2-37b36865cee8") + (roundrect_rratio 0.25) + (net "unconnected-(U4-DNC-Pad6)") + (pinfunction "DNC_6") + (pintype "no_connect") + (uuid "8a15d10f-23a4-4043-b80c-69009431c9c4") ) - (pad "38" smd rect - (at 8.75 -2.72) - (size 1.5 0.9) + (pad "7" smd roundrect + (at -2.8625 1.95 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "/EXP_IO2") - (pinfunction "IO2_38") - (pintype "bidirectional") - (uuid "a9868950-2fbf-4a0b-a5b4-82f63e28c202") + (roundrect_rratio 0.25) + (net "unconnected-(U4-~{DRDY}-Pad7)") + (pinfunction "~{DRDY}_7") + (pintype "output+no_connect") + (uuid "2e0c28e7-1d1c-4a1c-9c72-795dc52b7667") ) - (pad "39" smd rect - (at 8.75 -3.99) - (size 1.5 0.9) + (pad "8" smd roundrect + (at 2.8625 1.95 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "/CURR_SENSE") - (pinfunction "IO1_39") - (pintype "bidirectional") - (uuid "51b7166a-8e05-4208-b928-b25a210e683c") + (roundrect_rratio 0.25) + (net "+3.3V") + (pinfunction "DVDD_8") + (pintype "power_in") + (uuid "784a0548-2bd1-4405-959a-6578bdb87699") ) - (pad "40" smd rect - (at 8.75 -5.26) - (size 1.5 0.9) + (pad "9" smd roundrect + (at 2.8625 1.3 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") - (net "GND") - (pinfunction "GND_40") - (pintype "passive") - (uuid "0f9b204a-768c-4ac3-95f2-0cff71b7c674") + (roundrect_rratio 0.25) + (net "/TC2_CS") + (pinfunction "~{CS}_9") + (pintype "input") + (uuid "b82ae53e-4043-4b65-92c2-6611067225cd") ) - (pad "41" thru_hole circle - (at -2.9 1.76 90) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "b887ea30-3c7d-4a38-ab3b-a7149f96e8a9") - ) - (pad "41" thru_hole circle - (at -2.9 3.16) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "8c236c93-0039-44dc-844d-304e482b2ce9") - ) - (pad "41" thru_hole circle - (at -2.2 1.06) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "93b74093-0e7d-423f-a1bc-947f6e663f37") - ) - (pad "41" thru_hole circle - (at -2.2 2.46) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "156f7048-e7d1-4737-8c0c-ad19e46e2b55") - ) - (pad "41" thru_hole circle - (at -2.2 3.86) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "17acede5-749f-48eb-9631-fccd51500aa8") - ) - (pad "41" thru_hole circle - (at -1.5 1.76) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "b44bd3eb-8e87-4c28-8fc7-7bfa9cecd8fd") - ) - (pad "41" smd rect - (at -1.5 2.46 270) - (size 3.9 3.9) - (property pad_prop_heatsink) - (layers "F.Cu" "F.Mask") - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "f95cc423-06ef-418c-8a7d-0560b88a0268") - ) - (pad "41" thru_hole circle - (at -1.5 3.16) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "7e281b5a-bb0f-41f3-a13c-9dd48d55f4a6") - ) - (pad "41" thru_hole circle - (at -0.8 1.06) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "85035189-a255-4d5c-984e-7efa6ed3e61b") + (pad "10" smd roundrect + (at 2.8625 0.65 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_SCK") + (pinfunction "SCK_10") + (pintype "input") + (uuid "71da7311-131e-4ded-aebd-2152a74eac5e") ) - (pad "41" thru_hole circle - (at -0.8 2.46) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "08836dfc-49a4-4e68-b553-cf59612b700b") + (pad "11" smd roundrect + (at 2.8625 0 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_MISO") + (pinfunction "SDO_11") + (pintype "output") + (uuid "8a1decab-b882-449c-ae49-8336409af744") ) - (pad "41" thru_hole circle - (at -0.8 3.86) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "6646df32-6b76-41b2-9e66-390a074723a3") + (pad "12" smd roundrect + (at 2.8625 -0.65 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_MOSI") + (pinfunction "SDI_12") + (pintype "input") + (uuid "b857502d-4a5f-4293-a274-78300029c369") ) - (pad "41" thru_hole circle - (at -0.1 1.76) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "fb312710-1212-40e2-be30-9e7623a0d1f1") + (pad "13" smd roundrect + (at 2.8625 -1.3 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_FAULT") + (pinfunction "~{FAULT}_13") + (pintype "output") + (uuid "59176716-2d46-4e88-bc0e-39863b496fcd") ) - (pad "41" thru_hole circle - (at -0.1 3.16) - (size 0.6 0.6) - (drill 0.2) - (property pad_prop_heatsink) - (layers "*.Cu" "F.Mask") - (remove_unused_layers no) + (pad "14" smd roundrect + (at 2.8625 -1.95 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) (net "GND") - (pinfunction "GND_41") - (pintype "passive") - (zone_connect 2) - (uuid "a5224034-bc72-4767-abee-626ae4a5434f") - ) - (zone - (layers "F.Cu" "B.Cu") - (uuid "7fc9adc0-b09d-456a-ba1e-0e004c9f9e60") - (hatch full 0.508) - (connect_pads - (clearance 0) - ) - (min_thickness 0.254) - (keepout - (tracks not_allowed) - (vias not_allowed) - (pads not_allowed) - (copperpour not_allowed) - (footprints not_allowed) - ) - (placement - (enabled no) - (sheetname "") - ) - (fill - (thermal_gap 0.508) - (thermal_bridge_width 0.508) - (island_removal_mode 0) - ) - (polygon - (pts - (xy 63.035 46.1) (xy 111.035 46.1) (xy 111.035 25.1) (xy 63.035 25.1) - ) - ) + (pinfunction "DGND_14") + (pintype "power_in") + (uuid "90d86322-bc41-4312-b4ac-fd31e42eda7d") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/RF_Module.3dshapes/ESP32-S3-WROOM-1.step" + (model "${KICAD10_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-14_4.4x5mm_P0.65mm.step" (offset (xyz 0 0 0) ) @@ -6373,33 +6226,33 @@ ) ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "2f207274-ea54-42b9-b7bf-78082ad7130c") - (at 139.985 77.5) - (property "Reference" "TP31" - (at 0 -1.648 0) - (unlocked yes) + (uuid "2a52e3a6-904c-4cec-aea5-bd1693a538fa") + (at 136.8675 122.5 180) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C26" + (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "75a84439-bc43-4134-a461-de03889387db") + (uuid "593e0a77-2abb-4f58-bca0-1f2f346e11fc") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "CURR_SENSE" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "100nF" + (at 0 1.16 0) + (layer "F.Fab") (hide yes) - (uuid "5f46221a-9935-46b8-8559-e8980e6a2748") + (uuid "1be51770-e499-4a6a-9a15-9ed2ee830f73") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -6407,7 +6260,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "eb1d0752-e9c5-4185-b8e4-749d366f4ff5") + (uuid "7cf222d9-4dec-497a-8caf-ca3168ed6582") (effects (font (size 1.27 1.27) @@ -6418,126 +6271,120 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "12336b7d-7d9f-4def-9b5a-493dfbb0cf3d") + (uuid "9cf843c3-3041-4cf0-ab83-d517457bffde") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/acf5bc9a-e871-4e6a-80ed-96fc0045dfbf") + (property ki_fp_filters "C_*") + (path "/64b0b002-e9ff-41b7-aba2-e843fde0b23a") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "60896b75-be78-4556-a718-af95cfa8f724") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "e56702d9-69b6-413e-b41a-24c725ccb92d") - ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "bd323fbe-dba4-4088-b564-800ffec24490") + (uuid "479f9f2c-353b-4a48-8572-f25d6373728c") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "bb9fb077-fae4-4d75-ac29-1094f30f1a00") + (uuid "2a7bd210-c71e-42a2-a63f-ad9c009d5f05") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "9021aa3f-e77a-4ded-b2bc-0c28f5e86fc8") + (uuid "b33bc031-3982-4796-bc1a-e91a2b881d48") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "914fa400-cc5d-478b-9722-97c71f76831b") + (fill no) + (layer "F.Fab") + (uuid "749801ac-7447-4c70-938b-748c98aa05e5") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "1902ff60-5660-448c-9ce6-b7dbb9777c40") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "39f394ee-2598-4c70-9148-e70c594b1a20") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "983315e0-eb8d-4d18-b863-3dce4b453c42") + (pad "1" smd roundrect + (at -0.48 0 180) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pintype "passive") + (uuid "1b615af2-397d-4c08-9435-3e7ab95231b0") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/CURR_SENSE") - (pinfunction "1_1") + (pad "2" smd roundrect + (at 0.48 0 180) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") (pintype "passive") - (uuid "fd3489c8-5c87-4369-8a79-4ddcb60289a3") + (uuid "5e520e1a-1997-4b91-8218-ac5f519a5be5") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") - (uuid "32115279-0541-4618-9fa1-6fe41d362b96") - (at 56.73 88.75) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (uuid "2ce6b036-e3c1-4968-bb59-681c6809cb5f") + (at 74.75 48.3 90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") (tags "capacitor") - (property "Reference" "C21" - (at 0 -1.16 0) + (property "Reference" "C6" + (at 0 -1.68 90) (layer "F.SilkS") (hide yes) - (uuid "bcfe4ae5-c82e-498f-9085-5d044c4a94da") + (uuid "9d1df33a-5bdb-462a-ad2e-fb3396484b91") (effects (font (size 1 1) @@ -6545,11 +6392,11 @@ ) ) ) - (property "Value" "100nF" - (at 0 1.16 0) + (property "Value" "10uF" + (at 0 1.68 90) (layer "F.Fab") (hide yes) - (uuid "fe324fc5-7aa7-41c1-9eff-1931743572cf") + (uuid "45b4d653-7bec-4d7b-b8cb-9da99ea4fbfd") (effects (font (size 1 1) @@ -6558,10 +6405,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "1f70dfa9-e8de-4baa-812c-0bdb4ba33f65") + (uuid "4b887a3e-37ef-45d0-b845-99678bea2136") (effects (font (size 1.27 1.27) @@ -6569,22 +6416,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "c94ba758-399e-45f3-9f49-64c217886ded") + (uuid "29cbd410-eec7-4540-b2a1-bc63a3d9dbd1") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C1525" - (at 0 0 0) + (property "LCSC" "C15850" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "1fa02dcc-dcba-4d72-a1bf-d9b5a494d04c") + (uuid "5b29eb0a-737b-40d6-88be-07d8ba5f391e") (effects (font (size 1 1) @@ -6593,7 +6440,7 @@ ) ) (property ki_fp_filters "C_*") - (path "/9e0e93aa-a28d-42c2-87a7-26eeb54946f3") + (path "/92df9b1e-e78c-418a-8feb-9dbc5f1305a2") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -6605,78 +6452,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.261252 -0.735) + (end 0.261252 -0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "f127279d-3501-4ab1-97af-881a8a4f1891") + (uuid "fc06b8f4-e956-4f0e-8ece-475452defda3") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.261252 0.735) + (end 0.261252 0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "8b00197a-f9e5-49d8-9e83-1457f47c9ec3") + (uuid "bcd1032e-f05c-4adf-a1bb-c6ae2b87b5f6") ) (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (start -1.7 -0.98) + (end 1.7 0.98) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "a0ddf1b3-88d8-43b3-991b-e133aa19ca11") + (uuid "3e872c21-2a20-4dd0-9964-2c217369a52c") ) (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (start -1 -0.625) + (end 1 0.625) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "9ceabb2e-d36a-4ccf-b1e5-8f32d643a5aa") + (uuid "5b0875e6-8353-4a21-a580-83045955fdca") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "c1f98e75-7d72-4f39-bbb8-7369856981f4") + (uuid "a56ceda3-613b-43a7-a0fd-56ace696ebad") (effects (font - (size 0.25 0.25) - (thickness 0.04) + (size 0.5 0.5) + (thickness 0.08) ) ) ) (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) + (at -0.95 0 90) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/ENC_B") + (net "+3.3V") (pintype "passive") - (uuid "5dd3ccd4-e599-48b1-8cf4-3da324f2b5d5") + (uuid "f06eb688-50bb-4a36-a877-2c9661e1472f") ) (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) + (at 0.95 0 90) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "431e4203-1e63-4156-86f6-d31c3a8ebb8e") + (uuid "83decc6d-4af7-4d3e-bf36-c67deed9d584") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" (offset (xyz 0 0 0) ) @@ -6688,17 +6535,17 @@ ) ) ) - (footprint "LED_SMD:LED_0603_1608Metric" + (footprint "RF_Module:ESP32-S3-WROOM-1" (layer "F.Cu") - (uuid "342065b2-fa11-400c-8f11-11830ede5818") - (at 147.9675 55.75 180) - (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf)") - (tags "LED") - (property "Reference" "D3" - (at 0 -1.43 0) + (uuid "2e54718d-dffe-4be4-bf13-922769ac065d") + (at 87.035 52.85) + (descr "2.4 GHz Wi-Fi and Bluetooth module https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf") + (tags "2.4 GHz Wi-Fi and Bluetooth module") + (property "Reference" "U1" + (at -10.5 11.4 90) + (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "0b68fc87-adfe-4470-b580-cc64024a0eda") + (uuid "40616b32-945f-497a-81f8-648aef8d7f73") (effects (font (size 1 1) @@ -6706,11 +6553,12 @@ ) ) ) - (property "Value" "SSR1" - (at 0 1.43 0) + (property "Value" "ESP32-S3-WROOM-1" + (at 0 14.6 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "6290bbfc-6341-45bd-bfd9-152d890a4b10") + (uuid "5152d472-9f80-4688-8362-d991ace514f3") (effects (font (size 1 1) @@ -6718,34 +6566,38 @@ ) ) ) - (property "Datasheet" "" + (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "862cd957-35b5-499e-927a-d972f5096241") + (uuid "1fe735c8-a6cc-4b58-b97a-615e81e1487a") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property "Description" "" + (property "Description" "RF Module, ESP32-S3 SoC, Wi-Fi 802.11b/g/n, Bluetooth, BLE, 32-bit, 3.3V, onboard antenna, SMD" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "a92a5927-b4b4-403a-97ee-1838bfaeb5ad") + (uuid "62891ebf-6d0d-4233-a83f-adf4d1e39364") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property "LCSC" "C2286" - (at 0 0 180) + (property "LCSC" "C2913198" + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "39d5a131-70d4-414a-a8ba-3ca50f2ff4c2") + (uuid "e82a8900-5662-4b5e-b21c-5689b5d3ce0d") (effects (font (size 1 1) @@ -6753,176 +6605,260 @@ ) ) ) - (property ki_fp_filters "LED* LED_SMD:* LED_THT:*") - (path "/e804040e-fe0a-47ee-8147-3930133ad516") + (property ki_fp_filters "ESP32?S3?WROOM?1*") + (path "/ef1b19f9-eca5-4dcf-bb24-e7a713cc132a") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "3" "27" "39" "38" "15" "4" "5" "6" "7" "12" "17" "18" "19" "20" + "21" "22" "8" "9" "2" "1" "40" "41" "37" "36" "10" "11" "13" "14" "23" + "28" "29" "30" "31" "32" "33" "34" "35" "26" "16" "24" "25" + ) ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 0.8 -0.735) - (end -1.485 -0.735) + (start -9.2 -12.9) + (end -9.2 -6.7) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "daa0ca83-1e13-4b02-8627-f2ec8f34e544") + (uuid "e300dc06-6e91-434f-b167-6269817cc492") ) (fp_line - (start -1.485 0.735) - (end 0.8 0.735) + (start -9.2 -12.9) + (end 9.2 -12.9) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "0132d012-b02d-4e1e-8f70-22af6dfea81d") + (uuid "ed92499f-a1bc-4e6b-a2f9-bfe2a601a7cc") ) (fp_line - (start -1.485 -0.735) - (end -1.485 0.735) + (start -9.2 11.95) + (end -9.2 12.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e92684c1-2c18-499c-b87b-d9861152ea64") + (uuid "7bb7d799-1579-47ac-a391-db631b3f0286") ) - (fp_rect - (start -1.48 -0.73) - (end 1.48 0.73) + (fp_line + (start -9.2 12.95) + (end -7.7 12.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "65fa6ec3-e915-4970-b2d3-71a86997ad1a") + ) + (fp_line + (start 9.2 -12.9) + (end 9.2 -6.7) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "eb729a4d-2dc9-4d27-b5c1-66a3f4edb799") + ) + (fp_line + (start 9.2 12.95) + (end 7.7 12.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "10a635ad-59d8-436e-896a-7826955df5a3") + ) + (fp_line + (start 9.2 12.95) + (end 9.2 11.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2039317c-86d2-43cf-a028-adb52372a813") + ) + (fp_poly + (pts + (xy -9.2 -6.025) (xy -9.7 -6.025) (xy -9.2 -6.525) (xy -9.2 -6.025) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) + (layer "F.SilkS") + (uuid "c57f2c11-7095-46bd-baa7-d52bfef712ba") + ) + (fp_line + (start -24 -27.75) + (end -24 -6.75) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "607a67e6-ebed-4ded-a050-baf5c1e81aa0") + (uuid "f19db3f2-208b-4b9e-9fc2-ebd74b29f206") ) (fp_line - (start 0.8 0.4) - (end 0.8 -0.4) + (start -24 -6.75) + (end -9.75 -6.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "fae43624-b5aa-473b-8293-55c94b40f12c") + ) + (fp_line + (start -9.75 13.45) + (end -9.75 -6.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "df204c61-ee2c-4ec4-956e-bbc63a462797") + ) + (fp_line + (start -9.75 13.45) + (end 9.75 13.45) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "dcea79bd-b1c7-4a29-840b-944bd16dc7bc") + ) + (fp_line + (start 9.75 -6.75) + (end 9.75 13.45) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "baf40590-53e1-4c18-b4e1-03391bbca5f9") + ) + (fp_line + (start 9.75 -6.75) + (end 24 -6.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "56a14170-e2b1-405d-b8a9-6b2da2c13df2") + ) + (fp_line + (start 24 -27.75) + (end -24 -27.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "252cfbd5-1b64-41b3-9611-cd82afe5f9c4") + ) + (fp_line + (start 24 -6.75) + (end 24 -27.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "949a0a62-62a0-4351-a97a-b899cd131485") + ) + (fp_line + (start -9 -12.75) + (end 9 -12.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "95a49403-b5de-4a44-ac85-937fe3880ec5") + (uuid "cf02ad75-129b-42c3-9de3-56707124a4dd") ) (fp_line - (start 0.8 -0.4) - (end -0.5 -0.4) + (start -9 -6.75) + (end 9 -6.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "93f69a13-197c-495c-a272-b978152f6f26") + (uuid "071d167b-fa16-43fa-82e3-26ac4a640912") ) (fp_line - (start -0.5 -0.4) - (end -0.8 -0.1) + (start -9 12.75) + (end -9 -12.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "2bf0e6dc-3fdb-4093-936c-d194175e1b9c") + (uuid "eeca646b-a5b6-46db-9202-36906f12fd1d") ) (fp_line - (start -0.8 0.4) - (end 0.8 0.4) + (start -9 12.75) + (end 9 12.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "91bc9f0c-07f2-4cf7-8c3f-e820413ab2ed") + (uuid "067a73a5-5cec-448d-a63b-3888fc485463") ) (fp_line - (start -0.8 -0.1) - (end -0.8 0.4) + (start 9 12.75) + (end 9 -12.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "0416d268-6397-4bca-baa7-68b3b2241785") + (uuid "1bca657a-2215-4b0f-8723-e7770b344df8") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "6dcb6fdf-f36f-4fa7-b55a-c588e8ee4a6d") + (fp_text user "Antenna" + (at -0.05 -9.44 0) + (layer "Cmts.User") + (uuid "7670f03c-3732-4788-b6b8-a5c55b181c51") (effects (font - (size 0.4 0.4) - (thickness 0.06) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.7875 0 180) - (size 0.875 0.95) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SSR1_DRV") - (pinfunction "K_1") - (pintype "passive") - (uuid "6cba3b67-59c1-4d45-ad74-1dc51e1bdca5") - ) - (pad "2" smd roundrect - (at 0.7875 0 180) - (size 0.875 0.95) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "Net-(D3-A)") - (pinfunction "A_2") - (pintype "passive") - (uuid "45efda96-b335-41f0-89ec-7e4b38c0e635") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "377934f4-50e4-4d52-ad6a-8a5ee4ad1ea7") - (at 139.485 71.51 -90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R24" - (at 0.93 -0.47 90) - (layer "F.SilkS") - (hide yes) - (uuid "fa619c11-ed23-492e-95a0-36e2e9765729") + (fp_text user "KEEP-OUT ZONE" + (at 0 -18.92 0) + (layer "Cmts.User") + (uuid "55b1bf87-ed60-40b0-bbc4-357739613951") (effects (font - (size 1 1) + (size 2 2) (thickness 0.15) ) ) ) - (property "Value" "10k" - (at 0 1.17 90) + (fp_text user "${REFERENCE}" + (at 0 -0.6 0) + (unlocked yes) (layer "F.Fab") - (hide yes) - (uuid "fcec2eff-a087-4ddf-be4b-7005014097b9") + (uuid "c21c329f-559c-46bf-889d-014a2b476464") (effects (font (size 1 1) @@ -6930,767 +6866,619 @@ ) ) ) - (property "Datasheet" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "3956a1ca-1d2a-4c06-b818-94b792b38f87") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "" smd rect + (at -2.9 1.06) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "28b3b6d2-27db-4965-be6b-039b8b2f7d8e") ) - (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "54abf4d7-c8b0-413d-b518-9952b7d5ef6d") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "" smd rect + (at -2.9 2.46 270) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "26a7cc12-30e8-4ff5-bc96-b043ec082638") ) - (property "LCSC" "C25744" - (at 0 0 270) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "b5777808-48a5-4ff1-b593-6bfbb8767268") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "" smd rect + (at -2.9 3.86) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "8c4df76c-7f2b-45f1-be84-fcad87e48788") ) - (property ki_fp_filters "R_*") - (path "/c00c0283-800e-4fe2-854f-e479c68d6969") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) + (pad "" smd rect + (at -1.5 1.06 270) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "2de30a5d-3769-4dec-b161-af6967e14e4a") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "091ecd32-ffb2-4f58-a5d9-21e12138222a") + (pad "" smd rect + (at -1.5 2.46 270) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "5158d1a7-86fa-40fb-9baa-70375cd78fcd") ) - (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "72eff339-e9b3-4ecb-b884-da976fb33eb6") + (pad "" smd rect + (at -1.5 3.86 270) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "3ac6e8d1-2fdc-4e60-8470-32fcd3bcd489") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) - (stroke - (width 0.05) - (type solid) - ) - (fill no) - (layer "F.CrtYd") - (uuid "2db60cfc-6a3c-40df-8a51-9836ccda29ee") + (pad "" smd rect + (at -0.1 1.06 270) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "b0aae9e1-2ee0-4efe-a1c7-00a0a75aeb89") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "16276b33-e1e3-4cff-97fa-ea6f0b752310") + (pad "" smd rect + (at -0.1 2.46 270) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "f5b12c39-0c81-4e31-9049-34c4cb9c9df5") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "dea3ca09-2802-42cc-b36b-53dffa336fd4") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) - ) + (pad "" smd rect + (at -0.1 3.86 270) + (size 0.9 0.9) + (layers "F.Paste") + (uuid "65235ac2-4689-48ce-8b6d-c26619bc5868") ) - (pad "1" smd roundrect - (at -0.51 0 270) - (size 0.54 0.64) + (pad "1" smd rect + (at -8.75 -5.26) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "GND") + (pinfunction "GND_1") + (pintype "power_in") + (uuid "33253889-b560-461b-bbbf-fdf87df467d8") + ) + (pad "2" smd rect + (at -8.75 -3.99) + (size 1.5 0.9) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) (net "+3.3V") - (pintype "passive") - (uuid "1263434f-a6ab-409a-80a2-959431abd454") + (pinfunction "3V3_2") + (pintype "power_in") + (uuid "fc079eb5-4b2f-4397-9256-6a1395df50be") ) - (pad "2" smd roundrect - (at 0.51 0 270) - (size 0.54 0.64) + (pad "3" smd rect + (at -8.75 -2.72) + (size 1.5 0.9) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/VBIAS") - (pintype "passive") - (uuid "65238be3-80b9-4bc9-a65b-1ecafbf9dbe7") + (net "/ESP32_EN") + (pinfunction "EN_3") + (pintype "input") + (uuid "a18d5bdd-5dea-4517-a30f-7316a1020cbf") ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) + (pad "4" smd rect + (at -8.75 -1.45) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/SSR") + (pinfunction "IO4_4") + (pintype "bidirectional") + (uuid "0b955083-7fe1-47cf-992f-94633c96de44") ) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "39443f2a-a5b4-4d44-bcf1-957529ed877e") - (at 139.485 73.49 -90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R25" - (at 0 -1.17 90) - (layer "F.SilkS") - (hide yes) - (uuid "b2d88d8f-760f-4b75-b979-589cd83c2b5f") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "5" smd rect + (at -8.75 -0.18) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO5-Pad5)") + (pinfunction "IO5_5") + (pintype "bidirectional+no_connect") + (uuid "e051a867-9a45-44e6-8caf-6deda3e3c659") ) - (property "Value" "10k" - (at 0 1.17 90) - (layer "F.Fab") - (hide yes) - (uuid "f99077e5-b535-42ec-894c-07fd44e55b7e") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "6" smd rect + (at -8.75 1.09) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/HEAT_EN") + (pinfunction "IO6_6") + (pintype "bidirectional") + (uuid "4f7d01ec-e628-484c-bcbd-e6bf38aac9dd") ) - (property "Datasheet" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "180aa3a4-5346-49cc-afa3-2740f4aa4e36") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "7" smd rect + (at -8.75 2.36) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/ALARM") + (pinfunction "IO7_7") + (pintype "bidirectional") + (uuid "e61c7b47-ce2e-4ed5-a2e8-5dd4aa6900e8") ) - (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "57754829-f3cb-4d34-b75f-a719f850cf85") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "8" smd rect + (at -8.75 3.63) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/ENC_BTN") + (pinfunction "IO15_8") + (pintype "bidirectional") + (uuid "dd1c350c-c086-458f-9194-2d0f838feaf6") ) - (property "LCSC" "C25744" - (at 0 0 270) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "2e55567f-733d-4dd3-823f-4a1da2a4fc0d") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "R_*") - (path "/3296a42d-7708-44da-9f27-f55acf086dfe") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) + (pad "9" smd rect + (at -8.75 4.9) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/ENC_A") + (pinfunction "IO16_9") + (pintype "bidirectional") + (uuid "28c9e909-20c0-4972-934e-c8a485ba263b") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "98d70a39-aacc-4379-8154-08d40ac6bd54") + (pad "10" smd rect + (at -8.75 6.17) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/ENC_B") + (pinfunction "IO17_10") + (pintype "bidirectional") + (uuid "217a0f51-0ecc-4fec-b98a-65cc9f6be7b1") ) - (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "553d6226-c061-4d2e-b8e2-c61409e83024") + (pad "11" smd rect + (at -8.75 7.44) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/I2C_SCL") + (pinfunction "IO18_11") + (pintype "bidirectional") + (uuid "8d3f1066-6215-4cf1-a56e-4c34f196bb0c") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) - (stroke - (width 0.05) - (type solid) - ) - (fill no) - (layer "F.CrtYd") - (uuid "8432494e-3a5b-4727-ba62-90ab10130edf") + (pad "12" smd rect + (at -8.75 8.71) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/I2C_SDA") + (pinfunction "IO8_12") + (pintype "bidirectional") + (uuid "b3ce9c14-0583-4292-9154-ec9fd49a8b89") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "35237413-aeb1-472e-9639-dcb0d49d160f") + (pad "13" smd rect + (at -8.75 9.98) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/USB_DN") + (pinfunction "USB_D-_13") + (pintype "bidirectional") + (uuid "6a7129b8-a07d-4687-9f8f-f90a8a3dfe4b") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "a1e51b58-e6da-48ba-95dc-58e0050d4416") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) - ) + (pad "14" smd rect + (at -8.75 11.25 180) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/USB_DP") + (pinfunction "USB_D+_14") + (pintype "bidirectional") + (uuid "790bd3f6-13bb-4e37-8550-9cab01e4aa91") ) - (pad "1" smd roundrect - (at -0.51 0 270) - (size 0.54 0.64) + (pad "15" smd rect + (at -6.985 12.5 270) + (size 1.5 0.9) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/VBIAS") - (pintype "passive") - (uuid "220e6e3f-27ce-4243-8402-8ed41c682e82") + (net "unconnected-(U1-IO3-Pad15)") + (pinfunction "IO3_15") + (pintype "bidirectional+no_connect") + (uuid "b93d0bc2-3a62-4b18-80ef-a5a388afdc93") ) - (pad "2" smd roundrect - (at 0.51 0 270) - (size 0.54 0.64) + (pad "16" smd rect + (at -5.715 12.5 270) + (size 1.5 0.9) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pintype "passive") - (uuid "eb6b8304-e34c-4b48-87b2-c022c1e43c93") + (net "unconnected-(U1-IO46-Pad16)") + (pinfunction "IO46_16") + (pintype "bidirectional+no_connect") + (uuid "9ec86e9c-9096-4663-bb11-aa02ce189ea2") ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) + (pad "17" smd rect + (at -4.445 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO9-Pad17)") + (pinfunction "IO9_17") + (pintype "bidirectional+no_connect") + (uuid "492fd588-9751-4ebb-b9b7-5cb4692d18da") ) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "3b6d0740-a4d9-4a8f-9537-142ce10937b1") - (at 117.75 83) - (property "Reference" "TP33" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (uuid "b683000a-3e45-4aec-930d-5768c0e135fd") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (pad "18" smd rect + (at -3.175 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO10-Pad18)") + (pinfunction "IO10_18") + (pintype "bidirectional+no_connect") + (uuid "6b852021-44ef-44c7-aee9-cc4b5315ade7") ) - (property "Value" "MCU_IO0" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "1e910c73-c7a2-4012-bd47-4b7234d2fa40") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (pad "19" smd rect + (at -1.905 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO11-Pad19)") + (pinfunction "IO11_19") + (pintype "bidirectional+no_connect") + (uuid "d6092111-a44f-4f8d-a6a7-a2b2d5840c6e") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "ed7c1fd9-7aef-4953-9385-15021f52b7cb") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "20" smd rect + (at -0.635 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO12-Pad20)") + (pinfunction "IO12_20") + (pintype "bidirectional+no_connect") + (uuid "7253ec94-f7ae-4bf0-97df-44b3a1980f64") ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "347bf8fe-a600-4d6e-b1e4-af8d5b45cc5a") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "21" smd rect + (at 0.635 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO13-Pad21)") + (pinfunction "IO13_21") + (pintype "bidirectional+no_connect") + (uuid "fb24376c-7476-441c-81f5-e0ef140e5090") ) - (property ki_fp_filters "Pin* Test*") - (path "/1a4e3a6a-f969-403a-8a63-045dca112a9c") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) + (pad "22" smd rect + (at 1.905 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO14-Pad22)") + (pinfunction "IO14_22") + (pintype "bidirectional+no_connect") + (uuid "b36fe6c7-ae38-4272-af00-229df5c7373b") ) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "dc095879-c7bf-4632-9fe9-258287327e1c") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "84c75637-5db9-4252-98ab-8697f276ff22") + (pad "23" smd rect + (at 3.175 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO21-Pad23)") + (pinfunction "IO21_23") + (pintype "bidirectional+no_connect") + (uuid "40b30f0d-a08c-4386-a200-4df8651276e5") ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "1094add1-83cd-401a-b985-2a9d106c29ae") + (pad "24" smd rect + (at 4.445 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/SUPERVISOR_TX") + (pinfunction "IO47_24") + (pintype "bidirectional") + (uuid "92862683-e8b6-427d-bcce-6e44cb9c1102") ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "fbf92fb7-134e-4da6-ba6a-527a8899013a") + (pad "25" smd rect + (at 5.715 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO48-Pad25)") + (pinfunction "IO48_25") + (pintype "bidirectional+no_connect") + (uuid "56de2018-a62b-4d24-b255-cafb94bf093a") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "efbafbd8-75f2-41e7-837b-12f4dcebb21c") + (pad "26" smd rect + (at 6.985 12.5 270) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO45-Pad26)") + (pinfunction "IO45_26") + (pintype "bidirectional+no_connect") + (uuid "8bada65e-d13e-45ce-9eef-14a6aac2a09e") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "7bb76a60-2c85-4351-99f0-58d8f88bf6cd") + (pad "27" smd rect + (at 8.75 11.25) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/ESP32_IO0") + (pinfunction "IO0_27") + (pintype "bidirectional") + (uuid "926f7d60-325a-427a-aab7-b421a707484c") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "3588223d-f786-413e-9207-39dcfb7e51a1") + (pad "28" smd rect + (at 8.75 9.98) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO35-Pad28)") + (pinfunction "IO35_28") + (pintype "bidirectional+no_connect") + (uuid "8636099c-cf33-432d-ae05-04074ba1e243") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "23c213d7-2181-4044-a393-524aceeeeb77") + (pad "29" smd rect + (at 8.75 8.71) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO36-Pad29)") + (pinfunction "IO36_29") + (pintype "bidirectional+no_connect") + (uuid "f79787a5-cc6c-4d30-9d44-fb0887226588") ) - (fp_text user "${REFERENCE}" - (at 0 -1.65 0) - (unlocked yes) - (layer "F.Fab") - (uuid "e262168b-288e-4df4-bc64-3a306734a365") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "30" smd rect + (at 8.75 7.44) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO37-Pad30)") + (pinfunction "IO37_30") + (pintype "bidirectional+no_connect") + (uuid "a151bdd7-8dde-428e-aa40-2567a30bedcd") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/MCU_IO0") - (pinfunction "1_1") - (pintype "passive") - (uuid "7520603a-2585-4f8d-ab80-c6710e302cee") + (pad "31" smd rect + (at 8.75 6.17) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/LID_SENSE") + (pinfunction "IO38_31") + (pintype "bidirectional") + (uuid "fc6b9edc-ef8d-44d3-84a0-3e9caa32118a") ) - (embedded_fonts no) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "3beef407-38aa-499d-b944-da10c6046072") - (at 139.985 94.5) - (property "Reference" "TP28" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "ccdee414-3a88-494d-ac12-f9dc20425444") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (pad "32" smd rect + (at 8.75 4.9) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO39-Pad32)") + (pinfunction "IO39_32") + (pintype "bidirectional+no_connect") + (uuid "3ad072ff-6dc5-4f8e-b66e-d24731bfdf94") ) - (property "Value" "TC1_N" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "81caae0b-9cb5-4c30-8b48-49ef0147b37d") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (pad "33" smd rect + (at 8.75 3.63) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO40-Pad33)") + (pinfunction "IO40_33") + (pintype "bidirectional+no_connect") + (uuid "a9f7eba0-035f-4b55-8c4a-aa937ef7668b") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "3a9aa953-48e3-4cd9-9fed-aed391a29879") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "34" smd rect + (at 8.75 2.36) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "unconnected-(U1-IO41-Pad34)") + (pinfunction "IO41_34") + (pintype "bidirectional+no_connect") + (uuid "c4cdea27-9c9c-4149-883c-b8b86ee68fc4") ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "46ea3173-e3e3-4d3a-beb8-538700c21440") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "35" smd rect + (at 8.75 1.09) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/EXP_IO42") + (pinfunction "IO42_35") + (pintype "bidirectional") + (uuid "682a7bb6-5f61-4b18-94ea-36bfac16e677") ) - (property ki_fp_filters "Pin* Test*") - (path "/8605ad44-4be5-4f56-98fe-78fe69fcdf74") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) + (pad "36" smd rect + (at 8.75 -0.18) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/UART_RXD0") + (pinfunction "RXD0_36") + (pintype "bidirectional") + (uuid "b3e6ba82-ca6b-49e6-8984-f2b265731866") ) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "4147c674-0c29-4475-ade9-7034c91c1214") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "373f9c49-b36a-414e-b3dd-976cd456fbe3") + (pad "37" smd rect + (at 8.75 -1.45) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/UART_TXD0") + (pinfunction "TXD0_37") + (pintype "bidirectional") + (uuid "00483ddf-8908-46e0-87a2-37b36865cee8") ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "a1cebd2e-bdfb-42a7-8dcc-938f64592b61") + (pad "38" smd rect + (at 8.75 -2.72) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/EXP_IO2") + (pinfunction "IO2_38") + (pintype "bidirectional") + (uuid "a9868950-2fbf-4a0b-a5b4-82f63e28c202") ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "3002c8f2-f5b9-43ac-a157-0f46399a951b") + (pad "39" smd rect + (at 8.75 -3.99) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "/CURR_SENSE") + (pinfunction "IO1_39") + (pintype "bidirectional") + (uuid "51b7166a-8e05-4208-b928-b25a210e683c") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "1085f87e-e865-4090-9230-c83800f8c0d7") + (pad "40" smd rect + (at 8.75 -5.26) + (size 1.5 0.9) + (layers "F.Cu" "F.Mask" "F.Paste") + (net "GND") + (pinfunction "GND_40") + (pintype "passive") + (uuid "0f9b204a-768c-4ac3-95f2-0cff71b7c674") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "bb74eb63-0b92-4fc5-9ed7-ed9828336274") + (pad "41" thru_hole circle + (at -2.9 1.76 90) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "b887ea30-3c7d-4a38-ab3b-a7149f96e8a9") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "61fb4251-d1f7-40f6-8f73-4973ef5175c7") + (pad "41" thru_hole circle + (at -2.9 3.16) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "8c236c93-0039-44dc-844d-304e482b2ce9") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "39759a60-d7d0-4cd3-9ab5-57d4a26ae567") + (pad "41" thru_hole circle + (at -2.2 1.06) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "93b74093-0e7d-423f-a1bc-947f6e663f37") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC1_N") - (pinfunction "1_1") + (pad "41" thru_hole circle + (at -2.2 2.46) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") (pintype "passive") - (uuid "b0384971-9a65-4e72-afba-b3a06986c08e") + (zone_connect 2) + (uuid "156f7048-e7d1-4737-8c0c-ad19e46e2b55") ) - (embedded_fonts no) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "3dc2dfff-34bb-4dbc-9bd7-765878f5342a") - (at 135.78 58.24 -90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R13" - (at 0 -1.17 90) - (layer "F.SilkS") - (hide yes) - (uuid "197951cb-9a9e-4df1-b24c-8d31858e4526") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "41" thru_hole circle + (at -2.2 3.86) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "17acede5-749f-48eb-9631-fccd51500aa8") ) - (property "Value" "100R" - (at 0 1.17 90) - (layer "F.Fab") - (hide yes) - (uuid "b075a5e5-9cf1-4967-aefd-1ebd960bacda") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "41" thru_hole circle + (at -1.5 1.76) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "b44bd3eb-8e87-4c28-8fc7-7bfa9cecd8fd") ) - (property "Datasheet" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "1a2d9cdf-2308-4de2-8e3d-fbf63357d33b") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "41" smd rect + (at -1.5 2.46 270) + (size 3.9 3.9) + (property pad_prop_heatsink) + (layers "F.Cu" "F.Mask") + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "f95cc423-06ef-418c-8a7d-0560b88a0268") ) - (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "7ecfb72d-4e87-4b6d-9e8b-7ef9a82b3086") - (effects - (font - (size 1.27 1.27) - ) - ) + (pad "41" thru_hole circle + (at -1.5 3.16) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "7e281b5a-bb0f-41f3-a13c-9dd48d55f4a6") ) - (property "LCSC" "C25076" - (at 0 0 270) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "7ed718d1-cd68-47a8-ad90-dbdc60af3f78") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "41" thru_hole circle + (at -0.8 1.06) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "85035189-a255-4d5c-984e-7efa6ed3e61b") ) - (property ki_fp_filters "R_*") - (path "/2c7b9496-f6c1-4901-b36e-a2b31a7f36d6") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) + (pad "41" thru_hole circle + (at -0.8 2.46) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "08836dfc-49a4-4e68-b553-cf59612b700b") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "7095111c-f457-4826-8c48-a4ee197f4363") + (pad "41" thru_hole circle + (at -0.8 3.86) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "6646df32-6b76-41b2-9e66-390a074723a3") ) - (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "f64478b1-9576-46bd-97bb-c1b7dbb1f5dc") + (pad "41" thru_hole circle + (at -0.1 1.76) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "fb312710-1212-40e2-be30-9e7623a0d1f1") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) - (stroke - (width 0.05) - (type solid) - ) - (fill no) - (layer "F.CrtYd") - (uuid "9515e66a-128f-44bc-a465-b492fa9908b0") + (pad "41" thru_hole circle + (at -0.1 3.16) + (size 0.6 0.6) + (drill 0.2) + (property pad_prop_heatsink) + (layers "*.Cu" "F.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "GND_41") + (pintype "passive") + (zone_connect 2) + (uuid "a5224034-bc72-4767-abee-626ae4a5434f") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) - (stroke - (width 0.1) - (type solid) + (zone + (layers "F.Cu" "B.Cu") + (uuid "7fc9adc0-b09d-456a-ba1e-0e004c9f9e60") + (hatch full 0.508) + (connect_pads + (clearance 0) ) - (fill no) - (layer "F.Fab") - (uuid "d6190abb-3ded-4aed-bc82-49e50c816226") - ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "f39e8338-3b29-4b99-9c38-76e51f010077") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) + (min_thickness 0.254) + (keepout + (tracks not_allowed) + (vias not_allowed) + (pads not_allowed) + (copperpour not_allowed) + (footprints not_allowed) + ) + (placement + (enabled no) + (sheetname "") + ) + (fill + (thermal_gap 0.508) + (thermal_bridge_width 0.508) + (island_removal_mode 0) + ) + (polygon + (pts + (xy 63.035 46.1) (xy 111.035 46.1) (xy 111.035 25.1) (xy 63.035 25.1) ) ) ) - (pad "1" smd roundrect - (at -0.51 0 270) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SSR1") - (pintype "passive") - (uuid "c01bb848-c574-4612-ae92-eb289808212e") - ) - (pad "2" smd roundrect - (at 0.51 0 270) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "Net-(Q1-G)") - (pintype "passive") - (uuid "8b08830a-0bc4-4f2c-bb48-a097bd0df78d") - ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/RF_Module.3dshapes/ESP32-S3-WROOM-1.step" (offset (xyz 0 0 0) ) @@ -7702,16 +7490,16 @@ ) ) ) - (footprint "Buzzer_Beeper:Buzzer_12x9.5RM7.6" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "3dd08d8b-dc73-46cd-8b61-cf85afa3dbcb") - (at 114.6 65 180) - (property "Reference" "BZ1" - (at 3.8 -7.199999 180) + (uuid "2f207274-ea54-42b9-b7bf-78082ad7130c") + (at 140.05 90.2) + (property "Reference" "TP31" + (at 0 -1.648 0) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "550175ee-b050-488b-b7a9-921673908668") + (uuid "75a84439-bc43-4134-a461-de03889387db") (effects (font (size 1 1) @@ -7719,12 +7507,12 @@ ) ) ) - (property "Value" "TMB12A05 5V" - (at 3.8 7.4 180) + (property "Value" "CURR_SENSE" + (at 0 1.75 0) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "e0b54514-2944-42a3-b611-ef38be302ab7") + (uuid "5f46221a-9935-46b8-8559-e8980e6a2748") (effects (font (size 1 1) @@ -7736,7 +7524,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "be9cd5ec-1470-420f-9842-90e276fc8a70") + (uuid "eb1d0752-e9c5-4185-b8e4-749d366f4ff5") (effects (font (size 1.27 1.27) @@ -7747,152 +7535,126 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "d0a81f1b-ef75-4456-92b4-355ddfd9ba2e") + (uuid "12336b7d-7d9f-4def-9b5a-493dfbb0cf3d") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C96093" - (at 0 0 180) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "a3265a0d-7b7a-46ad-a878-7e623011036c") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "*Buzzer*") - (path "/9acb4869-677e-488a-99ba-8e3a611f3bf3") + (property ki_fp_filters "Pin* Test*") + (path "/acf5bc9a-e871-4e6a-80ed-96fc0045dfbf") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) (duplicate_pad_numbers_are_jumpers no) - (fp_circle - (center 3.8 0) - (end 9.9 0) + (fp_line + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type default) ) - (fill no) (layer "F.SilkS") - (uuid "e7246481-5370-447f-a1bd-7880dc0fe8f6") + (uuid "60896b75-be78-4556-a718-af95cfa8f724") ) - (fp_circle - (center 3.8 0) - (end 10.05 0) + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) (stroke - (width 0.05) + (width 0.12) (type default) ) - (fill no) - (layer "F.CrtYd") - (uuid "49568163-b65d-4480-a4fd-ccb27dbd5a87") + (layer "F.SilkS") + (uuid "e56702d9-69b6-413e-b41a-24c725ccb92d") ) - (fp_circle - (center 3.8 0) - (end 9.8 0) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) (stroke - (width 0.1) + (width 0.12) (type default) ) - (fill no) - (layer "F.Fab") - (uuid "92570fb2-f96d-4779-8268-1b0cccbb329c") + (layer "F.SilkS") + (uuid "bd323fbe-dba4-4088-b564-800ffec24490") ) - (fp_circle - (center 3.8 0) - (end 4.8 0) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) (stroke - (width 0.1) + (width 0.12) (type default) ) - (fill no) - (layer "F.Fab") - (uuid "f7be58b9-f940-4a37-9df0-5fa22c31880a") - ) - (fp_text user "+" - (at -0.01 -2.54 180) - (unlocked yes) (layer "F.SilkS") - (uuid "37c5ff6f-98f6-40cc-bc30-f3d90c377f0e") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (uuid "bb9fb077-fae4-4d75-ac29-1094f30f1a00") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "9021aa3f-e77a-4ded-b2bc-0c28f5e86fc8") ) - (fp_text user "${REFERENCE}" - (at 3.8 -4 180) - (unlocked yes) - (layer "F.Fab") - (uuid "7f8807d6-9b61-42ba-8f34-9ef5420ebe76") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "914fa400-cc5d-478b-9722-97c71f76831b") ) - (fp_text user "+" - (at -0.01 -2.54 180) - (unlocked yes) - (layer "F.Fab") - (uuid "fbc8eeae-5834-4726-939b-32ac6a2ecc91") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "39f394ee-2598-4c70-9148-e70c594b1a20") ) - (pad "1" thru_hole rect - (at 0 0 180) - (size 2 2) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "+5V") - (pinfunction "+_1") - (pintype "passive") - (uuid "e28a4f1a-ba40-4fa3-b71f-98dbaac01978") + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "983315e0-eb8d-4d18-b863-3dce4b453c42") ) - (pad "2" thru_hole circle - (at 7.6 0 180) - (size 2 2) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/ALARM_DRV") - (pinfunction "-_2") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/CURR_SENSE") + (pinfunction "1_1") (pintype "passive") - (uuid "7715f067-dabc-485c-9813-10ec6fa2daa8") + (uuid "fd3489c8-5c87-4369-8a79-4ddcb60289a3") ) (embedded_fonts no) ) - (footprint "Diode_SMD:D_SMA" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "3dd701f5-eee3-4ed3-95df-b726f4d06d26") - (at 63.25 66.5 180) - (descr "Diode SMA (DO-214AC)") - (tags "Diode SMA (DO-214AC)") - (property "Reference" "D2" - (at 0 -2.5 0) + (uuid "32115279-0541-4618-9fa1-6fe41d362b96") + (at 56.73 88.75) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C21" + (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "93b1be57-a522-4a7a-8064-419dd780d6ad") + (uuid "bcfe4ae5-c82e-498f-9085-5d044c4a94da") (effects (font (size 1 1) @@ -7900,11 +7662,11 @@ ) ) ) - (property "Value" "SS34" - (at 0 2.6 0) + (property "Value" "100nF" + (at 0 1.16 0) (layer "F.Fab") (hide yes) - (uuid "e203aae9-a371-4f81-b5d7-4ad347ae1949") + (uuid "fe324fc5-7aa7-41c1-9eff-1931743572cf") (effects (font (size 1 1) @@ -7913,37 +7675,33 @@ ) ) (property "Datasheet" "" - (at 0 0 180) - (unlocked yes) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "c5135037-2d12-49c6-b20d-47ea9c30b249") + (uuid "1f70dfa9-e8de-4baa-812c-0bdb4ba33f65") (effects (font (size 1.27 1.27) - (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 180) - (unlocked yes) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "258c911f-fb3e-48fc-a5c9-01fea0ec20cb") + (uuid "c94ba758-399e-45f3-9f49-64c217886ded") (effects (font (size 1.27 1.27) - (thickness 0.15) ) ) ) - (property "LCSC" "C8678" - (at 0 0 180) + (property "LCSC" "C1525" + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "b4f0a9e4-4094-4603-8ac7-d6744997ad8e") + (uuid "1fa02dcc-dcba-4d72-a1bf-d9b5a494d04c") (effects (font (size 1 1) @@ -7951,8 +7709,8 @@ ) ) ) - (property ki_fp_filters "TO-???* *_Diode_* *SingleDiode* D_*") - (path "/5d945569-8746-444d-bea2-1f1120629c77") + (property ki_fp_filters "C_*") + (path "/9e0e93aa-a28d-42c2-87a7-26eeb54946f3") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -7964,197 +7722,290 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -3.51 1.65) - (end 2 1.65) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "eaf5d78b-9912-4ad7-b2ca-7a34267caaaf") - ) - (fp_line - (start -3.51 -1.65) - (end 2 -1.65) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "dc6ea073-2ed8-4717-a7ae-469359b4f634") + (uuid "f127279d-3501-4ab1-97af-881a8a4f1891") ) (fp_line - (start -3.51 -1.65) - (end -3.51 1.65) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "8fd3167d-52ea-4a3c-a02e-85fc5370312c") + (uuid "8b00197a-f9e5-49d8-9e83-1457f47c9ec3") ) - (fp_line - (start 3.5 1.75) - (end -3.5 1.75) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "5d9dc42c-a6e9-48c7-ad50-44022b68e52f") + (uuid "a0ddf1b3-88d8-43b3-991b-e133aa19ca11") ) - (fp_line - (start 3.5 -1.75) - (end 3.5 1.75) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "2501f80e-9056-4861-81e9-2ee73588b393") + (fill no) + (layer "F.Fab") + (uuid "9ceabb2e-d36a-4ccf-b1e5-8f32d643a5aa") ) - (fp_line - (start -3.5 1.75) - (end -3.5 -1.75) - (stroke - (width 0.05) - (type solid) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "c1f98e75-7d72-4f39-bbb8-7369856981f4") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "2443d180-abc5-457d-a2b5-1a972517fe7b") ) - (fp_line - (start -3.5 -1.75) - (end 3.5 -1.75) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "c80a1371-8da7-4f18-a0f4-0c1ae2ea27d3") + (pad "1" smd roundrect + (at -0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/ENC_B") + (pintype "passive") + (uuid "5dd3ccd4-e599-48b1-8cf4-3da324f2b5d5") ) - (fp_line - (start 2.3 1.5) - (end -2.3 1.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "ec65dd20-143f-4ebf-b6f8-61df8fe8d440") + (pad "2" smd roundrect + (at 0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "431e4203-1e63-4156-86f6-d31c3a8ebb8e") ) - (fp_line - (start 2.3 -1.5) - (end 2.3 1.5) - (stroke - (width 0.1) - (type solid) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) ) - (layer "F.Fab") - (uuid "2c719273-e25e-4f22-b912-367bf5380569") - ) - (fp_line - (start 2.3 -1.5) - (end -2.3 -1.5) - (stroke - (width 0.1) - (type solid) + (scale + (xyz 1 1 1) ) - (layer "F.Fab") - (uuid "bfe9f6a0-f579-4602-a776-ab8344aa56ae") - ) - (fp_line - (start 0.50118 0.75032) - (end 0.50118 -0.79908) - (stroke - (width 0.1) - (type solid) + (rotate + (xyz 0 0 0) ) + ) + ) + (footprint "LED_SMD:LED_0603_1608Metric" + (layer "F.Cu") + (uuid "342065b2-fa11-400c-8f11-11830ede5818") + (at 147.9675 55.75 180) + (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf)") + (tags "LED") + (property "Reference" "D3" + (at 0 -1.43 0) + (layer "F.SilkS") + (hide yes) + (uuid "0b68fc87-adfe-4470-b580-cc64024a0eda") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "SSR" + (at 0 1.43 0) (layer "F.Fab") - (uuid "7294e202-841d-40c6-9ed5-de20b4235072") + (hide yes) + (uuid "6290bbfc-6341-45bd-bfd9-152d890a4b10") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "862cd957-35b5-499e-927a-d972f5096241") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "a92a5927-b4b4-403a-97ee-1838bfaeb5ad") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C2286" + (at 0 0 180) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "39d5a131-70d4-414a-a8ba-3ca50f2ff4c2") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "LED* LED_SMD:* LED_THT:*") + (path "/e804040e-fe0a-47ee-8147-3930133ad516") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 0.50118 0.00102) - (end 1.4994 0.00102) + (start 0.8 -0.735) + (end -1.485 -0.735) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "b2a7d224-0cf6-4253-b702-735b80f2c927") + (layer "F.SilkS") + (uuid "daa0ca83-1e13-4b02-8627-f2ec8f34e544") ) (fp_line - (start -0.64944 0.00102) - (end 0.50118 0.75032) + (start -1.485 0.735) + (end 0.8 0.735) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0132d012-b02d-4e1e-8f70-22af6dfea81d") + ) + (fp_line + (start -1.485 -0.735) + (end -1.485 0.735) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e92684c1-2c18-499c-b87b-d9861152ea64") + ) + (fp_rect + (start -1.48 -0.73) + (end 1.48 0.73) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "607a67e6-ebed-4ded-a050-baf5c1e81aa0") + ) + (fp_line + (start 0.8 0.4) + (end 0.8 -0.4) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "0d4c79c9-9cd3-4742-a088-d01f49ef1af9") + (uuid "95a49403-b5de-4a44-ac85-937fe3880ec5") ) (fp_line - (start -0.64944 0.00102) - (end 0.50118 -0.79908) + (start 0.8 -0.4) + (end -0.5 -0.4) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "77c621f5-adf2-4a37-87ad-9c3895c62e2c") + (uuid "93f69a13-197c-495c-a272-b978152f6f26") ) (fp_line - (start -0.64944 0.00102) - (end -1.55114 0.00102) + (start -0.5 -0.4) + (end -0.8 -0.1) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "6ca10b6e-0e3b-4026-9872-e14551717068") + (uuid "2bf0e6dc-3fdb-4093-936c-d194175e1b9c") ) (fp_line - (start -0.64944 -0.79908) - (end -0.64944 0.80112) + (start -0.8 0.4) + (end 0.8 0.4) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "c0e761c6-3723-46a4-bdb6-08fac7623328") + (uuid "91bc9f0c-07f2-4cf7-8c3f-e820413ab2ed") ) (fp_line - (start -2.3 1.5) - (end -2.3 -1.5) + (start -0.8 -0.1) + (end -0.8 0.4) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "141a9f62-0a9c-4369-8c59-dbc4ed21166d") + (uuid "0416d268-6397-4bca-baa7-68b3b2241785") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "6dcb6fdf-f36f-4fa7-b55a-c588e8ee4a6d") + (effects + (font + (size 0.4 0.4) + (thickness 0.06) + ) + ) ) (pad "1" smd roundrect - (at -2 0 180) - (size 2.5 1.8) + (at -0.7875 0 180) + (size 0.875 0.95) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.1388888889) - (net "+5V") + (roundrect_rratio 0.25) + (net "/SSR_DRV") (pinfunction "K_1") (pintype "passive") - (uuid "725c9a6f-f3c7-47d3-9687-f06a0e23c5b0") + (uuid "6cba3b67-59c1-4d45-ad74-1dc51e1bdca5") ) (pad "2" smd roundrect - (at 2 0 180) - (size 2.5 1.8) + (at 0.7875 0 180) + (size 0.875 0.95) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.1388888889) - (net "/VBUS") + (roundrect_rratio 0.25) + (net "Net-(D3-A)") (pinfunction "A_2") (pintype "passive") - (uuid "6df30b0e-c3c5-4815-8bce-d4cb1f39eb1d") + (uuid "45efda96-b335-41f0-89ec-7e4b38c0e635") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SMA.step" + (model "${KICAD10_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.step" (offset (xyz 0 0 0) ) @@ -8168,58 +8019,62 @@ ) (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "3e6db68d-7f54-4174-8e03-814c33fd0dc8") - (at 54.35 81.8) - (property "Reference" "TP26" + (uuid "3632b159-e0e2-4d52-a3bf-53092d37fdea") + (at 140 115.2) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP38" (at 0 -1.648 0) - (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "acc968e9-0dae-4d5a-ba08-47517a90e37a") + (uuid "c028cbd9-c94a-4def-bd82-710fd4af40d7") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "ENC_BTN" + (property "Value" "TC2_N" (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (layer "F.Fab") (hide yes) - (uuid "2fdbdc9e-cc17-4cc2-817b-ff842a763c73") + (uuid "22ba505c-e9d0-4ba4-944f-c996b34d2fbb") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) (property "Datasheet" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "a9bd87df-f00e-4f5d-8e81-41201edb2d11") + (uuid "69b650c3-a83a-4551-b92d-dfca1141d092") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "c5919b25-0d66-4e51-8acd-8022d54cfb03") + (uuid "42a2556b-4259-4fc1-8887-375150ac4ee2") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property ki_fp_filters "Pin* Test*") - (path "/705b95df-9081-4dda-8cc1-5b58b24c1ee2") + (path "/f8fd719f-eb33-4abe-9800-8198ee1388b3") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -8234,102 +8089,103 @@ (end 0.95 -0.95) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "fab242e5-6875-4054-b9e5-1d3dc6c3c6c5") + (uuid "5fefe91f-7814-4a60-8e53-f261792f2326") ) (fp_line (start -0.95 0.95) (end -0.95 -0.95) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "1e1455de-d270-4c5a-9925-b68cdd40d289") + (uuid "65dde0c4-3fa6-43e2-82f6-44107ae80635") ) (fp_line (start 0.95 -0.95) (end 0.95 0.95) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "18c6661e-4537-43c3-bd73-4c1b283fb07c") + (uuid "245e6b50-36de-41ab-8521-9ea7341af308") ) (fp_line (start 0.95 0.95) (end -0.95 0.95) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "0b08c799-5129-4212-b7bf-a92b2861b3d6") + (uuid "9b33cb55-2cc1-438f-aed3-099033268fd7") ) (fp_line (start -1.25 -1.25) (end -1.25 1.25) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "f46cc5f5-7028-428a-bdc3-13998a840071") + (uuid "4d38a1d5-ef96-4960-b5b2-795370b6eece") ) (fp_line (start -1.25 -1.25) (end 1.25 -1.25) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "d30cb81f-fa22-4353-beac-6c4def6adb0b") + (uuid "2c74832d-1aeb-4459-a43a-3e6aebbe75bf") ) (fp_line (start 1.25 1.25) (end -1.25 1.25) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "88edf9a7-8ad2-42d8-bca9-7d5229be3cac") + (uuid "5b1a8939-9a70-43a0-af4f-d8fbd617c3bc") ) (fp_line (start 1.25 1.25) (end 1.25 -1.25) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "193b9082-5738-4dc0-bfc0-c4feddcb1682") + (uuid "9a7282d7-7067-420a-bc89-877281221453") ) (pad "1" smd rect (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") - (net "/ENC_BTN") + (net "/TC2_N") (pinfunction "1_1") (pintype "passive") - (uuid "f7637181-1a1e-49d5-aaa6-c8fa0c744319") + (uuid "b0365a8a-d905-41f2-a9c2-e3a999083eea") ) (embedded_fonts no) ) - (footprint "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "3e9f5cb0-4a8d-4659-adb5-1e3e2e2d9364") - (at 104.6 48.3) - (descr "Through hole straight pin header, 1x06, 2.54mm pitch, single row") - (tags "Through hole pin header THT 1x06 2.54mm single row") - (property "Reference" "J11" - (at 0 -2.38 0) + (uuid "377934f4-50e4-4d52-ad6a-8a5ee4ad1ea7") + (at 139.55 84.21 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R24" + (at 0.93 -0.47 90) (layer "F.SilkS") - (uuid "967ea035-321f-404f-ab2a-ef98a8914f72") + (hide yes) + (uuid "fa619c11-ed23-492e-95a0-36e2e9765729") (effects (font (size 1 1) @@ -8337,10 +8193,11 @@ ) ) ) - (property "Value" "UART / EXPANSION" - (at 0 15.08 0) + (property "Value" "10k" + (at 0 1.17 90) (layer "F.Fab") - (uuid "0696aba8-53cf-4216-8dc1-59c4643a8265") + (hide yes) + (uuid "fcec2eff-a087-4ddf-be4b-7005014097b9") (effects (font (size 1 1) @@ -8349,10 +8206,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "cbe89fd8-3f53-40f7-8587-b5a933a3aaa5") + (uuid "3956a1ca-1d2a-4c06-b818-94b792b38f87") (effects (font (size 1.27 1.27) @@ -8360,22 +8217,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "3e2520ea-ab50-4469-a611-53833ab9e4cb") + (uuid "54abf4d7-c8b0-413d-b518-9952b7d5ef6d") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C492405" - (at 0 0 0) + (property "LCSC" "C25744" + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "e47c7f0d-7af0-4d72-a241-76d02d98f577") + (uuid "b5777808-48a5-4ff1-b593-6bfbb8767268") (effects (font (size 1 1) @@ -8383,218 +8240,91 @@ ) ) ) - (property ki_fp_filters "Connector*:*_1x??_*") - (path "/c7e52ed3-c682-46dc-a40c-3d327f0a3487") + (property ki_fp_filters "R_*") + (path "/c00c0283-800e-4fe2-854f-e479c68d6969") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2" "3" "4" "5" "6") + (pins "1" "2") ) ) - (attr through_hole) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -1.38 -1.38) - (end 0 -1.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "6b88f451-93b8-44dc-ab52-14067970d29a") - ) - (fp_line - (start -1.38 0) - (end -1.38 -1.38) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "edac7a4a-7372-405f-9897-4f1d944bfc57") - ) - (fp_line - (start -1.38 1.27) - (end -1.38 14.08) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "522d57fb-26fc-4d28-9a7f-40fbcc0ab7fe") - ) - (fp_line - (start -1.38 1.27) - (end 1.38 1.27) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "915932fb-ab55-4d94-997f-681156b325f1") - ) - (fp_line - (start -1.38 14.08) - (end 1.38 14.08) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "0f6bd46f-26f8-460b-b5a7-44ef7bcf13fc") + (uuid "091ecd32-ffb2-4f58-a5d9-21e12138222a") ) (fp_line - (start 1.38 1.27) - (end 1.38 14.08) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "d4f82cce-2f55-4c52-a44c-c9ea497c1bd4") + (uuid "72eff339-e9b3-4ecb-b884-da976fb33eb6") ) (fp_rect - (start -1.77 -1.77) - (end 1.77 14.47) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "c7191b7a-0e6e-42a2-8ac7-dc9002bb62af") - ) - (fp_line - (start -1.27 -0.635) - (end -0.635 -1.27) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "172e5af0-fe8d-47a6-b86b-f2c886fc1692") - ) - (fp_line - (start -1.27 13.97) - (end -1.27 -0.635) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "79084287-b544-4ed5-b6d1-61f94ee9ce72") - ) - (fp_line - (start -0.635 -1.27) - (end 1.27 -1.27) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "fc890f94-5519-4bb2-92f0-acc9752aa95b") - ) - (fp_line - (start 1.27 -1.27) - (end 1.27 13.97) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "c65982b6-c10e-4858-b84d-742f064477a2") + (uuid "2db60cfc-6a3c-40df-8a51-9836ccda29ee") ) - (fp_line - (start 1.27 13.97) - (end -1.27 13.97) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "b0d98fdf-0698-41ce-b5b0-6e11a841e671") + (uuid "16276b33-e1e3-4cff-97fa-ea6f0b752310") ) (fp_text user "${REFERENCE}" - (at 0 6.35 90) + (at 0 0 90) (layer "F.Fab") - (uuid "6ee67aa0-181c-4c4b-bc89-7982ff5e2374") + (uuid "dea3ca09-2802-42cc-b36b-53dffa336fd4") (effects (font - (size 1 1) - (thickness 0.15) + (size 0.26 0.26) + (thickness 0.04) ) ) ) - (pad "1" thru_hole rect - (at 0 0) - (size 1.7 1.7) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "Pin_1_1") - (pintype "passive") - (uuid "226631cc-80f5-4c7f-ad5e-d2ba21ae8e23") - ) - (pad "2" thru_hole circle - (at 0 2.54) - (size 1.7 1.7) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) + (pad "1" smd roundrect + (at -0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) (net "+3.3V") - (pinfunction "Pin_2_2") - (pintype "passive") - (uuid "dfbec8be-2383-49d6-b861-620ec1e00883") - ) - (pad "3" thru_hole circle - (at 0 5.08) - (size 1.7 1.7) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/UART_TXD0") - (pinfunction "Pin_3_3") - (pintype "passive") - (uuid "4db89d78-0f7f-4c40-ab21-48141d6996e7") - ) - (pad "4" thru_hole circle - (at 0 7.62) - (size 1.7 1.7) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/UART_RXD0") - (pinfunction "Pin_4_4") (pintype "passive") - (uuid "2df02a8c-a2ad-45ab-bcc3-64d8f28d7bb4") - ) - (pad "5" thru_hole circle - (at 0 10.16) - (size 1.7 1.7) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/EXP_IO2") - (pinfunction "Pin_5_5") - (pintype "passive") - (uuid "b60bb233-0670-4606-a6f3-485962b6635a") + (uuid "1263434f-a6ab-409a-80a2-959431abd454") ) - (pad "6" thru_hole circle - (at 0 12.7) - (size 1.7 1.7) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/EXP_IO42") - (pinfunction "Pin_6_6") + (pad "2" smd roundrect + (at 0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/VBIAS") (pintype "passive") - (uuid "2ded1fae-153d-456b-ac8a-0175c0f10fef") + (uuid "65238be3-80b9-4bc9-a65b-1ecafbf9dbe7") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x06_P2.54mm_Vertical.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -8608,15 +8338,15 @@ ) (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "3f89af37-a2cf-4258-9ca5-ac4e78c8b45b") - (at 108.25 49.51 -90) + (uuid "39443f2a-a5b4-4d44-bcf1-957529ed877e") + (at 139.55 86.19 -90) (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "resistor") - (property "Reference" "R23" + (property "Reference" "R25" (at 0 -1.17 90) (layer "F.SilkS") (hide yes) - (uuid "23139c1a-9cf1-4117-acc1-96edeed09553") + (uuid "b2d88d8f-760f-4b75-b979-589cd83c2b5f") (effects (font (size 1 1) @@ -8628,7 +8358,7 @@ (at 0 1.17 90) (layer "F.Fab") (hide yes) - (uuid "70bf3997-a584-4556-bf19-81ccd90e4773") + (uuid "f99077e5-b535-42ec-894c-07fd44e55b7e") (effects (font (size 1 1) @@ -8640,7 +8370,7 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "40f9eca7-584e-4b31-bddb-e65359563e44") + (uuid "180aa3a4-5346-49cc-afa3-2740f4aa4e36") (effects (font (size 1.27 1.27) @@ -8651,7 +8381,7 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "1dd99198-764d-46e7-ae5b-4bac80af3fb3") + (uuid "57754829-f3cb-4d34-b75f-a719f850cf85") (effects (font (size 1.27 1.27) @@ -8663,7 +8393,7 @@ (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "925bb122-6679-43b6-8940-7a7a82cf8a9b") + (uuid "2e55567f-733d-4dd3-823f-4a1da2a4fc0d") (effects (font (size 1 1) @@ -8672,7 +8402,7 @@ ) ) (property ki_fp_filters "R_*") - (path "/26338c36-647b-4cc7-92c7-ba21de6fb1dc") + (path "/3296a42d-7708-44da-9f27-f55acf086dfe") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -8691,7 +8421,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "13ab73f6-fd60-4828-bafb-7ebfe69c85ee") + (uuid "98d70a39-aacc-4379-8154-08d40ac6bd54") ) (fp_line (start -0.153641 -0.38) @@ -8701,7 +8431,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "3532e815-cc2b-4fb2-b0e2-6baf8c2583db") + (uuid "553d6226-c061-4d2e-b8e2-c61409e83024") ) (fp_rect (start -0.93 -0.47) @@ -8712,7 +8442,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "2d54ab8e-fa52-449b-9673-7dd0390dc9b0") + (uuid "8432494e-3a5b-4727-ba62-90ab10130edf") ) (fp_rect (start -0.525 -0.27) @@ -8723,12 +8453,12 @@ ) (fill no) (layer "F.Fab") - (uuid "625b95d6-005e-450f-9305-5de5c7bb3d0d") + (uuid "35237413-aeb1-472e-9639-dcb0d49d160f") ) (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") - (uuid "c903380b-d2fa-4695-a2a8-585ba7ba1984") + (uuid "a1e51b58-e6da-48ba-95dc-58e0050d4416") (effects (font (size 0.26 0.26) @@ -8741,9 +8471,9 @@ (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "Net-(Q4-G)") + (net "/VBIAS") (pintype "passive") - (uuid "723d33e7-b4ed-4b2d-98bf-690a759de0c8") + (uuid "220e6e3f-27ce-4243-8402-8ed41c682e82") ) (pad "2" smd roundrect (at 0.51 0 270) @@ -8752,7 +8482,7 @@ (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "dd921d54-e03f-4919-a19d-9059cb1dcd1e") + (uuid "eb6b8304-e34c-4b48-87b2-c022c1e43c93") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" @@ -8767,41 +8497,40 @@ ) ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "45dec25d-e9b5-4e01-9dcd-65cc096461da") - (at 139.5175 110.77 90) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C14" - (at 0 -1.16 90) + (uuid "3b6d0740-a4d9-4a8f-9537-142ce10937b1") + (at 117.75 83) + (property "Reference" "TP33" + (at 0 -1.648 0) + (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "dbd5951a-b88c-476b-966d-46fbec703a83") + (uuid "b683000a-3e45-4aec-930d-5768c0e135fd") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "10nF" - (at 0 1.16 90) - (layer "F.Fab") + (property "Value" "ESP32_IO0" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") (hide yes) - (uuid "6f099568-98f0-47d5-a681-71edab51ee2d") + (uuid "1e910c73-c7a2-4012-bd47-4b7234d2fa40") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "eeed955b-59ff-4141-bf24-a8f796afd40e") + (uuid "ed7c1fd9-7aef-4953-9385-15021f52b7cb") (effects (font (size 1.27 1.27) @@ -8809,158 +8538,165 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "baab8e62-2b55-4f1f-af6e-c071c0d02fde") + (uuid "347bf8fe-a600-4d6e-b1e4-af8d5b45cc5a") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C15195" - (at 0 0 90) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "09c7e2f2-3e44-436e-bba4-29bb68ed12ba") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "C_*") - (path "/e40a3586-395b-4500-949b-93df9dcc97b9") + (property ki_fp_filters "Pin* Test*") + (path "/1a4e3a6a-f969-403a-8a63-045dca112a9c") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "abcdcc78-3f17-4473-b89f-545820fa7ff5") + (uuid "dc095879-c7bf-4632-9fe9-258287327e1c") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "6964c42e-1a4b-4136-ad36-a0b55aa68e75") + (uuid "84c75637-5db9-4252-98ab-8697f276ff22") ) - (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "1094add1-83cd-401a-b985-2a9d106c29ae") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "fbf92fb7-134e-4da6-ba6a-527a8899013a") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) - (fill no) (layer "F.CrtYd") - (uuid "c1bff43b-5a4e-4af9-a385-f8aa0d45a915") + (uuid "efbafbd8-75f2-41e7-837b-12f4dcebb21c") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) ) - (fill no) - (layer "F.Fab") - (uuid "2e2579ef-82db-450d-b612-e3d6d56aebba") + (layer "F.CrtYd") + (uuid "7bb76a60-2c85-4351-99f0-58d8f88bf6cd") + ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "3588223d-f786-413e-9207-39dcfb7e51a1") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "23c213d7-2181-4044-a393-524aceeeeb77") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 0 -1.65 0) + (unlocked yes) (layer "F.Fab") - (uuid "f39b4e63-facf-41df-a577-9f8df0d94869") + (uuid "e262168b-288e-4df4-bc64-3a306734a365") (effects (font - (size 0.25 0.25) - (thickness 0.04) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.48 0 90) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_TP") - (pintype "passive") - (uuid "47dc3e89-2f76-4bd0-9cee-f9da6e74aba2") - ) - (pad "2" smd roundrect - (at 0.48 0 90) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_TN") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/ESP32_IO0") + (pinfunction "1_1") (pintype "passive") - (uuid "9b613b89-8d8f-4a7d-8c4d-54004a60af65") + (uuid "7520603a-2585-4f8d-ab80-c6710e302cee") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "4646ae9f-5939-4be1-ac52-f921a3e537e7") - (at 145.7175 64.75 90) - (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") - (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") - (property "Reference" "J6" - (at 2.25 -5.12 90) + (uuid "3beef407-38aa-499d-b944-da10c6046072") + (at 139.85 103.45) + (property "Reference" "TP28" + (at 0 -1.648 0) + (unlocked yes) (layer "F.SilkS") - (uuid "12aabb5d-44e3-4ed3-9b02-bda2a1946b93") + (hide yes) + (uuid "ccdee414-3a88-494d-ac12-f9dc20425444") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "SSR1 CTRL" - (at 2.25 4.92 90) - (layer "F.Fab") - (uuid "22444430-3500-4927-b3a5-48a95bb344a8") + (property "Value" "TC1_N" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "81caae0b-9cb5-4c30-8b48-49ef0147b37d") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "3e709058-57ff-4e53-ba60-47789335065d") + (uuid "3a9aa953-48e3-4cd9-9fed-aed391a29879") (effects (font (size 1.27 1.27) @@ -8968,350 +8704,416 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "ddfeb8a0-3c87-436f-8597-c0e0a3e0e8b6") + (uuid "46ea3173-e3e3-4d3a-beb8-538700c21440") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C474881" - (at 0 0 90) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "5658edb1-9f8a-4060-9a27-4741264b19c9") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "TerminalBlock*:*") - (path "/19404298-16e8-4cfa-b0ee-a87e45e2497a") + (property ki_fp_filters "Pin* Test*") + (path "/8605ad44-4be5-4f56-98fe-78fe69fcdf74") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 7.62 -4.12) - (end 7.62 3.92) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "3af8d022-06a0-425d-a8ca-deb6ad494fea") + (uuid "4147c674-0c29-4475-ade9-7034c91c1214") ) (fp_line - (start -3.12 -4.12) - (end 7.62 -4.12) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "b981012f-9793-4827-818d-5b80edaf1898") + (uuid "373f9c49-b36a-414e-b3dd-976cd456fbe3") ) (fp_line - (start 6.812 -0.5) - (end 7.62 -0.5) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "7f77c082-722c-4b15-bb56-8ffe2938c475") + (uuid "a1cebd2e-bdfb-42a7-8dcc-938f64592b61") ) (fp_line - (start 1.88 -0.5) - (end 3.188 -0.5) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "3c4df44a-2630-4734-8693-62fafa32b56e") + (uuid "3002c8f2-f5b9-43ac-a157-0f46399a951b") ) (fp_line - (start -3.12 -0.5) - (end -1.88 -0.5) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "460baf66-0b39-4b76-b629-a5cfcf0da72a") + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "1085f87e-e865-4090-9230-c83800f8c0d7") ) (fp_line - (start 6.812 0.5) - (end 7.62 0.5) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.12) - (type solid) + (width 0.05) + (type default) ) - (layer "F.SilkS") - (uuid "680f23a1-f027-4848-b364-8aa71d8bb36b") + (layer "F.CrtYd") + (uuid "bb74eb63-0b92-4fc5-9ed7-ed9828336274") ) (fp_line - (start 1.88 0.5) - (end 3.188 0.5) + (start 1.25 1.25) + (end -1.25 1.25) (stroke - (width 0.12) - (type solid) + (width 0.05) + (type default) ) - (layer "F.SilkS") - (uuid "a1e34abf-99c5-45d5-9ad3-ad1db4b01d02") + (layer "F.CrtYd") + (uuid "61fb4251-d1f7-40f6-8f73-4973ef5175c7") ) (fp_line - (start -3.12 0.5) - (end -1.88 0.5) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke - (width 0.12) - (type solid) + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "39759a60-d7d0-4cd3-9ab5-57d4a26ae567") + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC1_N") + (pinfunction "1_1") + (pintype "passive") + (uuid "b0384971-9a65-4e72-afba-b3a06986c08e") + ) + (embedded_fonts no) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "3dc2dfff-34bb-4dbc-9bd7-765878f5342a") + (at 135.78 58.24 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R13" + (at 0 -1.17 90) (layer "F.SilkS") - (uuid "60162d5f-2393-405c-a008-a8bf5a115faf") + (hide yes) + (uuid "197951cb-9a9e-4df1-b24c-8d31858e4526") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (fp_line - (start 5.543 1.8) - (end 7.62 1.8) - (stroke - (width 0.12) - (type solid) + (property "Value" "100R" + (at 0 1.17 90) + (layer "F.Fab") + (hide yes) + (uuid "b075a5e5-9cf1-4967-aefd-1ebd960bacda") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.SilkS") - (uuid "84807c2c-0513-43fc-b063-c77d374c9711") ) - (fp_line - (start 1.88 1.8) - (end 4.457 1.8) - (stroke - (width 0.12) - (type solid) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "1a2d9cdf-2308-4de2-8e3d-fbf63357d33b") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.SilkS") - (uuid "a9fc5b4a-637f-4efc-8b01-9b0d9e7fd65f") ) - (fp_line - (start -3.12 1.8) - (end -1.88 1.8) - (stroke - (width 0.12) - (type solid) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "7ecfb72d-4e87-4b6d-9e8b-7ef9a82b3086") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.SilkS") - (uuid "a146df8b-9e1a-45a8-aa81-c28a751b8fbb") ) - (fp_line - (start 7.62 3.92) - (end 0.3 3.92) - (stroke - (width 0.12) - (type solid) + (property "LCSC" "C25076" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "7ed718d1-cd68-47a8-ad90-dbdc60af3f78") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.SilkS") - (uuid "9c0c89a4-a0ce-43b4-8a20-a9431512c31f") ) - (fp_line - (start -0.3 3.92) - (end -3.12 3.92) - (stroke - (width 0.12) - (type solid) + (property ki_fp_filters "R_*") + (path "/2c7b9496-f6c1-4901-b36e-a2b31a7f36d6") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") ) - (layer "F.SilkS") - (uuid "0f2147ae-f497-4076-8d6f-80cd7de3d86a") ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -3.12 3.92) - (end -3.12 -4.12) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "b5050fc1-33a2-47e2-bb3d-7934b454b288") + (uuid "7095111c-f457-4826-8c48-a4ee197f4363") ) - (fp_poly - (pts - (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) - ) + (fp_line + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) - (fill yes) (layer "F.SilkS") - (uuid "d014a26f-1387-4c9b-99b9-b7721266187a") + (uuid "f64478b1-9576-46bd-97bb-c1b7dbb1f5dc") ) (fp_rect - (start -3.5 -4.5) - (end 8 4.31) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "d419062f-c58b-41b7-8e33-129c726c847c") + (uuid "9515e66a-128f-44bc-a465-b492fa9908b0") ) - (fp_line - (start 7.5 -4) - (end 7.5 3.8) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "7b34a65f-080c-45c9-bd8d-9a498473ea32") + (uuid "d6190abb-3ded-4aed-bc82-49e50c816226") ) - (fp_line - (start -3 -4) - (end 7.5 -4) - (stroke - (width 0.1) - (type solid) - ) + (fp_text user "${REFERENCE}" + (at 0 0 90) (layer "F.Fab") - (uuid "90214837-9332-4c3f-8796-183007d62556") - ) - (fp_line - (start 6.018 -1.213) - (end 3.787 1.018) - (stroke - (width 0.1) - (type solid) + (uuid "f39e8338-3b29-4b99-9c38-76e51f010077") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) ) - (layer "F.Fab") - (uuid "1220c82f-703f-4dfc-8ade-36f59e8dcb9f") ) - (fp_line - (start 1.018 -1.213) - (end -1.213 1.018) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "4eccbe91-f12a-4247-92ce-b2f438731edc") + (pad "1" smd roundrect + (at -0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/SSR") + (pintype "passive") + (uuid "c01bb848-c574-4612-ae92-eb289808212e") ) - (fp_line - (start 6.213 -1.018) - (end 3.982 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "7411038b-d3c1-45d8-9072-b6ad69c60d9c") + (pad "2" smd roundrect + (at 0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(Q1-G)") + (pintype "passive") + (uuid "8b08830a-0bc4-4f2c-bb48-a097bd0df78d") ) - (fp_line - (start 1.213 -1.018) - (end -1.018 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "bff13d24-00de-4625-8162-bcb385cefea4") + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) ) - (fp_line - (start -3 -0.5) - (end 7.5 -0.5) - (stroke - (width 0.1) - (type solid) + ) + (footprint "Buzzer_Beeper:Buzzer_12x9.5RM7.6" + (layer "F.Cu") + (uuid "3dd08d8b-dc73-46cd-8b61-cf85afa3dbcb") + (at 121.1 61.5 90) + (property "Reference" "BZ1" + (at 3.8 -7.199999 90) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "550175ee-b050-488b-b7a9-921673908668") + (effects + (font + (size 1 1) + (line_spacing 0) + ) ) - (layer "F.Fab") - (uuid "75c69a4d-21ef-4e2f-b438-9afca9654d4a") ) - (fp_line - (start -3 0.5) - (end 7.5 0.5) - (stroke - (width 0.1) - (type solid) + (property "Value" "TMB12A05 5V" + (at 3.8 7.4 90) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "e0b54514-2944-42a3-b611-ef38be302ab7") + (effects + (font + (size 1 1) + (line_spacing 0) + ) ) + ) + (property "Datasheet" "" + (at 0 0 90) (layer "F.Fab") - (uuid "87b2e1af-13ef-430b-841c-06707eda422c") + (hide yes) + (uuid "be9cd5ec-1470-420f-9842-90e276fc8a70") + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fp_line - (start -3 1.8) - (end 7.5 1.8) - (stroke - (width 0.1) - (type solid) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "d0a81f1b-ef75-4456-92b4-355ddfd9ba2e") + (effects + (font + (size 1.27 1.27) + ) ) + ) + (property "LCSC" "C96093" + (at 0 0 90) + (unlocked yes) (layer "F.Fab") - (uuid "fd578cbf-058c-479e-af75-0c907e1b3fe3") + (hide yes) + (uuid "a3265a0d-7b7a-46ad-a878-7e623011036c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (fp_line - (start -3 1.85) - (end -3 -4) - (stroke - (width 0.1) - (type solid) + (property ki_fp_filters "*Buzzer*") + (path "/9acb4869-677e-488a-99ba-8e3a611f3bf3") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") ) - (layer "F.Fab") - (uuid "33ae167f-34fa-4b50-8d53-ae2af4e9f1f1") ) - (fp_line - (start 7.5 3.8) - (end -1.05 3.8) + (duplicate_pad_numbers_are_jumpers no) + (fp_circle + (center 3.8 0) + (end 9.9 0) (stroke - (width 0.1) - (type solid) + (width 0.12) + (type default) ) - (layer "F.Fab") - (uuid "1e4f397c-a5a7-48ca-b35d-e8dd265afda2") + (fill no) + (layer "F.SilkS") + (uuid "e7246481-5370-447f-a1bd-7880dc0fe8f6") ) - (fp_line - (start -1.05 3.8) - (end -3 1.85) + (fp_circle + (center 3.8 0) + (end 10.05 0) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) ) - (layer "F.Fab") - (uuid "b8470621-7c84-4977-80b2-b66f0c425ca3") + (fill no) + (layer "F.CrtYd") + (uuid "49568163-b65d-4480-a4fd-ccb27dbd5a87") ) (fp_circle - (center 5 0) - (end 6.6 0) + (center 3.8 0) + (end 9.8 0) (stroke (width 0.1) - (type solid) + (type default) ) (fill no) (layer "F.Fab") - (uuid "1e8f9d3d-6bb5-4426-ad79-99b8194b3344") + (uuid "92570fb2-f96d-4779-8268-1b0cccbb329c") ) (fp_circle - (center 0 0) - (end 1.6 0) + (center 3.8 0) + (end 4.8 0) (stroke (width 0.1) - (type solid) + (type default) ) (fill no) (layer "F.Fab") - (uuid "8c11a5e0-f79a-49d1-a7b7-ab61e1a27033") + (uuid "f7be58b9-f940-4a37-9df0-5fa22c31880a") + ) + (fp_text user "+" + (at -0.01 -2.54 90) + (unlocked yes) + (layer "F.SilkS") + (uuid "37c5ff6f-98f6-40cc-bc30-f3d90c377f0e") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) (fp_text user "${REFERENCE}" - (at 2.25 2.65 90) + (at 3.8 -4 90) + (unlocked yes) (layer "F.Fab") - (uuid "69e70082-9d67-4650-8bde-e53971efea7a") + (uuid "7f8807d6-9b61-42ba-8f34-9ef5420ebe76") (effects (font (size 1 1) @@ -9319,52 +9121,53 @@ ) ) ) - (pad "1" thru_hole roundrect + (fp_text user "+" + (at -0.01 -2.54 90) + (unlocked yes) + (layer "F.Fab") + (uuid "fbc8eeae-5834-4726-939b-32ac6a2ecc91") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole rect (at 0 0 90) - (size 2.8 2.8) - (drill 1.3) + (size 2 2) + (drill 1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) - (roundrect_rratio 0.089286) (net "+5V") - (pinfunction "Pin_1_1") + (pinfunction "+_1") (pintype "passive") - (uuid "9ea2e990-5b98-4334-8861-bce9474c1591") + (uuid "e28a4f1a-ba40-4fa3-b71f-98dbaac01978") ) (pad "2" thru_hole circle - (at 5 0 90) - (size 2.8 2.8) - (drill 1.3) + (at 7.6 0 90) + (size 2 2) + (drill 1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) - (net "/SSR1_DRV") - (pinfunction "Pin_2_2") + (net "/ALARM_DRV") + (pinfunction "-_2") (pintype "passive") - (uuid "6c934f02-ae52-4634-87ee-fd78f0950d8c") + (uuid "7715f067-dabc-485c-9813-10ec6fa2daa8") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "Package_TO_SOT_SMD:SOT-23" + (footprint "Diode_SMD:D_SMA" (layer "F.Cu") - (uuid "47e9c589-3405-4d86-a499-9dcb2fc64916") - (at 110.9375 49.05) - (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") - (tags "SOT TO_SOT_SMD") - (property "Reference" "Q4" - (at 0 -2.4 0) + (uuid "3dd701f5-eee3-4ed3-95df-b726f4d06d26") + (at 54.2 56.4 180) + (descr "Diode SMA (DO-214AC)") + (tags "Diode SMA (DO-214AC)") + (property "Reference" "D2" + (at 0 -2.5 0) (layer "F.SilkS") - (uuid "5813bab9-0f0b-43c8-a0d7-68c4a428b59b") + (hide yes) + (uuid "93b1be57-a522-4a7a-8064-419dd780d6ad") (effects (font (size 1 1) @@ -9372,10 +9175,11 @@ ) ) ) - (property "Value" "AO3400A" - (at 0 2.4 0) + (property "Value" "SS34" + (at 0 2.6 0) (layer "F.Fab") - (uuid "64dd6fec-a648-4242-9dbc-c5d2f94c5387") + (hide yes) + (uuid "e203aae9-a371-4f81-b5d7-4ad347ae1949") (effects (font (size 1 1) @@ -9384,33 +9188,37 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 180) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "86ebac50-159e-4495-9b5c-515dbd4fdf9c") + (uuid "c5135037-2d12-49c6-b20d-47ea9c30b249") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 180) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "d992e923-5cd6-48ff-a737-a4a60d5e6d14") + (uuid "258c911f-fb3e-48fc-a5c9-01fea0ec20cb") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property "LCSC" "C20917" - (at 0 0 0) + (property "LCSC" "C8678" + (at 0 0 180) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "53f7f169-0e84-4f75-927e-d4fffe786e51") + (uuid "b4f0a9e4-4094-4603-8ac7-d6744997ad8e") (effects (font (size 1 1) @@ -9418,314 +9226,210 @@ ) ) ) - (path "/3301693c-7eb6-4965-a063-5d0fb0f45076") + (property ki_fp_filters "TO-???* *_Diode_* *SingleDiode* D_*") + (path "/5d945569-8746-444d-bea2-1f1120629c77") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "3" "2") + (pins "1" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.76 -1.56) - (end 0.76 -1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "5a0b8c6e-203c-4c7f-ab3d-b8c05a1a108e") - ) - (fp_line - (start -0.76 -1.51) - (end -0.76 -1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "61c7cc2f-3ce0-4360-a0b4-53fdef7710e1") - ) - (fp_line - (start -0.76 0.39) - (end -0.76 -0.39) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "c88635da-9875-4bc4-bfb5-30af6af6ec8f") - ) - (fp_line - (start -0.76 1.56) - (end -0.76 1.51) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "3a486c94-bd04-451b-8bab-65245a384a3b") - ) - (fp_line - (start 0.76 -1.56) - (end 0.76 -0.56) + (start -3.51 1.65) + (end 2 1.65) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "b900a583-521c-47a8-b4c0-a5f7aa9e38b7") + (uuid "eaf5d78b-9912-4ad7-b2ca-7a34267caaaf") ) (fp_line - (start 0.76 0.56) - (end 0.76 1.56) + (start -3.51 -1.65) + (end 2 -1.65) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "2d435968-4bf4-44fc-b786-b528fd390026") + (uuid "dc6ea073-2ed8-4717-a7ae-469359b4f634") ) (fp_line - (start 0.76 1.56) - (end -0.76 1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "19c51b35-0ce3-41e2-9c2d-bf6ca9d0456e") - ) - (fp_poly - (pts - (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) - ) + (start -3.51 -1.65) + (end -3.51 1.65) (stroke (width 0.12) (type solid) ) - (fill yes) (layer "F.SilkS") - (uuid "9c677b84-5326-4189-ad14-43230911acef") - ) - (fp_line - (start -1.93 -1.5) - (end -0.9 -1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "e11aba82-1d60-4817-83b5-e5d098bed8e1") - ) - (fp_line - (start -1.93 -0.39) - (end -1.93 -1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "8d4f09b3-250d-4d22-9165-374ea2a5424f") + (uuid "8fd3167d-52ea-4a3c-a02e-85fc5370312c") ) (fp_line - (start -1.93 0.39) - (end -0.9 0.39) + (start 3.5 1.75) + (end -3.5 1.75) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "fd538ce3-b051-4728-986a-a51d84ff066e") + (uuid "5d9dc42c-a6e9-48c7-ad50-44022b68e52f") ) (fp_line - (start -1.93 1.5) - (end -1.93 0.39) + (start 3.5 -1.75) + (end 3.5 1.75) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "73e21a84-97c0-49a0-8bf2-7657a782f5e3") + (uuid "2501f80e-9056-4861-81e9-2ee73588b393") ) (fp_line - (start -0.9 -1.7) - (end 0.9 -1.7) + (start -3.5 1.75) + (end -3.5 -1.75) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "b6a68402-3d28-4fbc-a89b-c731bd5182fb") + (uuid "2443d180-abc5-457d-a2b5-1a972517fe7b") ) (fp_line - (start -0.9 -1.5) - (end -0.9 -1.7) + (start -3.5 -1.75) + (end 3.5 -1.75) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "5f8a427c-add0-4ab2-894e-84f1e8c4b513") + (uuid "c80a1371-8da7-4f18-a0f4-0c1ae2ea27d3") ) (fp_line - (start -0.9 -0.39) - (end -1.93 -0.39) + (start 2.3 1.5) + (end -2.3 1.5) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "3fc09e57-f96b-4a4a-a878-7dc1eb76f2cc") + (layer "F.Fab") + (uuid "ec65dd20-143f-4ebf-b6f8-61df8fe8d440") ) (fp_line - (start -0.9 0.39) - (end -0.9 -0.39) + (start 2.3 -1.5) + (end 2.3 1.5) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "918599ed-b2e1-4590-aacf-fce6307d4621") + (layer "F.Fab") + (uuid "2c719273-e25e-4f22-b912-367bf5380569") ) (fp_line - (start -0.9 1.5) - (end -1.93 1.5) + (start 2.3 -1.5) + (end -2.3 -1.5) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "fcf69cd1-749d-463f-8298-6fb761bd36f8") + (layer "F.Fab") + (uuid "bfe9f6a0-f579-4602-a776-ab8344aa56ae") ) (fp_line - (start -0.9 1.7) - (end -0.9 1.5) + (start 0.50118 0.75032) + (end 0.50118 -0.79908) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "01a24a20-bcd9-43d3-9af9-e1046291b8cf") + (layer "F.Fab") + (uuid "7294e202-841d-40c6-9ed5-de20b4235072") ) (fp_line - (start 0.9 -1.7) - (end 0.9 -0.55) + (start 0.50118 0.00102) + (end 1.4994 0.00102) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "023365a8-b937-4a8c-8773-386b18a2b2a8") + (layer "F.Fab") + (uuid "b2a7d224-0cf6-4253-b702-735b80f2c927") ) (fp_line - (start 0.9 -0.55) - (end 1.93 -0.55) + (start -0.64944 0.00102) + (end 0.50118 0.75032) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "e3851553-ffb1-4ca6-ac36-05357acf944c") + (layer "F.Fab") + (uuid "0d4c79c9-9cd3-4742-a088-d01f49ef1af9") ) (fp_line - (start 0.9 0.55) - (end 0.9 1.7) + (start -0.64944 0.00102) + (end 0.50118 -0.79908) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "ba5936a1-e0bb-4e7a-a018-f07f8c99f926") + (layer "F.Fab") + (uuid "77c621f5-adf2-4a37-87ad-9c3895c62e2c") ) (fp_line - (start 0.9 1.7) - (end -0.9 1.7) + (start -0.64944 0.00102) + (end -1.55114 0.00102) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "05c45573-d4ad-4b2d-b716-76c64002a343") + (layer "F.Fab") + (uuid "6ca10b6e-0e3b-4026-9872-e14551717068") ) (fp_line - (start 1.93 -0.55) - (end 1.93 0.55) + (start -0.64944 -0.79908) + (end -0.64944 0.80112) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "e8c1f9c2-32e3-4fd8-bda9-745c88e9c387") + (layer "F.Fab") + (uuid "c0e761c6-3723-46a4-bdb6-08fac7623328") ) (fp_line - (start 1.93 0.55) - (end 0.9 0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "40ff9892-f530-4953-9156-1a3aa6141481") - ) - (fp_poly - (pts - (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) - ) + (start -2.3 1.5) + (end -2.3 -1.5) (stroke (width 0.1) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "04084dc9-ab36-4294-9c76-d881bfa384c9") - ) - (fp_text user "${REFERENCE}" - (at 0 0 90) (layer "F.Fab") - (uuid "7af58458-f05a-4cfa-96dc-100b16cf36de") - (effects - (font - (size 0.72 0.72) - (thickness 0.11) - ) - ) + (uuid "141a9f62-0a9c-4369-8c59-dbc4ed21166d") ) (pad "1" smd roundrect - (at -0.9375 -0.95) - (size 1.475 0.6) + (at -2 0 180) + (size 2.5 1.8) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "Net-(Q4-G)") - (pinfunction "G_1") - (pintype "input") - (uuid "02e69ca0-b11f-4c66-ba47-d2a2e12187dc") + (roundrect_rratio 0.1388888889) + (net "+5V") + (pinfunction "K_1") + (pintype "passive") + (uuid "725c9a6f-f3c7-47d3-9687-f06a0e23c5b0") ) (pad "2" smd roundrect - (at -0.9375 0.95) - (size 1.475 0.6) + (at 2 0 180) + (size 2.5 1.8) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pinfunction "S_2") + (roundrect_rratio 0.1388888889) + (net "/VBUS") + (pinfunction "A_2") (pintype "passive") - (uuid "079009fd-fa5a-4f1e-9e26-9141cd4418f3") - ) - (pad "3" smd roundrect - (at 0.9375 0) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/ALARM_DRV") - (pinfunction "D_3") - (pintype "passive") - (uuid "16ad726d-ed5f-45b8-ac76-45c6975b3e1d") + (uuid "6df30b0e-c3c5-4815-8bce-d4cb1f39eb1d") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (model "${KICAD10_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SMA.step" (offset (xyz 0 0 0) ) @@ -9737,33 +9441,33 @@ ) ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "48cc81d9-ec49-484f-9a31-04f6e448ce4c") - (at 131.235 107) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C18" - (at 0 -1.16 0) + (uuid "3e6db68d-7f54-4174-8e03-814c33fd0dc8") + (at 54.35 81.8) + (property "Reference" "TP26" + (at 0 -1.648 0) + (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "e4e859f2-79b7-423b-8532-d16d66a5d6f2") + (uuid "acc968e9-0dae-4d5a-ba08-47517a90e37a") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "100nF" - (at 0 1.16 0) - (layer "F.Fab") + (property "Value" "ENC_BTN" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") (hide yes) - (uuid "44b63e61-c82e-4bc0-a8e4-c317095380b4") + (uuid "2fdbdc9e-cc17-4cc2-817b-ff842a763c73") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) @@ -9771,7 +9475,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "73024c0e-2cfd-4a65-a9a0-dcaab1dfe8ef") + (uuid "a9bd87df-f00e-4f5d-8e81-41201edb2d11") (effects (font (size 1.27 1.27) @@ -9782,133 +9486,126 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "33d8d479-0361-404c-8799-60a156173251") + (uuid "c5919b25-0d66-4e51-8acd-8022d54cfb03") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C1525" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "3ce95094-7115-4c50-856e-11d56b8da6a4") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "C_*") - (path "/3a201181-5360-45af-9e20-aed53aeb9d45") + (property ki_fp_filters "Pin* Test*") + (path "/705b95df-9081-4dda-8cc1-5b58b24c1ee2") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "c54e69d6-4f95-48ad-8ae1-36227889cb2d") + (uuid "fab242e5-6875-4054-b9e5-1d3dc6c3c6c5") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "95324e0d-7f2c-4238-97ff-bc7612027a35") + (uuid "1e1455de-d270-4c5a-9925-b68cdd40d289") ) - (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "18c6661e-4537-43c3-bd73-4c1b283fb07c") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "0b08c799-5129-4212-b7bf-a92b2861b3d6") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) - (fill no) (layer "F.CrtYd") - (uuid "63996245-c091-428c-bef8-c21fc68544f8") + (uuid "f46cc5f5-7028-428a-bdc3-13998a840071") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) ) - (fill no) - (layer "F.Fab") - (uuid "079d4ead-8542-413c-bc88-b59958e34419") + (layer "F.CrtYd") + (uuid "d30cb81f-fa22-4353-beac-6c4def6adb0b") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "65384e56-d0ea-4963-b59e-94bb438b8059") - (effects - (font - (size 0.25 0.25) - (thickness 0.04) - ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "88edf9a7-8ad2-42d8-bca9-7d5229be3cac") ) - (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pintype "passive") - (uuid "48adc02d-6de0-4083-9ef7-2cd9642cfcd0") + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "193b9082-5738-4dc0-bfc0-c4feddcb1682") ) - (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/ENC_BTN") + (pinfunction "1_1") (pintype "passive") - (uuid "fc8b2233-a8d1-46d8-89f5-c7db23edf776") + (uuid "f7637181-1a1e-49d5-aaa6-c8fa0c744319") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical" (layer "F.Cu") - (uuid "49e9bc32-390e-4aed-9b3a-0884b4a4d3c0") - (at 76.5 48.23 90) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C5" - (at 0 -1.16 90) + (uuid "3e9f5cb0-4a8d-4659-adb5-1e3e2e2d9364") + (at 102.6 47.9) + (descr "Through hole straight pin header, 1x06, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x06 2.54mm single row") + (property "Reference" "J11" + (at 0 -2.38 0) (layer "F.SilkS") (hide yes) - (uuid "9c53d51c-c01f-4cf4-a6a8-d09e9e837f7b") + (uuid "967ea035-321f-404f-ab2a-ef98a8914f72") (effects (font (size 1 1) @@ -9916,11 +9613,10 @@ ) ) ) - (property "Value" "100nF" - (at 0 1.16 90) + (property "Value" "UART / EXPANSION" + (at 2.7 6.2 90) (layer "F.Fab") - (hide yes) - (uuid "85c470a3-7e57-4e14-8661-0044aebc761c") + (uuid "0696aba8-53cf-4216-8dc1-59c4643a8265") (effects (font (size 1 1) @@ -9929,10 +9625,10 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "f051eaad-5ad5-456c-a391-a5a07dcf9969") + (uuid "cbe89fd8-3f53-40f7-8587-b5a933a3aaa5") (effects (font (size 1.27 1.27) @@ -9940,22 +9636,22 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "7ed4acfc-7463-45d1-b898-39dbdcaafcae") + (uuid "3e2520ea-ab50-4469-a611-53833ab9e4cb") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C1525" - (at 0 0 90) + (property "LCSC" "C492405" + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "c29162e0-c90e-4eab-bc2f-a498d5d2f87c") + (uuid "e47c7f0d-7af0-4d72-a241-76d02d98f577") (effects (font (size 1 1) @@ -9963,91 +9659,218 @@ ) ) ) - (property ki_fp_filters "C_*") - (path "/ab9f8f84-de47-4d7b-ad71-5d5a037ec84a") + (property ki_fp_filters "Connector*:*_1x??_*") + (path "/c7e52ed3-c682-46dc-a40c-3d327f0a3487") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1" "2" "3" "4" "5" "6") ) ) - (attr smd) + (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -1.38 -1.38) + (end 0 -1.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "c8b19419-ecd0-47f3-b451-547387a7cea4") + (uuid "6b88f451-93b8-44dc-ab52-14067970d29a") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -1.38 0) + (end -1.38 -1.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "94e67a5b-128e-409b-800b-ae51add1c694") + (uuid "edac7a4a-7372-405f-9897-4f1d944bfc57") ) - (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (fp_line + (start -1.38 1.27) + (end -1.38 14.08) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (fill no) - (layer "F.CrtYd") - (uuid "ea8f471e-8ad4-480b-8c77-8e3aee2c7ba7") + (layer "F.SilkS") + (uuid "522d57fb-26fc-4d28-9a7f-40fbcc0ab7fe") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start -1.38 1.27) + (end 1.38 1.27) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "23d4a7d0-6af7-48e3-b1d2-277a9ae8d57c") + (layer "F.SilkS") + (uuid "915932fb-ab55-4d94-997f-681156b325f1") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "1d8912e0-114b-4531-aa18-5148e50d178d") + (fp_line + (start -1.38 14.08) + (end 1.38 14.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0f6bd46f-26f8-460b-b5a7-44ef7bcf13fc") + ) + (fp_line + (start 1.38 1.27) + (end 1.38 14.08) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d4f82cce-2f55-4c52-a44c-c9ea497c1bd4") + ) + (fp_rect + (start -1.77 -1.77) + (end 1.77 14.47) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "c7191b7a-0e6e-42a2-8ac7-dc9002bb62af") + ) + (fp_line + (start -1.27 -0.635) + (end -0.635 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "172e5af0-fe8d-47a6-b86b-f2c886fc1692") + ) + (fp_line + (start -1.27 13.97) + (end -1.27 -0.635) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "79084287-b544-4ed5-b6d1-61f94ee9ce72") + ) + (fp_line + (start -0.635 -1.27) + (end 1.27 -1.27) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "fc890f94-5519-4bb2-92f0-acc9752aa95b") + ) + (fp_line + (start 1.27 -1.27) + (end 1.27 13.97) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c65982b6-c10e-4858-b84d-742f064477a2") + ) + (fp_line + (start 1.27 13.97) + (end -1.27 13.97) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "b0d98fdf-0698-41ce-b5b0-6e11a841e671") + ) + (fp_text user "${REFERENCE}" + (at 0 6.35 90) + (layer "F.Fab") + (uuid "6ee67aa0-181c-4c4b-bc89-7982ff5e2374") (effects (font - (size 0.25 0.25) - (thickness 0.04) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.48 0 90) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "Pin_1_1") + (pintype "passive") + (uuid "226631cc-80f5-4c7f-ad5e-d2ba21ae8e23") + ) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) (net "+3.3V") + (pinfunction "Pin_2_2") (pintype "passive") - (uuid "8ce3bff2-b779-4fd6-b981-801f8665b73f") + (uuid "dfbec8be-2383-49d6-b861-620ec1e00883") ) - (pad "2" smd roundrect - (at 0.48 0 90) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") + (pad "3" thru_hole circle + (at 0 5.08) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/UART_TXD0") + (pinfunction "Pin_3_3") (pintype "passive") - (uuid "3e8b7809-9440-457e-bc98-1913d2c12dd4") + (uuid "4db89d78-0f7f-4c40-ab21-48141d6996e7") + ) + (pad "4" thru_hole circle + (at 0 7.62) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/UART_RXD0") + (pinfunction "Pin_4_4") + (pintype "passive") + (uuid "2df02a8c-a2ad-45ab-bcc3-64d8f28d7bb4") + ) + (pad "5" thru_hole circle + (at 0 10.16) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/EXP_IO2") + (pinfunction "Pin_5_5") + (pintype "passive") + (uuid "b60bb233-0670-4606-a6f3-485962b6635a") + ) + (pad "6" thru_hole circle + (at 0 12.7) + (size 1.7 1.7) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/EXP_IO42") + (pinfunction "Pin_6_6") + (pintype "passive") + (uuid "2ded1fae-153d-456b-ac8a-0175c0f10fef") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x06_P2.54mm_Vertical.step" (offset (xyz 0 0 0) ) @@ -10059,17 +9882,17 @@ ) ) ) - (footprint "Package_TO_SOT_SMD:SOT-23" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "4c36e6c7-e02f-4e8f-8690-361d4150976d") - (at 127.1875 48.3) - (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") - (tags "SOT TO_SOT_SMD") - (property "Reference" "Q6" - (at 0 -2.4 0) + (uuid "3f89af37-a2cf-4258-9ca5-ac4e78c8b45b") + (at 112.94 50.475 180) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R23" + (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "f3bb1bb4-5126-4911-a0d2-418cb0a571cf") + (uuid "23139c1a-9cf1-4117-acc1-96edeed09553") (effects (font (size 1 1) @@ -10077,11 +9900,11 @@ ) ) ) - (property "Value" "AO3400A" - (at 0 2.4 0) + (property "Value" "10k" + (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "99e0cd47-44ae-48df-8e66-880af4495f9b") + (uuid "70bf3997-a584-4556-bf19-81ccd90e4773") (effects (font (size 1 1) @@ -10093,7 +9916,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "d83f7de0-3656-43d2-83bc-3baa07d211e7") + (uuid "40f9eca7-584e-4b31-bddb-e65359563e44") (effects (font (size 1.27 1.27) @@ -10104,321 +9927,111 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "ceb3b14f-f30b-4c82-b4c1-be6fba6be289") + (uuid "1dd99198-764d-46e7-ae5b-4bac80af3fb3") (effects (font (size 1.27 1.27) ) ) ) - (path "/acbd0f43-bf65-493c-bcb2-ca4032a4bad3") + (property "LCSC" "C25744" + (at 0 0 180) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "925bb122-6679-43b6-8940-7a7a82cf8a9b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/26338c36-647b-4cc7-92c7-ba21de6fb1dc") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "3" "2") + (pins "1" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.76 -1.56) - (end 0.76 -1.56) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "9c72356c-eee5-4bb5-a2eb-c456ae7f16bf") + (uuid "13ab73f6-fd60-4828-bafb-7ebfe69c85ee") ) (fp_line - (start -0.76 -1.51) - (end -0.76 -1.56) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "55884fa2-5170-4f1f-87f4-1054293795e5") + (uuid "3532e815-cc2b-4fb2-b0e2-6baf8c2583db") ) - (fp_line - (start -0.76 0.39) - (end -0.76 -0.39) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "9df42e18-7358-4b1f-837e-c85a9d6ae117") + (fill no) + (layer "F.CrtYd") + (uuid "2d54ab8e-fa52-449b-9673-7dd0390dc9b0") ) - (fp_line - (start -0.76 1.56) - (end -0.76 1.51) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "f21aad22-413c-41de-a78a-3b44c4d1811d") + (fill no) + (layer "F.Fab") + (uuid "625b95d6-005e-450f-9305-5de5c7bb3d0d") ) - (fp_line - (start 0.76 -1.56) - (end 0.76 -0.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "5f7d3718-36ca-42a0-9467-8bbea3423ed1") - ) - (fp_line - (start 0.76 0.56) - (end 0.76 1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "e709392e-bda6-4360-b96e-116127116385") - ) - (fp_line - (start 0.76 1.56) - (end -0.76 1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "75e5671a-7bc6-4e65-85a2-9a7a1071a1a5") - ) - (fp_poly - (pts - (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) - ) - (stroke - (width 0.12) - (type solid) - ) - (fill yes) - (layer "F.SilkS") - (uuid "0b029f1e-da87-4db3-bae1-820d5ada37b1") - ) - (fp_line - (start -1.93 -1.5) - (end -0.9 -1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "d9773916-0ce9-449a-b18c-62362e121bf0") - ) - (fp_line - (start -1.93 -0.39) - (end -1.93 -1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "7a4c0005-4ec7-45fa-b182-c5a77d1c915e") - ) - (fp_line - (start -1.93 0.39) - (end -0.9 0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "6423300c-3738-4ec5-a3bd-9f52d00862c3") - ) - (fp_line - (start -1.93 1.5) - (end -1.93 0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "9a86f639-a7d6-4255-bfc9-a77a5a3e19e1") - ) - (fp_line - (start -0.9 -1.7) - (end 0.9 -1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "93f16d0d-778a-428b-b69f-6001bbd479fb") - ) - (fp_line - (start -0.9 -1.5) - (end -0.9 -1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "bafaf3a9-0ee6-4bf6-b903-5f94282d6bbe") - ) - (fp_line - (start -0.9 -0.39) - (end -1.93 -0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "0aff9fac-c437-4468-a902-9bc39ccd58a7") - ) - (fp_line - (start -0.9 0.39) - (end -0.9 -0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "0e70e550-4fb5-49ca-a1da-958d2bb303ab") - ) - (fp_line - (start -0.9 1.5) - (end -1.93 1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "bec8e8a1-fb3b-4fe2-9ee4-0c3183140f03") - ) - (fp_line - (start -0.9 1.7) - (end -0.9 1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "825623ca-cee8-4d5d-81d7-873537ffb7f8") - ) - (fp_line - (start 0.9 -1.7) - (end 0.9 -0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "2b653f45-9dc1-4286-9c8c-743ab34de0dc") - ) - (fp_line - (start 0.9 -0.55) - (end 1.93 -0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "d134849c-0994-4661-b11b-8f4ddcf5ace2") - ) - (fp_line - (start 0.9 0.55) - (end 0.9 1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "332e751d-5d67-45a5-b1f0-573dcee4edb2") - ) - (fp_line - (start 0.9 1.7) - (end -0.9 1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "871ef074-6f35-4a3f-a79e-50dc4268c9f0") - ) - (fp_line - (start 1.93 -0.55) - (end 1.93 0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "e4c341d1-1c1d-49b0-8cac-60ee7bce946a") - ) - (fp_line - (start 1.93 0.55) - (end 0.9 0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "dc58ea3b-6ff3-4942-814b-749c7d548681") - ) - (fp_poly - (pts - (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) - ) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "cbb92307-def0-4911-8bd5-e6fae2ebc32d") - ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "9cd922ca-6c76-4a88-822a-84158749f581") - (effects - (font - (size 0.72 0.72) - (thickness 0.11) - ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "c903380b-d2fa-4695-a2a8-585ba7ba1984") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) ) ) (pad "1" smd roundrect - (at -0.9375 -0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_FAULT") - (pinfunction "G_1") - (pintype "input") - (uuid "32da1389-3975-4344-b5e0-ca13345b8fd6") - ) - (pad "2" smd roundrect - (at -0.9375 0.95) - (size 1.475 0.6) + (at -0.51 0 180) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/COIL_RTN2") - (pinfunction "S_2") + (net "Net-(Q4-G)") (pintype "passive") - (uuid "ad49373f-e047-4d1a-aa4b-e98945c1acbb") + (uuid "723d33e7-b4ed-4b2d-98bf-690a759de0c8") ) - (pad "3" smd roundrect - (at 0.9375 0) - (size 1.475 0.6) + (pad "2" smd roundrect + (at 0.51 0 180) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/COIL_RTN1") - (pinfunction "D_3") + (net "GND") (pintype "passive") - (uuid "8fe6c835-edf3-4441-abdb-47bd3ead9a65") + (uuid "dd921d54-e03f-4919-a19d-9059cb1dcd1e") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -10432,15 +10045,15 @@ ) (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "4df6a940-d0d6-4af0-b3fb-563f60b65605") - (at 116.27 89.5) + (uuid "45dec25d-e9b5-4e01-9dcd-65cc096461da") + (at 123.5 84.02 -90) (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "capacitor") - (property "Reference" "C25" - (at 0 -1.16 0) + (property "Reference" "C14" + (at 0 -1.16 90) (layer "F.SilkS") (hide yes) - (uuid "e762d5ed-98bf-4cdf-a322-dec1456b6fb3") + (uuid "dbd5951a-b88c-476b-966d-46fbec703a83") (effects (font (size 1 1) @@ -10448,11 +10061,11 @@ ) ) ) - (property "Value" "220nF" - (at 0 1.16 0) + (property "Value" "100nF" + (at 0 1.16 90) (layer "F.Fab") (hide yes) - (uuid "c8db3aa1-ee2b-4fb6-b4ab-67e6ef4fc5c1") + (uuid "6f099568-98f0-47d5-a681-71edab51ee2d") (effects (font (size 1 1) @@ -10461,10 +10074,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "52fe257a-8e23-4530-96ec-a1ccb6565fcb") + (uuid "eeed955b-59ff-4141-bf24-a8f796afd40e") (effects (font (size 1.27 1.27) @@ -10472,22 +10085,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "cf6158c4-806c-4ac4-8f45-caeb54753352") + (uuid "baab8e62-2b55-4f1f-af6e-c071c0d02fde") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C16772" - (at 0 0 0) + (property "LCSC" "C15195" + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "1e0917b6-a7af-40a1-9219-6378b255ad28") + (uuid "09c7e2f2-3e44-436e-bba4-29bb68ed12ba") (effects (font (size 1 1) @@ -10496,7 +10109,7 @@ ) ) (property ki_fp_filters "C_*") - (path "/204431dd-bf28-4758-b7ea-72deeb967da2") + (path "/05d7d812-7319-49d1-932b-1df7e73bfc40") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -10508,24 +10121,24 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "a5357815-e695-4a37-a26a-a19b500c348e") + (uuid "6964c42e-1a4b-4136-ad36-a0b55aa68e75") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) - (stroke + (start -0.107836 -0.36) + (end 0.107836 -0.36) + (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "f5412b2c-a053-4474-bcf0-2a22cbee4b9c") + (uuid "abcdcc78-3f17-4473-b89f-545820fa7ff5") ) (fp_rect (start -0.91 -0.46) @@ -10536,7 +10149,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "09854514-efc5-4950-8c10-111f5746e26a") + (uuid "c1bff43b-5a4e-4af9-a385-f8aa0d45a915") ) (fp_rect (start -0.5 -0.25) @@ -10547,12 +10160,12 @@ ) (fill no) (layer "F.Fab") - (uuid "1ff16fe7-20c7-48e6-9629-85fcea3d1475") + (uuid "2e2579ef-82db-450d-b612-e3d6d56aebba") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "93fa54ed-0a79-4b07-af8d-2adeb00f0c28") + (uuid "f39b4e63-facf-41df-a577-9f8df0d94869") (effects (font (size 0.25 0.25) @@ -10561,22 +10174,22 @@ ) ) (pad "1" smd roundrect - (at -0.48 0) + (at -0.48 0 270) (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/CURR_SENSE") + (net "+3.3V") (pintype "passive") - (uuid "1cfd3e44-19b5-40e8-87c5-e938f4b9f6f4") + (uuid "47dc3e89-2f76-4bd0-9cee-f9da6e74aba2") ) (pad "2" smd roundrect - (at 0.48 0) + (at 0.48 0 270) (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "35aa887c-a04b-41a1-b3e6-8497f8ea010b") + (uuid "9b613b89-8d8f-4a7d-8c4d-54004a60af65") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" @@ -10591,17 +10204,16 @@ ) ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" (layer "F.Cu") - (uuid "4fee284e-d80d-465b-9d75-3e3c3779db00") - (at 82.34 97.06) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R8" - (at 0 -1.17 0) + (uuid "4646ae9f-5939-4be1-ac52-f921a3e537e7") + (at 145.7175 64.75 90) + (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") + (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") + (property "Reference" "J6" + (at 2.25 -5.12 90) (layer "F.SilkS") - (hide yes) - (uuid "91f85773-6828-480d-9ee2-d3f565880692") + (uuid "12aabb5d-44e3-4ed3-9b02-bda2a1946b93") (effects (font (size 1 1) @@ -10609,11 +10221,10 @@ ) ) ) - (property "Value" "4.7k" - (at 0 1.17 0) + (property "Value" "SSR CTRL" + (at 2.25 4.92 90) (layer "F.Fab") - (hide yes) - (uuid "74aa3e75-a94d-4221-85c4-12c81ae087b1") + (uuid "22444430-3500-4927-b3a5-48a95bb344a8") (effects (font (size 1 1) @@ -10622,10 +10233,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "8a8874a5-e900-4e3b-accb-3a2c0f2d2720") + (uuid "3e709058-57ff-4e53-ba60-47789335065d") (effects (font (size 1.27 1.27) @@ -10633,22 +10244,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "9c9ffa69-8ec6-4299-b340-0f32215d9ec6") + (uuid "ddfeb8a0-3c87-436f-8597-c0e0a3e0e8b6") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25900" - (at 0 0 0) + (property "LCSC" "C474881" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "a04cbb04-68e1-4301-943a-b35736b78bce") + (uuid "5658edb1-9f8a-4060-9a27-4741264b19c9") (effects (font (size 1 1) @@ -10656,8 +10267,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/0860280d-6ba9-40e5-bcad-1876705f1e86") + (property ki_fp_filters "TerminalBlock*:*") + (path "/19404298-16e8-4cfa-b0ee-a87e45e2497a") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -10666,550 +10277,349 @@ (pins "1" "2") ) ) - (attr smd) + (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start 7.62 -4.12) + (end 7.62 3.92) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "be728a7d-9dda-49d8-997d-3e1123f590d9") + (uuid "3af8d022-06a0-425d-a8ca-deb6ad494fea") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -3.12 -4.12) + (end 7.62 -4.12) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "b9ee1565-1f46-40d9-acf9-5cb1db62c6b7") + (uuid "b981012f-9793-4827-818d-5b80edaf1898") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_line + (start 6.812 -0.5) + (end 7.62 -0.5) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (fill no) - (layer "F.CrtYd") - (uuid "54c42426-385c-4882-90f1-6577140bc252") + (layer "F.SilkS") + (uuid "7f77c082-722c-4b15-bb56-8ffe2938c475") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_line + (start 1.88 -0.5) + (end 3.188 -0.5) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "9ae2badd-03ff-4077-9057-c01db17428a6") - ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "6531f455-8c4a-4d70-8fd7-a7ea32e8c61b") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) - ) - ) - (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pintype "passive") - (uuid "5a5f6da3-90f2-4c82-8f98-f6ee64c8d3c6") - ) - (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/I2C_SDA") - (pintype "passive") - (uuid "7f2da678-e24a-4063-bd0c-dd07a4082f56") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "522555ec-f28e-457a-b18f-4b36c9c30800") - (at 89 71) - (property "Reference" "TP8" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "74e77204-ea8b-4cc9-a558-136e47022dfe") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Value" "SPI_MISO" - (at 0 1.75 0) - (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "b9575cb4-52a3-409e-8ac2-01057571b8bc") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "106fdba9-81a2-45cd-96ef-23eac7771109") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "d14d98c3-6a4c-4d0a-aa14-eced37757c8f") - (effects - (font - (size 1.27 1.27) - ) - ) + (uuid "3c4df44a-2630-4734-8693-62fafa32b56e") ) - (property ki_fp_filters "Pin* Test*") - (path "/f300a9b4-8345-4e17-aac5-43cc11a04824") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") + (fp_line + (start -3.12 -0.5) + (end -1.88 -0.5) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "460baf66-0b39-4b76-b629-a5cfcf0da72a") ) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 6.812 0.5) + (end 7.62 0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "2584b88f-3c61-4b29-8dfb-d6d9e70ea2cb") + (uuid "680f23a1-f027-4848-b364-8aa71d8bb36b") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start 1.88 0.5) + (end 3.188 0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "b287a45f-3069-4ea0-a6d8-c5598a8b5bae") + (uuid "a1e34abf-99c5-45d5-9ad3-ad1db4b01d02") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -3.12 0.5) + (end -1.88 0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "4ee3b880-515d-44b4-b39d-3f557bc6c0e1") + (uuid "60162d5f-2393-405c-a008-a8bf5a115faf") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start 5.543 1.8) + (end 7.62 1.8) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "a3badc7f-29cc-42f4-b659-126ab278c00f") + (uuid "84807c2c-0513-43fc-b063-c77d374c9711") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start 1.88 1.8) + (end 4.457 1.8) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "5d8309a6-228f-4232-b641-8fc45da4dc1e") + (layer "F.SilkS") + (uuid "a9fc5b4a-637f-4efc-8b01-9b0d9e7fd65f") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start -3.12 1.8) + (end -1.88 1.8) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "5969a58e-61f8-4dc7-9df4-65002ac61490") + (layer "F.SilkS") + (uuid "a146df8b-9e1a-45a8-aa81-c28a751b8fbb") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start 7.62 3.92) + (end 0.3 3.92) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "0660539a-0ec6-4115-8290-32f3a333e5fb") + (layer "F.SilkS") + (uuid "9c0c89a4-a0ce-43b4-8a20-a9431512c31f") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -0.3 3.92) + (end -3.12 3.92) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "1d62a4c0-661e-4354-b0bc-2b6ccce8d89b") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/SPI_MISO") - (pinfunction "1_1") - (pintype "passive") - (uuid "a1b40bf1-ee8b-4d7f-8ee6-af9b464cb2ae") - ) - (embedded_fonts no) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "53acb9a0-340f-4b3a-b41e-eff9d1f97928") - (at 139.985 103.75) - (property "Reference" "TP27" - (at 0 -1.648 0) - (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "2493ffa5-a04d-4740-baf4-77777ecf9968") - (effects - (font - (size 1 1) - (line_spacing 0) - ) + (uuid "0f2147ae-f497-4076-8d6f-80cd7de3d86a") + ) + (fp_line + (start -3.12 3.92) + (end -3.12 -4.12) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "b5050fc1-33a2-47e2-bb3d-7934b454b288") ) - (property "Value" "TC1_P" - (at 0 1.75 0) - (unlocked yes) + (fp_poly + (pts + (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) (layer "F.SilkS") - (hide yes) - (uuid "6b7c0c78-c6f9-4010-8d4f-8f34f330d625") - (effects - (font - (size 1 1) - (line_spacing 0) - ) + (uuid "d014a26f-1387-4c9b-99b9-b7721266187a") + ) + (fp_rect + (start -3.5 -4.5) + (end 8 4.31) + (stroke + (width 0.05) + (type solid) ) + (fill no) + (layer "F.CrtYd") + (uuid "d419062f-c58b-41b7-8e33-129c726c847c") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "7a486d3c-834a-4dc6-ac12-2fabd694138a") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start 7.5 -4) + (end 7.5 3.8) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "7b34a65f-080c-45c9-bd8d-9a498473ea32") ) - (property "Description" "" - (at 0 0 0) + (fp_line + (start -3 -4) + (end 7.5 -4) + (stroke + (width 0.1) + (type solid) + ) (layer "F.Fab") - (hide yes) - (uuid "523deb9e-b2b2-469b-84ac-16876ccedc74") - (effects - (font - (size 1.27 1.27) - ) + (uuid "90214837-9332-4c3f-8796-183007d62556") + ) + (fp_line + (start 6.018 -1.213) + (end 3.787 1.018) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "1220c82f-703f-4dfc-8ade-36f59e8dcb9f") ) - (property ki_fp_filters "Pin* Test*") - (path "/9d5ec73c-bc3b-44fb-81a3-0939d32291c8") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") + (fp_line + (start 1.018 -1.213) + (end -1.213 1.018) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "4eccbe91-f12a-4247-92ce-b2f438731edc") ) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 6.213 -1.018) + (end 3.982 1.213) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "4fdd2fc3-cbd2-46a4-af98-3a36778183a1") + (layer "F.Fab") + (uuid "7411038b-d3c1-45d8-9072-b6ad69c60d9c") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start 1.213 -1.018) + (end -1.018 1.213) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "2ed7641e-e08e-4293-b9c5-8ed5cfdf3ce9") + (layer "F.Fab") + (uuid "bff13d24-00de-4625-8162-bcb385cefea4") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -3 -0.5) + (end 7.5 -0.5) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "e217c3dc-3406-4000-b970-26ca473a57da") + (layer "F.Fab") + (uuid "75c69a4d-21ef-4e2f-b438-9afca9654d4a") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -3 0.5) + (end 7.5 0.5) (stroke - (width 0.12) - (type default) + (width 0.1) + (type solid) ) - (layer "F.SilkS") - (uuid "e7bc434e-f644-4857-bca2-a8769f9e98e9") + (layer "F.Fab") + (uuid "87b2e1af-13ef-430b-841c-06707eda422c") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -3 1.8) + (end 7.5 1.8) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "e76fccb0-4e38-4cdf-825d-cb1dd5ba8b41") + (layer "F.Fab") + (uuid "fd578cbf-058c-479e-af75-0c907e1b3fe3") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start -3 1.85) + (end -3 -4) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "dcf07b7b-112f-4841-a00c-c17b6a07c4f1") + (layer "F.Fab") + (uuid "33ae167f-34fa-4b50-8d53-ae2af4e9f1f1") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start 7.5 3.8) + (end -1.05 3.8) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "f6de8128-d328-493f-84c0-12e79b1d378e") + (layer "F.Fab") + (uuid "1e4f397c-a5a7-48ca-b35d-e8dd265afda2") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -1.05 3.8) + (end -3 1.85) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "7625bcc9-b1ea-49b8-b087-32a39e2202e6") + (layer "F.Fab") + (uuid "b8470621-7c84-4977-80b2-b66f0c425ca3") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC1_P") - (pinfunction "1_1") - (pintype "passive") - (uuid "4cf571ef-8618-4bbe-bac6-81986d5a6b30") - ) - (embedded_fonts no) - ) - (footprint "Capacitor_SMD:C_0805_2012Metric" - (layer "F.Cu") - (uuid "5427ba47-699f-45b1-843d-a050c70f718d") - (at 131.285 94.5) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") - (tags "capacitor") - (property "Reference" "C13" - (at 0 -1.68 0) - (layer "F.SilkS") - (hide yes) - (uuid "939946c9-e4e7-47ae-b2df-2b6feafd0af7") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "10uF" - (at 0 1.68 0) - (layer "F.Fab") - (hide yes) - (uuid "04353d11-0616-4acb-b3f5-3ea7663308fa") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "0ba05be5-aa37-4946-8e95-68c9b6652575") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "6d3dcebc-52d3-46fc-ac48-3ff8a250c387") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C15850" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "3842f653-961a-4332-b271-1ba641fc06b3") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "C_*") - (path "/f925a691-5910-4e8c-aca7-e7b4f6766755") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) - ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.261252 -0.735) - (end 0.261252 -0.735) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "d1580d58-2dc5-45a6-8150-09809f029d02") - ) - (fp_line - (start -0.261252 0.735) - (end 0.261252 0.735) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "957bfc4a-bc4f-420a-954b-6cdd4d8e7068") - ) - (fp_rect - (start -1.7 -0.98) - (end 1.7 0.98) + (fp_circle + (center 5 0) + (end 6.6 0) (stroke - (width 0.05) + (width 0.1) (type solid) ) (fill no) - (layer "F.CrtYd") - (uuid "0bfaaa1b-17a0-4dce-a419-107340688a62") + (layer "F.Fab") + (uuid "1e8f9d3d-6bb5-4426-ad79-99b8194b3344") ) - (fp_rect - (start -1 -0.625) - (end 1 0.625) + (fp_circle + (center 0 0) + (end 1.6 0) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "a5032d01-5803-4d69-9a42-082c46b982be") + (uuid "8c11a5e0-f79a-49d1-a7b7-ab61e1a27033") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 2.25 2.65 90) (layer "F.Fab") - (uuid "45008ab2-abda-470b-9833-d9f0cf26c11e") + (uuid "69e70082-9d67-4650-8bde-e53971efea7a") (effects (font - (size 0.5 0.5) - (thickness 0.08) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.95 0) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") + (pad "1" thru_hole roundrect + (at 0 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.089286) + (net "+5V") + (pinfunction "Pin_1_1") (pintype "passive") - (uuid "33cba55f-c6d6-44ae-8908-a25fca840e1b") + (uuid "9ea2e990-5b98-4334-8861-bce9474c1591") ) - (pad "2" smd roundrect - (at 0.95 0) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") + (pad "2" thru_hole circle + (at 5 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/SSR_DRV") + (pinfunction "Pin_2_2") (pintype "passive") - (uuid "36a261fa-e51d-47f3-ae65-120bd2a6ef3d") + (uuid "6c934f02-ae52-4634-87ee-fd78f0950d8c") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" + (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" (offset (xyz 0 0 0) ) @@ -11221,17 +10631,17 @@ ) ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "Package_TO_SOT_SMD:SOT-23" (layer "F.Cu") - (uuid "56212801-8dc4-4186-bc1d-6d4ff7ecf8e4") - (at 139.9675 97.75) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C10" - (at 0 -1.16 0) + (uuid "47e9c589-3405-4d86-a499-9dcb2fc64916") + (at 113.4 53.1625 -90) + (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") + (tags "SOT TO_SOT_SMD") + (property "Reference" "Q4" + (at 0 -2.4 90) (layer "F.SilkS") (hide yes) - (uuid "ac04f51d-7670-4af5-bc9f-c41750e9aafb") + (uuid "5813bab9-0f0b-43c8-a0d7-68c4a428b59b") (effects (font (size 1 1) @@ -11239,11 +10649,11 @@ ) ) ) - (property "Value" "100pF" - (at 0 1.16 0) + (property "Value" "AO3400A" + (at 0 2.4 90) (layer "F.Fab") (hide yes) - (uuid "454b6744-20f2-4298-8162-517d24b061d8") + (uuid "64dd6fec-a648-4242-9dbc-c5d2f94c5387") (effects (font (size 1 1) @@ -11252,10 +10662,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "220b2f4c-f633-4f6f-b0e6-c6b11732e736") + (uuid "86ebac50-159e-4495-9b5c-515dbd4fdf9c") (effects (font (size 1.27 1.27) @@ -11263,22 +10673,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "68d6fa8d-fd3b-4328-922c-c00ddbf1ad6e") + (uuid "d992e923-5cd6-48ff-a737-a4a60d5e6d14") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C26409" - (at 0 0 0) + (property "LCSC" "C20917" + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "627eef76-a981-4311-a4b8-66b2613f832a") + (uuid "53f7f169-0e84-4f75-927e-d4fffe786e51") (effects (font (size 1 1) @@ -11286,406 +10696,314 @@ ) ) ) - (property ki_fp_filters "C_*") - (path "/d0860c85-1511-49f3-aee3-b60d62ddf2d2") + (path "/3301693c-7eb6-4965-a063-5d0fb0f45076") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1" "3" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.76 1.56) + (end -0.76 1.51) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "9393a6d3-e6ae-4c63-b5ad-d7581d9ef274") + (uuid "3a486c94-bd04-451b-8bab-65245a384a3b") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start 0.76 1.56) + (end -0.76 1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "4c66c42a-b88d-44d0-9f3b-ebd25679d65e") + (uuid "19c51b35-0ce3-41e2-9c2d-bf6ca9d0456e") ) - (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (fp_line + (start 0.76 0.56) + (end 0.76 1.56) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (fill no) - (layer "F.CrtYd") - (uuid "c01d610a-3395-4649-9300-0d8265bd3b0e") + (layer "F.SilkS") + (uuid "2d435968-4bf4-44fc-b786-b528fd390026") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start -0.76 0.39) + (end -0.76 -0.39) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "6da69efb-7972-4b0b-8278-f1fb6d1a418f") + (layer "F.SilkS") + (uuid "c88635da-9875-4bc4-bfb5-30af6af6ec8f") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "9c2a8148-689a-4cb9-b518-2dddee632e08") - (effects - (font - (size 0.25 0.25) - (thickness 0.04) - ) + (fp_line + (start -0.76 -1.51) + (end -0.76 -1.56) + (stroke + (width 0.12) + (type solid) ) - ) - (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_TN") - (pintype "passive") - (uuid "67482a60-cf9c-45e5-86b3-c0d1dd071325") - ) - (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pintype "passive") - (uuid "6ac4186d-99f7-4094-96e5-2af463f61a42") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "56ff0346-671a-4505-b265-9212a908d633") - (at 91.5 71) - (property "Reference" "TP11" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "081d2842-a074-4f44-a6ae-7fb0753cda1a") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Value" "TC1_DRDY" - (at 0 1.75 0) - (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "3e7c27bc-562d-43a3-87d2-ed6e51dd3e84") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "5013aff7-aa52-4005-bfd8-b4a4e9d5e1f1") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "9ff905c6-49a6-4542-bf5d-f3ac2a2e1e27") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property ki_fp_filters "Pin* Test*") - (path "/13a9561c-9a2f-45dd-9ebd-6450072f4b34") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) + (uuid "61c7cc2f-3ce0-4360-a0b4-53fdef7710e1") ) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start -0.76 -1.56) + (end 0.76 -1.56) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "5b4e8362-2622-4a89-85f6-bbb21973a5b9") + (uuid "5a0b8c6e-203c-4c7f-ab3d-b8c05a1a108e") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start 0.76 -1.56) + (end 0.76 -0.56) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "b3662361-8352-48df-9282-16ae1247952b") + (uuid "b900a583-521c-47a8-b4c0-a5f7aa9e38b7") ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) - (stroke - (width 0.12) - (type default) + (fp_poly + (pts + (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) ) - (layer "F.SilkS") - (uuid "f83421f2-69e4-429d-bdd7-9cf25cc7dc8b") - ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) (stroke (width 0.12) - (type default) + (type solid) ) + (fill yes) (layer "F.SilkS") - (uuid "acf7f8fa-81bc-4ee4-ad4a-9d562af483fb") + (uuid "9c677b84-5326-4189-ad14-43230911acef") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -0.9 1.7) + (end -0.9 1.5) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "c9199f04-7736-474d-a8b4-511a8afc3107") + (uuid "01a24a20-bcd9-43d3-9af9-e1046291b8cf") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start 0.9 1.7) + (end -0.9 1.7) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "cfcd0593-c4a8-436f-a5ea-b4b30a9aaa99") + (uuid "05c45573-d4ad-4b2d-b716-76c64002a343") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start -1.93 1.5) + (end -1.93 0.39) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "c6913e27-210b-4c5c-8795-956e78412a2d") + (uuid "73e21a84-97c0-49a0-8bf2-7657a782f5e3") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -0.9 1.5) + (end -1.93 1.5) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "099f74cf-e88e-4759-9689-29242c987d3b") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC1_DRDY") - (pinfunction "1_1") - (pintype "passive") - (uuid "ff16bde7-eaa3-4ea2-a45a-b4e51451671f") - ) - (embedded_fonts no) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "574aba24-2e1a-4661-b265-15ae8e7c37dc") - (at 139.725 79.5) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R26" - (at 0 -1.17 0) - (layer "F.SilkS") - (hide yes) - (uuid "d74813cd-d80b-4ecc-aa3b-bf241d227554") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "1k" - (at 0 1.17 0) - (layer "F.Fab") - (hide yes) - (uuid "672a2efe-ec63-41f9-b01a-67f53959b00c") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "5bdac1a9-cfe9-4181-99d6-8fd7b36d44a7") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "216317a5-4735-4bfe-8aab-60379618f844") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C11702" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "5ebdae3d-e346-48ce-aed5-902e2507bee2") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "R_*") - (path "/fd2890eb-43b1-4e00-bf0c-b6e50cfb4bd4") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) + (uuid "fcf69cd1-749d-463f-8298-6fb761bd36f8") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start 0.9 0.55) + (end 0.9 1.7) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "9d94b870-85e5-4079-b72a-bb077a16a994") + (layer "F.CrtYd") + (uuid "ba5936a1-e0bb-4e7a-a018-f07f8c99f926") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start 1.93 0.55) + (end 0.9 0.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "a8f04920-bc63-4add-bdb2-4d29b813418d") + (layer "F.CrtYd") + (uuid "40ff9892-f530-4953-9156-1a3aa6141481") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_line + (start -1.93 0.39) + (end -0.9 0.39) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "a2e99dbd-02f1-4482-9320-f2b954e68430") + (uuid "fd538ce3-b051-4728-986a-a51d84ff066e") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_line + (start -0.9 0.39) + (end -0.9 -0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "918599ed-b2e1-4590-aacf-fce6307d4621") + ) + (fp_line + (start -1.93 -0.39) + (end -1.93 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "8d4f09b3-250d-4d22-9165-374ea2a5424f") + ) + (fp_line + (start -0.9 -0.39) + (end -1.93 -0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "3fc09e57-f96b-4a4a-a878-7dc1eb76f2cc") + ) + (fp_line + (start 0.9 -0.55) + (end 1.93 -0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "e3851553-ffb1-4ca6-ac36-05357acf944c") + ) + (fp_line + (start 1.93 -0.55) + (end 1.93 0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "e8c1f9c2-32e3-4fd8-bda9-745c88e9c387") + ) + (fp_line + (start -1.93 -1.5) + (end -0.9 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "e11aba82-1d60-4817-83b5-e5d098bed8e1") + ) + (fp_line + (start -0.9 -1.5) + (end -0.9 -1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5f8a427c-add0-4ab2-894e-84f1e8c4b513") + ) + (fp_line + (start -0.9 -1.7) + (end 0.9 -1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "b6a68402-3d28-4fbc-a89b-c731bd5182fb") + ) + (fp_line + (start 0.9 -1.7) + (end 0.9 -0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "023365a8-b937-4a8c-8773-386b18a2b2a8") + ) + (fp_poly + (pts + (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) + ) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "3c5e85cb-f4b8-475e-b219-4f2acb9effab") + (uuid "04084dc9-ab36-4294-9c76-d881bfa384c9") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "07eb9311-b0ef-4aae-843e-d5752ea5697a") + (uuid "7af58458-f05a-4cfa-96dc-100b16cf36de") (effects (font - (size 0.26 0.26) - (thickness 0.04) + (size 0.72 0.72) + (thickness 0.11) ) ) ) (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) + (at -0.9375 -0.95 270) + (size 1.475 0.6) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/CT_IN") - (pintype "passive") - (uuid "996a5911-b949-40cb-a15f-e65ec09041aa") + (net "Net-(Q4-G)") + (pinfunction "G_1") + (pintype "input") + (uuid "02e69ca0-b11f-4c66-ba47-d2a2e12187dc") ) (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) + (at -0.9375 0.95 270) + (size 1.475 0.6) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/CURR_SENSE") + (net "GND") + (pinfunction "S_2") (pintype "passive") - (uuid "5cf179d1-c4e0-42f2-9a8c-1a7d1505248e") + (uuid "079009fd-fa5a-4f1e-9e26-9141cd4418f3") + ) + (pad "3" smd roundrect + (at 0.9375 0 270) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/ALARM_DRV") + (pinfunction "D_3") + (pintype "passive") + (uuid "16ad726d-ed5f-45b8-ac76-45c6975b3e1d") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" (offset (xyz 0 0 0) ) @@ -11697,17 +11015,17 @@ ) ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "595118f9-0e74-4886-a0f7-07695de7564f") - (at 140.0075 108.25 180) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R7" - (at 0 -1.17 0) + (uuid "49e9bc32-390e-4aed-9b3a-0884b4a4d3c0") + (at 76.5 48.23 90) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C5" + (at 0 -1.16 90) (layer "F.SilkS") (hide yes) - (uuid "18cf14d8-65c6-4c32-9f9f-914491d089ad") + (uuid "9c53d51c-c01f-4cf4-a6a8-d09e9e837f7b") (effects (font (size 1 1) @@ -11715,11 +11033,11 @@ ) ) ) - (property "Value" "100R" - (at 0 1.17 0) + (property "Value" "100nF" + (at 0 1.16 90) (layer "F.Fab") (hide yes) - (uuid "ff10e7b0-0ab4-4dae-868b-1df3ebeea769") + (uuid "85c470a3-7e57-4e14-8661-0044aebc761c") (effects (font (size 1 1) @@ -11728,10 +11046,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "0999495b-390a-4e96-9a8f-601335129fde") + (uuid "f051eaad-5ad5-456c-a391-a5a07dcf9969") (effects (font (size 1.27 1.27) @@ -11739,22 +11057,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "3fd38730-0b7c-4e29-b102-c4cb63ca5d88") + (uuid "7ed4acfc-7463-45d1-b898-39dbdcaafcae") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25076" - (at 0 0 180) + (property "LCSC" "C1525" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "e49165cf-8f82-4279-8fc5-b16781ed1b57") + (uuid "c29162e0-c90e-4eab-bc2f-a498d5d2f87c") (effects (font (size 1 1) @@ -11762,8 +11080,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/7a7f51bd-a357-4b4c-ad99-7efde148c1a0") + (property ki_fp_filters "C_*") + (path "/ab9f8f84-de47-4d7b-ad71-5d5a037ec84a") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -11775,78 +11093,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "0d19aefa-9e7a-49c8-a238-8cfb5ce71f8d") + (uuid "c8b19419-ecd0-47f3-b451-547387a7cea4") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "213cc29a-072d-4cf7-bf92-ed6b4e6a3339") + (uuid "94e67a5b-128e-409b-800b-ae51add1c694") ) (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "c7b80529-b4ba-4048-9f0b-d696a2492b4a") + (uuid "ea8f471e-8ad4-480b-8c77-8e3aee2c7ba7") ) (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (start -0.5 -0.25) + (end 0.5 0.25) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "8549f286-675b-43e1-8c2c-785eefe5834b") + (uuid "23d4a7d0-6af7-48e3-b1d2-277a9ae8d57c") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "9115861b-0ec8-4730-b725-f6243d36beb2") + (uuid "1d8912e0-114b-4531-aa18-5148e50d178d") (effects (font - (size 0.26 0.26) + (size 0.25 0.25) (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.51 0 180) - (size 0.54 0.64) + (at -0.48 0 90) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/TC2_N") + (net "+3.3V") (pintype "passive") - (uuid "761affa8-380d-4178-bcfb-6a6f0a4e3297") + (uuid "8ce3bff2-b779-4fd6-b981-801f8665b73f") ) (pad "2" smd roundrect - (at 0.51 0 180) - (size 0.54 0.64) + (at 0.48 0 90) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/TC2_TN") + (net "GND") (pintype "passive") - (uuid "6932747f-7920-4893-801d-564800433e19") + (uuid "3e8b7809-9440-457e-bc98-1913d2c12dd4") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -11858,33 +11176,33 @@ ) ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "5bb9dc8c-555e-4e93-bae6-a452cefbde90") - (at 124.25 44.25) - (property "Reference" "TP21" - (at 0 -1.648 0) - (unlocked yes) + (uuid "4b76961c-874d-43f2-81ce-a61ca211dfd5") + (at 139.87 109.45) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C17" + (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "04751291-53eb-45f1-8b75-f67881898941") + (uuid "53d99e0f-942c-4567-ba88-33bf9c931dcb") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "HEAT_EN_DC" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "100pF" + (at 0 1.16 0) + (layer "F.Fab") (hide yes) - (uuid "3a5ccc38-6cfe-4af7-906d-dc69f51104c6") + (uuid "d71f7ab7-612d-434c-b24b-08b3fb1c1656") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -11892,7 +11210,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "2347e3e2-8f65-4af3-b552-98037aedf8b3") + (uuid "d499f506-66cd-4975-ac8b-de688d3fa8a4") (effects (font (size 1.27 1.27) @@ -11903,125 +11221,120 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "db873f96-1cc0-4c28-bff6-bf1ec5fe2232") + (uuid "2c302efc-d716-4a25-9dbd-65808658b80d") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/36ce296a-dcd5-4f6d-a449-8a72c797f031") + (property ki_fp_filters "C_*") + (path "/32c14177-6f20-40ce-84fc-0e307754b0fb") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "1b77460b-3785-40fc-a157-4dbbed9760ce") + (uuid "0dc314fd-a8bd-435c-bce8-8aa7b4e77f78") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "a190f910-23c9-4c7e-a69f-670b790f2bb8") + (uuid "09e1a85b-2549-4ab4-b579-d870d857ed0e") ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "6e644334-d48c-4383-b489-d2f9d53bfb8d") - ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "22dac717-f2a8-4440-b117-af599de6aba1") - ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "5124a9a5-dc5d-4331-9850-718ba418aff7") + (uuid "3a10f72b-dee6-4710-b457-604920590c7e") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "5ea0271e-a85d-4241-97a4-d5029e10b050") + (fill no) + (layer "F.Fab") + (uuid "9d372916-1772-4ff1-9884-36c9986258b4") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "ab759551-0dda-45f9-9619-bfb0e9913dd4") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "171a19f5-b5d1-464b-8237-58423b5d58c0") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "a333dcf1-a9b2-4364-a8c9-f4874e29245c") + (pad "1" smd roundrect + (at -0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_TP") + (pintype "passive") + (uuid "71a08c16-9141-4b3d-b5c9-6405729b8736") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/HEAT_EN_DC") - (pinfunction "1_1") + (pad "2" smd roundrect + (at 0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") (pintype "passive") - (uuid "ad130a74-209e-4d19-b1cf-e3e39a5191a4") + (uuid "84828e1b-47f3-453a-a517-5d98bb67ce5b") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "5c4dc67d-fdd3-41e6-bb61-05e74190d119") - (at 145.7025 89.5 90) - (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") - (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") - (property "Reference" "J9" - (at 2.25 -5.12 90) + (uuid "4df6a940-d0d6-4af0-b3fb-563f60b65605") + (at 116.27 89.5) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C25" + (at 0 -1.16 0) (layer "F.SilkS") - (uuid "44658964-8c5c-428e-81e4-894ce431bb37") + (hide yes) + (uuid "e762d5ed-98bf-4cdf-a322-dec1456b6fb3") (effects (font (size 1 1) @@ -12029,10 +11342,11 @@ ) ) ) - (property "Value" "LID SWITCH" - (at 2.25 4.92 90) + (property "Value" "220nF" + (at 0 1.16 0) (layer "F.Fab") - (uuid "fe64e888-5102-434e-b1cb-b88160a0a8aa") + (hide yes) + (uuid "c8db3aa1-ee2b-4fb6-b4ab-67e6ef4fc5c1") (effects (font (size 1 1) @@ -12041,10 +11355,10 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "a58f94e7-249a-40de-aa39-5063ddedb9be") + (uuid "52fe257a-8e23-4530-96ec-a1ccb6565fcb") (effects (font (size 1.27 1.27) @@ -12052,22 +11366,22 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "e11ed9a0-bc16-4747-b35b-a0dd808612f5") + (uuid "cf6158c4-806c-4ac4-8f45-caeb54753352") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C474881" - (at 0 0 90) + (property "LCSC" "C16772" + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "876bbeac-8b28-4d10-8ccd-c8b08a743962") + (uuid "1e0917b6-a7af-40a1-9219-6378b255ad28") (effects (font (size 1 1) @@ -12075,8 +11389,8 @@ ) ) ) - (property ki_fp_filters "TerminalBlock*:*") - (path "/89fa6c35-0faa-4a54-a4e0-40c92583d015") + (property ki_fp_filters "C_*") + (path "/204431dd-bf28-4758-b7ea-72deeb967da2") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -12085,387 +11399,438 @@ (pins "1" "2") ) ) - (attr through_hole) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 7.62 -4.12) - (end 7.62 3.92) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "a6890ee0-1ef9-404c-9b7d-778e00d68123") + (uuid "a5357815-e695-4a37-a26a-a19b500c348e") ) (fp_line - (start -3.12 -4.12) - (end 7.62 -4.12) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "1059ef60-bf60-49af-9281-61b88059991f") + (uuid "f5412b2c-a053-4474-bcf0-2a22cbee4b9c") ) - (fp_line - (start 6.812 -0.5) - (end 7.62 -0.5) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "c63e24fe-1d49-4776-afc7-044df4dfb24c") + (fill no) + (layer "F.CrtYd") + (uuid "09854514-efc5-4950-8c10-111f5746e26a") ) - (fp_line - (start 1.88 -0.5) - (end 3.188 -0.5) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "50fdd91f-2be3-4462-bb81-b79c68039acb") + (fill no) + (layer "F.Fab") + (uuid "1ff16fe7-20c7-48e6-9629-85fcea3d1475") ) - (fp_line - (start -3.12 -0.5) - (end -1.88 -0.5) - (stroke - (width 0.12) - (type solid) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "93fa54ed-0a79-4b07-af8d-2adeb00f0c28") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) - (layer "F.SilkS") - (uuid "b531ada1-40da-439a-81da-f3ab9af42bfb") ) - (fp_line - (start 6.812 0.5) - (end 7.62 0.5) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "3cf3a1af-e6bf-4ac9-9b51-1b931f107394") + (pad "1" smd roundrect + (at -0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/CURR_SENSE") + (pintype "passive") + (uuid "1cfd3e44-19b5-40e8-87c5-e938f4b9f6f4") ) - (fp_line - (start 1.88 0.5) - (end 3.188 0.5) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "98b17d07-6d56-4b8b-abbf-4ac9f2a136dc") + (pad "2" smd roundrect + (at 0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "35aa887c-a04b-41a1-b3e6-8497f8ea010b") ) - (fp_line - (start -3.12 0.5) - (end -1.88 0.5) - (stroke - (width 0.12) - (type solid) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) ) - (layer "F.SilkS") - (uuid "c90fe96f-d3b7-4920-a2ea-8483e1c89bc5") - ) - (fp_line - (start 5.543 1.8) - (end 7.62 1.8) - (stroke - (width 0.12) - (type solid) + (scale + (xyz 1 1 1) ) - (layer "F.SilkS") - (uuid "5ed0a4d1-3ec2-4e28-bdc0-a8bf1c5b3579") - ) - (fp_line - (start 1.88 1.8) - (end 4.457 1.8) - (stroke - (width 0.12) - (type solid) + (rotate + (xyz 0 0 0) ) + ) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "4fee284e-d80d-465b-9d75-3e3c3779db00") + (at 82.34 97.06) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R8" + (at 0 -1.17 0) (layer "F.SilkS") - (uuid "a0f56342-d75d-4db9-b21b-e837ff1e7b3b") + (hide yes) + (uuid "91f85773-6828-480d-9ee2-d3f565880692") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (fp_line - (start -3.12 1.8) - (end -1.88 1.8) - (stroke - (width 0.12) - (type solid) + (property "Value" "4.7k" + (at 0 1.17 0) + (layer "F.Fab") + (hide yes) + (uuid "74aa3e75-a94d-4221-85c4-12c81ae087b1") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.SilkS") - (uuid "4b26ac47-3d59-4716-b677-cf2d7f134af0") ) - (fp_line - (start 7.62 3.92) - (end 0.3 3.92) - (stroke - (width 0.12) - (type solid) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "8a8874a5-e900-4e3b-accb-3a2c0f2d2720") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.SilkS") - (uuid "5656ca14-8e31-400c-8f21-2c7cd36ed025") ) - (fp_line - (start -0.3 3.92) - (end -3.12 3.92) - (stroke - (width 0.12) - (type solid) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "9c9ffa69-8ec6-4299-b340-0f32215d9ec6") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25900" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "a04cbb04-68e1-4301-943a-b35736b78bce") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/0860280d-6ba9-40e5-bcad-1876705f1e86") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") ) - (layer "F.SilkS") - (uuid "a79a9fbd-699b-4de3-b63e-ac202b1530a6") ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -3.12 3.92) - (end -3.12 -4.12) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "3c534ce1-22f9-4ec1-841d-ad794f867fd7") + (uuid "be728a7d-9dda-49d8-997d-3e1123f590d9") ) - (fp_poly - (pts - (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) - ) + (fp_line + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) - (fill yes) (layer "F.SilkS") - (uuid "1ba0d0ac-a829-4dfd-bdf1-223a8d115794") + (uuid "b9ee1565-1f46-40d9-acf9-5cb1db62c6b7") ) (fp_rect - (start -3.5 -4.5) - (end 8 4.31) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "b7a0b6d3-2747-4160-8d5a-d35dd97fdc45") + (uuid "54c42426-385c-4882-90f1-6577140bc252") ) - (fp_line - (start 7.5 -4) - (end 7.5 3.8) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "e744b9dd-4423-43fe-ab79-67fcc0c657bf") + (uuid "9ae2badd-03ff-4077-9057-c01db17428a6") ) - (fp_line - (start -3 -4) - (end 7.5 -4) - (stroke - (width 0.1) - (type solid) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "6531f455-8c4a-4d70-8fd7-a7ea32e8c61b") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pintype "passive") + (uuid "5a5f6da3-90f2-4c82-8f98-f6ee64c8d3c6") + ) + (pad "2" smd roundrect + (at 0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/I2C_SDA") + (pintype "passive") + (uuid "7f2da678-e24a-4063-bd0c-dd07a4082f56") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "51c7fe4d-04ac-4b8e-9fff-8fa4bc05bc71") + (at 126.7 113.05) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP18" + (at 0 -1.648 0) + (layer "F.SilkS") + (hide yes) + (uuid "53125590-4b3c-4e04-bc89-ab66c58165ea") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) + ) + (property "Value" "TC2_CS" + (at 0 1.75 0) (layer "F.Fab") - (uuid "9482d857-b93c-438e-9da1-811e27f02de9") + (hide yes) + (uuid "2cb0c4fd-756f-4f8c-ad7e-37d8134d2dc8") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "44ad6897-1408-47a4-8242-21628ca7e7fc") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "ade20267-7b82-4b9d-aa8b-e67a1ede1a65") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/a99fcb5c-940b-4643-bbc2-0c83d45a4d2d") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) ) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 6.018 -1.213) - (end 3.787 1.018) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "84ff92a1-592b-4362-bf7e-04eb356a47a0") + (layer "F.SilkS") + (uuid "92b8aba3-fa7e-4545-a02b-aa0c2d6ac26a") ) (fp_line - (start 1.018 -1.213) - (end -1.213 1.018) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "426b2b87-d6c1-4c7f-8c01-6c02e647a8d1") + (layer "F.SilkS") + (uuid "c47c03e8-ee84-4129-b070-9484aff7193d") ) (fp_line - (start 6.213 -1.018) - (end 3.982 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "d3748a8d-6bc6-437b-99bd-e247027db507") - ) - (fp_line - (start 1.213 -1.018) - (end -1.018 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "6afff918-7013-4047-9010-72e66bdf32b9") - ) - (fp_line - (start -3 -0.5) - (end 7.5 -0.5) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "a6d4f09d-a8d7-44c5-b64b-e9418d483465") + (layer "F.SilkS") + (uuid "97fb1c10-f164-49ef-908f-ad097d9a7447") ) (fp_line - (start -3 0.5) - (end 7.5 0.5) + (start 0.95 0.95) + (end -0.95 0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "1e6dde9e-0271-4aec-a9e5-212e52381fe8") + (layer "F.SilkS") + (uuid "5a5697eb-7481-4b8a-beb6-44e5ea010bc0") ) (fp_line - (start -3 1.8) - (end 7.5 1.8) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "462d8927-5b2f-4dd7-a130-4bc3b25f4fe9") + (layer "F.CrtYd") + (uuid "aba58dd2-0563-4a64-8767-ecbf2b91dd15") ) (fp_line - (start -3 1.85) - (end -3 -4) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "9dda01b2-18a2-4719-b47d-41d48ef9822c") + (layer "F.CrtYd") + (uuid "48b812db-a0cf-412b-a640-218ee333dc06") ) (fp_line - (start 7.5 3.8) - (end -1.05 3.8) + (start 1.25 1.25) + (end -1.25 1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "29ab2469-820e-49c3-9d09-c282e0973eb3") + (layer "F.CrtYd") + (uuid "d6655c04-3d6c-4e19-9e75-cdc4120871e7") ) (fp_line - (start -1.05 3.8) - (end -3 1.85) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "70de9afa-5e17-4135-91b7-43ed2678d8c9") - ) - (fp_circle - (center 5 0) - (end 6.6 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "68c1fbe3-64ba-444c-837e-963f75c62c34") - ) - (fp_circle - (center 0 0) - (end 1.6 0) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "7938464b-1835-4205-9f72-274e5fd526a0") - ) - (fp_text user "${REFERENCE}" - (at 2.25 2.65 90) - (layer "F.Fab") - (uuid "f0fbc65f-0939-43c6-9553-b8877c92776b") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (pad "1" thru_hole roundrect - (at 0 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (roundrect_rratio 0.089286) - (net "+5V") - (pinfunction "Pin_1_1") - (pintype "passive") - (uuid "fc9a0ea8-96db-4f27-ae80-efacb546b790") + (layer "F.CrtYd") + (uuid "cf2ba7d3-7de9-40d5-9148-07912c9babac") ) - (pad "2" thru_hole circle - (at 5 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/LID_SWITCH") - (pinfunction "Pin_2_2") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC2_CS") + (pinfunction "1_1") (pintype "passive") - (uuid "a2fb6443-e233-4c9c-ab85-18cdaf3a3e51") + (uuid "a99333d4-639b-4a7b-9b99-6f0aad5a6919") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "Capacitor_SMD:C_0805_2012Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "5c5c4256-b72a-4f4b-ae2f-19ea04e21c3a") - (at 134.5 44.55 -90) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") - (tags "capacitor") - (property "Reference" "C23" - (at 0 -1.68 90) + (uuid "522555ec-f28e-457a-b18f-4b36c9c30800") + (at 126.7 100.85 90) + (property "Reference" "TP8" + (at 0 -1.648 90) + (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "10a0dc60-76a7-41df-849b-b2c8a03706e0") + (uuid "74e77204-ea8b-4cc9-a558-136e47022dfe") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "10uF" - (at 0 1.68 90) - (layer "F.Fab") + (property "Value" "TC1_MISO" + (at 0 1.75 90) + (unlocked yes) + (layer "F.SilkS") (hide yes) - (uuid "36c03013-18df-4cb5-8d88-7a651ec82216") + (uuid "b9575cb4-52a3-409e-8ac2-01057571b8bc") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) @@ -12473,7 +11838,7 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "b301c229-4c32-4a45-9ab8-5f2bdf52a819") + (uuid "106fdba9-81a2-45cd-96ef-23eac7771109") (effects (font (size 1.27 1.27) @@ -12484,149 +11849,142 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "7fb25bee-64b7-4aff-97f9-c0a05e6b5561") + (uuid "d14d98c3-6a4c-4d0a-aa14-eced37757c8f") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C15850" - (at 0 0 270) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "8cf4a1e5-eccb-47dd-b47b-00bfb094ec56") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "C_*") - (path "/d01449f7-1fb9-4423-a800-4e65c303de08") + (property ki_fp_filters "Pin* Test*") + (path "/f300a9b4-8345-4e17-aac5-43cc11a04824") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.261252 0.735) - (end 0.261252 0.735) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "d6a42edf-9834-4b26-8f4c-a38efedd9b8c") + (uuid "4ee3b880-515d-44b4-b39d-3f557bc6c0e1") ) (fp_line - (start -0.261252 -0.735) - (end 0.261252 -0.735) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "d21b6c8e-585e-4693-bbdf-9b3636baccc7") + (uuid "2584b88f-3c61-4b29-8dfb-d6d9e70ea2cb") ) - (fp_rect - (start -1.7 -0.98) - (end 1.7 0.98) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (fill no) - (layer "F.CrtYd") - (uuid "474a548a-5822-402a-802d-4ed8032cd7af") + (layer "F.SilkS") + (uuid "a3badc7f-29cc-42f4-b659-126ab278c00f") ) - (fp_rect - (start -1 -0.625) - (end 1 0.625) + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) (stroke - (width 0.1) - (type solid) + (width 0.12) + (type default) ) - (fill no) - (layer "F.Fab") - (uuid "d86eaa98-c81c-4733-a79c-496abfb0e60e") + (layer "F.SilkS") + (uuid "b287a45f-3069-4ea0-a6d8-c5598a8b5bae") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "020867d3-1c59-4d3f-807d-2263e638f72f") - (effects - (font - (size 0.5 0.5) - (thickness 0.08) - ) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "5969a58e-61f8-4dc7-9df4-65002ac61490") ) - (pad "1" smd roundrect - (at -0.95 0 270) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "Net-(C23-Pad1)") - (pintype "passive") - (uuid "f1e5c0d4-f706-43d9-a02a-44d3d2242b98") - ) - (pad "2" smd roundrect - (at 0.95 0 270) - (size 1 1.45) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/PUMP_NODE") - (pintype "passive") - (uuid "4048fd13-15f6-4e91-83e6-2dd38d440605") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" - (offset - (xyz 0 0 0) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) - (scale - (xyz 1 1 1) + (layer "F.CrtYd") + (uuid "5d8309a6-228f-4232-b641-8fc45da4dc1e") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) ) - (rotate - (xyz 0 0 0) + (layer "F.CrtYd") + (uuid "1d62a4c0-661e-4354-b0bc-2b6ccce8d89b") + ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "0660539a-0ec6-4115-8290-32f3a333e5fb") + ) + (pad "1" smd rect + (at 0 0 90) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC1_MISO") + (pinfunction "1_1") + (pintype "passive") + (uuid "a1b40bf1-ee8b-4d7f-8ee6-af9b464cb2ae") ) + (embedded_fonts no) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "63a9c43c-9042-4a48-823f-750a013599ca") - (at 53.86 87.8) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R12" - (at 0 -1.17 0) + (uuid "53acb9a0-340f-4b3a-b41e-eff9d1f97928") + (at 139.85 95) + (property "Reference" "TP27" + (at 0 -1.648 0) + (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "38c147cb-f2e4-48f9-ac39-8b65805fa45e") + (uuid "2493ffa5-a04d-4740-baf4-77777ecf9968") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "10k" - (at 0 1.17 0) - (layer "F.Fab") + (property "Value" "TC1_P" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") (hide yes) - (uuid "61cba057-6ae2-490e-bbca-ee0eaa3cd9f2") + (uuid "6b7c0c78-c6f9-4010-8d4f-8f34f330d625") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) @@ -12634,7 +11992,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "14262c9b-b630-4bba-9559-8c12320e0f83") + (uuid "7a486d3c-834a-4dc6-ac12-2fabd694138a") (effects (font (size 1.27 1.27) @@ -12645,133 +12003,126 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "0b0b50a7-b3f0-4cf1-abb2-d18a301da66d") + (uuid "523deb9e-b2b2-469b-84ac-16876ccedc74") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25744" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "db0f808f-aacf-4b9a-9e7e-8f9c168654ba") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "R_*") - (path "/cc10096e-ecfe-462f-abad-607d387bdfc6") + (property ki_fp_filters "Pin* Test*") + (path "/9d5ec73c-bc3b-44fb-81a3-0939d32291c8") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "6066eafc-41e5-495e-96b9-8961395bdafe") + (uuid "4fdd2fc3-cbd2-46a4-af98-3a36778183a1") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "d0bb7ed8-cb87-40c5-ae25-6fa002903a6f") + (uuid "2ed7641e-e08e-4293-b9c5-8ed5cfdf3ce9") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "e217c3dc-3406-4000-b970-26ca473a57da") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "e7bc434e-f644-4857-bca2-a8769f9e98e9") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) - (fill no) (layer "F.CrtYd") - (uuid "f44e46bc-98fc-4c4c-b34c-481f6688b975") + (uuid "e76fccb0-4e38-4cdf-825d-cb1dd5ba8b41") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) ) - (fill no) - (layer "F.Fab") - (uuid "fecfead1-60d8-44f8-9ddc-6ebaf615f55e") + (layer "F.CrtYd") + (uuid "dcf07b7b-112f-4841-a00c-c17b6a07c4f1") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "06cddc1e-0a57-432f-b315-a0bc8874a78e") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "f6de8128-d328-493f-84c0-12e79b1d378e") ) - (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pintype "passive") - (uuid "d792d271-3e54-4bb3-9fd1-08a090eeeca0") + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "7625bcc9-b1ea-49b8-b087-32a39e2202e6") ) - (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/ENC_BTN") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC1_P") + (pinfunction "1_1") (pintype "passive") - (uuid "7c825349-3fbe-4031-8a7f-52f9c8f64402") + (uuid "4cf571ef-8618-4bbe-bac6-81986d5a6b30") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") - (uuid "643b752f-776d-473d-b205-22f8fde5980e") - (at 145.4775 55.75) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R15" - (at 0 -1.17 0) + (uuid "5427ba47-699f-45b1-843d-a050c70f718d") + (at 136.2 104.3) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") + (tags "capacitor") + (property "Reference" "C13" + (at 0 -1.68 0) (layer "F.SilkS") (hide yes) - (uuid "3327a8e4-c8d5-4e92-96f5-5d256ca45c6d") + (uuid "939946c9-e4e7-47ae-b2df-2b6feafd0af7") (effects (font (size 1 1) @@ -12779,11 +12130,11 @@ ) ) ) - (property "Value" "1k" - (at 0 1.17 0) + (property "Value" "10uF" + (at 0 1.68 0) (layer "F.Fab") (hide yes) - (uuid "aea6af46-8a80-409e-812f-c7b4e821caf3") + (uuid "04353d11-0616-4acb-b3f5-3ea7663308fa") (effects (font (size 1 1) @@ -12795,7 +12146,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "84e7f4b6-4a91-47e9-9c95-4bb4d925310b") + (uuid "0ba05be5-aa37-4946-8e95-68c9b6652575") (effects (font (size 1.27 1.27) @@ -12806,19 +12157,19 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "9471dc73-0313-4ac8-b2ab-ef18d9f42720") + (uuid "6d3dcebc-52d3-46fc-ac48-3ff8a250c387") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C11702" + (property "LCSC" "C15850" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "50942c7b-74d6-408e-a6ab-fcd672c9c669") + (uuid "3842f653-961a-4332-b271-1ba641fc06b3") (effects (font (size 1 1) @@ -12826,8 +12177,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/2a9d7d50-9b4a-457f-98c7-0073d14e7f56") + (property ki_fp_filters "C_*") + (path "/f925a691-5910-4e8c-aca7-e7b4f6766755") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -12839,78 +12190,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.261252 -0.735) + (end 0.261252 -0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "6123f3e9-97f1-46b9-a8f3-945c1b7b8c3f") + (uuid "d1580d58-2dc5-45a6-8150-09809f029d02") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.261252 0.735) + (end 0.261252 0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "1fe7780b-a681-4bb0-879a-cebcea540227") + (uuid "957bfc4a-bc4f-420a-954b-6cdd4d8e7068") ) (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (start -1.7 -0.98) + (end 1.7 0.98) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "4389e711-e811-4201-adfc-90258fc4391f") + (uuid "0bfaaa1b-17a0-4dce-a419-107340688a62") ) (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (start -1 -0.625) + (end 1 0.625) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "3986a868-0cf4-45f7-b991-0f4f98e5fc10") + (uuid "a5032d01-5803-4d69-9a42-082c46b982be") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "25e1d086-e773-4448-82ad-99e208bc5d70") + (uuid "45008ab2-abda-470b-9833-d9f0cf26c11e") (effects (font - (size 0.26 0.26) - (thickness 0.04) + (size 0.5 0.5) + (thickness 0.08) ) ) ) (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) + (at -0.95 0) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "+5V") + (net "+3.3V") (pintype "passive") - (uuid "952cc700-0f66-4815-b63b-3826a34130b8") + (uuid "33cba55f-c6d6-44ae-8908-a25fca840e1b") ) (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) + (at 0.95 0) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "Net-(D3-A)") + (net "GND") (pintype "passive") - (uuid "90b0c461-8a12-4dc1-8a4b-430b83deb17b") + (uuid "36a261fa-e51d-47f3-ae65-120bd2a6ef3d") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" (offset (xyz 0 0 0) ) @@ -12922,33 +12273,33 @@ ) ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "68e91f83-230e-4de9-a0f3-f125fc540f9b") - (at 61.25 69.75) - (property "Reference" "TP5" - (at 0 -1.648001 0) - (unlocked yes) + (uuid "56212801-8dc4-4186-bc1d-6d4ff7ecf8e4") + (at 139.88 100.65) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C10" + (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "f1ae7061-c5c5-4e7a-a7af-3d2076087253") + (uuid "ac04f51d-7670-4af5-bc9f-c41750e9aafb") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "VBUS" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "100pF" + (at 0 1.16 0) + (layer "F.Fab") (hide yes) - (uuid "6afda873-427f-4d9c-9738-c1610350b8cc") + (uuid "454b6744-20f2-4298-8162-517d24b061d8") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -12956,7 +12307,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "dea5ded9-bef9-487f-8ff3-f4dfcbcaa836") + (uuid "220b2f4c-f633-4f6f-b0e6-c6b11732e736") (effects (font (size 1.27 1.27) @@ -12967,142 +12318,149 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "3481a7ce-a953-48b2-b17f-08c767cf752d") + (uuid "68d6fa8d-fd3b-4328-922c-c00ddbf1ad6e") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/986cf827-7c66-481c-b25a-a69b83bd658e") + (property "LCSC" "C26409" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "627eef76-a981-4311-a4b8-66b2613f832a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/d0860c85-1511-49f3-aee3-b60d62ddf2d2") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.950001) - (end 0.95 -0.950001) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "837d00bb-46f4-4980-9e8f-5d0535c0bb83") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.950001) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "e91aaf9f-d4c1-4429-a481-178a23ce01c5") - ) - (fp_line - (start 0.95 -0.950001) - (end 0.95 0.95) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "4657468b-015b-4f79-b6c1-34147c0937f3") + (uuid "9393a6d3-e6ae-4c63-b5ad-d7581d9ef274") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "844efbba-ba58-42a9-9fcc-ebf651a87fe8") + (uuid "4c66c42a-b88d-44d0-9f3b-ebd25679d65e") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "151f3825-11f3-4fdc-b54c-12f5d18451c8") + (uuid "c01d610a-3395-4649-9300-0d8265bd3b0e") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "0155f36f-5177-4d6d-8286-cb2cd8f13830") + (fill no) + (layer "F.Fab") + (uuid "6da69efb-7972-4b0b-8278-f1fb6d1a418f") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "9c2a8148-689a-4cb9-b518-2dddee632e08") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "d5a62005-b6d6-4aac-a2e5-22b27fbd5747") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "c8fe3f31-890b-401f-a7f8-4cc5f030f654") + (pad "1" smd roundrect + (at -0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_TN") + (pintype "passive") + (uuid "67482a60-cf9c-45e5-86b3-c0d1dd071325") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/VBUS") - (pinfunction "1_1") + (pad "2" smd roundrect + (at 0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") (pintype "passive") - (uuid "03306ff5-e760-4fa6-a693-9272482dbaa1") + (uuid "6ac4186d-99f7-4094-96e5-2af463f61a42") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "6ae19bd3-21c3-46c6-adc9-97c5ee04adc8") - (at 59.25 56) - (property "Reference" "TP1" - (at 0 -1.648 0) - (unlocked yes) + (uuid "574aba24-2e1a-4661-b265-15ae8e7c37dc") + (at 139.79 92.2) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R26" + (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "0e2f5f87-7522-474a-a6ff-5435c5fd2996") + (uuid "d74813cd-d80b-4ecc-aa3b-bf241d227554") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "+5V" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "1k" + (at 0 1.17 0) + (layer "F.Fab") (hide yes) - (uuid "6fbc2b22-c322-4817-806a-f1f65c4df7ba") + (uuid "672a2efe-ec63-41f9-b01a-67f53959b00c") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -13110,7 +12468,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "389cafc0-374b-482d-9d3f-5d7b11f56a53") + (uuid "5bdac1a9-cfe9-4181-99d6-8fd7b36d44a7") (effects (font (size 1.27 1.27) @@ -13121,150 +12479,157 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "61d433bc-7c5b-497d-8bfc-2972e0be1684") + (uuid "216317a5-4735-4bfe-8aab-60379618f844") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/4b995369-c15f-4a64-a927-8ec47eb5ba5f") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) - ) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) + (property "LCSC" "C11702" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "5ebdae3d-e346-48ce-aed5-902e2507bee2") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.SilkS") - (uuid "f33fff86-948a-4026-b766-4d8653fad71e") ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) + (property ki_fp_filters "R_*") + (path "/fd2890eb-43b1-4e00-bf0c-b6e50cfb4bd4") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") ) - (layer "F.SilkS") - (uuid "ab21269c-8d33-4655-85ef-892a2245ee3c") ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "2c98eaa7-6af2-4297-9518-85e7571637b1") + (uuid "9d94b870-85e5-4079-b72a-bb077a16a994") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "05198c24-0468-48ed-8a3c-0d2a34b5d518") + (uuid "a8f04920-bc63-4add-bdb2-4d29b813418d") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "26f7c5ce-b189-418d-9a14-871e6870ef5a") + (uuid "a2e99dbd-02f1-4482-9320-f2b954e68430") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "7d78be42-e9c8-4b16-8bfe-407d7e4027a9") + (fill no) + (layer "F.Fab") + (uuid "3c5e85cb-f4b8-475e-b219-4f2acb9effab") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "07eb9311-b0ef-4aae-843e-d5752ea5697a") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "91c6e426-161c-452e-a6be-0b7a0aae21de") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "c87acd19-2ffe-4005-8662-3b33175d945f") + (pad "1" smd roundrect + (at -0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/CT_IN") + (pintype "passive") + (uuid "996a5911-b949-40cb-a15f-e65ec09041aa") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "+5V") - (pinfunction "1_1") + (pad "2" smd roundrect + (at 0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/CURR_SENSE") (pintype "passive") - (uuid "89d0c853-3653-4636-bc7b-70a8c44c0d09") + (uuid "5cf179d1-c4e0-42f2-9a8c-1a7d1505248e") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "6d4b0046-65dc-47e2-8acd-1466c5b4cd14") - (at 84.85 99.55) - (property "Reference" "TP16" - (at 0 -1.648 0) - (unlocked yes) + (uuid "5896e179-376f-492c-a7a1-e13d98b9db78") + (at 126.7 90.75 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R6" + (at 0 -1.17 90) (layer "F.SilkS") (hide yes) - (uuid "ae11d0fa-0d3f-43e9-82b1-d941c320a66f") + (uuid "9552a8e9-bd80-4258-98ec-09ac3355c0ed") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "I2C_SCL" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "220R" + (at 0 1.17 90) + (layer "F.Fab") (hide yes) - (uuid "58873951-8fe3-4bbb-bdd1-3d135b2e2fbc") + (uuid "0f1901df-426d-4c21-8945-f271fe86f30e") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "395d960a-b4f1-43fc-9628-daef88eae4b6") + (uuid "fa51e15d-2669-4d14-b8c7-8e88f74e7fdc") (effects (font (size 1.27 1.27) @@ -13272,266 +12637,101 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "d150514e-9120-4096-8e02-a879279231ec") + (uuid "5433bc64-73fb-4784-9e48-1220bc7a01ed") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/4f644575-e878-488b-b544-9b3048b3d2d0") + (property ki_fp_filters "R_*") + (path "/0e2fa75f-36d4-495e-8fed-d347c0e72dad") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "413e5c39-e028-4541-8f6a-6b97f079814c") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "a46e510a-5bea-4162-ac84-908d94d1f87f") - ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "c3311643-6684-407f-a6d1-0967deb800f7") + (uuid "9dcba79a-6b56-4907-8074-96f963c250ef") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "9904992c-e803-4aa2-aafe-2050e9be9f49") - ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "df8255f0-6040-401a-b4ba-a4b5b83d5d90") + (uuid "cd8ef7f6-526e-4ff2-a3ce-7ddd15ae2803") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "728eebee-c6b5-4986-b51f-51e80c2550d9") + (uuid "41af5986-6894-4320-b657-c7166ba1638d") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "b7100d34-4aea-4d9e-b513-0c4007bc6b3e") + (fill no) + (layer "F.Fab") + (uuid "a525a721-6d79-47bc-bc77-1f30ea7e15eb") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "e8220856-9496-4f4c-a61e-a32d9b2d80f2") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/I2C_SCL") - (pinfunction "1_1") - (pintype "passive") - (uuid "e525bed2-ea78-4ae2-b712-00f90497b6a2") - ) - (embedded_fonts no) - ) - (footprint "Fuse:Fuse_1206_3216Metric" - (layer "F.Cu") - (uuid "6dae02bf-8e73-4ce6-ad88-26db0d669cdc") - (at 60.75 42.85 -90) - (descr "Fuse SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf)") - (tags "fuse") - (property "Reference" "F1" - (at 0 -1.83 90) - (layer "F.SilkS") - (uuid "b0cefd0b-63c4-4f84-8a44-1cceddf722be") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "PTC 1.5A" - (at 0 1.83 90) - (layer "F.Fab") - (uuid "e1bc6981-7c3f-49a0-a6cc-a330c17da449") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "8e614161-45cf-4517-bc04-4775f84c619b") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "f8ac487a-0535-407f-b0db-26acc802f8ed") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C20802" - (at 0 0 270) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "a6f4bc23-6291-46a4-8bef-c0a43b0dcebd") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "*Fuse*") - (path "/5429eaf5-0aca-45db-b7c7-7c4b38ba126c") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) - ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.602064 0.91) - (end 0.602064 0.91) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "c629d06e-294f-47d9-80ce-37b57756abb9") - ) - (fp_line - (start -0.602064 -0.91) - (end 0.602064 -0.91) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "a3b0c108-4f71-4e0a-a583-685ee9331db9") - ) - (fp_rect - (start -2.28 -1.13) - (end 2.28 1.13) - (stroke - (width 0.05) - (type solid) - ) - (fill no) - (layer "F.CrtYd") - (uuid "7792e962-6938-4fc5-bfe3-2557ed21f66c") - ) - (fp_rect - (start -1.6 -0.8) - (end 1.6 0.8) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "cf550c3a-ab72-496b-bf10-845ccf484cc0") - ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "bc9f7feb-aa73-4f8c-ace8-74da09fdc248") - (effects - (font - (size 0.8 0.8) - (thickness 0.12) - ) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "3b41f61a-aa97-4e80-8d4e-c421ef74d62b") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) ) ) (pad "1" smd roundrect - (at -1.4 0 270) - (size 1.25 1.75) + (at -0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.2) - (net "/V_IN") + (roundrect_rratio 0.25) + (net "Net-(U5-PA2)") (pintype "passive") - (uuid "3016780a-dbdb-4c1a-8fd6-cf148661fd36") + (uuid "37ff9a56-b39d-4ea9-a2f1-da8141aef6eb") ) (pad "2" smd roundrect - (at 1.4 0 270) - (size 1.25 1.75) + (at 0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.2) - (net "/V_FUSED") + (roundrect_rratio 0.25) + (net "/SUPERVISOR_TX") (pintype "passive") - (uuid "3056c46d-bc15-4503-8792-cf92a7c84587") + (uuid "1576f39a-5184-422d-8dee-9e406afaaef5") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Fuse.3dshapes/Fuse_1206_3216Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -13545,14 +12745,14 @@ ) (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "6e7256e4-77d3-4c8f-97c6-3f4a47d18d16") - (at 63.75 69.75) - (property "Reference" "TP4" - (at 0 -1.648001 0) + (uuid "5bb9dc8c-555e-4e93-bae6-a452cefbde90") + (at 124.25 44.25) + (property "Reference" "TP21" + (at 0 -1.648 0) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "364f9bb0-939b-407f-b3ae-a00f52c22c9d") + (uuid "04751291-53eb-45f1-8b75-f67881898941") (effects (font (size 1 1) @@ -13560,12 +12760,12 @@ ) ) ) - (property "Value" "GND" + (property "Value" "HEAT_EN_DC" (at 0 1.75 0) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "cd3de765-853e-40f8-90d2-7069d4790c9e") + (uuid "3a5ccc38-6cfe-4af7-906d-dc69f51104c6") (effects (font (size 1 1) @@ -13577,7 +12777,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "f218dbf5-6657-4b8b-a740-f54a187862a5") + (uuid "2347e3e2-8f65-4af3-b552-98037aedf8b3") (effects (font (size 1.27 1.27) @@ -13588,7 +12788,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "29afb796-03c6-4b2a-b248-7d67c268ba52") + (uuid "db873f96-1cc0-4c28-bff6-bf1ec5fe2232") (effects (font (size 1.27 1.27) @@ -13596,7 +12796,7 @@ ) ) (property ki_fp_filters "Pin* Test*") - (path "/e98d8b59-8c8e-45c4-a41c-b2001586336b") + (path "/36ce296a-dcd5-4f6d-a449-8a72c797f031") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -13607,34 +12807,34 @@ ) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.950001) - (end 0.95 -0.950001) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "35d65e08-a1d1-426e-acf6-4e72ff88660b") + (uuid "1b77460b-3785-40fc-a157-4dbbed9760ce") ) (fp_line (start -0.95 0.95) - (end -0.95 -0.950001) + (end -0.95 -0.95) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "de253183-68ca-4c42-9af5-015bfcf5b0aa") + (uuid "a190f910-23c9-4c7e-a69f-670b790f2bb8") ) (fp_line - (start 0.95 -0.950001) + (start 0.95 -0.95) (end 0.95 0.95) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "c7e4e84f-fe69-43dc-8b29-22ab4eb3479c") + (uuid "6e644334-d48c-4383-b489-d2f9d53bfb8d") ) (fp_line (start 0.95 0.95) @@ -13644,7 +12844,7 @@ (type default) ) (layer "F.SilkS") - (uuid "09815665-4eac-4a95-b73c-877492b032c1") + (uuid "22dac717-f2a8-4440-b117-af599de6aba1") ) (fp_line (start -1.25 -1.25) @@ -13654,7 +12854,7 @@ (type default) ) (layer "F.CrtYd") - (uuid "f2069c8b-d027-425f-958c-56441f6783a9") + (uuid "5124a9a5-dc5d-4331-9850-718ba418aff7") ) (fp_line (start -1.25 -1.25) @@ -13664,7 +12864,7 @@ (type default) ) (layer "F.CrtYd") - (uuid "49e8aa32-4b2e-4a70-9e3e-b67c3de37507") + (uuid "5ea0271e-a85d-4241-97a4-d5029e10b050") ) (fp_line (start 1.25 1.25) @@ -13674,7 +12874,7 @@ (type default) ) (layer "F.CrtYd") - (uuid "8ba6baa0-f7c6-48f6-b12c-a72f7c4685e6") + (uuid "171a19f5-b5d1-464b-8237-58423b5d58c0") ) (fp_line (start 1.25 1.25) @@ -13684,54 +12884,52 @@ (type default) ) (layer "F.CrtYd") - (uuid "abf13af0-8410-423d-8a94-d9162065e57c") + (uuid "a333dcf1-a9b2-4364-a8c9-f4874e29245c") ) (pad "1" smd rect (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") - (net "GND") + (net "/HEAT_EN_DC") (pinfunction "1_1") (pintype "passive") - (uuid "c967ba3f-42e7-405b-b9e2-c393a4d3d17c") + (uuid "ad130a74-209e-4d19-b1cf-e3e39a5191a4") ) (embedded_fonts no) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" (layer "F.Cu") - (uuid "7164b594-c926-4147-8213-f6be3babaebd") - (at 54.35 85.8) - (property "Reference" "TP24" - (at 0 -1.648 0) - (unlocked yes) + (uuid "5c4dc67d-fdd3-41e6-bb61-05e74190d119") + (at 145.8 77.05 90) + (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") + (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") + (property "Reference" "J9" + (at 2.25 -5.12 90) (layer "F.SilkS") - (hide yes) - (uuid "5a03065a-1544-4550-b111-8b467b7a16b8") + (uuid "44658964-8c5c-428e-81e4-894ce431bb37") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "ENC_A" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "1e79526e-cf8e-421e-973d-f822c55f66a7") + (property "Value" "LID SWITCH" + (at 2.25 4.92 90) + (layer "F.Fab") + (uuid "fe64e888-5102-434e-b1cb-b88160a0a8aa") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "d79253fb-09f8-49d9-8a3b-ef7f291f22be") + (uuid "a58f94e7-249a-40de-aa39-5063ddedb9be") (effects (font (size 1.27 1.27) @@ -13739,268 +12937,184 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "d7b8b294-8be6-46b9-b05a-61307020eea2") + (uuid "e11ed9a0-bc16-4747-b35b-a0dd808612f5") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/d2ce38eb-9ee3-48d9-85c5-b5bbfda93448") + (property "LCSC" "C474881" + (at 0 0 90) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "876bbeac-8b28-4d10-8ccd-c8b08a743962") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "TerminalBlock*:*") + (path "/89fa6c35-0faa-4a54-a4e0-40c92583d015") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 7.62 -4.12) + (end 7.62 3.92) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "5a6d7f15-9777-48d7-a7b2-c60f85ffc6b5") + (uuid "a6890ee0-1ef9-404c-9b7d-778e00d68123") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -3.12 -4.12) + (end 7.62 -4.12) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "d68f49d1-42e2-42a4-b7b5-6d15ad73cb32") + (uuid "1059ef60-bf60-49af-9281-61b88059991f") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start 6.812 -0.5) + (end 7.62 -0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "be473dbd-a999-4380-9539-1aa04bc4883d") + (uuid "c63e24fe-1d49-4776-afc7-044df4dfb24c") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start 1.88 -0.5) + (end 3.188 -0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "68b8c256-a95c-4b2a-b120-6cba368a50bb") - ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "2109a032-9e44-4d65-9d2c-6350279d49a0") + (uuid "50fdd91f-2be3-4462-bb81-b79c68039acb") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start -3.12 -0.5) + (end -1.88 -0.5) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "deea1d0c-09c7-4674-ab3c-9822135d3ee0") + (layer "F.SilkS") + (uuid "b531ada1-40da-439a-81da-f3ab9af42bfb") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start 6.812 0.5) + (end 7.62 0.5) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "b3198c61-b9f2-4b5b-95fd-199f5d4db203") + (layer "F.SilkS") + (uuid "3cf3a1af-e6bf-4ac9-9b51-1b931f107394") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start 1.88 0.5) + (end 3.188 0.5) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "796ea0b9-61d7-47fa-8e17-280a27cecc23") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/ENC_A") - (pinfunction "1_1") - (pintype "passive") - (uuid "25767ef9-e4cf-436f-a94f-d099eb766200") - ) - (embedded_fonts no) - ) - (footprint "Package_TO_SOT_SMD:SOT-23" - (layer "F.Cu") - (uuid "760b3502-60c8-4551-89ad-02e7e1c27ed9") - (at 131.4375 44.55) - (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") - (tags "SOT TO_SOT_SMD") - (property "Reference" "D5" - (at 0 -2.4 0) (layer "F.SilkS") - (hide yes) - (uuid "2009a7d8-f5d6-4587-b680-f22519de4e57") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "BAT54S" - (at 0 2.4 0) - (layer "F.Fab") - (hide yes) - (uuid "d28bb69f-f0b2-4736-8e7c-0942a3c2af2e") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "ed339f3c-fb17-4213-9be3-af2319aa760a") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "9603be21-6620-4fa8-8cd6-97541e1469bf") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C19726" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "2f20c7e0-f52e-411a-b513-6342b559866f") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "SOT?23*") - (path "/9ce6e574-23c6-46c6-94b7-a9c8646c7390") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "3" "2") - ) + (uuid "98b17d07-6d56-4b8b-abbf-4ac9f2a136dc") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.76 -1.56) - (end 0.76 -1.56) + (start -3.12 0.5) + (end -1.88 0.5) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "ab5b05e1-4433-40ed-b0f6-b6e4d6cf78af") + (uuid "c90fe96f-d3b7-4920-a2ea-8483e1c89bc5") ) (fp_line - (start -0.76 -1.51) - (end -0.76 -1.56) + (start 5.543 1.8) + (end 7.62 1.8) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "b31168da-21a0-4a16-a2b3-b57fab16a417") + (uuid "5ed0a4d1-3ec2-4e28-bdc0-a8bf1c5b3579") ) (fp_line - (start -0.76 0.39) - (end -0.76 -0.39) + (start 1.88 1.8) + (end 4.457 1.8) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "159c4e04-c402-4486-875e-869e65476b73") + (uuid "a0f56342-d75d-4db9-b21b-e837ff1e7b3b") ) (fp_line - (start -0.76 1.56) - (end -0.76 1.51) + (start -3.12 1.8) + (end -1.88 1.8) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "17b53c72-408d-438c-a02c-db28b6ed8a54") + (uuid "4b26ac47-3d59-4716-b677-cf2d7f134af0") ) (fp_line - (start 0.76 -1.56) - (end 0.76 -0.56) + (start 7.62 3.92) + (end 0.3 3.92) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "66995504-6ee2-48ca-b827-78a8e882528e") + (uuid "5656ca14-8e31-400c-8f21-2c7cd36ed025") ) (fp_line - (start 0.76 0.56) - (end 0.76 1.56) + (start -0.3 3.92) + (end -3.12 3.92) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "182b5add-d4cf-4420-86e2-4a55e4ab632d") + (uuid "a79a9fbd-699b-4de3-b63e-ac202b1530a6") ) (fp_line - (start 0.76 1.56) - (end -0.76 1.56) + (start -3.12 3.92) + (end -3.12 -4.12) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "77811463-46f3-429e-a18a-0bae3e7532ed") + (uuid "3c534ce1-22f9-4ec1-841d-ad794f867fd7") ) (fp_poly (pts - (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) + (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) ) (stroke (width 0.12) @@ -14008,223 +13122,197 @@ ) (fill yes) (layer "F.SilkS") - (uuid "01f1cd88-ea41-4a2d-bebd-2fa6ca27202a") + (uuid "1ba0d0ac-a829-4dfd-bdf1-223a8d115794") ) - (fp_line - (start -1.93 -1.5) - (end -0.9 -1.5) + (fp_rect + (start -3.5 -4.5) + (end 8 4.31) (stroke (width 0.05) (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "2b3d9cec-7edc-4fc9-a77b-e8675080dcd3") + (uuid "b7a0b6d3-2747-4160-8d5a-d35dd97fdc45") ) (fp_line - (start -1.93 -0.39) - (end -1.93 -1.5) + (start 7.5 -4) + (end 7.5 3.8) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "efd5ede0-07dd-4e7d-8da3-4f302a32edda") + (layer "F.Fab") + (uuid "e744b9dd-4423-43fe-ab79-67fcc0c657bf") ) (fp_line - (start -1.93 0.39) - (end -0.9 0.39) + (start -3 -4) + (end 7.5 -4) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "f8974157-5448-437b-b71c-7351c4e09387") + (layer "F.Fab") + (uuid "9482d857-b93c-438e-9da1-811e27f02de9") ) (fp_line - (start -1.93 1.5) - (end -1.93 0.39) + (start 6.018 -1.213) + (end 3.787 1.018) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "7157c7f5-66fc-4fbe-9fbb-52630309f156") + (layer "F.Fab") + (uuid "84ff92a1-592b-4362-bf7e-04eb356a47a0") ) (fp_line - (start -0.9 -1.7) - (end 0.9 -1.7) + (start 1.018 -1.213) + (end -1.213 1.018) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "b1911609-152a-49c6-ae9e-1a3295e44782") + (layer "F.Fab") + (uuid "426b2b87-d6c1-4c7f-8c01-6c02e647a8d1") ) (fp_line - (start -0.9 -1.5) - (end -0.9 -1.7) + (start 6.213 -1.018) + (end 3.982 1.213) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "b2d8b8d9-105a-46e5-a15f-b502542b9fd3") + (layer "F.Fab") + (uuid "d3748a8d-6bc6-437b-99bd-e247027db507") ) (fp_line - (start -0.9 -0.39) - (end -1.93 -0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "8c25663d-c600-4ad2-9b52-fb96dab7dfe7") - ) - (fp_line - (start -0.9 0.39) - (end -0.9 -0.39) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "ae59a8d0-c34c-4055-a0f4-afa85bb09bda") - ) - (fp_line - (start -0.9 1.5) - (end -1.93 1.5) + (start 1.213 -1.018) + (end -1.018 1.213) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "d08269e3-0e05-4c40-a964-1d9e6e932eb0") + (layer "F.Fab") + (uuid "6afff918-7013-4047-9010-72e66bdf32b9") ) (fp_line - (start -0.9 1.7) - (end -0.9 1.5) + (start -3 -0.5) + (end 7.5 -0.5) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "8e0e689c-d7cd-456c-87cd-a797fbe7eab8") + (layer "F.Fab") + (uuid "a6d4f09d-a8d7-44c5-b64b-e9418d483465") ) (fp_line - (start 0.9 -1.7) - (end 0.9 -0.55) + (start -3 0.5) + (end 7.5 0.5) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "7448d57b-7308-4558-b2ef-fc2bcc392832") + (layer "F.Fab") + (uuid "1e6dde9e-0271-4aec-a9e5-212e52381fe8") ) (fp_line - (start 0.9 -0.55) - (end 1.93 -0.55) + (start -3 1.8) + (end 7.5 1.8) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "dee92a40-0cd9-4ab0-89be-ed02b248f659") + (layer "F.Fab") + (uuid "462d8927-5b2f-4dd7-a130-4bc3b25f4fe9") ) (fp_line - (start 0.9 0.55) - (end 0.9 1.7) + (start -3 1.85) + (end -3 -4) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "6a23a82c-25e6-48ed-b39a-aa6e99d0d004") + (layer "F.Fab") + (uuid "9dda01b2-18a2-4719-b47d-41d48ef9822c") ) (fp_line - (start 0.9 1.7) - (end -0.9 1.7) + (start 7.5 3.8) + (end -1.05 3.8) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "96630564-bc76-47c9-bf3b-3ab86db36730") + (layer "F.Fab") + (uuid "29ab2469-820e-49c3-9d09-c282e0973eb3") ) (fp_line - (start 1.93 -0.55) - (end 1.93 0.55) + (start -1.05 3.8) + (end -3 1.85) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "0e547288-9b98-4bd1-8815-64921b1162a0") + (layer "F.Fab") + (uuid "70de9afa-5e17-4135-91b7-43ed2678d8c9") ) - (fp_line - (start 1.93 0.55) - (end 0.9 0.55) + (fp_circle + (center 5 0) + (end 6.6 0) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "7d413897-2f96-4d7f-8ab8-d6577a0a3122") + (fill no) + (layer "F.Fab") + (uuid "68c1fbe3-64ba-444c-837e-963f75c62c34") ) - (fp_poly - (pts - (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) - ) + (fp_circle + (center 0 0) + (end 1.6 0) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "438c9122-052a-4eb9-9a28-11ae427445c6") + (uuid "7938464b-1835-4205-9f72-274e5fd526a0") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 2.25 2.65 90) (layer "F.Fab") - (uuid "5da92856-c24f-44b4-a590-c22cdab09717") + (uuid "f0fbc65f-0939-43c6-9553-b8877c92776b") (effects (font - (size 0.72 0.72) - (thickness 0.11) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.9375 -0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pinfunction "A_1") - (pintype "passive") - (uuid "8cc7e336-f9df-416c-9bad-46bf55f27af7") - ) - (pad "2" smd roundrect - (at -0.9375 0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/HEAT_EN_DC") - (pinfunction "K_2") + (pad "1" thru_hole roundrect + (at 0 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.089286) + (net "+5V") + (pinfunction "Pin_1_1") (pintype "passive") - (uuid "41540a76-961e-44d4-a85f-2e931b9ff88f") + (uuid "fc9a0ea8-96db-4f27-ae80-efacb546b790") ) - (pad "3" smd roundrect - (at 0.9375 0) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/PUMP_NODE") - (pinfunction "COM_3") + (pad "2" thru_hole circle + (at 5 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/LID_SWITCH") + (pinfunction "Pin_2_2") (pintype "passive") - (uuid "84e3791f-824b-482a-bd58-eb73111f7ad8") + (uuid "a2fb6443-e233-4c9c-ab85-18cdaf3a3e51") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" (offset (xyz 0 0 0) ) @@ -14236,41 +13324,41 @@ ) ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") - (uuid "7624de77-f518-4876-bbf1-87bce48913f8") - (at 69.75 67.25) - (property "Reference" "TP3" - (at 0 -1.648 0) - (unlocked yes) + (uuid "5c5c4256-b72a-4f4b-ae2f-19ea04e21c3a") + (at 134.5 44.55 -90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") + (tags "capacitor") + (property "Reference" "C23" + (at 0 -1.68 90) (layer "F.SilkS") (hide yes) - (uuid "02e9086d-b005-4cf4-933b-9e3a7a46866a") + (uuid "10a0dc60-76a7-41df-849b-b2c8a03706e0") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "GND" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "10uF" + (at 0 1.68 90) + (layer "F.Fab") (hide yes) - (uuid "c8484d7e-f471-42d9-a471-33033ffe16ee") + (uuid "36c03013-18df-4cb5-8d88-7a651ec82216") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "d1b81b4a-1059-4978-ba5a-77bc8d0c679f") + (uuid "b301c229-4c32-4a45-9ab8-5f2bdf52a819") (effects (font (size 1.27 1.27) @@ -14278,283 +13366,136 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "8e6029ca-9e0d-47cd-8bba-352bcb349226") + (uuid "7fb25bee-64b7-4aff-97f9-c0a05e6b5561") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/5d4f35b0-650b-4796-b970-cdef943f7dd6") + (property "LCSC" "C15850" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "8cf4a1e5-eccb-47dd-b47b-00bfb094ec56") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/d01449f7-1fb9-4423-a800-4e65c303de08") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start -0.261252 0.735) + (end 0.261252 0.735) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "3ff0e09b-348c-4aa4-a544-d0766c0f6779") + (uuid "d6a42edf-9834-4b26-8f4c-a38efedd9b8c") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -0.261252 -0.735) + (end 0.261252 -0.735) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "aacfc1bb-410e-4042-ab06-d7ba087db140") + (uuid "d21b6c8e-585e-4693-bbdf-9b3636baccc7") ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (fp_rect + (start -1.7 -0.98) + (end 1.7 0.98) (stroke - (width 0.12) - (type default) + (width 0.05) + (type solid) ) - (layer "F.SilkS") - (uuid "9949f46d-370a-47f9-b186-1272642371d4") + (fill no) + (layer "F.CrtYd") + (uuid "474a548a-5822-402a-802d-4ed8032cd7af") ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "57eba13c-5893-4df1-95db-98dbe75c67ee") - ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "791f4439-238a-4148-bf92-b7c5a73e8ac1") - ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "2fd076e6-5035-49b4-9e3f-a3b4fc8083b9") - ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "3859519a-addf-45ea-a79a-2dc3c883e394") - ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (fp_rect + (start -1 -0.625) + (end 1 0.625) (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "93ba5c6c-7dd1-4f46-92f2-9febab8ede91") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "GND") - (pinfunction "1_1") - (pintype "passive") - (uuid "a6a1d7d4-cc9e-43dc-a79f-0934d732e3d1") - ) - (embedded_fonts no) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "76de6b09-0983-41b5-b59d-2b74cb47ea5c") - (at 139.75 41.75) - (property "Reference" "TP22" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "1aa72396-1ef8-478f-8187-ca8ab8965d8c") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Value" "COIL_DRV" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "0380a1b0-d3f1-4ffb-a904-a426c4ab078f") - (effects - (font - (size 1 1) - (line_spacing 0) - ) + (width 0.1) + (type solid) ) - ) - (property "Datasheet" "" - (at 0 0 0) + (fill no) (layer "F.Fab") - (hide yes) - (uuid "a519aed4-85be-4f37-8751-332a13d04603") - (effects - (font - (size 1.27 1.27) - ) - ) + (uuid "d86eaa98-c81c-4733-a79c-496abfb0e60e") ) - (property "Description" "" - (at 0 0 0) + (fp_text user "${REFERENCE}" + (at 0 0 90) (layer "F.Fab") - (hide yes) - (uuid "c546a1cb-a055-4c49-8305-d6041e46abf1") + (uuid "020867d3-1c59-4d3f-807d-2263e638f72f") (effects (font - (size 1.27 1.27) + (size 0.5 0.5) + (thickness 0.08) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/b84e3f8b-1c4f-425a-9e29-3c7a7cea7276") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) - ) - (duplicate_pad_numbers_are_jumpers no) - (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "ef5acc23-c1b4-4d98-bb48-ed1c1ce00eab") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "345c8b7f-a2e3-4aac-aa90-02394cbd9159") - ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "91ea9340-dccd-4e7a-b8a2-a423900be802") - ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "295f7cfb-7679-4b52-b1e1-d22b61792068") + (pad "1" smd roundrect + (at -0.95 0 270) + (size 1 1.45) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(C23-Pad1)") + (pintype "passive") + (uuid "f1e5c0d4-f706-43d9-a02a-44d3d2242b98") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "5a8e19d4-9a5c-48c6-bad1-784a545569e9") + (pad "2" smd roundrect + (at 0.95 0 270) + (size 1 1.45) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/PUMP_NODE") + (pintype "passive") + (uuid "4048fd13-15f6-4e91-83e6-2dd38d440605") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" + (offset + (xyz 0 0 0) ) - (layer "F.CrtYd") - (uuid "7f4c7453-8d42-442a-96e7-3f77d7e16cad") - ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (scale + (xyz 1 1 1) ) - (layer "F.CrtYd") - (uuid "86979a81-290d-4bf7-8334-16df32f715a0") - ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) + (rotate + (xyz 0 0 0) ) - (layer "F.CrtYd") - (uuid "d5743e13-494a-45a2-9ce3-62c580e0f142") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/COIL_DRV") - (pinfunction "1_1") - (pintype "passive") - (uuid "aa8eeda7-35ca-415f-8314-2b640f1f4d74") ) - (embedded_fonts no) ) (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "7a94f414-53d2-4779-906d-5c03f53cb77e") - (at 124.5 46.75 -90) + (uuid "63a9c43c-9042-4a48-823f-750a013599ca") + (at 53.86 87.8) (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "resistor") - (property "Reference" "R28" - (at 0 -1.17 90) + (property "Reference" "R12" + (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "477ad1de-5e86-4942-9ab2-32eebb51ab30") + (uuid "38c147cb-f2e4-48f9-ac39-8b65805fa45e") (effects (font (size 1 1) @@ -14563,10 +13504,10 @@ ) ) (property "Value" "10k" - (at 0 1.17 90) + (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "012e6e16-6f07-4300-b1e4-eb49f19cd0e8") + (uuid "61cba057-6ae2-490e-bbca-ee0eaa3cd9f2") (effects (font (size 1 1) @@ -14575,10 +13516,10 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "b6c508e0-1e84-4aa2-a77b-bdd311aa2873") + (uuid "14262c9b-b630-4bba-9559-8c12320e0f83") (effects (font (size 1.27 1.27) @@ -14586,18 +13527,31 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "7d1d09e5-557b-4668-b6bb-a11bfeb1a881") + (uuid "0b0b50a7-b3f0-4cf1-abb2-d18a301da66d") (effects (font (size 1.27 1.27) ) ) ) + (property "LCSC" "C25744" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "db0f808f-aacf-4b9a-9e7e-8f9c168654ba") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) (property ki_fp_filters "R_*") - (path "/96f91f16-786a-4147-b700-a633a4c11dcf") + (path "/cc10096e-ecfe-462f-abad-607d387bdfc6") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -14609,24 +13563,24 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "c7bb7b84-cdef-4e1e-b610-290d939879f8") + (uuid "6066eafc-41e5-495e-96b9-8961395bdafe") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "fe5e9ed7-eff7-426c-9560-09b3bcdee1cb") + (uuid "d0bb7ed8-cb87-40c5-ae25-6fa002903a6f") ) (fp_rect (start -0.93 -0.47) @@ -14637,7 +13591,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "0f9a27cb-0584-488f-946e-44153bbffb9e") + (uuid "f44e46bc-98fc-4c4c-b34c-481f6688b975") ) (fp_rect (start -0.525 -0.27) @@ -14648,12 +13602,12 @@ ) (fill no) (layer "F.Fab") - (uuid "33bc1ffc-8347-4509-9b8c-11fd8c515ea5") + (uuid "fecfead1-60d8-44f8-9ddc-6ebaf615f55e") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") - (uuid "e3308b54-451a-42bd-92d5-7b1ca670b3c9") + (uuid "06cddc1e-0a57-432f-b315-a0bc8874a78e") (effects (font (size 0.26 0.26) @@ -14662,22 +13616,22 @@ ) ) (pad "1" smd roundrect - (at -0.51 0 270) + (at -0.51 0) (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "+3.3V") (pintype "passive") - (uuid "1ab2922a-4e53-4f12-8dd4-7a2703f529ca") + (uuid "d792d271-3e54-4bb3-9fd1-08a090eeeca0") ) (pad "2" smd roundrect - (at 0.51 0 270) + (at 0.51 0) (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/TC1_FAULT") + (net "/ENC_BTN") (pintype "passive") - (uuid "412f90fd-e49f-435a-bb2d-51aced2ea64a") + (uuid "7c825349-3fbe-4031-8a7f-52f9c8f64402") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" @@ -14694,15 +13648,15 @@ ) (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "7db18534-133b-4a70-a884-040b62755193") - (at 53.85 89.8) + (uuid "643b752f-776d-473d-b205-22f8fde5980e") + (at 145.4775 55.75) (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "resistor") - (property "Reference" "R10" + (property "Reference" "R15" (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "ef4f8440-6a69-4a25-a227-678f313d3b1a") + (uuid "3327a8e4-c8d5-4e92-96f5-5d256ca45c6d") (effects (font (size 1 1) @@ -14710,11 +13664,11 @@ ) ) ) - (property "Value" "10k" + (property "Value" "1k" (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "11294927-9380-40e8-8d02-754aa976d5af") + (uuid "aea6af46-8a80-409e-812f-c7b4e821caf3") (effects (font (size 1 1) @@ -14726,7 +13680,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "1971b24b-594c-4e0f-a755-43bf51ea6665") + (uuid "84e7f4b6-4a91-47e9-9c95-4bb4d925310b") (effects (font (size 1.27 1.27) @@ -14737,19 +13691,19 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "9ebb0d59-3899-450b-a337-10ccd328eb23") + (uuid "9471dc73-0313-4ac8-b2ab-ef18d9f42720") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25744" + (property "LCSC" "C11702" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "bf058efb-2f23-4095-b241-5a844c8cc9c2") + (uuid "50942c7b-74d6-408e-a6ab-fcd672c9c669") (effects (font (size 1 1) @@ -14758,7 +13712,7 @@ ) ) (property ki_fp_filters "R_*") - (path "/c4329922-ce4a-4d51-9ae2-c78b30dd11eb") + (path "/2a9d7d50-9b4a-457f-98c7-0073d14e7f56") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -14777,7 +13731,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "c6d86c41-6f8d-4c1c-8b73-2893bc755cd7") + (uuid "6123f3e9-97f1-46b9-a8f3-945c1b7b8c3f") ) (fp_line (start -0.153641 0.38) @@ -14787,7 +13741,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "72418cad-3455-4c23-9aa1-c0303784265b") + (uuid "1fe7780b-a681-4bb0-879a-cebcea540227") ) (fp_rect (start -0.93 -0.47) @@ -14798,7 +13752,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "6992b7e8-c7d8-48b0-b590-d02089061b40") + (uuid "4389e711-e811-4201-adfc-90258fc4391f") ) (fp_rect (start -0.525 -0.27) @@ -14809,12 +13763,12 @@ ) (fill no) (layer "F.Fab") - (uuid "4bad8167-ea0c-4d73-9b0e-c8a7ab58b7e5") + (uuid "3986a868-0cf4-45f7-b991-0f4f98e5fc10") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "95fc12c6-92d6-4cae-91ae-49b4d2e00f5b") + (uuid "25e1d086-e773-4448-82ad-99e208bc5d70") (effects (font (size 0.26 0.26) @@ -14827,18 +13781,18 @@ (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "+3.3V") + (net "+5V") (pintype "passive") - (uuid "f7ef38f7-d0d5-4690-b9fb-9cd3b45fad24") + (uuid "952cc700-0f66-4815-b63b-3826a34130b8") ) (pad "2" smd roundrect (at 0.51 0) (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/ENC_A") + (net "Net-(D3-A)") (pintype "passive") - (uuid "400cde30-aad9-4b84-aab5-6c969961c368") + (uuid "90b0c461-8a12-4dc1-8a4b-430b83deb17b") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" @@ -14853,17 +13807,17 @@ ) ) ) - (footprint "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "7dd78cd3-aa25-4f9a-8692-7c52559cd811") - (at 133.235 99.25 180) - (descr "TSSOP, 14 Pin (JEDEC MO-153 variation AB-1, 1.00mm body thickness, https://www.jedec.org/document_search?search_api_views_fulltext=MO-153)") - (tags "TSSOP SO") - (property "Reference" "U3" - (at 0 -3.45 0) + (uuid "6919049c-5e53-4adf-9364-e07653ae2b35") + (at 126.7 118.15) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP14" + (at 0 -1.648 0) (layer "F.SilkS") (hide yes) - (uuid "745fabf5-026a-4380-89d7-01cd5d137da5") + (uuid "0a6f72b6-3800-49ef-9f20-f67795604e5c") (effects (font (size 1 1) @@ -14871,11 +13825,11 @@ ) ) ) - (property "Value" "MAX31856" - (at 0 3.45 0) + (property "Value" "TC2_MISO" + (at 0 1.75 0) (layer "F.Fab") (hide yes) - (uuid "abab0d4b-aa8f-48fd-bdab-b84c9f3d51ae") + (uuid "879fa29f-6635-4852-9f62-d3f6adc212a1") (effects (font (size 1 1) @@ -14885,430 +13839,450 @@ ) (property "Datasheet" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "5eac32eb-8da5-4787-bae5-02fb16b3faf5") + (uuid "d61245ed-9083-463f-ba90-dac0d64fbf00") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "f206de48-e78d-410a-95b3-23335881d195") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C2653162" - (at 0 0 180) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "46195e6a-9744-427f-9854-6485b0c0cdc0") + (uuid "ee5514eb-0e65-4509-b470-78e95d736899") (effects (font - (size 1 1) + (size 1.27 1.27) (thickness 0.15) ) ) ) - (property ki_fp_filters "TSSOP*14*4.4x5mm*P0.65mm*") - (path "/ef80f970-fdb1-4047-9af5-b800f2545d0f") + (property ki_fp_filters "Pin* Test*") + (path "/85cda399-78df-4737-86ad-1f633af73a7a") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "4" "3" "2" "6" "5" "1" "8" "14" "7" "13" "9" "10" "11" "12") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 2.31 2.61) - (end -2.31 2.61) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "53538a54-592f-4383-a801-1c49ecdd94f4") - ) - (fp_line - (start 2.31 2.41) - (end 2.31 2.61) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "23bb3530-1c02-42c7-9399-15261672bd88") - ) - (fp_line - (start 2.31 -2.61) - (end 2.31 -2.41) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "285ab7d5-7f1c-477c-8550-ebb8f56d6445") + (uuid "334af2ae-2ba0-4008-b0dc-33778172a2a4") ) (fp_line - (start -2.31 2.61) - (end -2.31 2.41) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "3ed86b22-4f80-43d7-95c0-f21675079d10") + (uuid "7b3ff8a4-9dfa-4248-a04e-715d3c274c12") ) (fp_line - (start -2.31 -2.41) - (end -2.31 -2.61) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "bf51192e-75ef-4e0d-88db-05428a916121") + (uuid "67c44c4f-bdcb-4484-ac61-af8df8c92cbd") ) (fp_line - (start -2.31 -2.61) - (end 2.31 -2.61) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "c445803c-eb62-4cf7-95ab-0f973f65bf1b") - ) - (fp_poly - (pts - (xy -2.95 -2.41) (xy -3.29 -2.88) (xy -2.61 -2.88) - ) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) (type solid) ) - (fill yes) (layer "F.SilkS") - (uuid "88e64267-c70e-4db4-846f-ff15bcacf9d2") + (uuid "2123a03a-90bd-4598-875f-530c7698bf9b") ) (fp_line - (start 3.85 2.4) - (end 2.45 2.4) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "10f62e53-7edd-4332-9a4c-579379dc54af") + (uuid "5c4b2cf7-eaf8-41e9-b202-1183d8dd06b9") ) (fp_line - (start 3.85 -2.4) - (end 3.85 2.4) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "fdbf4fbd-d10d-4897-ae2f-42da0c05aa72") + (uuid "df5d3c64-812d-4dc4-9070-9d6ef2333a1c") ) (fp_line - (start 2.45 2.75) - (end -2.45 2.75) + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "86a0120b-7620-4ece-b62c-7c0ca7cc32c5") + (uuid "867460f1-0678-4aa9-bd21-82d7b488fb56") ) (fp_line - (start 2.45 2.4) - (end 2.45 2.75) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "58c4e03e-08ca-45bb-b7f4-d3c92d8c5910") + (uuid "4d28baa1-2e68-492d-95b2-313d80d26139") ) - (fp_line - (start 2.45 -2.4) - (end 3.85 -2.4) - (stroke - (width 0.05) - (type solid) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC2_MISO") + (pinfunction "1_1") + (pintype "passive") + (uuid "97ef8768-46ca-4311-b093-e9b18526b18a") + ) + (embedded_fonts no) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "6ae19bd3-21c3-46c6-adc9-97c5ee04adc8") + (at 59.25 56) + (property "Reference" "TP1" + (at 0 -1.648 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "0e2f5f87-7522-474a-a6ff-5435c5fd2996") + (effects + (font + (size 1 1) + (line_spacing 0) + ) ) - (layer "F.CrtYd") - (uuid "69e1184b-26d7-41d2-9eb6-17db370f53ed") ) - (fp_line - (start 2.45 -2.75) - (end 2.45 -2.4) - (stroke - (width 0.05) - (type solid) + (property "Value" "+5V" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "6fbc2b22-c322-4817-806a-f1f65c4df7ba") + (effects + (font + (size 1 1) + (line_spacing 0) + ) ) - (layer "F.CrtYd") - (uuid "7da8d11a-52d5-4855-9109-c8d7c36ec269") ) - (fp_line - (start -2.45 2.75) - (end -2.45 2.4) - (stroke - (width 0.05) - (type solid) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "389cafc0-374b-482d-9d3f-5d7b11f56a53") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.CrtYd") - (uuid "a1c759c0-e91f-4e2f-bebf-55885a17bb5c") ) - (fp_line - (start -2.45 2.4) - (end -3.85 2.4) - (stroke - (width 0.05) - (type solid) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "61d433bc-7c5b-497d-8bfc-2972e0be1684") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.CrtYd") - (uuid "0fd2c829-c176-4298-b3fe-fe25d5689ffd") ) - (fp_line - (start -2.45 -2.4) - (end -2.45 -2.75) - (stroke - (width 0.05) - (type solid) + (property ki_fp_filters "Pin* Test*") + (path "/4b995369-c15f-4a64-a927-8ec47eb5ba5f") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") ) - (layer "F.CrtYd") - (uuid "8215fc92-fc2f-42ee-a205-c3294a9f8820") ) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -2.45 -2.75) - (end 2.45 -2.75) + (start -0.95 -0.95) + (end 0.95 -0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "f33fff86-948a-4026-b766-4d8653fad71e") + ) + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "ab21269c-8d33-4655-85ef-892a2245ee3c") + ) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "2c98eaa7-6af2-4297-9518-85e7571637b1") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "05198c24-0468-48ed-8a3c-0d2a34b5d518") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "66199b35-1450-4d86-a7f4-fc97a83a73a9") + (uuid "26f7c5ce-b189-418d-9a14-871e6870ef5a") ) (fp_line - (start -3.85 2.4) - (end -3.85 -2.4) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "53a23b7f-f098-4215-a7e8-1acda1b670a4") + (uuid "7d78be42-e9c8-4b16-8bfe-407d7e4027a9") ) (fp_line - (start -3.85 -2.4) - (end -2.45 -2.4) + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "dd7b98a2-4076-4843-a31a-154893f3ce1d") + (uuid "91c6e426-161c-452e-a6be-0b7a0aae21de") ) - (fp_poly - (pts - (xy -1.2 -2.5) (xy 2.2 -2.5) (xy 2.2 2.5) (xy -2.2 2.5) (xy -2.2 -1.5) - ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) ) - (fill no) - (layer "F.Fab") - (uuid "42b19787-4ad6-4ce1-8ba6-3711e15ce07a") + (layer "F.CrtYd") + (uuid "c87acd19-2ffe-4005-8662-3b33175d945f") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "f4249326-abe6-4ddf-8279-de33ef077098") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "+5V") + (pinfunction "1_1") + (pintype "passive") + (uuid "89d0c853-3653-4636-bc7b-70a8c44c0d09") + ) + (embedded_fonts no) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "6d4b0046-65dc-47e2-8acd-1466c5b4cd14") + (at 84.85 99.55) + (property "Reference" "TP16" + (at 0 -1.648 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "ae11d0fa-0d3f-43e9-82b1-d941c320a66f") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (pad "1" smd roundrect - (at -2.8625 -1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pinfunction "AGND_1") - (pintype "power_in") - (uuid "9381a228-1fd7-4d44-bd9e-c3d937c11aa1") + (property "Value" "I2C_SCL" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "58873951-8fe3-4bbb-bdd1-3d135b2e2fbc") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) ) - (pad "2" smd roundrect - (at -2.8625 -1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_TN") - (pinfunction "BIAS_2") - (pintype "input") - (uuid "5e18520d-ff9e-42e5-abf1-f63bfe0f76a8") + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "395d960a-b4f1-43fc-9628-daef88eae4b6") + (effects + (font + (size 1.27 1.27) + ) + ) ) - (pad "3" smd roundrect - (at -2.8625 -0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_TN") - (pinfunction "T-_3") - (pintype "input") - (uuid "6c68d7d5-1c2f-4eff-b775-104d1701f531") + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d150514e-9120-4096-8e02-a879279231ec") + (effects + (font + (size 1.27 1.27) + ) + ) ) - (pad "4" smd roundrect - (at -2.8625 0 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_TP") - (pinfunction "T+_4") - (pintype "input") - (uuid "032d5548-7c9c-43a8-8724-6ac303710c1a") + (property ki_fp_filters "Pin* Test*") + (path "/4f644575-e878-488b-b544-9b3048b3d2d0") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) ) - (pad "5" smd roundrect - (at -2.8625 0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pinfunction "AVDD_5") - (pintype "power_in") - (uuid "c05774c4-0a16-4865-932e-8e39dc4aad46") + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.95 -0.95) + (end 0.95 -0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "413e5c39-e028-4541-8f6a-6b97f079814c") ) - (pad "6" smd roundrect - (at -2.8625 1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "unconnected-(U3-DNC-Pad6)") - (pinfunction "DNC_6") - (pintype "no_connect") - (uuid "78fbee4f-aba9-474d-a680-2cae8718e286") + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "a46e510a-5bea-4162-ac84-908d94d1f87f") ) - (pad "7" smd roundrect - (at -2.8625 1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_DRDY") - (pinfunction "~{DRDY}_7") - (pintype "output") - (uuid "6cd867bb-ae2a-4492-9359-94b7a5ac1334") + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "c3311643-6684-407f-a6d1-0967deb800f7") ) - (pad "8" smd roundrect - (at 2.8625 1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pinfunction "DVDD_8") - (pintype "power_in") - (uuid "e035053e-9121-43dd-a5de-a09addce439a") + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "9904992c-e803-4aa2-aafe-2050e9be9f49") ) - (pad "9" smd roundrect - (at 2.8625 1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_CS") - (pinfunction "~{CS}_9") - (pintype "input") - (uuid "7df8d22b-4545-4095-b791-dcb6ae032de0") - ) - (pad "10" smd roundrect - (at 2.8625 0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SPI_SCK") - (pinfunction "SCK_10") - (pintype "input") - (uuid "70fc064c-448b-45d8-97e9-ed950e113711") + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "df8255f0-6040-401a-b4ba-a4b5b83d5d90") ) - (pad "11" smd roundrect - (at 2.8625 0 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SPI_MISO") - (pinfunction "SDO_11") - (pintype "output") - (uuid "f9b99309-f826-4a21-8d0f-bc47dac31c11") + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "728eebee-c6b5-4986-b51f-51e80c2550d9") ) - (pad "12" smd roundrect - (at 2.8625 -0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SPI_MOSI") - (pinfunction "SDI_12") - (pintype "input") - (uuid "0c9d97a7-a703-488c-b718-f4a38e950888") + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "b7100d34-4aea-4d9e-b513-0c4007bc6b3e") ) - (pad "13" smd roundrect - (at 2.8625 -1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_FAULT") - (pinfunction "~{FAULT}_13") - (pintype "output") - (uuid "96fdd6ee-483a-4a76-ba60-8702dcc97592") + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "e8220856-9496-4f4c-a61e-a32d9b2d80f2") ) - (pad "14" smd roundrect - (at 2.8625 -1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pinfunction "DGND_14") - (pintype "power_in") - (uuid "4e2442fd-0e4b-46e4-ac1b-128dec30d106") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/I2C_SCL") + (pinfunction "1_1") + (pintype "passive") + (uuid "e525bed2-ea78-4ae2-b712-00f90497b6a2") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-14_4.4x5mm_P0.65mm.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (footprint "Fuse:Fuse_1206_3216Metric" (layer "F.Cu") - (uuid "7fc85dfe-2ee0-4576-9d1b-6c1fc9ae4d82") - (at 145.735 101.75 90) - (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") - (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") - (property "Reference" "J3" - (at 2.25 -5.12 90) + (uuid "6dae02bf-8e73-4ce6-ad88-26db0d669cdc") + (at 60.75 42.85 -90) + (descr "Fuse SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf)") + (tags "fuse") + (property "Reference" "F1" + (at 0 -1.83 90) (layer "F.SilkS") - (hide yes) - (uuid "b4635387-0b93-4930-a073-3e0b0f410175") + (uuid "b0cefd0b-63c4-4f84-8a44-1cceddf722be") (effects (font (size 1 1) @@ -15316,10 +14290,10 @@ ) ) ) - (property "Value" "TC1 KILN (K)" - (at 2.25 4.92 90) + (property "Value" "PTC 1.5A" + (at 0 1.83 90) (layer "F.Fab") - (uuid "72f05127-4502-4fc9-855d-0b4194eb735c") + (uuid "e1bc6981-7c3f-49a0-a6cc-a330c17da449") (effects (font (size 1 1) @@ -15331,7 +14305,7 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "d8fd5387-66ef-492f-83ea-3e47c313a6a1") + (uuid "8e614161-45cf-4517-bc04-4775f84c619b") (effects (font (size 1.27 1.27) @@ -15342,19 +14316,19 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "7f152568-859e-45c6-b0fc-7bb44199d2cd") + (uuid "f8ac487a-0535-407f-b0db-26acc802f8ed") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C474881" - (at 0 0 90) + (property "LCSC" "C20802" + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "46d416e5-b768-47a7-b50f-e2ec929154e4") + (uuid "a6f4bc23-6291-46a4-8bef-c0a43b0dcebd") (effects (font (size 1 1) @@ -15362,8 +14336,8 @@ ) ) ) - (property ki_fp_filters "TerminalBlock*:*") - (path "/3852952b-844a-4a0b-a786-803839e3e502") + (property ki_fp_filters "*Fuse*") + (path "/5429eaf5-0aca-45db-b7c7-7c4b38ba126c") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -15372,387 +14346,431 @@ (pins "1" "2") ) ) - (attr through_hole) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 7.62 -4.12) - (end 7.62 3.92) + (start -0.602064 0.91) + (end 0.602064 0.91) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "10118500-ad47-46d6-a57f-2a641be02f11") + (uuid "c629d06e-294f-47d9-80ce-37b57756abb9") ) (fp_line - (start -3.12 -4.12) - (end 7.62 -4.12) + (start -0.602064 -0.91) + (end 0.602064 -0.91) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "1e32d0da-005d-4404-9c51-1b3752ec5ad3") + (uuid "a3b0c108-4f71-4e0a-a583-685ee9331db9") ) - (fp_line - (start 6.812 -0.5) - (end 7.62 -0.5) + (fp_rect + (start -2.28 -1.13) + (end 2.28 1.13) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "82d1bcf1-f246-4e39-a35c-eeee399e026c") + (fill no) + (layer "F.CrtYd") + (uuid "7792e962-6938-4fc5-bfe3-2557ed21f66c") ) - (fp_line - (start 1.88 -0.5) - (end 3.188 -0.5) + (fp_rect + (start -1.6 -0.8) + (end 1.6 0.8) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "656ccca8-2a08-4d8c-bc70-c291a6508495") + (fill no) + (layer "F.Fab") + (uuid "cf550c3a-ab72-496b-bf10-845ccf484cc0") ) - (fp_line - (start -3.12 -0.5) - (end -1.88 -0.5) - (stroke - (width 0.12) - (type solid) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "bc9f7feb-aa73-4f8c-ace8-74da09fdc248") + (effects + (font + (size 0.8 0.8) + (thickness 0.12) + ) ) - (layer "F.SilkS") - (uuid "6d022e7f-0ce9-4f5f-8c08-4a6a7abbd53a") ) - (fp_line - (start 6.812 0.5) - (end 7.62 0.5) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "51d3dcf4-d1bf-4a22-b882-0b4f67d55d6a") + (pad "1" smd roundrect + (at -1.4 0 270) + (size 1.25 1.75) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.2) + (net "/V_IN") + (pintype "passive") + (uuid "3016780a-dbdb-4c1a-8fd6-cf148661fd36") ) - (fp_line - (start 1.88 0.5) - (end 3.188 0.5) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "de3c34cf-dd10-454d-b06f-a8b844562a61") + (pad "2" smd roundrect + (at 1.4 0 270) + (size 1.25 1.75) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.2) + (net "/V_FUSED") + (pintype "passive") + (uuid "3056c46d-bc15-4503-8792-cf92a7c84587") ) - (fp_line - (start -3.12 0.5) - (end -1.88 0.5) - (stroke - (width 0.12) - (type solid) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Fuse.3dshapes/Fuse_1206_3216Metric.step" + (offset + (xyz 0 0 0) ) - (layer "F.SilkS") - (uuid "cd48d268-3a17-436e-a1bf-f963bbe227ee") - ) - (fp_line - (start 5.543 1.8) - (end 7.62 1.8) - (stroke - (width 0.12) - (type solid) + (scale + (xyz 1 1 1) ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "7164b594-c926-4147-8213-f6be3babaebd") + (at 54.35 85.8) + (property "Reference" "TP24" + (at 0 -1.648 0) + (unlocked yes) (layer "F.SilkS") - (uuid "525ccba1-030c-4d56-8b05-75bd2a408502") + (hide yes) + (uuid "5a03065a-1544-4550-b111-8b467b7a16b8") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Value" "ENC_A" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "1e79526e-cf8e-421e-973d-f822c55f66a7") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d79253fb-09f8-49d9-8a3b-ef7f291f22be") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d7b8b294-8be6-46b9-b05a-61307020eea2") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/d2ce38eb-9ee3-48d9-85c5-b5bbfda93448") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) ) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 1.88 1.8) - (end 4.457 1.8) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "20ea423f-5935-40f4-91ce-b1f52cb3ea31") + (uuid "5a6d7f15-9777-48d7-a7b2-c60f85ffc6b5") ) (fp_line - (start -3.12 1.8) - (end -1.88 1.8) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "7706810a-fbf5-45cb-abbe-2adf6a36caff") + (uuid "d68f49d1-42e2-42a4-b7b5-6d15ad73cb32") ) (fp_line - (start 7.62 3.92) - (end 0.3 3.92) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "bd2fb630-1573-4eba-83d1-25c7ddb5e411") + (uuid "be473dbd-a999-4380-9539-1aa04bc4883d") ) (fp_line - (start -0.3 3.92) - (end -3.12 3.92) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "19a1de16-96e6-4aa6-832a-6cdf2f34367c") + (uuid "68b8c256-a95c-4b2a-b120-6cba368a50bb") ) (fp_line - (start -3.12 3.92) - (end -3.12 -4.12) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.12) - (type solid) + (width 0.05) + (type default) ) - (layer "F.SilkS") - (uuid "e7f563af-cf7b-4780-8c04-e1433e8ba0af") + (layer "F.CrtYd") + (uuid "2109a032-9e44-4d65-9d2c-6350279d49a0") ) - (fp_poly - (pts - (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) - ) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.12) - (type solid) + (width 0.05) + (type default) ) - (fill yes) - (layer "F.SilkS") - (uuid "dd292d5a-56f1-4598-b5ad-16b83dffa53b") + (layer "F.CrtYd") + (uuid "deea1d0c-09c7-4674-ab3c-9822135d3ee0") ) - (fp_rect - (start -3.5 -4.5) - (end 8 4.31) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) - (fill no) (layer "F.CrtYd") - (uuid "536438d3-18b7-4d6d-8942-e006f4479fee") + (uuid "b3198c61-b9f2-4b5b-95fd-199f5d4db203") ) (fp_line - (start 7.5 -4) - (end 7.5 3.8) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "796ea0b9-61d7-47fa-8e17-280a27cecc23") + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/ENC_A") + (pinfunction "1_1") + (pintype "passive") + (uuid "25767ef9-e4cf-436f-a94f-d099eb766200") + ) + (embedded_fonts no) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "72bc4c35-ee44-4c70-8113-f28467d7dc40") + (at 126.7 115.6) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP10" + (at 0 -1.648 0) + (layer "F.SilkS") + (hide yes) + (uuid "44372e3e-fee2-4dd8-b15e-07d52ec32fbb") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) + ) + (property "Value" "TC2_SCK" + (at 0 1.75 0) (layer "F.Fab") - (uuid "5d275bdc-c817-4c56-b1e1-86e977954c42") + (hide yes) + (uuid "e90a162f-4c5f-411e-9f94-2caf53a9d570") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (fp_line - (start -3 -4) - (end 7.5 -4) - (stroke - (width 0.1) - (type solid) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "a119db23-643a-4b05-ae57-6bc1b1425e1e") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) (layer "F.Fab") - (uuid "51d2ad50-9845-483a-988e-0badc0155476") + (hide yes) + (uuid "0b19e3cc-1b44-488a-a07e-b621e6950a43") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/3882768a-12e3-4533-9df3-7d581dc5eecd") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) ) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 6.018 -1.213) - (end 3.787 1.018) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "1aa150c6-c0ae-45c8-852e-2ab63ebbc7e2") + (layer "F.SilkS") + (uuid "4d2d042d-d790-4c88-8151-df83aa5400a6") ) (fp_line - (start 1.018 -1.213) - (end -1.213 1.018) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "998edf1c-0b3d-42cf-aecf-4eb1ed96e682") + (layer "F.SilkS") + (uuid "6b97348c-0979-48f5-b579-2eaae3addf14") ) (fp_line - (start 6.213 -1.018) - (end 3.982 1.213) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "527eba7a-0317-4c1d-9ebc-e38029468d31") + (layer "F.SilkS") + (uuid "53632613-48c4-4e36-be9a-fa588b7697e8") ) (fp_line - (start 1.213 -1.018) - (end -1.018 1.213) + (start 0.95 0.95) + (end -0.95 0.95) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (layer "F.Fab") - (uuid "55bda7c5-9245-402e-b3d9-92e300e6d6bb") + (layer "F.SilkS") + (uuid "6837d15a-8fcd-442d-8285-900bf5e8dc57") ) (fp_line - (start -3 -0.5) - (end 7.5 -0.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "8d12b8ef-c15a-460b-bc74-c51b98cf62a7") - ) - (fp_line - (start -3 0.5) - (end 7.5 0.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "c1b531fe-3329-4936-8282-9db8626b8cb1") - ) - (fp_line - (start -3 1.8) - (end 7.5 1.8) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "c0a5cdf3-01da-42d6-8c66-9672baa31da3") + (layer "F.CrtYd") + (uuid "6721e5be-8ff0-4b1f-bb82-d043a0d80350") ) (fp_line - (start -3 1.85) - (end -3 -4) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "91d306ac-82a1-4d4f-91cb-12c0fbf677f5") + (layer "F.CrtYd") + (uuid "f6c92e70-afa8-46b8-b040-3e180ff18b5a") ) (fp_line - (start 7.5 3.8) - (end -1.05 3.8) + (start 1.25 1.25) + (end -1.25 1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "1a4c7bdc-e927-4b4e-9e21-e8a644030a02") + (layer "F.CrtYd") + (uuid "acd87157-5414-4518-8a34-bcdb393f05e5") ) (fp_line - (start -1.05 3.8) - (end -3 1.85) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "d0a72330-35af-4801-811a-75cbbdd54e97") - ) - (fp_circle - (center 5 0) - (end 6.6 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "553f42ee-e9c3-4aa4-ae08-6547c2ac5b40") - ) - (fp_circle - (center 0 0) - (end 1.6 0) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "62a12a73-fc8c-4077-a10e-7e6491ca30eb") - ) - (fp_text user "${REFERENCE}" - (at 2.25 2.65 90) - (layer "F.Fab") - (uuid "fa68bc5f-9c7c-4110-8d31-8c3e224b4a60") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (pad "1" thru_hole roundrect - (at 0 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (roundrect_rratio 0.089286) - (net "/TC1_P") - (pinfunction "Pin_1_1") - (pintype "passive") - (uuid "69c1eae8-2174-419a-b03f-7a108ce431b6") + (layer "F.CrtYd") + (uuid "58ac7b17-4b78-4da3-90d6-fe6d06a20fd6") ) - (pad "2" thru_hole circle - (at 5 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/TC1_N") - (pinfunction "Pin_2_2") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC2_SCK") + (pinfunction "1_1") (pintype "passive") - (uuid "161eb663-e07b-4f3a-93dd-4044c01f3b88") + (uuid "85753e11-9f27-4109-a639-763542d9f4ca") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Package_TO_SOT_SMD:SOT-23" (layer "F.Cu") - (uuid "80bd61e2-9dca-4de3-989d-a2e1dd9d13d9") - (at 79 71) - (property "Reference" "TP10" - (at 0 -1.648 0) - (unlocked yes) + (uuid "760b3502-60c8-4551-89ad-02e7e1c27ed9") + (at 131.4375 44.55) + (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") + (tags "SOT TO_SOT_SMD") + (property "Reference" "D5" + (at 0 -2.4 0) (layer "F.SilkS") (hide yes) - (uuid "02d2e66e-8a26-413a-8c1b-cc961b38f147") + (uuid "2009a7d8-f5d6-4587-b680-f22519de4e57") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "TC2_CS" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "BAT54S" + (at 0 2.4 0) + (layer "F.Fab") (hide yes) - (uuid "6d4ff87e-2234-44f9-b74d-8c643297ffb8") + (uuid "d28bb69f-f0b2-4736-8e7c-0942a3c2af2e") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -15760,7 +14778,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "5c740f58-588d-40d3-a231-916b993f6551") + (uuid "ed339f3c-fb17-4213-9be3-af2319aa760a") (effects (font (size 1.27 1.27) @@ -15771,532 +14789,335 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "2fc4919c-60fd-4c50-8d04-b6830fd68e62") + (uuid "9603be21-6620-4fa8-8cd6-97541e1469bf") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/b2e87d7a-3345-42e9-90c6-bb08498098e2") + (property "LCSC" "C19726" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "2f20c7e0-f52e-411a-b513-6342b559866f") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "SOT?23*") + (path "/9ce6e574-23c6-46c6-94b7-a9c8646c7390") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "3" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start -0.76 -1.56) + (end 0.76 -1.56) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "00ff6276-b479-4da8-8b72-957c3efb086f") + (uuid "ab5b05e1-4433-40ed-b0f6-b6e4d6cf78af") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -0.76 -1.51) + (end -0.76 -1.56) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "a2116793-78b8-4904-b587-c85c4aa1c00c") + (uuid "b31168da-21a0-4a16-a2b3-b57fab16a417") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -0.76 0.39) + (end -0.76 -0.39) (stroke (width 0.12) - (type default) + (type solid) + ) + (layer "F.SilkS") + (uuid "159c4e04-c402-4486-875e-869e65476b73") + ) + (fp_line + (start -0.76 1.56) + (end -0.76 1.51) + (stroke + (width 0.12) + (type solid) ) (layer "F.SilkS") - (uuid "32949360-2805-4cfc-bc17-bf99c868bc8b") + (uuid "17b53c72-408d-438c-a02c-db28b6ed8a54") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start 0.76 -1.56) + (end 0.76 -0.56) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "6d22ffbb-edbd-4954-82e7-4caa437a3989") + (uuid "66995504-6ee2-48ca-b827-78a8e882528e") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start 0.76 0.56) + (end 0.76 1.56) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "fa3d191b-8b33-40ec-b01b-8eeed4e68f4b") + (layer "F.SilkS") + (uuid "182b5add-d4cf-4420-86e2-4a55e4ab632d") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start 0.76 1.56) + (end -0.76 1.56) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "f3d13214-97e1-4d54-9713-6f34c95773b0") + (layer "F.SilkS") + (uuid "77811463-46f3-429e-a18a-0bae3e7532ed") + ) + (fp_poly + (pts + (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) + (layer "F.SilkS") + (uuid "01f1cd88-ea41-4a2d-bebd-2fa6ca27202a") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start -1.93 -1.5) + (end -0.9 -1.5) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "d7b99885-b020-42e4-8c00-5a0eb321d8c6") + (uuid "2b3d9cec-7edc-4fc9-a77b-e8675080dcd3") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -1.93 -0.39) + (end -1.93 -1.5) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "36a3d205-8fc3-4d80-b9fd-f7247b1bac5e") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC2_CS") - (pinfunction "1_1") - (pintype "passive") - (uuid "67c867ae-5f7a-4282-bdb0-a9b62034fe7f") - ) - (embedded_fonts no) - ) - (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (layer "F.Cu") - (uuid "866d0665-638e-4dec-b8f3-7e6d1fb9c643") - (at 145.7175 113.25 90) - (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") - (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") - (property "Reference" "J4" - (at 2.25 -5.12 90) - (layer "F.SilkS") - (hide yes) - (uuid "660fa0bf-826e-4008-b53c-c2dd1e713b90") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "TC2 CASE (K)" - (at 2.25 4.92 90) - (layer "F.Fab") - (uuid "950d1266-24ad-426d-af7d-6d0b14a78ce0") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "c54c9c89-202d-4f94-b2c1-0f1903b2b555") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "64abc77f-d040-4275-aff3-d4f5752e5c9c") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C474881" - (at 0 0 90) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "4374948c-90dd-485d-8dd2-e376fa334e43") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "TerminalBlock*:*") - (path "/37cf04d4-222b-4fbb-bd2b-a52627732b4d") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") - ) + (uuid "efd5ede0-07dd-4e7d-8da3-4f302a32edda") ) - (attr through_hole) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 7.62 -4.12) - (end 7.62 3.92) + (start -1.93 0.39) + (end -0.9 0.39) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "b9f5b775-baa7-43d1-9c4f-1c2b4c0d1fe3") + (layer "F.CrtYd") + (uuid "f8974157-5448-437b-b71c-7351c4e09387") ) (fp_line - (start -3.12 -4.12) - (end 7.62 -4.12) + (start -1.93 1.5) + (end -1.93 0.39) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "69b1f26f-b30e-4a81-b559-7c0be6fe58b0") + (layer "F.CrtYd") + (uuid "7157c7f5-66fc-4fbe-9fbb-52630309f156") ) (fp_line - (start 6.812 -0.5) - (end 7.62 -0.5) + (start -0.9 -1.7) + (end 0.9 -1.7) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "a60f48e0-1a3a-4948-9c16-9ee6ff1a0f66") + (layer "F.CrtYd") + (uuid "b1911609-152a-49c6-ae9e-1a3295e44782") ) (fp_line - (start 1.88 -0.5) - (end 3.188 -0.5) + (start -0.9 -1.5) + (end -0.9 -1.7) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "e465e831-6d53-4dd3-b355-0d62653a9066") + (layer "F.CrtYd") + (uuid "b2d8b8d9-105a-46e5-a15f-b502542b9fd3") ) (fp_line - (start -3.12 -0.5) - (end -1.88 -0.5) + (start -0.9 -0.39) + (end -1.93 -0.39) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "92549ed6-4fe7-4b41-b742-641d2e1d8800") + (layer "F.CrtYd") + (uuid "8c25663d-c600-4ad2-9b52-fb96dab7dfe7") ) (fp_line - (start 6.812 0.5) - (end 7.62 0.5) + (start -0.9 0.39) + (end -0.9 -0.39) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "dc736527-642c-4725-a335-a7dcac6db643") + (layer "F.CrtYd") + (uuid "ae59a8d0-c34c-4055-a0f4-afa85bb09bda") ) (fp_line - (start 1.88 0.5) - (end 3.188 0.5) + (start -0.9 1.5) + (end -1.93 1.5) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "17c55f9d-7066-441a-b160-0b97c34a9cc1") + (layer "F.CrtYd") + (uuid "d08269e3-0e05-4c40-a964-1d9e6e932eb0") ) (fp_line - (start -3.12 0.5) - (end -1.88 0.5) + (start -0.9 1.7) + (end -0.9 1.5) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "110324cd-6822-4c94-a400-9affd2254e97") + (layer "F.CrtYd") + (uuid "8e0e689c-d7cd-456c-87cd-a797fbe7eab8") ) (fp_line - (start 5.543 1.8) - (end 7.62 1.8) + (start 0.9 -1.7) + (end 0.9 -0.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "2731774b-5706-4d8c-8d51-f976221cd625") + (layer "F.CrtYd") + (uuid "7448d57b-7308-4558-b2ef-fc2bcc392832") ) (fp_line - (start 1.88 1.8) - (end 4.457 1.8) + (start 0.9 -0.55) + (end 1.93 -0.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "73c70071-c587-4a5c-a4a4-4126b55ef037") + (layer "F.CrtYd") + (uuid "dee92a40-0cd9-4ab0-89be-ed02b248f659") ) (fp_line - (start -3.12 1.8) - (end -1.88 1.8) + (start 0.9 0.55) + (end 0.9 1.7) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "95c9766d-f35e-482d-8508-f6610f1e51f7") + (layer "F.CrtYd") + (uuid "6a23a82c-25e6-48ed-b39a-aa6e99d0d004") ) (fp_line - (start 7.62 3.92) - (end 0.3 3.92) + (start 0.9 1.7) + (end -0.9 1.7) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "07c97386-9cdb-4c77-b2d9-a83cf0651a76") + (layer "F.CrtYd") + (uuid "96630564-bc76-47c9-bf3b-3ab86db36730") ) (fp_line - (start -0.3 3.92) - (end -3.12 3.92) + (start 1.93 -0.55) + (end 1.93 0.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "b97f5ff4-963e-4611-82f9-0045df9e70da") + (layer "F.CrtYd") + (uuid "0e547288-9b98-4bd1-8815-64921b1162a0") ) (fp_line - (start -3.12 3.92) - (end -3.12 -4.12) + (start 1.93 0.55) + (end 0.9 0.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "1dcc54f4-9087-44ee-bd18-1f0a4dc32b7f") + (layer "F.CrtYd") + (uuid "7d413897-2f96-4d7f-8ab8-d6577a0a3122") ) (fp_poly (pts - (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) - ) - (stroke - (width 0.12) - (type solid) - ) - (fill yes) - (layer "F.SilkS") - (uuid "56edfe7a-44e0-4779-976b-d97297ade533") - ) - (fp_rect - (start -3.5 -4.5) - (end 8 4.31) - (stroke - (width 0.05) - (type solid) + (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) ) - (fill no) - (layer "F.CrtYd") - (uuid "a8df13b0-5225-4ba9-bc31-3c46af75724c") - ) - (fp_line - (start 7.5 -4) - (end 7.5 3.8) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "5c7a614c-5a29-49c6-a1ad-7d3985d1cf77") + (uuid "438c9122-052a-4eb9-9a28-11ae427445c6") ) - (fp_line - (start -3 -4) - (end 7.5 -4) - (stroke - (width 0.1) - (type solid) - ) + (fp_text user "${REFERENCE}" + (at 0 0 90) (layer "F.Fab") - (uuid "dd70bee7-4d0e-4b46-b3e8-9015cb385ccc") + (uuid "5da92856-c24f-44b4-a590-c22cdab09717") + (effects + (font + (size 0.72 0.72) + (thickness 0.11) + ) + ) ) - (fp_line - (start 6.018 -1.213) - (end 3.787 1.018) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "25477d61-19a7-4bb8-af06-d77c9f35acc0") - ) - (fp_line - (start 1.018 -1.213) - (end -1.213 1.018) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "f7239e72-08a0-468f-a0ef-ec36f17600b9") - ) - (fp_line - (start 6.213 -1.018) - (end 3.982 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "135efe55-b639-4b44-9d41-0e86fd7fbcef") - ) - (fp_line - (start 1.213 -1.018) - (end -1.018 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "86272cf8-2069-4ddb-a304-95a3bfc276e5") - ) - (fp_line - (start -3 -0.5) - (end 7.5 -0.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "1ea1d155-df5f-4d2a-aa92-a6c010794a8c") - ) - (fp_line - (start -3 0.5) - (end 7.5 0.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "7d332ddd-b6c2-4a6e-8181-88d0c823b3d7") - ) - (fp_line - (start -3 1.8) - (end 7.5 1.8) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "360662dc-28a9-4362-987a-32a5a27f3c0e") - ) - (fp_line - (start -3 1.85) - (end -3 -4) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "2d2f109b-45f4-43f4-b4c2-753d183e134b") - ) - (fp_line - (start 7.5 3.8) - (end -1.05 3.8) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "d1ac25e5-9dfd-4c11-9776-b52f5c6411aa") - ) - (fp_line - (start -1.05 3.8) - (end -3 1.85) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "31a4ef3d-85d4-4208-96dc-7b09c0a6db18") - ) - (fp_circle - (center 5 0) - (end 6.6 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "46d69c0a-52cc-447c-bf29-f65e82d41698") - ) - (fp_circle - (center 0 0) - (end 1.6 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "0ad2b72e-4dd3-4cd3-a472-6041e315726d") - ) - (fp_text user "${REFERENCE}" - (at 2.25 2.65 90) - (layer "F.Fab") - (uuid "b0c98860-31ff-4497-a5cd-97f4080834da") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (pad "1" smd roundrect + (at -0.9375 -0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pinfunction "A_1") + (pintype "passive") + (uuid "8cc7e336-f9df-416c-9bad-46bf55f27af7") ) - (pad "1" thru_hole roundrect - (at 0 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (roundrect_rratio 0.089286) - (net "/TC2_P") - (pinfunction "Pin_1_1") + (pad "2" smd roundrect + (at -0.9375 0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/HEAT_EN_DC") + (pinfunction "K_2") (pintype "passive") - (uuid "12cb82f9-f7f4-4cf1-9108-b92ec7fdaafc") + (uuid "41540a76-961e-44d4-a85f-2e931b9ff88f") ) - (pad "2" thru_hole circle - (at 5 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/TC2_N") - (pinfunction "Pin_2_2") + (pad "3" smd roundrect + (at 0.9375 0) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/PUMP_NODE") + (pinfunction "COM_3") (pintype "passive") - (uuid "b0f7d8e6-a3fa-4818-94c0-2580af56c9a9") + (uuid "84e3791f-824b-482a-bd58-eb73111f7ad8") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" (offset (xyz 0 0 0) ) @@ -16308,327 +15129,186 @@ ) ) ) - (footprint "Diode_SMD:D_SOD-123" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "873a6592-be70-42f8-a72b-b8540284cf98") - (at 139.9675 48.5 90) - (descr "SOD-123") - (tags "SOD-123") - (property "Reference" "D6" - (at 0 -2 90) + (uuid "7624de77-f518-4876-bbf1-87bce48913f8") + (at 72.9 58 180) + (property "Reference" "TP3" + (at 0 -1.648 180) + (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "6574afb1-1126-4002-868b-768228fbf731") + (uuid "02e9086d-b005-4cf4-933b-9e3a7a46866a") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "1N4148W" - (at 0 2.1 90) - (layer "F.Fab") + (property "Value" "GND" + (at 0 1.75 180) + (unlocked yes) + (layer "F.SilkS") (hide yes) - (uuid "04fa3bcb-bfc9-403a-ac6b-95ad44fc5f35") + (uuid "c8484d7e-f471-42d9-a471-33033ffe16ee") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) (property "Datasheet" "" - (at 0 0 90) - (unlocked yes) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "83321869-4264-4da4-a97e-7587c579160b") + (uuid "d1b81b4a-1059-4978-ba5a-77bc8d0c679f") (effects (font (size 1.27 1.27) - (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 90) - (unlocked yes) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "767344ea-ce91-4d7a-8de7-024dcbca3421") + (uuid "8e6029ca-9e0d-47cd-8bba-352bcb349226") (effects (font (size 1.27 1.27) - (thickness 0.15) - ) - ) - ) - (property "LCSC" "C2099" - (at 0 0 90) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "5b0281a3-34e2-42db-847f-b7979821a2a9") - (effects - (font - (size 1 1) - (thickness 0.15) ) ) ) - (property ki_fp_filters "TO-???* *_Diode_* *SingleDiode* D_*") - (path "/3a8633cc-3228-448d-8836-24c35d249308") + (property ki_fp_filters "Pin* Test*") + (path "/5d4f35b0-650b-4796-b970-cdef943f7dd6") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -2.36 -1) - (end 1.65 -1) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "f575b03a-8778-4fb2-a139-0d670f087b6d") + (uuid "57eba13c-5893-4df1-95db-98dbe75c67ee") ) (fp_line - (start -2.36 -1) - (end -2.36 1) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "9647580f-e590-44ba-a917-356e3da6a425") + (uuid "9949f46d-370a-47f9-b186-1272642371d4") ) (fp_line - (start -2.36 1) - (end 1.65 1) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "c937e9da-121e-4d28-b2d7-15040f90e52a") + (uuid "aacfc1bb-410e-4042-ab06-d7ba087db140") ) (fp_line - (start 2.35 -1.15) - (end 2.35 1.15) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "70bfeb2e-a1ca-4712-8487-f411b6696b20") + (layer "F.SilkS") + (uuid "3ff0e09b-348c-4aa4-a544-d0766c0f6779") ) (fp_line - (start -2.35 -1.15) - (end 2.35 -1.15) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "60f2a937-9064-4097-8a64-49781b76c068") + (uuid "93ba5c6c-7dd1-4f46-92f2-9febab8ede91") ) (fp_line - (start -2.35 -1.15) - (end -2.35 1.15) + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "7447fa2e-90b8-45d8-8db6-37449202a594") + (uuid "3859519a-addf-45ea-a79a-2dc3c883e394") ) (fp_line - (start 2.35 1.15) - (end -2.35 1.15) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "feaff775-0061-4173-8e2d-b366c1c9baa7") - ) - (fp_line - (start 1.4 -0.9) - (end 1.4 0.9) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "a030d719-1b3d-4adc-a736-dee96e4f0f52") - ) - (fp_line - (start -1.4 -0.9) - (end 1.4 -0.9) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "1bb7a8f1-fb0b-4166-9de4-d133c9aba254") - ) - (fp_line - (start 0.25 -0.4) - (end 0.25 0.4) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "8dc05bd0-7815-4bb8-9b5f-650ed6b0a6aa") - ) - (fp_line - (start 0.25 0) - (end 0.75 0) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "04790f2b-4b32-4e03-84db-488a5100d6b1") - ) - (fp_line - (start -0.35 0) - (end -0.35 -0.55) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "397d5112-b5b6-48fc-83ff-4043d72638ab") - ) - (fp_line - (start -0.35 0) - (end 0.25 -0.4) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "20ae578e-4872-4d32-bb21-e23195c9e3c9") - ) - (fp_line - (start -0.35 0) - (end -0.35 0.55) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "13b46fd3-e20d-4f29-abae-07bf67e67dd0") - ) - (fp_line - (start -0.75 0) - (end -0.35 0) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "70775019-28d8-49f0-b0f4-5290650a6777") - ) - (fp_line - (start 0.25 0.4) - (end -0.35 0) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "9c575a61-9a9e-44f6-9d6e-b01ecb1e7fc8") - ) - (fp_line - (start 1.4 0.9) - (end -1.4 0.9) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "b6b00242-0099-41f6-84c2-1abe1e5f67f0") + (uuid "2fd076e6-5035-49b4-9e3f-a3b4fc8083b9") ) (fp_line - (start -1.4 0.9) - (end -1.4 -0.9) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) ) - (layer "F.Fab") - (uuid "51869a10-faf7-4bb3-83ac-0a10db153cb5") - ) - (pad "1" smd roundrect - (at -1.65 0 90) - (size 0.9 1.2) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/LID_SWITCH") - (pinfunction "K_1") - (pintype "passive") - (uuid "c5554908-1d58-4bcb-942d-f173fee32ac4") + (layer "F.CrtYd") + (uuid "791f4439-238a-4148-bf92-b7c5a73e8ac1") ) - (pad "2" smd roundrect - (at 1.65 0 90) - (size 0.9 1.2) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/COIL_DRV") - (pinfunction "A_2") + (pad "1" smd rect + (at 0 0 180) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "GND") + (pinfunction "1_1") (pintype "passive") - (uuid "e250d30f-0163-4108-8bc4-8402ffde0570") + (uuid "a6a1d7d4-cc9e-43dc-a79f-0934d732e3d1") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SOD-123.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Package_QFP:LQFP-32_7x7mm_P0.8mm" (layer "F.Cu") - (uuid "88796c4b-4625-471a-96e5-512628a41ad7") - (at 75.5 52.75) - (property "Reference" "TP18" - (at 0 -1.648 0) - (unlocked yes) + (uuid "7c637c1a-2b27-4419-bbfa-fd96a2816bbf") + (at 129.5 84.25) + (descr "LQFP, 32 Pin (https://www.nxp.com/docs/en/package-information/SOT358-1.pdf)") + (tags "LQFP QFP") + (property "Reference" "U5" + (at 0 0 0) (layer "F.SilkS") - (hide yes) - (uuid "0ac1c9e1-849d-4b81-8442-5af8db9c7a54") + (uuid "4818f477-c053-4cfe-95e4-d62990cb54f8") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "SSR2" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "STM32G031K8Tx" + (at 0 5.88 0) + (layer "F.Fab") (hide yes) - (uuid "4e00ddfe-a68c-41b2-bf99-b7c50955ee2b") + (uuid "bc5224de-359e-4d66-95f4-b37e3bd0cd7f") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -16636,7 +15316,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "c7547f47-cee5-4fdd-9cfa-b633951b1274") + (uuid "e455e5d8-a896-449d-8871-148711cdd3a7") (effects (font (size 1.27 1.27) @@ -16647,361 +15327,711 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "8a1362b6-a5c8-40ed-ba93-38b744489366") + (uuid "bcc2f8ae-c678-4216-8a94-34a2b58e2f4a") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/6c125710-3e0a-40b0-b541-6e83d1e0f564") + (property ki_fp_filters "LQFP*7x7mm*P0.8mm*") + (path "/a24cee5d-07d6-4366-ad19-34ac50606a3a") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "6" "20" "2" "3" "15" "16" "17" "27" "28" "29" "30" "31" "32" "1" + "21" "19" "4" "5" "7" "8" "9" "10" "11" "12" "13" "14" "18" "22" "23" + "24" "25" "26" + ) ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start -3.61 -3.61) + (end -3.31 -3.61) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "02c1aa04-ba64-43e9-b8dd-b12c9af95a91") + (uuid "24fa8692-82be-4586-aade-0bbfe0fce1d0") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -3.61 -3.31) + (end -3.61 -3.61) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "bad949d6-317e-49c6-b51d-280aa644405d") + (uuid "f3d338e2-1bbe-4680-89bf-8d2ef5454489") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -3.61 3.61) + (end -3.61 3.31) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "3184c7cb-1196-452b-9729-7ef72bf28356") + (uuid "26986da6-507f-4c6c-89df-0bcaaf0b3490") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -3.31 3.61) + (end -3.61 3.61) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "9abf855b-0897-40aa-a558-c73c757e672f") + (uuid "6294e8d0-1ff0-475f-9f91-b5a8d0b934fb") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start 3.31 -3.61) + (end 3.61 -3.61) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "22cffccc-a96a-4e7c-9d9d-c7bede05b2e7") + (layer "F.SilkS") + (uuid "99218983-8d3a-4afb-9e6f-f1be66308fc6") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start 3.61 -3.61) + (end 3.61 -3.31) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "6bb645ef-d5cb-42f7-b306-552b399d6558") + (layer "F.SilkS") + (uuid "d64671c8-11da-4563-8777-055c0cf3cdac") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start 3.61 3.31) + (end 3.61 3.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fa6b519d-40b7-44a1-b1b5-463f03aad617") + ) + (fp_line + (start 3.61 3.61) + (end 3.31 3.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4c3fcd4e-01f4-4cf6-bac3-acc5bb728230") + ) + (fp_poly + (pts + (xy -4.25 -3.32) (xy -4.59 -3.79) (xy -3.91 -3.79) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) + (layer "F.SilkS") + (uuid "81e9ef94-f6ca-44cd-9a3f-95102886c564") + ) + (fp_line + (start -5.18 -3.3) + (end -3.75 -3.3) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "bf2fd956-4798-4fce-b9f7-1f5d7c0fbc0d") + (uuid "00ad14e0-cf4b-42dd-bc98-06a4b9e11aac") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -5.18 3.3) + (end -5.18 -3.3) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "14f0ee65-b29e-48de-aab0-f39016f422a4") + (uuid "952f086c-4efe-442f-9294-1508e9038875") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/SSR2") - (pinfunction "1_1") - (pintype "passive") - (uuid "a7207d1d-044f-41e9-9e5b-638d8edb125f") + (fp_line + (start -3.75 -3.75) + (end -3.3 -3.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5c1a45e6-6d8d-460c-afee-592712e5a144") ) - (embedded_fonts no) - ) - (footprint "LED_SMD:LED_0603_1608Metric" - (layer "F.Cu") - (uuid "8951a2ec-7152-4a83-9b08-d926815c13ff") - (at 147.7175 42.25 180) - (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf)") - (tags "LED") - (property "Reference" "D7" - (at 0 -1.43 0) - (layer "F.SilkS") - (hide yes) - (uuid "00447db2-10cc-46ae-8c24-ae38cd3af5e9") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -3.75 -3.3) + (end -3.75 -3.75) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "cbd0d6da-5592-4e9f-83bd-ab4874ac931e") ) - (property "Value" "COIL" - (at 0 1.43 0) - (layer "F.Fab") - (uuid "2f1cf293-7827-48a5-abcc-abcd2e857631") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -3.75 3.3) + (end -5.18 3.3) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "3d94787f-fda6-4b64-a6e5-793e0fde3e69") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "99565ccb-86f6-4052-9f2a-37f4b2229e23") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start -3.75 3.75) + (end -3.75 3.3) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "77328c02-b5a2-47b7-8129-72fd298d24a2") ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "22391bad-8073-4be7-97ac-f64377560d85") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start -3.3 -5.18) + (end 3.3 -5.18) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "a254ced3-4f59-40ff-9ea0-8cb62e6c7ca0") ) - (property "LCSC" "C2286" - (at 0 0 180) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "f5e7d619-da84-4c4b-bb3a-9521d25c61ae") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -3.3 -3.75) + (end -3.3 -5.18) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "38ad9815-7aac-4b44-9a00-ddd7fe5761e8") ) - (property ki_fp_filters "LED* LED_SMD:* LED_THT:*") - (path "/02309ad1-af89-44eb-bce6-128caeb48261") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") + (fp_line + (start -3.3 3.75) + (end -3.75 3.75) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "f18f4347-f54f-4509-91c2-de82e6eef0d1") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 0.8 -0.735) - (end -1.485 -0.735) + (start -3.3 5.18) + (end -3.3 3.75) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "475ff2fd-4d9a-4f57-a1b5-d9253e7347af") + (layer "F.CrtYd") + (uuid "58218fe3-850c-4185-81e4-e9c5182053e7") ) (fp_line - (start -1.485 0.735) - (end 0.8 0.735) + (start 3.3 -5.18) + (end 3.3 -3.75) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "acf7fd94-ac1b-4e95-b6ce-4763658f6a6d") + (layer "F.CrtYd") + (uuid "a8222100-2377-48e9-a3d2-f76d23036a4a") ) (fp_line - (start -1.485 -0.735) - (end -1.485 0.735) + (start 3.3 -3.75) + (end 3.75 -3.75) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "56699227-6e31-466a-b621-e8c62a0366fd") + (layer "F.CrtYd") + (uuid "7d05e9b1-de4b-416e-8d7d-01bd6299ef0e") ) - (fp_rect - (start -1.48 -0.73) - (end 1.48 0.73) + (fp_line + (start 3.3 3.75) + (end 3.3 5.18) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "75df4ae6-97f9-4819-aab7-89bd882982b0") + (uuid "b2071145-e1dc-47d2-8d55-5b8eaf84dcdc") ) (fp_line - (start 0.8 0.4) - (end 0.8 -0.4) + (start 3.3 5.18) + (end -3.3 5.18) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "0a6c40e7-c6e4-46ad-aca2-7b57b30ec66c") + (layer "F.CrtYd") + (uuid "76d34405-8274-4c22-a2b1-81e16f29f60f") ) (fp_line - (start 0.8 -0.4) - (end -0.5 -0.4) + (start 3.75 -3.75) + (end 3.75 -3.3) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "c6ed45b7-914f-4b58-8432-08cfc2defe66") + (layer "F.CrtYd") + (uuid "dbb200e2-7a5d-450b-8a54-fe557b86cb36") ) (fp_line - (start -0.5 -0.4) - (end -0.8 -0.1) + (start 3.75 -3.3) + (end 5.18 -3.3) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "959453f9-878d-4543-a50f-e152b4074abb") + (layer "F.CrtYd") + (uuid "afd2408f-d457-4896-8ceb-765d4d00e0bd") ) (fp_line - (start -0.8 0.4) - (end 0.8 0.4) + (start 3.75 3.3) + (end 3.75 3.75) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "73d22b7e-4370-48f8-b53d-279de7e2a63e") + (layer "F.CrtYd") + (uuid "1d500660-0c3b-4bc5-93be-0ebcef3374bf") ) (fp_line - (start -0.8 -0.1) - (end -0.8 0.4) + (start 3.75 3.75) + (end 3.3 3.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "8a1d41b6-8ae5-4d35-ae77-e8f9d9236a1e") + ) + (fp_line + (start 5.18 -3.3) + (end 5.18 3.3) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "bc2ddb4d-60ad-4878-b737-ebfd2a48df3f") + ) + (fp_line + (start 5.18 3.3) + (end 3.75 3.3) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "d735e823-c5d5-43b5-9962-f8ce16b7dd22") + ) + (fp_poly + (pts + (xy -2.5 -3.5) (xy 3.5 -3.5) (xy 3.5 3.5) (xy -3.5 3.5) (xy -3.5 -2.5) + ) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "457c84ec-ea53-4dc3-9e79-d42c8036c2a7") + (uuid "7ae037e2-2893-443d-83c3-2ea76291ced8") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "051ef3fb-42d1-41dc-ab4f-99065416032b") + (uuid "3b263f02-1bde-4b92-a70c-10db4c5a1bce") (effects (font - (size 0.4 0.4) - (thickness 0.06) + (size 1 1) + (thickness 0.15) ) ) ) (pad "1" smd roundrect - (at -0.7875 0 180) - (size 0.875 0.95) + (at -4.175 -2.8) + (size 1.5 0.5) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/COIL_DRV") - (pinfunction "K_1") - (pintype "passive") - (uuid "3990424d-ffae-4a31-93b5-b28493a18b8a") + (net "unconnected-(U5-PB9-Pad1)") + (pinfunction "PB9_1") + (pintype "bidirectional+no_connect") + (uuid "9201bad9-5f77-4db4-a05e-d783064e460a") ) (pad "2" smd roundrect - (at 0.7875 0 180) - (size 0.875 0.95) + (at -4.175 -2) + (size 1.5 0.5) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "Net-(D7-A)") - (pinfunction "A_2") - (pintype "passive") - (uuid "8ddc2cce-a281-4065-aa0e-d41d471a1bc9") + (net "unconnected-(U5-PC14-Pad2)") + (pinfunction "PC14_2") + (pintype "bidirectional+no_connect") + (uuid "f605ff9f-5e96-4c9a-9465-13e543cdb02a") ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) + (pad "3" smd roundrect + (at -4.175 -1.2) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PC15-Pad3)") + (pinfunction "PC15_3") + (pintype "bidirectional+no_connect") + (uuid "bc9ee9b6-a3a3-4b0a-8b9d-6605e3fe5868") ) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "8a3edc9e-17e9-4c46-a3d4-2a44019ae3e2") - (at 137.9675 56.75) - (property "Reference" "TP17" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "2ebfcabb-4617-4f74-9822-0eec39fcbfe2") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (pad "4" smd roundrect + (at -4.175 -0.4) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pinfunction "VDD_4") + (pintype "power_in") + (uuid "07bb1f44-26d7-4d23-822a-37d6f8d6bbc9") ) - (property "Value" "SSR1" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "b4748ff9-013f-4c3f-a56c-c9d8e6dad463") - (effects - (font - (size 1 1) - (line_spacing 0) - ) + (pad "5" smd roundrect + (at -4.175 0.4) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pinfunction "VSS_5") + (pintype "power_in") + (uuid "1ce5836b-b299-4829-a9b3-bd6e03ed8181") + ) + (pad "6" smd roundrect + (at -4.175 1.2) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PF2-Pad6)") + (pinfunction "PF2_6") + (pintype "bidirectional+no_connect") + (uuid "97dd93f7-335b-44db-a872-a1f48da5919e") + ) + (pad "7" smd roundrect + (at -4.175 2) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/SUPERVISOR_RESET") + (pinfunction "PA0_7") + (pintype "bidirectional") + (uuid "698585f0-7d8e-41d8-a43f-6f2c69f9e43f") + ) + (pad "8" smd roundrect + (at -4.175 2.8) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_FEEDBACK") + (pinfunction "PA1_8") + (pintype "bidirectional") + (uuid "b59013a6-d595-4c46-aa27-448ea72f9baa") + ) + (pad "9" smd roundrect + (at -2.8 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(U5-PA2)") + (pinfunction "PA2_9") + (pintype "bidirectional") + (uuid "c67fa4cc-6b1f-4a15-b0fb-9f55d0ffe7d8") + ) + (pad "10" smd roundrect + (at -2 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_FAULT") + (pinfunction "PA3_10") + (pintype "bidirectional") + (uuid "cca07e2b-fdc1-4c85-9169-0b8a86003d61") + ) + (pad "11" smd roundrect + (at -1.2 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_CS") + (pinfunction "PA4_11") + (pintype "bidirectional") + (uuid "3b56e7ad-54b9-48da-addb-6926ec1a3c53") + ) + (pad "12" smd roundrect + (at -0.4 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_SCK") + (pinfunction "PA5_12") + (pintype "bidirectional") + (uuid "22eee113-232f-4fea-9567-44d512a5066e") + ) + (pad "13" smd roundrect + (at 0.4 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_MISO") + (pinfunction "PA6_13") + (pintype "bidirectional") + (uuid "4cc6f1c6-29af-4063-9082-daf800d4da3c") + ) + (pad "14" smd roundrect + (at 1.2 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_MOSI") + (pinfunction "PA7_14") + (pintype "bidirectional") + (uuid "c400b40d-340d-47af-adc8-50988b9bfdb2") + ) + (pad "15" smd roundrect + (at 2 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PB0-Pad15)") + (pinfunction "PB0_15") + (pintype "bidirectional+no_connect") + (uuid "55edf728-c856-489a-889a-c3eeaaff9f37") + ) + (pad "16" smd roundrect + (at 2.8 4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PB1-Pad16)") + (pinfunction "PB1_16") + (pintype "bidirectional+no_connect") + (uuid "f4437aab-17b9-4347-91d4-53659db89977") + ) + (pad "17" smd roundrect + (at 4.175 2.8) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PB2-Pad17)") + (pinfunction "PB2_17") + (pintype "bidirectional+no_connect") + (uuid "b02397f3-0a0d-48bc-8bc8-d0cf419454da") + ) + (pad "18" smd roundrect + (at 4.175 2) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_PERMIT") + (pinfunction "PA8_18") + (pintype "bidirectional") + (uuid "1500aaff-fb08-4096-958a-acc5236f6d62") + ) + (pad "19" smd roundrect + (at 4.175 1.2) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-NC{slash}PA9-Pad19)") + (pinfunction "NC/PA9_19") + (pintype "no_connect") + (uuid "faa9aa2c-48a3-47db-bd9f-17759bc8df12") + ) + (pad "20" smd roundrect + (at 4.175 0.4) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PC6-Pad20)") + (pinfunction "PC6_20") + (pintype "bidirectional+no_connect") + (uuid "31d74c4c-5df2-4e95-b7ed-46aa79b939fb") + ) + (pad "21" smd roundrect + (at 4.175 -0.4) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-NC{slash}PA10-Pad21)") + (pinfunction "NC/PA10_21") + (pintype "no_connect") + (uuid "cda41563-63b3-48b9-993f-b298754cb1b2") + ) + (pad "22" smd roundrect + (at 4.175 -1.2) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PA9{slash}PA11-Pad22)") + (pinfunction "PA9/PA11_22") + (pintype "bidirectional+no_connect") + (uuid "71ec1731-6407-48bb-b046-5e03515d9a83") + ) + (pad "23" smd roundrect + (at 4.175 -2) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PA10{slash}PA12-Pad23)") + (pinfunction "PA10/PA12_23") + (pintype "bidirectional+no_connect") + (uuid "1d2b0d4e-cdb0-4661-97c8-842c99286df8") + ) + (pad "24" smd roundrect + (at 4.175 -2.8) + (size 1.5 0.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/SW_DIO") + (pinfunction "PA13_24") + (pintype "bidirectional") + (uuid "f39b0997-d7c6-4b2c-9dec-a2668ca34f69") + ) + (pad "25" smd roundrect + (at 2.8 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/SW_CLK") + (pinfunction "PA14_25") + (pintype "bidirectional") + (uuid "56fe49c9-9989-402f-9c77-11dd51fd4dc0") + ) + (pad "26" smd roundrect + (at 2 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PA15-Pad26)") + (pinfunction "PA15_26") + (pintype "bidirectional+no_connect") + (uuid "8b0c6a7c-27d7-413c-be2d-c6953f1b6145") + ) + (pad "27" smd roundrect + (at 1.2 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U5-PB3-Pad27)") + (pinfunction "PB3_27") + (pintype "bidirectional+no_connect") + (uuid "359a716e-ce5b-45f9-9632-9e61ac26e5cd") + ) + (pad "28" smd roundrect + (at 0.4 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_FAULT") + (pinfunction "PB4_28") + (pintype "bidirectional") + (uuid "1a17bbd3-f6d5-4fa4-adb3-34e78d77bcc4") + ) + (pad "29" smd roundrect + (at -0.4 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_CS") + (pinfunction "PB5_29") + (pintype "bidirectional") + (uuid "e747e1e7-14b7-4f74-bc50-75dd6c64a8eb") + ) + (pad "30" smd roundrect + (at -1.2 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_MISO") + (pinfunction "PB6_30") + (pintype "bidirectional") + (uuid "6acc09d5-9ff7-4bc3-aca7-dbc8211cb6c6") + ) + (pad "31" smd roundrect + (at -2 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_MOSI") + (pinfunction "PB7_31") + (pintype "bidirectional") + (uuid "be6c1b93-de18-4025-be2e-1534efeb3406") + ) + (pad "32" smd roundrect + (at -2.8 -4.175) + (size 0.5 1.5) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_SCK") + (pinfunction "PB8_32") + (pintype "bidirectional") + (uuid "99ed866f-a533-4cdc-97da-6858349a51de") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Package_QFP.3dshapes/LQFP-32_7x7mm_P0.8mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "7db18534-133b-4a70-a884-040b62755193") + (at 53.85 89.8) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R10" + (at 0 -1.17 0) + (layer "F.SilkS") + (hide yes) + (uuid "ef4f8440-6a69-4a25-a227-678f313d3b1a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "10k" + (at 0 1.17 0) + (layer "F.Fab") + (hide yes) + (uuid "11294927-9380-40e8-8d02-754aa976d5af") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) ) (property "Datasheet" "" (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "38ce3d21-b97c-43ca-a240-a5ff83874896") + (uuid "1971b24b-594c-4e0f-a755-43bf51ea6665") (effects (font (size 1.27 1.27) @@ -17012,142 +16042,149 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "a1eaa00c-2654-4408-9e47-e3a55d87d4c3") + (uuid "9ebb0d59-3899-450b-a337-10ccd328eb23") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/4d3ecb7c-62b1-4e48-9eb5-c1673964d347") + (property "LCSC" "C25744" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "bf058efb-2f23-4095-b241-5a844c8cc9c2") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/c4329922-ce4a-4d51-9ae2-c78b30dd11eb") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "41c246e3-4749-48e7-9b79-e7809df8b963") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "1dc231fb-16a4-44a9-9c1b-062f255898c8") - ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "f5fd7da4-3b18-44d3-8214-9e36e5d59987") + (uuid "c6d86c41-6f8d-4c1c-8b73-2893bc755cd7") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "98118469-0a10-4112-82cc-a96a532ffb46") + (uuid "72418cad-3455-4c23-9aa1-c0303784265b") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "79b8f38c-875f-4b6b-a819-6b51df3c62a7") + (uuid "6992b7e8-c7d8-48b0-b590-d02089061b40") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "f0261e09-cfe0-4a31-873c-489ba6bf045b") + (fill no) + (layer "F.Fab") + (uuid "4bad8167-ea0c-4d73-9b0e-c8a7ab58b7e5") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "95fc12c6-92d6-4cae-91ae-49b4d2e00f5b") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "f09edbc9-3090-4719-b3aa-0bcadd596c4f") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "e98b71ca-9a87-4d55-bcde-4efacf587b09") + (pad "1" smd roundrect + (at -0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pintype "passive") + (uuid "f7ef38f7-d0d5-4690-b9fb-9cd3b45fad24") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/SSR1") - (pinfunction "1_1") + (pad "2" smd roundrect + (at 0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/ENC_A") (pintype "passive") - (uuid "964d6b21-0e12-47d3-861d-0be0778f614e") + (uuid "400cde30-aad9-4b84-aab5-6c969961c368") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" (layer "F.Cu") - (uuid "8b97733f-a44f-42e8-ac71-8c1451c8147f") - (at 86.5 71) - (property "Reference" "TP6" - (at 0 -1.648 0) - (unlocked yes) + (uuid "7dd78cd3-aa25-4f9a-8692-7c52559cd811") + (at 133.235 99.25 180) + (descr "TSSOP, 14 Pin (JEDEC MO-153 variation AB-1, 1.00mm body thickness, https://www.jedec.org/document_search?search_api_views_fulltext=MO-153)") + (tags "TSSOP SO") + (property "Reference" "U3" + (at 0 -3.45 0) (layer "F.SilkS") (hide yes) - (uuid "f92639d4-4f2c-49c3-9311-d31c475d4192") + (uuid "873ebd36-301b-4e64-89c4-c5367b72cf4f") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "SPI_SCK" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "MAX31856" + (at 0 3.45 0) + (layer "F.Fab") (hide yes) - (uuid "3c6231c2-ec63-4709-a0b2-92cc2edbde32") + (uuid "7bf63c16-537d-4027-a9bd-a659155089e4") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -17155,7 +16192,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "b71af67e-947e-4db6-bef6-32456fc05604") + (uuid "6d76ad85-78a8-4c2a-84de-2447888a1306") (effects (font (size 1.27 1.27) @@ -17166,252 +16203,395 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "2fae2620-2e8d-4e92-b0c9-67af3c206b94") + (uuid "e4c9bf4a-bdb4-4cef-b830-3bd0bdad87fd") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/c1e06905-9b1a-4d3e-b0e3-5c589284f90b") + (property "LCSC" "C2653162" + (at 0 0 180) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "46195e6a-9744-427f-9854-6485b0c0cdc0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "TSSOP*14*4.4x5mm*P0.65mm*") + (path "/ef80f970-fdb1-4047-9af5-b800f2545d0f") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "4" "3" "2" "6" "5" "1" "8" "14" "7" "13" "9" "10" "11" "12") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 2.31 2.61) + (end -2.31 2.61) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "fdb95e54-0871-496a-8a7d-e0ea5c455bbd") + (uuid "53538a54-592f-4383-a801-1c49ecdd94f4") ) (fp_line - (start -0.95 0.950001) - (end -0.95 -0.95) + (start 2.31 2.41) + (end 2.31 2.61) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "d1c4a0f8-1b68-4728-b745-69bf81b799d4") + (uuid "23bb3530-1c02-42c7-9399-15261672bd88") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.950001) + (start 2.31 -2.61) + (end 2.31 -2.41) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "e034b94a-398c-4d17-ab44-67e76ce3001b") + (uuid "285ab7d5-7f1c-477c-8550-ebb8f56d6445") ) (fp_line - (start 0.95 0.950001) - (end -0.95 0.950001) + (start -2.31 2.61) + (end -2.31 2.41) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "4e7c8cb0-172a-4707-a122-3ed42b205580") + (uuid "3ed86b22-4f80-43d7-95c0-f21675079d10") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -2.31 -2.41) + (end -2.31 -2.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "bf51192e-75ef-4e0d-88db-05428a916121") + ) + (fp_line + (start -2.31 -2.61) + (end 2.31 -2.61) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c445803c-eb62-4cf7-95ab-0f973f65bf1b") + ) + (fp_poly + (pts + (xy -2.95 -2.41) (xy -3.29 -2.88) (xy -2.61 -2.88) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) + (layer "F.SilkS") + (uuid "88e64267-c70e-4db4-846f-ff15bcacf9d2") + ) + (fp_line + (start 3.85 2.4) + (end 2.45 2.4) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "c29d85d7-f5bc-41bd-bcb7-88d5175a98f6") + (uuid "10f62e53-7edd-4332-9a4c-579379dc54af") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start 3.85 -2.4) + (end 3.85 2.4) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "f1e55526-cfbd-4ce2-9f5d-ea6ecb83d153") + (uuid "fdbf4fbd-d10d-4897-ae2f-42da0c05aa72") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start 2.45 2.75) + (end -2.45 2.75) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "658452d3-0ff6-43b8-bca2-6ac34d7b516a") + (uuid "86a0120b-7620-4ece-b62c-7c0ca7cc32c5") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start 2.45 2.4) + (end 2.45 2.75) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "5e126893-693a-4f53-8f29-143464f32b6c") + (uuid "58c4e03e-08ca-45bb-b7f4-d3c92d8c5910") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/SPI_SCK") - (pinfunction "1_1") - (pintype "passive") - (uuid "432a0d9c-89df-4662-ae2e-3667ccd2ab1c") + (fp_line + (start 2.45 -2.4) + (end 3.85 -2.4) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "69e1184b-26d7-41d2-9eb6-17db370f53ed") ) - (embedded_fonts no) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "94efa97e-3210-466b-8526-96b373566d30") - (at 137.9675 47.75 90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R31" - (at 0 -1.17 90) - (layer "F.SilkS") - (hide yes) - (uuid "8cd6d5b8-e04c-473d-b0c5-88fd7664673e") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start 2.45 -2.75) + (end 2.45 -2.4) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "7da8d11a-52d5-4855-9109-c8d7c36ec269") ) - (property "Value" "18k" - (at 0 1.17 90) - (layer "F.Fab") - (hide yes) - (uuid "f634370a-5c03-4993-aa77-22288ae63d10") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -2.45 2.75) + (end -2.45 2.4) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "a1c759c0-e91f-4e2f-bebf-55885a17bb5c") ) - (property "Datasheet" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "5794fb31-e115-440b-a53e-a6fe273e5723") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "8d1705ac-1a8a-4d74-ab2b-36260ec6e2e4") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start -2.45 2.4) + (end -3.85 2.4) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "0fd2c829-c176-4298-b3fe-fe25d5689ffd") ) - (property ki_fp_filters "R_*") - (path "/abfb24ba-666b-4f06-907d-72491179b2f8") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") + (fp_line + (start -2.45 -2.4) + (end -2.45 -2.75) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "8215fc92-fc2f-42ee-a205-c3294a9f8820") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -2.45 -2.75) + (end 2.45 -2.75) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "9ec635ff-a292-416d-843c-716e092c850d") + (layer "F.CrtYd") + (uuid "66199b35-1450-4d86-a7f4-fc97a83a73a9") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -3.85 2.4) + (end -3.85 -2.4) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "8ba74d37-8674-44b7-8120-111e37181626") + (layer "F.CrtYd") + (uuid "53a23b7f-f098-4215-a7e8-1acda1b670a4") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_line + (start -3.85 -2.4) + (end -2.45 -2.4) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "e20e0e8e-13e8-4c95-ba3f-978b713b4e74") + (uuid "dd7b98a2-4076-4843-a31a-154893f3ce1d") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_poly + (pts + (xy -1.2 -2.5) (xy 2.2 -2.5) (xy 2.2 2.5) (xy -2.2 2.5) (xy -2.2 -1.5) + ) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "c0d5e157-f581-4c2a-8f62-c186776058a0") + (uuid "42b19787-4ad6-4ce1-8ba6-3711e15ce07a") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") - (uuid "8e5ca9b4-db8b-4782-bbf5-54045b488e0b") + (uuid "f4249326-abe6-4ddf-8279-de33ef077098") (effects (font - (size 0.26 0.26) - (thickness 0.04) + (size 1 1) + (thickness 0.15) ) ) ) (pad "1" smd roundrect - (at -0.51 0 90) - (size 0.54 0.64) + (at -2.8625 -1.95 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/LID_SENSE") - (pintype "passive") - (uuid "75ac3cf2-9855-450d-bf74-f7a418fa4452") + (net "GND") + (pinfunction "AGND_1") + (pintype "power_in") + (uuid "9381a228-1fd7-4d44-bd9e-c3d937c11aa1") ) (pad "2" smd roundrect - (at 0.51 0 90) - (size 0.54 0.64) + (at -2.8625 -1.3 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_N") + (pinfunction "BIAS_2") + (pintype "input") + (uuid "5e18520d-ff9e-42e5-abf1-f63bfe0f76a8") + ) + (pad "3" smd roundrect + (at -2.8625 -0.65 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_TN") + (pinfunction "T-_3") + (pintype "input") + (uuid "6c68d7d5-1c2f-4eff-b775-104d1701f531") + ) + (pad "4" smd roundrect + (at -2.8625 0 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_TP") + (pinfunction "T+_4") + (pintype "input") + (uuid "032d5548-7c9c-43a8-8724-6ac303710c1a") + ) + (pad "5" smd roundrect + (at -2.8625 0.65 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pinfunction "AVDD_5") + (pintype "power_in") + (uuid "c05774c4-0a16-4865-932e-8e39dc4aad46") + ) + (pad "6" smd roundrect + (at -2.8625 1.3 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U3-DNC-Pad6)") + (pinfunction "DNC_6") + (pintype "no_connect") + (uuid "78fbee4f-aba9-474d-a680-2cae8718e286") + ) + (pad "7" smd roundrect + (at -2.8625 1.95 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "unconnected-(U3-~{DRDY}-Pad7)") + (pinfunction "~{DRDY}_7") + (pintype "output+no_connect") + (uuid "6cd867bb-ae2a-4492-9359-94b7a5ac1334") + ) + (pad "8" smd roundrect + (at 2.8625 1.95 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pinfunction "DVDD_8") + (pintype "power_in") + (uuid "e035053e-9121-43dd-a5de-a09addce439a") + ) + (pad "9" smd roundrect + (at 2.8625 1.3 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_CS") + (pinfunction "~{CS}_9") + (pintype "input") + (uuid "7df8d22b-4545-4095-b791-dcb6ae032de0") + ) + (pad "10" smd roundrect + (at 2.8625 0.65 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_SCK") + (pinfunction "SCK_10") + (pintype "input") + (uuid "70fc064c-448b-45d8-97e9-ed950e113711") + ) + (pad "11" smd roundrect + (at 2.8625 0 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_MISO") + (pinfunction "SDO_11") + (pintype "output") + (uuid "f9b99309-f826-4a21-8d0f-bc47dac31c11") + ) + (pad "12" smd roundrect + (at 2.8625 -0.65 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_MOSI") + (pinfunction "SDI_12") + (pintype "input") + (uuid "0c9d97a7-a703-488c-b718-f4a38e950888") + ) + (pad "13" smd roundrect + (at 2.8625 -1.3 180) + (size 1.475 0.4) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_FAULT") + (pinfunction "~{FAULT}_13") + (pintype "output") + (uuid "96fdd6ee-483a-4a76-ba60-8702dcc97592") + ) + (pad "14" smd roundrect + (at 2.8625 -1.95 180) + (size 1.475 0.4) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") - (pintype "passive") - (uuid "e2cac753-cf22-4ac2-9099-c81648a28fe5") + (pinfunction "DGND_14") + (pintype "power_in") + (uuid "4e2442fd-0e4b-46e4-ac1b-128dec30d106") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-14_4.4x5mm_P0.65mm.step" (offset (xyz 0 0 0) ) @@ -17423,17 +16603,17 @@ ) ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" (layer "F.Cu") - (uuid "963d0a00-a877-4241-857d-231fbdba0255") - (at 139.4675 99.25 90) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C8" - (at 0 -1.16 90) + (uuid "7fc85dfe-2ee0-4576-9d1b-6c1fc9ae4d82") + (at 145.735 101.75 90) + (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") + (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") + (property "Reference" "J3" + (at 2.25 -5.12 90) (layer "F.SilkS") (hide yes) - (uuid "8f7215cd-ef65-4b55-bae9-e18052499487") + (uuid "b4635387-0b93-4930-a073-3e0b0f410175") (effects (font (size 1 1) @@ -17441,11 +16621,10 @@ ) ) ) - (property "Value" "10nF" - (at 0 1.16 90) + (property "Value" "TC1 KILN (K)" + (at 2.25 4.92 90) (layer "F.Fab") - (hide yes) - (uuid "f2af79ff-cace-460a-a0ba-804f3b9e781f") + (uuid "72f05127-4502-4fc9-855d-0b4194eb735c") (effects (font (size 1 1) @@ -17457,7 +16636,7 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "70323dd4-683b-40e8-b4df-0186f16a12fc") + (uuid "d8fd5387-66ef-492f-83ea-3e47c313a6a1") (effects (font (size 1.27 1.27) @@ -17468,19 +16647,19 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "be19f741-f44b-4dc4-bdd4-a91610896f9d") + (uuid "7f152568-859e-45c6-b0fc-7bb44199d2cd") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C15195" + (property "LCSC" "C474881" (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "41663f82-b996-4e08-b61e-88056f359614") + (uuid "46d416e5-b768-47a7-b50f-e2ec929154e4") (effects (font (size 1 1) @@ -17488,8 +16667,8 @@ ) ) ) - (property ki_fp_filters "C_*") - (path "/488a5a36-ac38-48ab-a39b-4d9fb924fa86") + (property ki_fp_filters "TerminalBlock*:*") + (path "/3852952b-844a-4a0b-a786-803839e3e502") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -17498,411 +16677,628 @@ (pins "1" "2") ) ) - (attr smd) + (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start 7.62 -4.12) + (end 7.62 3.92) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "78e1db6a-266b-4747-8dd3-a6f3d935e211") + (uuid "10118500-ad47-46d6-a57f-2a641be02f11") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -3.12 -4.12) + (end 7.62 -4.12) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "60f65a26-976e-4df7-969c-42bc4c856504") + (uuid "1e32d0da-005d-4404-9c51-1b3752ec5ad3") ) - (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (fp_line + (start 6.812 -0.5) + (end 7.62 -0.5) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (fill no) - (layer "F.CrtYd") - (uuid "cec40ec1-014d-41a4-95d4-da27ad049616") + (layer "F.SilkS") + (uuid "82d1bcf1-f246-4e39-a35c-eeee399e026c") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start 1.88 -0.5) + (end 3.188 -0.5) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "bedb198e-dfb6-4b3c-b880-6a430099c3ec") - ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "6f214e6a-fef5-4753-8190-6b1355ee3504") - (effects - (font - (size 0.25 0.25) - (thickness 0.04) - ) - ) - ) - (pad "1" smd roundrect - (at -0.48 0 90) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_TP") - (pintype "passive") - (uuid "fc631ccb-d6e3-4907-a7a3-ea276b3a05b1") - ) - (pad "2" smd roundrect - (at 0.48 0 90) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_TN") - (pintype "passive") - (uuid "92227193-9810-4071-99f7-0b28502d491a") + (layer "F.SilkS") + (uuid "656ccca8-2a08-4d8c-bc70-c291a6508495") ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) + (fp_line + (start -3.12 -0.5) + (end -1.88 -0.5) + (stroke + (width 0.12) + (type solid) ) - ) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "99b96364-be6d-4bc2-b476-d4d00d66706d") - (at 134.75 41.75) - (property "Reference" "TP19" - (at 0 -1.648 0) - (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "d5b7e47f-1ad3-4e1e-a239-22488bdc0b99") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) + (uuid "6d022e7f-0ce9-4f5f-8c08-4a6a7abbd53a") ) - (property "Value" "HEAT_EN" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "c6edbacc-188e-4637-a362-2d331676e962") - (effects - (font - (size 1 1) - (line_spacing 0) - ) + (fp_line + (start 6.812 0.5) + (end 7.62 0.5) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "51d3dcf4-d1bf-4a22-b882-0b4f67d55d6a") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "260694fb-0c67-4adb-9f2d-deeb1dfebd75") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start 1.88 0.5) + (end 3.188 0.5) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "de3c34cf-dd10-454d-b06f-a8b844562a61") ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "d4431d18-cb25-4631-b8c7-ee546b072abb") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start -3.12 0.5) + (end -1.88 0.5) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "cd48d268-3a17-436e-a1bf-f963bbe227ee") ) - (property ki_fp_filters "Pin* Test*") - (path "/318dccf0-d69b-4f53-ab9d-9139beceffbc") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") + (fp_line + (start 5.543 1.8) + (end 7.62 1.8) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "525ccba1-030c-4d56-8b05-75bd2a408502") ) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 1.88 1.8) + (end 4.457 1.8) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "f99c3d0d-8c0d-49fa-ac30-892bea8aa185") + (uuid "20ea423f-5935-40f4-91ce-b1f52cb3ea31") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -3.12 1.8) + (end -1.88 1.8) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "07719a62-6631-4268-b0b2-fa6c454c0fb3") + (uuid "7706810a-fbf5-45cb-abbe-2adf6a36caff") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start 7.62 3.92) + (end 0.3 3.92) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "7cfaf5d6-248d-45c6-abc8-53bc25605cce") + (uuid "bd2fb630-1573-4eba-83d1-25c7ddb5e411") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.3 3.92) + (end -3.12 3.92) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "b013da3f-cee4-4e4c-98b7-1ee59a440d0d") + (uuid "19a1de16-96e6-4aa6-832a-6cdf2f34367c") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -3.12 3.92) + (end -3.12 -4.12) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "42603a25-d79f-4efe-82dc-4bde69bb27c9") + (layer "F.SilkS") + (uuid "e7f563af-cf7b-4780-8c04-e1433e8ba0af") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_poly + (pts + (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) + ) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "0725e48d-8327-4314-a017-9fe998f58f9c") + (fill yes) + (layer "F.SilkS") + (uuid "dd292d5a-56f1-4598-b5ad-16b83dffa53b") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (fp_rect + (start -3.5 -4.5) + (end 8 4.31) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "8456efa8-bf80-45bf-9bfc-b639ba07c662") + (uuid "536438d3-18b7-4d6d-8942-e006f4479fee") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start 7.5 -4) + (end 7.5 3.8) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "557a0ea2-889a-4bc2-ae79-afece0bb2303") + (layer "F.Fab") + (uuid "5d275bdc-c817-4c56-b1e1-86e977954c42") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/HEAT_EN") - (pinfunction "1_1") + (fp_line + (start -3 -4) + (end 7.5 -4) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "51d2ad50-9845-483a-988e-0badc0155476") + ) + (fp_line + (start 6.018 -1.213) + (end 3.787 1.018) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1aa150c6-c0ae-45c8-852e-2ab63ebbc7e2") + ) + (fp_line + (start 1.018 -1.213) + (end -1.213 1.018) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "998edf1c-0b3d-42cf-aecf-4eb1ed96e682") + ) + (fp_line + (start 6.213 -1.018) + (end 3.982 1.213) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "527eba7a-0317-4c1d-9ebc-e38029468d31") + ) + (fp_line + (start 1.213 -1.018) + (end -1.018 1.213) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "55bda7c5-9245-402e-b3d9-92e300e6d6bb") + ) + (fp_line + (start -3 -0.5) + (end 7.5 -0.5) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "8d12b8ef-c15a-460b-bc74-c51b98cf62a7") + ) + (fp_line + (start -3 0.5) + (end 7.5 0.5) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c1b531fe-3329-4936-8282-9db8626b8cb1") + ) + (fp_line + (start -3 1.8) + (end 7.5 1.8) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "c0a5cdf3-01da-42d6-8c66-9672baa31da3") + ) + (fp_line + (start -3 1.85) + (end -3 -4) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "91d306ac-82a1-4d4f-91cb-12c0fbf677f5") + ) + (fp_line + (start 7.5 3.8) + (end -1.05 3.8) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "1a4c7bdc-e927-4b4e-9e21-e8a644030a02") + ) + (fp_line + (start -1.05 3.8) + (end -3 1.85) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "d0a72330-35af-4801-811a-75cbbdd54e97") + ) + (fp_circle + (center 5 0) + (end 6.6 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "553f42ee-e9c3-4aa4-ae08-6547c2ac5b40") + ) + (fp_circle + (center 0 0) + (end 1.6 0) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "62a12a73-fc8c-4077-a10e-7e6491ca30eb") + ) + (fp_text user "${REFERENCE}" + (at 2.25 2.65 90) + (layer "F.Fab") + (uuid "fa68bc5f-9c7c-4110-8d31-8c3e224b4a60") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" thru_hole roundrect + (at 0 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.089286) + (net "/TC1_N") + (pinfunction "Pin_1_1") (pintype "passive") - (uuid "dbde7e7e-c06e-4732-99a0-3d001e121ce7") + (uuid "69c1eae8-2174-419a-b03f-7a108ce431b6") + ) + (pad "2" thru_hole circle + (at 5 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/TC1_P") + (pinfunction "Pin_2_2") + (pintype "passive") + (uuid "161eb663-e07b-4f3a-93dd-4044c01f3b88") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical" (layer "F.Cu") - (uuid "9aaf0550-6154-4a96-b487-689bc813aabb") - (at 125.735 100.5) - (property "Reference" "TP13" - (at 0 -1.648 0) - (unlocked yes) + (uuid "866d0665-638e-4dec-b8f3-7e6d1fb9c643") + (at 132.73 76.115 180) + (descr "Tag-Connect programming header; http://www.tag-connect.com/Materials/TC2030-IDC-NL.pdf") + (tags "tag connect programming header pogo pins") + (property "Reference" "J4" + (at 0 2.7 0) (layer "F.SilkS") (hide yes) - (uuid "9c41b864-00ce-4945-ade8-6bd7a83148ba") + (uuid "660fa0bf-826e-4008-b53c-c2dd1e713b90") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "TC1_FAULT" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "Conn_ARM_SWD_TagConnect_TC2030" + (at 0 -2.3 0) + (layer "F.Fab") (hide yes) - (uuid "cc9a5750-43ed-442c-b91d-89bdec3bd4ac") + (uuid "950d1266-24ad-426d-af7d-6d0b14a78ce0") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 180) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "fc70a31f-5f3d-42d5-912a-b253f5f50f44") + (uuid "c54c9c89-202d-4f94-b2c1-0f1903b2b555") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 180) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "c83addb9-b418-4b66-b79d-f5fe82524acb") + (uuid "64abc77f-d040-4275-aff3-d4f5752e5c9c") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/7d09633c-bc8a-4ad4-af71-21c86e6983a3") + (property ki_fp_filters "*TC2030*") + (path "/515d9668-9686-49e6-b1ca-e5169fa78832") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "5" "3" "4" "2" "6") ) ) + (attr exclude_from_bom) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start -1.27 1.27) + (end -1.905 1.27) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "5df23ef3-a11b-453e-bdb1-38496b19b543") + (uuid "69b1f26f-b30e-4a81-b559-7c0be6fe58b0") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -1.905 1.27) + (end -1.905 0.635) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "442086c5-0253-4279-b158-7e1797596ebd") + (uuid "b9f5b775-baa7-43d1-9c4f-1c2b4c0d1fe3") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start 3.5 2) + (end -3.5 2) (stroke - (width 0.12) - (type default) + (width 0.05) + (type solid) ) - (layer "F.SilkS") - (uuid "029cd014-3b52-4a8f-a580-23b819667ea1") + (layer "F.CrtYd") + (uuid "dc736527-642c-4725-a335-a7dcac6db643") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start 3.5 -2) + (end 3.5 2) (stroke - (width 0.12) - (type default) + (width 0.05) + (type solid) ) - (layer "F.SilkS") - (uuid "548c9856-afbc-44df-896d-fb7ef311cbec") + (layer "F.CrtYd") + (uuid "92549ed6-4fe7-4b41-b742-641d2e1d8800") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -3.5 2) + (end -3.5 -2) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "744821dd-8df6-45bd-9f00-4b02cc0d2ef7") + (uuid "e465e831-6d53-4dd3-b355-0d62653a9066") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start -3.5 -2) + (end 3.5 -2) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "7e6b088e-7816-44b0-a47f-845dc6c9beb0") + (uuid "a60f48e0-1a3a-4948-9c16-9ee6ff1a0f66") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "KEEPOUT" + (at 0 0 0) + (layer "Cmts.User") + (uuid "d99eca86-e04a-4ed5-b90d-0e94a8a03925") + (effects + (font + (size 0.4 0.4) + (thickness 0.07) + ) ) - (layer "F.CrtYd") - (uuid "e7f7c61e-51f4-4db9-a73e-7a17cc826db2") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "b0c98860-31ff-4497-a5cd-97f4080834da") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.CrtYd") - (uuid "617533ae-e2ac-4adc-b631-77a8377044ad") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) + (pad "" np_thru_hole circle + (at -2.54 0 180) + (size 0.9906 0.9906) + (drill 0.9906) + (layers "*.Cu" "*.Mask") + (uuid "30efafad-23a9-4b7e-8968-6a3665217d40") + ) + (pad "" np_thru_hole circle + (at 2.54 -1.016 180) + (size 0.9906 0.9906) + (drill 0.9906) + (layers "*.Cu" "*.Mask") + (uuid "5e181b4b-2ab4-453e-b7f0-f9d19116a61f") + ) + (pad "" np_thru_hole circle + (at 2.54 1.016 180) + (size 0.9906 0.9906) + (drill 0.9906) + (layers "*.Cu" "*.Mask") + (uuid "7bd206c7-9779-403c-b258-3c579128fbeb") + ) + (pad "1" connect circle + (at -1.27 0.635 180) + (size 0.7874 0.7874) (layers "F.Cu" "F.Mask") - (net "/TC1_FAULT") - (pinfunction "1_1") - (pintype "passive") - (uuid "340336d5-193e-4415-9d7f-9daffb0dfed1") + (net "+3.3V") + (pinfunction "VCC_1") + (pintype "power_in") + (uuid "12cb82f9-f7f4-4cf1-9108-b92ec7fdaafc") + ) + (pad "2" connect circle + (at -1.27 -0.635 180) + (size 0.7874 0.7874) + (layers "F.Cu" "F.Mask") + (net "/SW_DIO") + (pinfunction "SWDIO_2") + (pintype "bidirectional") + (uuid "b0f7d8e6-a3fa-4818-94c0-2580af56c9a9") + ) + (pad "3" connect circle + (at 0 0.635 180) + (size 0.7874 0.7874) + (layers "F.Cu" "F.Mask") + (net "/SUPERVISOR_RESET") + (pinfunction "~{RESET}_3") + (pintype "open_collector") + (uuid "022dba9e-f78c-4c00-9810-83f9ea89c7c6") + ) + (pad "4" connect circle + (at 0 -0.635 180) + (size 0.7874 0.7874) + (layers "F.Cu" "F.Mask") + (net "/SW_CLK") + (pinfunction "SWCLK_4") + (pintype "output") + (uuid "31a9c06b-28db-4971-b368-55e6f7665f58") + ) + (pad "5" connect circle + (at 1.27 0.635 180) + (size 0.7874 0.7874) + (layers "F.Cu" "F.Mask") + (net "GND") + (pinfunction "GND_5") + (pintype "power_in") + (uuid "428b860b-df81-4575-986d-e5ac0b24f756") + ) + (pad "6" connect circle + (at 1.27 -0.635 180) + (size 0.7874 0.7874) + (layers "F.Cu" "F.Mask") + (net "/SUPERVISOR_TX") + (pinfunction "SWO_6") + (pintype "input") + (uuid "1c8a6296-ce57-49ca-83b4-c94e421604df") + ) + (zone + (layer "F.Cu") + (uuid "d5463b4c-3226-4e8c-b711-02862d9a58af") + (hatch full 0.508) + (connect_pads + (clearance 0) + ) + (min_thickness 0.254) + (keepout + (tracks allowed) + (vias not_allowed) + (pads allowed) + (copperpour not_allowed) + (footprints not_allowed) + ) + (placement + (enabled no) + (sheetname "") + ) + (fill + (thermal_gap 0.508) + (thermal_bridge_width 0.508) + (island_removal_mode 0) + ) + (polygon + (pts + (xy 131.46 76.75) (xy 134 76.75) (xy 134 75.48) (xy 131.46 75.48) + ) + ) ) (embedded_fonts no) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Diode_SMD:D_SOD-123" (layer "F.Cu") - (uuid "9f1d4432-da84-484d-aace-45600fab0561") - (at 108.25 47.5 -90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R22" - (at 0 -1.17 90) + (uuid "873a6592-be70-42f8-a72b-b8540284cf98") + (at 139.9675 48.5 90) + (descr "SOD-123") + (tags "SOD-123") + (property "Reference" "D6" + (at 0 -2 90) (layer "F.SilkS") (hide yes) - (uuid "46ba99e9-6fee-467c-8c4c-07ee514fcdcc") + (uuid "6574afb1-1126-4002-868b-768228fbf731") (effects (font (size 1 1) @@ -17910,11 +17306,11 @@ ) ) ) - (property "Value" "100R" - (at 0 1.17 90) + (property "Value" "1N4148W" + (at 0 2.1 90) (layer "F.Fab") (hide yes) - (uuid "5c61862a-882d-42b4-bb65-47e12c480d4d") + (uuid "04fa3bcb-bfc9-403a-ac6b-95ad44fc5f35") (effects (font (size 1 1) @@ -17924,32 +17320,36 @@ ) (property "Datasheet" "" (at 0 0 90) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "72ee9253-7f93-414a-8f81-2820f50eecfa") + (uuid "83321869-4264-4da4-a97e-7587c579160b") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" (at 0 0 90) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "58840953-6d90-45e9-a14a-eb44eb7bb6c6") + (uuid "767344ea-ce91-4d7a-8de7-024dcbca3421") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property "LCSC" "C25076" - (at 0 0 270) + (property "LCSC" "C2099" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "8c326e82-dbe7-4d87-99a6-6ac1c26f895b") + (uuid "5b0281a3-34e2-42db-847f-b7979821a2a9") (effects (font (size 1 1) @@ -17957,8 +17357,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/559d7b59-4fcf-43b2-a6b5-eaffd4d52363") + (property ki_fp_filters "TO-???* *_Diode_* *SingleDiode* D_*") + (path "/3a8633cc-3228-448d-8836-24c35d249308") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -17970,239 +17370,207 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -2.36 -1) + (end 1.65 -1) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "1b127b19-3ade-4c0e-86c1-88a9ad82f287") + (uuid "f575b03a-8778-4fb2-a139-0d670f087b6d") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -2.36 -1) + (end -2.36 1) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "4ab08997-0cc9-4f12-8181-46e8492094ec") + (uuid "9647580f-e590-44ba-a917-356e3da6a425") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_line + (start -2.36 1) + (end 1.65 1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c937e9da-121e-4d28-b2d7-15040f90e52a") + ) + (fp_line + (start 2.35 -1.15) + (end 2.35 1.15) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "05710c6f-18a2-4dbe-8684-637979f3178a") + (uuid "70bfeb2e-a1ca-4712-8487-f411b6696b20") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_line + (start -2.35 -1.15) + (end 2.35 -1.15) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "c9e8f6a4-d66f-4c9c-bb0e-248e2899cb4d") + (layer "F.CrtYd") + (uuid "60f2a937-9064-4097-8a64-49781b76c068") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "81bdd06b-54fe-4b1c-b7d8-51223beaeb49") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) + (fp_line + (start -2.35 -1.15) + (end -2.35 1.15) + (stroke + (width 0.05) + (type solid) ) + (layer "F.CrtYd") + (uuid "7447fa2e-90b8-45d8-8db6-37449202a594") ) - (pad "1" smd roundrect - (at -0.51 0 270) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/ALARM") - (pintype "passive") - (uuid "82ee721d-3d34-41e6-97bd-338a4d47530b") - ) - (pad "2" smd roundrect - (at 0.51 0 270) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "Net-(Q4-G)") - (pintype "passive") - (uuid "808c9a57-8146-4d43-9cbd-02567c6667e7") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) + (fp_line + (start 2.35 1.15) + (end -2.35 1.15) + (stroke + (width 0.05) + (type solid) ) - (scale - (xyz 1 1 1) + (layer "F.CrtYd") + (uuid "feaff775-0061-4173-8e2d-b366c1c9baa7") + ) + (fp_line + (start 1.4 -0.9) + (end 1.4 0.9) + (stroke + (width 0.1) + (type solid) ) - (rotate - (xyz 0 0 0) + (layer "F.Fab") + (uuid "a030d719-1b3d-4adc-a736-dee96e4f0f52") + ) + (fp_line + (start -1.4 -0.9) + (end 1.4 -0.9) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "1bb7a8f1-fb0b-4166-9de4-d133c9aba254") ) - ) - (footprint "Capacitor_SMD:C_0402_1005Metric" - (layer "F.Cu") - (uuid "a0b043c5-6c7a-4692-b068-9d3ee9160870") - (at 139.9675 100.75) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C9" - (at 0 -1.16 0) - (layer "F.SilkS") - (hide yes) - (uuid "3aa75fa6-5b77-41fd-acff-765eb733ae8a") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start 0.25 -0.4) + (end 0.25 0.4) + (stroke + (width 0.1) + (type solid) ) - ) - (property "Value" "100pF" - (at 0 1.16 0) (layer "F.Fab") - (hide yes) - (uuid "cb0e3e30-eb80-4c04-81b1-e26ccf15dd50") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (uuid "8dc05bd0-7815-4bb8-9b5f-650ed6b0a6aa") ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "1e1d2908-3d39-489f-889e-9445b430c50a") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start 0.25 0) + (end 0.75 0) + (stroke + (width 0.1) + (type solid) ) - ) - (property "Description" "" - (at 0 0 0) (layer "F.Fab") - (hide yes) - (uuid "328c4ce1-f7c5-424d-b4c7-b52fa6de998c") - (effects - (font - (size 1.27 1.27) - ) - ) + (uuid "04790f2b-4b32-4e03-84db-488a5100d6b1") ) - (property "LCSC" "C26409" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "f00e6c6a-a8c8-4a62-9f3e-dbf62aea4ba2") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -0.35 0) + (end -0.35 -0.55) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "397d5112-b5b6-48fc-83ff-4043d72638ab") ) - (property ki_fp_filters "C_*") - (path "/92a66687-e21b-4c15-a8d5-5fd628a23ce6") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") + (fp_line + (start -0.35 0) + (end 0.25 -0.4) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "20ae578e-4872-4d32-bb21-e23195c9e3c9") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.35 0) + (end -0.35 0.55) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "6acfd463-ff29-4bc6-95fb-f1284d8b137f") + (layer "F.Fab") + (uuid "13b46fd3-e20d-4f29-abae-07bf67e67dd0") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.75 0) + (end -0.35 0) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "77d504b0-668e-4efd-8a2b-8166adf34c7c") + (layer "F.Fab") + (uuid "70775019-28d8-49f0-b0f4-5290650a6777") ) - (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (fp_line + (start 0.25 0.4) + (end -0.35 0) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (fill no) - (layer "F.CrtYd") - (uuid "46c0bd52-f300-40bd-b2b4-b8aced4afc1b") + (layer "F.Fab") + (uuid "9c575a61-9a9e-44f6-9d6e-b01ecb1e7fc8") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start 1.4 0.9) + (end -1.4 0.9) (stroke (width 0.1) (type solid) ) - (fill no) (layer "F.Fab") - (uuid "31d7d825-da93-4fb6-8b95-1d0f4d6326a1") + (uuid "b6b00242-0099-41f6-84c2-1abe1e5f67f0") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "95cadf17-70d0-4840-addc-bbe7f134923c") - (effects - (font - (size 0.25 0.25) - (thickness 0.04) - ) + (fp_line + (start -1.4 0.9) + (end -1.4 -0.9) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "51869a10-faf7-4bb3-83ac-0a10db153cb5") ) (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) + (at -1.65 0 90) + (size 0.9 1.2) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/TC1_TP") + (net "/LID_SWITCH") + (pinfunction "K_1") (pintype "passive") - (uuid "0ee9d8d1-a6b3-484e-b076-5b9b0e536efc") + (uuid "c5554908-1d58-4bcb-942d-f173fee32ac4") ) (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) + (at 1.65 0 90) + (size 0.9 1.2) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "GND") + (net "/COIL_DRV") + (pinfunction "A_2") (pintype "passive") - (uuid "8b400232-90cd-4c74-ac6e-e7ae44ce9ca6") + (uuid "e250d30f-0163-4108-8bc4-8402ffde0570") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SOD-123.step" (offset (xyz 0 0 0) ) @@ -18214,17 +17582,17 @@ ) ) ) - (footprint "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" + (footprint "LED_SMD:LED_0603_1608Metric" (layer "F.Cu") - (uuid "a56bf3a2-2770-40bb-b197-6a8afd92daa9") - (at 133.485 110.5 180) - (descr "TSSOP, 14 Pin (JEDEC MO-153 variation AB-1, 1.00mm body thickness, https://www.jedec.org/document_search?search_api_views_fulltext=MO-153)") - (tags "TSSOP SO") - (property "Reference" "U4" - (at 0 -3.45 0) + (uuid "8951a2ec-7152-4a83-9b08-d926815c13ff") + (at 147.7175 42.25 180) + (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf)") + (tags "LED") + (property "Reference" "D7" + (at 0 -1.43 0) (layer "F.SilkS") (hide yes) - (uuid "24262002-6707-4da1-95d9-1a7a074f5d3a") + (uuid "00447db2-10cc-46ae-8c24-ae38cd3af5e9") (effects (font (size 1 1) @@ -18232,11 +17600,10 @@ ) ) ) - (property "Value" "MAX31856" - (at 0 3.45 0) + (property "Value" "COIL" + (at 0 1.43 0) (layer "F.Fab") - (hide yes) - (uuid "024f27a5-2746-446a-8b3d-ed6fb00f29b9") + (uuid "2f1cf293-7827-48a5-abcc-abcd2e857631") (effects (font (size 1 1) @@ -18248,7 +17615,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "8a8c84fe-2f99-46a6-a1d7-ddd3dd9da188") + (uuid "99565ccb-86f6-4052-9f2a-37f4b2229e23") (effects (font (size 1.27 1.27) @@ -18259,19 +17626,19 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "53b234e6-9341-498f-8473-70912bcda572") + (uuid "22391bad-8073-4be7-97ac-f64377560d85") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C2653162" + (property "LCSC" "C2286" (at 0 0 180) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "0b298d5b-3727-4989-9838-432e737d05d6") + (uuid "f5e7d619-da84-4c4b-bb3a-9521d25c61ae") (effects (font (size 1 1) @@ -18279,409 +17646,330 @@ ) ) ) - (property ki_fp_filters "TSSOP*14*4.4x5mm*P0.65mm*") - (path "/0e3603f9-2b09-4cea-a29d-ed61f79d69d7") + (property ki_fp_filters "LED* LED_SMD:* LED_THT:*") + (path "/02309ad1-af89-44eb-bce6-128caeb48261") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "4" "3" "2" "6" "5" "1" "8" "14" "7" "13" "9" "10" "11" "12") + (pins "1" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 2.31 2.61) - (end -2.31 2.61) + (start 0.8 -0.735) + (end -1.485 -0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "bb619e80-e697-4ea4-8a7c-96f7fcc95480") + (uuid "475ff2fd-4d9a-4f57-a1b5-d9253e7347af") ) (fp_line - (start 2.31 2.41) - (end 2.31 2.61) + (start -1.485 0.735) + (end 0.8 0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "6acdd40e-d56c-48ff-acb0-5384af45de6e") + (uuid "acf7fd94-ac1b-4e95-b6ce-4763658f6a6d") ) (fp_line - (start 2.31 -2.61) - (end 2.31 -2.41) + (start -1.485 -0.735) + (end -1.485 0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "7a4c0d0d-185e-4351-9f8b-da513bd8e91b") + (uuid "56699227-6e31-466a-b621-e8c62a0366fd") ) - (fp_line - (start -2.31 2.61) - (end -2.31 2.41) + (fp_rect + (start -1.48 -0.73) + (end 1.48 0.73) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "782eab63-d3e5-4c78-89e8-a31e4b8ac97e") + (fill no) + (layer "F.CrtYd") + (uuid "75df4ae6-97f9-4819-aab7-89bd882982b0") ) (fp_line - (start -2.31 -2.41) - (end -2.31 -2.61) + (start 0.8 0.4) + (end 0.8 -0.4) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "a74204f6-bdd6-4974-bdf5-4ae2b12347d4") + (layer "F.Fab") + (uuid "0a6c40e7-c6e4-46ad-aca2-7b57b30ec66c") ) (fp_line - (start -2.31 -2.61) - (end 2.31 -2.61) + (start 0.8 -0.4) + (end -0.5 -0.4) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "e70a9c90-68f4-4ab4-9792-4afe1b6caedd") + (layer "F.Fab") + (uuid "c6ed45b7-914f-4b58-8432-08cfc2defe66") ) - (fp_poly - (pts - (xy -2.95 -2.41) (xy -3.29 -2.88) (xy -2.61 -2.88) - ) + (fp_line + (start -0.5 -0.4) + (end -0.8 -0.1) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (fill yes) - (layer "F.SilkS") - (uuid "7a45059a-dd69-4b7c-b642-d91f1e489cdb") + (layer "F.Fab") + (uuid "959453f9-878d-4543-a50f-e152b4074abb") ) (fp_line - (start 3.85 2.4) - (end 2.45 2.4) + (start -0.8 0.4) + (end 0.8 0.4) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "0c70785e-a1c7-49d0-8295-327fa2ce3922") + (layer "F.Fab") + (uuid "73d22b7e-4370-48f8-b53d-279de7e2a63e") ) (fp_line - (start 3.85 -2.4) - (end 3.85 2.4) + (start -0.8 -0.1) + (end -0.8 0.4) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "da2488e8-6c29-4474-b7f9-3a032a337d8f") + (layer "F.Fab") + (uuid "457c84ec-ea53-4dc3-9e79-d42c8036c2a7") ) - (fp_line - (start 2.45 2.75) - (end -2.45 2.75) - (stroke - (width 0.05) - (type solid) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "051ef3fb-42d1-41dc-ab4f-99065416032b") + (effects + (font + (size 0.4 0.4) + (thickness 0.06) + ) ) - (layer "F.CrtYd") - (uuid "bf420b4a-fb13-47fa-a51f-1d38f96ddc26") ) - (fp_line - (start 2.45 2.4) - (end 2.45 2.75) - (stroke - (width 0.05) - (type solid) + (pad "1" smd roundrect + (at -0.7875 0 180) + (size 0.875 0.95) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_DRV") + (pinfunction "K_1") + (pintype "passive") + (uuid "3990424d-ffae-4a31-93b5-b28493a18b8a") + ) + (pad "2" smd roundrect + (at 0.7875 0 180) + (size 0.875 0.95) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(D7-A)") + (pinfunction "A_2") + (pintype "passive") + (uuid "8ddc2cce-a281-4065-aa0e-d41d471a1bc9") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "8a3edc9e-17e9-4c46-a3d4-2a44019ae3e2") + (at 137.9675 56.75) + (property "Reference" "TP17" + (at 0 -1.648 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "2ebfcabb-4617-4f74-9822-0eec39fcbfe2") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Value" "SSR" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "b4748ff9-013f-4c3f-a56c-c9d8e6dad463") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "38ce3d21-b97c-43ca-a240-a5ff83874896") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "a1eaa00c-2654-4408-9e47-e3a55d87d4c3") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/4d3ecb7c-62b1-4e48-9eb5-c1673964d347") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") ) - (layer "F.CrtYd") - (uuid "b0f35dcd-2c0b-49fa-8097-ff11f924aede") ) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 2.45 -2.4) - (end 3.85 -2.4) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "36856d34-2890-4837-97b3-a1965e43f159") + (layer "F.SilkS") + (uuid "41c246e3-4749-48e7-9b79-e7809df8b963") ) (fp_line - (start 2.45 -2.75) - (end 2.45 -2.4) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "c14a861c-c7fe-49b4-9666-16050c76f0e6") + (layer "F.SilkS") + (uuid "1dc231fb-16a4-44a9-9c1b-062f255898c8") ) (fp_line - (start -2.45 2.75) - (end -2.45 2.4) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "7008755f-42c0-4192-bf88-803d5a99e842") + (layer "F.SilkS") + (uuid "f5fd7da4-3b18-44d3-8214-9e36e5d59987") ) (fp_line - (start -2.45 2.4) - (end -3.85 2.4) + (start 0.95 0.95) + (end -0.95 0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "13f42089-9d72-4721-aa77-4b37b66abf05") + (layer "F.SilkS") + (uuid "98118469-0a10-4112-82cc-a96a532ffb46") ) (fp_line - (start -2.45 -2.4) - (end -2.45 -2.75) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "ce4de58e-d69c-4824-aaf8-e4ee8a83a469") + (uuid "79b8f38c-875f-4b6b-a819-6b51df3c62a7") ) (fp_line - (start -2.45 -2.75) - (end 2.45 -2.75) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "c6f1ea69-0c07-4927-8a34-12e18ca33e06") + (uuid "f0261e09-cfe0-4a31-873c-489ba6bf045b") ) (fp_line - (start -3.85 2.4) - (end -3.85 -2.4) + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "13286d8b-302e-4053-a920-e4362037e2e1") + (uuid "f09edbc9-3090-4719-b3aa-0bcadd596c4f") ) (fp_line - (start -3.85 -2.4) - (end -2.45 -2.4) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "a513e4dd-fcc0-487f-9818-d7ec1508e70c") + (uuid "e98b71ca-9a87-4d55-bcde-4efacf587b09") ) - (fp_poly - (pts - (xy -1.2 -2.5) (xy 2.2 -2.5) (xy 2.2 2.5) (xy -2.2 2.5) (xy -2.2 -1.5) - ) - (stroke - (width 0.1) - (type solid) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/SSR") + (pinfunction "1_1") + (pintype "passive") + (uuid "964d6b21-0e12-47d3-861d-0be0778f614e") + ) + (embedded_fonts no) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "8ab3399a-5c7c-4243-ada6-5171191387b6") + (at 139.89 108.45) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R16" + (at 0 -1.17 0) + (layer "F.SilkS") + (hide yes) + (uuid "c55a97d1-a544-4472-8e7e-81aab872eec6") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (fill no) - (layer "F.Fab") - (uuid "d0d4f4b1-8ecc-42e1-ba57-5878cc8c1a55") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) + (property "Value" "100R" + (at 0 1.17 0) (layer "F.Fab") - (uuid "82dc471e-4f64-4e70-813d-d4be81f44353") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (pad "1" smd roundrect - (at -2.8625 -1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pinfunction "AGND_1") - (pintype "power_in") - (uuid "0404a14b-14ea-49d4-9ddc-9aefc34780b3") - ) - (pad "2" smd roundrect - (at -2.8625 -1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_TN") - (pinfunction "BIAS_2") - (pintype "input") - (uuid "81de3706-d60f-48ad-a9d3-827e3b577173") - ) - (pad "3" smd roundrect - (at -2.8625 -0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_TN") - (pinfunction "T-_3") - (pintype "input") - (uuid "d4d65153-91de-482c-acbf-918ffa457712") - ) - (pad "4" smd roundrect - (at -2.8625 0 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_TP") - (pinfunction "T+_4") - (pintype "input") - (uuid "a30c5e21-a206-422f-8c17-506f226a177d") - ) - (pad "5" smd roundrect - (at -2.8625 0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pinfunction "AVDD_5") - (pintype "power_in") - (uuid "56cc3f21-5d02-4371-9329-d35dc3cc66ac") - ) - (pad "6" smd roundrect - (at -2.8625 1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "unconnected-(U4-DNC-Pad6)") - (pinfunction "DNC_6") - (pintype "no_connect") - (uuid "40815c1f-e0a6-45bf-b600-7c88b7e4e483") - ) - (pad "7" smd roundrect - (at -2.8625 1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_DRDY") - (pinfunction "~{DRDY}_7") - (pintype "output") - (uuid "43c1ef5c-b056-4744-90bd-9e0ef01185a6") - ) - (pad "8" smd roundrect - (at 2.8625 1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pinfunction "DVDD_8") - (pintype "power_in") - (uuid "f9ea7428-242c-4733-86c4-d59381cc40fe") - ) - (pad "9" smd roundrect - (at 2.8625 1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_CS") - (pinfunction "~{CS}_9") - (pintype "input") - (uuid "bfd90d85-b532-46f0-8cc7-b66cbaec7c90") - ) - (pad "10" smd roundrect - (at 2.8625 0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SPI_SCK") - (pinfunction "SCK_10") - (pintype "input") - (uuid "8547d39a-51fc-4f1a-bddd-749eb7a64f60") - ) - (pad "11" smd roundrect - (at 2.8625 0 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SPI_MISO") - (pinfunction "SDO_11") - (pintype "output") - (uuid "d3c61d31-336e-43bf-9c41-df14cf452069") - ) - (pad "12" smd roundrect - (at 2.8625 -0.65 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/SPI_MOSI") - (pinfunction "SDI_12") - (pintype "input") - (uuid "6bf73ef0-dd1e-4788-aca0-a0d2a16d03bf") - ) - (pad "13" smd roundrect - (at 2.8625 -1.3 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC2_FAULT") - (pinfunction "~{FAULT}_13") - (pintype "output") - (uuid "435affd7-4abf-4cc2-8944-930fd2d2dd85") - ) - (pad "14" smd roundrect - (at 2.8625 -1.95 180) - (size 1.475 0.4) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pinfunction "DGND_14") - (pintype "power_in") - (uuid "b813298a-d55e-45d1-92b7-982ebab7675c") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-14_4.4x5mm_P0.65mm.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "a7f64631-5ede-44b6-94a7-fed447732441") - (at 120.25 46.74 -90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R29" - (at 0 -1.17 90) - (layer "F.SilkS") - (hide yes) - (uuid "4e17c650-d44e-4ab7-953f-6a986a5c2030") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "10k" - (at 0 1.17 90) - (layer "F.Fab") - (hide yes) - (uuid "939cf3a3-f586-4458-95ec-379e6c6939b6") + (hide yes) + (uuid "bede5cc7-0ecc-4514-ac09-8c6f2d3f0c5c") (effects (font (size 1 1) @@ -18690,10 +17978,10 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "52bcb48e-3c97-4988-a98d-c4d357f27687") + (uuid "478e77a0-18e3-46d6-b36a-4fe949ec0303") (effects (font (size 1.27 1.27) @@ -18701,10 +17989,10 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "3868dc30-80ca-433c-81a0-59b42cfa50b0") + (uuid "f8099a19-e582-44a8-a333-41d88d58f000") (effects (font (size 1.27 1.27) @@ -18712,7 +18000,7 @@ ) ) (property ki_fp_filters "R_*") - (path "/fb58a8d4-1087-45bf-961d-8bb1dbbfda57") + (path "/7d033156-c6ea-4f30-aeb4-32ca05f2b810") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -18724,24 +18012,24 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "d1b1f114-8036-44e1-baed-e1bd0896de19") + (uuid "c132dce6-1e14-40fe-979c-f3e0a6cf0899") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "15e9e635-fe22-4db3-9fd0-83256b591cc9") + (uuid "1c3f857e-27f6-47cd-83d5-428611a5511d") ) (fp_rect (start -0.93 -0.47) @@ -18752,7 +18040,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "9f8d8e55-4ed9-4b94-9057-3e7ee8f92f43") + (uuid "c9aeae04-93e3-495c-9dc7-7098b4e64ab2") ) (fp_rect (start -0.525 -0.27) @@ -18763,12 +18051,12 @@ ) (fill no) (layer "F.Fab") - (uuid "20a3c9c2-b7d0-474f-89dd-cf296538da29") + (uuid "ab94b711-9096-4851-a5ca-261a967dc0af") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") - (uuid "1e2b9ac8-2b42-4f9c-a735-3146a61b7788") + (uuid "e7de3b8c-53b7-468b-94d2-d0b1a2921395") (effects (font (size 0.26 0.26) @@ -18777,22 +18065,22 @@ ) ) (pad "1" smd roundrect - (at -0.51 0 270) + (at -0.51 0) (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "+3.3V") + (net "/TC2_P") (pintype "passive") - (uuid "5e3c866e-8268-4227-ba1c-48a859b8dbc7") + (uuid "6ec31211-ef99-452c-8075-8ee00bf5ca33") ) (pad "2" smd roundrect - (at 0.51 0 270) + (at 0.51 0) (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/TC2_FAULT") + (net "/TC2_TP") (pintype "passive") - (uuid "5235f204-3acf-45aa-a027-f14dc6294299") + (uuid "6e5b0a2e-caef-45b2-8373-2ebcb5390665") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" @@ -18809,14 +18097,14 @@ ) (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "a96f8539-04f9-4396-9085-409af75f54cc") - (at 81.5 71) - (property "Reference" "TP9" - (at 0 -1.648 0) + (uuid "8b97733f-a44f-42e8-ac71-8c1451c8147f") + (at 126.7 98.3 90) + (property "Reference" "TP6" + (at 0 -1.648 90) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "1f321704-c8bd-4527-b860-39d113ff565f") + (uuid "f92639d4-4f2c-49c3-9311-d31c475d4192") (effects (font (size 1 1) @@ -18824,12 +18112,12 @@ ) ) ) - (property "Value" "TC1_CS" - (at 0 1.75 0) + (property "Value" "TC1_SCK" + (at 0 1.75 90) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "7f1cb4e1-b624-46b4-97fc-4eb3489a0583") + (uuid "3c6231c2-ec63-4709-a0b2-92cc2edbde32") (effects (font (size 1 1) @@ -18838,10 +18126,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "c591cd28-731a-4087-b24b-910833a3e96b") + (uuid "b71af67e-947e-4db6-bef6-32456fc05604") (effects (font (size 1.27 1.27) @@ -18849,10 +18137,10 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "d6570a2b-1acc-47e0-9979-545dbdde9c8e") + (uuid "2fae2620-2e8d-4e92-b0c9-67af3c206b94") (effects (font (size 1.27 1.27) @@ -18860,7 +18148,7 @@ ) ) (property ki_fp_filters "Pin* Test*") - (path "/6c70294b-4e8e-411d-8244-ca094c3aa425") + (path "/c1e06905-9b1a-4d3e-b0e3-5c589284f90b") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -18871,106 +18159,106 @@ ) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 0.95 -0.95) + (end 0.95 0.950001) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "7f40f0a4-007a-4083-b250-2913005c51d5") + (uuid "e034b94a-398c-4d17-ab44-67e76ce3001b") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "0006f114-357c-4e05-9bf7-c63f3516db10") + (uuid "fdb95e54-0871-496a-8a7d-e0ea5c455bbd") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start 0.95 0.950001) + (end -0.95 0.950001) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "bd4d116a-1df4-4fb3-8ace-6a776679a380") + (uuid "4e7c8cb0-172a-4707-a122-3ed42b205580") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.95 0.950001) + (end -0.95 -0.95) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "2f12fb1b-e3a9-4b3d-8351-2f5586d993cf") + (uuid "d1c4a0f8-1b68-4728-b745-69bf81b799d4") ) (fp_line (start -1.25 -1.25) - (end -1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "06c50da7-a770-4c44-aa0c-6cc863acf1c6") + (uuid "f1e55526-cfbd-4ce2-9f5d-ea6ecb83d153") ) (fp_line (start -1.25 -1.25) - (end 1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "32bd87db-0ff9-4f37-be7f-5f3b6a8f5471") + (uuid "c29d85d7-f5bc-41bd-bcb7-88d5175a98f6") ) (fp_line (start 1.25 1.25) - (end -1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "b93ddae9-002c-4be4-ac28-a58d3151da66") + (uuid "5e126893-693a-4f53-8f29-143464f32b6c") ) (fp_line (start 1.25 1.25) - (end 1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "6e9627e6-813d-43c0-8e56-0b242cd50464") + (uuid "658452d3-0ff6-43b8-bca2-6ac34d7b516a") ) (pad "1" smd rect - (at 0 0) + (at 0 0 90) (size 1.5 1.5) (layers "F.Cu" "F.Mask") - (net "/TC1_CS") + (net "/TC1_SCK") (pinfunction "1_1") (pintype "passive") - (uuid "c16b9a2d-9ad4-45e6-9242-6b02f462233b") + (uuid "432a0d9c-89df-4662-ae2e-3667ccd2ab1c") ) (embedded_fonts no) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "aabef1cb-08cc-4c10-a8d8-d83870cc81ed") - (at 111.73 105.75) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C11" - (at 0 -1.16 0) + (uuid "90b2c851-d2ad-4bbf-b247-601775bee061") + (at 97 82.75) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP36" + (at 0 -1.648 0) (layer "F.SilkS") - (uuid "28e700fd-4f9e-439a-85b2-c069e3d0aba7") + (uuid "11a52183-ba11-4064-aee4-fb43e808a57f") (effects (font (size 1 1) @@ -18978,10 +18266,11 @@ ) ) ) - (property "Value" "100nF" - (at 0 1.16 0) + (property "Value" "SUPERVISOR_RESET" + (at 0 1.75 0) (layer "F.Fab") - (uuid "afbee59c-7ee9-4431-9cc7-8d8e7e5132f8") + (hide yes) + (uuid "14726013-897a-4e3f-8af5-c8bf1bd49857") (effects (font (size 1 1) @@ -18991,32 +18280,166 @@ ) (property "Datasheet" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "c549b093-0e93-4816-902f-e12446389423") + (uuid "7e30720b-37b6-4696-a378-0de0b6eb3176") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "9bb69d6a-9086-4da1-86a5-bc957b1554b3") + (uuid "47e10e16-7b1a-448b-b0d0-3dc8edac06b7") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property "LCSC" "C1525" - (at 0 0 0) - (unlocked yes) + (property ki_fp_filters "Pin* Test*") + (path "/f8268c0e-8f52-4dbd-a742-c59c40fb1bd0") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) + ) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.95 -0.95) + (end 0.95 -0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ffd5105d-8d03-4e35-8dec-6d6d67ae0096") + ) + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4aec191b-47dc-4bc9-91a5-b00cb2e78589") + ) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "697a7bcf-c5cf-489d-a667-19dedb17a82f") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2e4397a6-6fe6-42ce-82d7-263a1a586376") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "bf2c6a9e-512e-4105-bb0c-395cc420b84b") + ) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "79a4b489-9b49-4eff-bcb4-309a2f5e50a1") + ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "e6da1322-e465-417d-99dd-d035c895438f") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7cf9590b-fee7-4651-ba56-698b2d9e294a") + ) + (fp_text user "${REFERENCE}" + (at 0 -1.65 0) + (layer "F.Fab") + (uuid "fea5a181-21c4-4a12-a190-62ac89e4d8f0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/SUPERVISOR_RESET") + (pinfunction "1_1") + (pintype "passive") + (uuid "70a3270b-0024-47f9-9448-125e565738c3") + ) + (embedded_fonts no) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "94efa97e-3210-466b-8526-96b373566d30") + (at 137 49.7 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R31" + (at 0 -1.17 90) + (layer "F.SilkS") + (hide yes) + (uuid "8cd6d5b8-e04c-473d-b0c5-88fd7664673e") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "18k" + (at 0 1.17 90) (layer "F.Fab") (hide yes) - (uuid "d8e5a026-bf44-4511-9a6d-a37f583b5136") + (uuid "f634370a-5c03-4993-aa77-22288ae63d10") (effects (font (size 1 1) @@ -19024,8 +18447,30 @@ ) ) ) - (property ki_fp_filters "C_*") - (path "/97c59e01-3e02-4767-af1f-666af411dd42") + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "5794fb31-e115-440b-a53e-a6fe273e5723") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "8d1705ac-1a8a-4d74-ab2b-36260ec6e2e4") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/abfb24ba-666b-4f06-907d-72491179b2f8") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -19037,78 +18482,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "29ec8b95-2fa4-40b2-84ba-408a16edfa45") + (uuid "8ba74d37-8674-44b7-8120-111e37181626") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "662a6cb9-844c-44b8-b2b2-242f51c2e9e4") + (uuid "9ec635ff-a292-416d-843c-716e092c850d") ) (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "717cea82-d459-4d65-b1a2-5ab4aecb34cc") + (uuid "e20e0e8e-13e8-4c95-ba3f-978b713b4e74") ) (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "6da4772d-6aeb-4416-ab67-49c6a3c74d34") + (uuid "c0d5e157-f581-4c2a-8f62-c186776058a0") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "d3ffd62b-d92b-4dac-a84a-85c15ac8aeb6") + (uuid "8e5ca9b4-db8b-4782-bbf5-54045b488e0b") (effects (font - (size 0.25 0.25) + (size 0.26 0.26) (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) + (at -0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "+3.3V") + (net "/LID_SENSE") (pintype "passive") - (uuid "6fdf4902-aaa5-43bb-b66b-9ffa6dd74957") + (uuid "75ac3cf2-9855-450d-bf74-f7a418fa4452") ) (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) + (at 0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "2efb585d-f05e-4d83-a1fb-73e7c7260dcf") + (uuid "e2cac753-cf22-4ac2-9099-c81648a28fe5") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -19120,16 +18565,17 @@ ) ) ) - (footprint "Package_TO_SOT_SMD:SOT-23" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "ad3d8738-8e67-4ded-81c3-247151dc8fc4") - (at 112.9375 89.55) - (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") - (tags "SOT TO_SOT_SMD") - (property "Reference" "D9" - (at 0 -2.4 0) + (uuid "963d0a00-a877-4241-857d-231fbdba0255") + (at 139.4675 99.25 -90) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C8" + (at 0 -1.16 90) (layer "F.SilkS") - (uuid "8e25c797-beb0-4dd3-b542-928484461199") + (hide yes) + (uuid "8f7215cd-ef65-4b55-bae9-e18052499487") (effects (font (size 1 1) @@ -19137,10 +18583,11 @@ ) ) ) - (property "Value" "BAT54S" - (at 0.0475 3.05 0) + (property "Value" "10nF" + (at 0 1.16 90) (layer "F.Fab") - (uuid "6ce2f8a1-31f1-4c71-a892-c80fe86e79de") + (hide yes) + (uuid "f2af79ff-cace-460a-a0ba-804f3b9e781f") (effects (font (size 1 1) @@ -19149,10 +18596,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "e0a71983-820a-422b-9e8d-132297835820") + (uuid "70323dd4-683b-40e8-b4df-0186f16a12fc") (effects (font (size 1.27 1.27) @@ -19160,22 +18607,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "c20517f9-6702-40b9-800f-2448ca41ef55") + (uuid "be19f741-f44b-4dc4-bdd4-a91610896f9d") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C19726" - (at 0 0 0) + (property "LCSC" "C15195" + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "60e6b933-7b1c-45ba-b42e-7aa96a8a37df") + (uuid "41663f82-b996-4e08-b61e-88056f359614") (effects (font (size 1 1) @@ -19183,315 +18630,239 @@ ) ) ) - (property ki_fp_filters "SOT?23*") - (path "/6c79d0c4-a4a2-4dc7-8c35-6643ee91ceed") + (property ki_fp_filters "C_*") + (path "/488a5a36-ac38-48ab-a39b-4d9fb924fa86") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "3" "2") + (pins "1" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.76 -1.56) - (end 0.76 -1.56) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "dece0d0a-3404-42f1-abd7-489310608c07") + (uuid "60f65a26-976e-4df7-969c-42bc4c856504") ) (fp_line - (start -0.76 -1.51) - (end -0.76 -1.56) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "17e47ec1-031e-4b49-ba5c-15ebcb819d1f") + (uuid "78e1db6a-266b-4747-8dd3-a6f3d935e211") ) - (fp_line - (start -0.76 0.39) - (end -0.76 -0.39) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "908b6c5e-3141-46f9-8b51-61d4f0783dc1") + (fill no) + (layer "F.CrtYd") + (uuid "cec40ec1-014d-41a4-95d4-da27ad049616") ) - (fp_line - (start -0.76 1.56) - (end -0.76 1.51) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "94b1150e-44e1-49d7-96ff-c0bdaaaed114") + (fill no) + (layer "F.Fab") + (uuid "bedb198e-dfb6-4b3c-b880-6a430099c3ec") ) - (fp_line - (start 0.76 -1.56) - (end 0.76 -0.56) - (stroke - (width 0.12) - (type solid) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "6f214e6a-fef5-4753-8190-6b1355ee3504") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) - (layer "F.SilkS") - (uuid "de61db85-f22f-4f67-988d-558a177cb949") ) - (fp_line - (start 0.76 0.56) - (end 0.76 1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "9ad09844-191b-419c-84b7-838c265a947a") + (pad "1" smd roundrect + (at -0.48 0 270) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_TP") + (pintype "passive") + (uuid "fc631ccb-d6e3-4907-a7a3-ea276b3a05b1") ) - (fp_line - (start 0.76 1.56) - (end -0.76 1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "553b6105-a780-4227-a4ed-59a1dffa5c5f") + (pad "2" smd roundrect + (at 0.48 0 270) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_TN") + (pintype "passive") + (uuid "92227193-9810-4071-99f7-0b28502d491a") ) - (fp_poly - (pts - (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) ) - (stroke - (width 0.12) - (type solid) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) ) - (fill yes) - (layer "F.SilkS") - (uuid "5f8247ab-8098-41c3-82d4-3c7d23f24957") ) - (fp_line - (start -1.93 -1.5) - (end -0.9 -1.5) - (stroke - (width 0.05) - (type solid) + ) + (footprint "Capacitor_SMD:C_0402_1005Metric" + (layer "F.Cu") + (uuid "977665e7-2965-46bb-8da0-39566dc87bfd") + (at 139.9 112.4) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C18" + (at 0 -1.16 0) + (layer "F.SilkS") + (hide yes) + (uuid "21e4562d-23fe-427b-9bfe-25161c3fdeb0") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.CrtYd") - (uuid "9eec78f2-18d7-4bd2-974b-a3cb1145f7c4") ) - (fp_line - (start -1.93 -0.39) - (end -1.93 -1.5) - (stroke - (width 0.05) - (type solid) + (property "Value" "100pF" + (at 0 1.16 0) + (layer "F.Fab") + (hide yes) + (uuid "af83d71b-f1b3-4103-b05c-53e9657ff4bf") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.CrtYd") - (uuid "66aff173-7af1-4ba4-846a-d63af1633298") ) - (fp_line - (start -1.93 0.39) - (end -0.9 0.39) - (stroke - (width 0.05) - (type solid) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "4bc12c3c-972c-4c1c-99de-d3f7555ec6f1") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.CrtYd") - (uuid "5296f843-a196-44dc-8b68-aa6aca500e98") ) - (fp_line - (start -1.93 1.5) - (end -1.93 0.39) - (stroke - (width 0.05) - (type solid) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "acf7d8ec-ce73-488c-8fca-24cef684ed00") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.CrtYd") - (uuid "8b98aff7-dada-41b4-8d62-dcdca8b4bd0a") ) - (fp_line - (start -0.9 -1.7) - (end 0.9 -1.7) - (stroke - (width 0.05) - (type solid) + (property ki_fp_filters "C_*") + (path "/aa2e14ae-72a4-467f-a08f-682df49676cd") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") ) - (layer "F.CrtYd") - (uuid "22e0d175-aeb5-4f9f-ab39-07d21ff83190") ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.9 -1.5) - (end -0.9 -1.7) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "81e9c429-c164-4e83-8dcd-cac35148387f") + (layer "F.SilkS") + (uuid "bedad1da-3c39-4dc5-a06a-5c47527b5f96") ) (fp_line - (start -0.9 -0.39) - (end -1.93 -0.39) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "F.CrtYd") - (uuid "a6c21f0e-25a8-4872-8233-1baf896fe359") + (layer "F.SilkS") + (uuid "864aea31-8a3a-4005-91ea-a24e060c8d66") ) - (fp_line - (start -0.9 0.39) - (end -0.9 -0.39) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "95a85f80-92c6-4fbd-ab0e-20d68363cff3") + (uuid "d231a79f-f169-4060-bff0-a913abcc24f0") ) - (fp_line - (start -0.9 1.5) - (end -1.93 1.5) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "023d903a-787a-4c35-8223-707b7b87c063") + (fill no) + (layer "F.Fab") + (uuid "9ff0dad1-e637-4b1c-b2f3-312aca19256c") ) - (fp_line - (start -0.9 1.7) - (end -0.9 1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "80be26e9-1d0b-4961-8c23-04db20284629") - ) - (fp_line - (start 0.9 -1.7) - (end 0.9 -0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "16b6514d-3604-4647-b573-b9b1cd37a34b") - ) - (fp_line - (start 0.9 -0.55) - (end 1.93 -0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "8bbe8c1a-1275-4c08-89aa-f4ca9a999616") - ) - (fp_line - (start 0.9 0.55) - (end 0.9 1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "9b144d8e-8b05-49ce-82c4-7b8d08c6bfb5") - ) - (fp_line - (start 0.9 1.7) - (end -0.9 1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "96d1a476-bd9e-496a-9602-a4816593117c") - ) - (fp_line - (start 1.93 -0.55) - (end 1.93 0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "8c6a36a9-92d2-4327-82e3-721ea3512d42") - ) - (fp_line - (start 1.93 0.55) - (end 0.9 0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "d5890e2e-3017-4f4a-ba7d-976bd73307fa") - ) - (fp_poly - (pts - (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) - ) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "a54c4a28-dc04-4bb3-89b0-a9707219aac9") - ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "7fdc2859-f483-4d1e-9afe-cd38ca6f33d9") - (effects - (font - (size 0.72 0.72) - (thickness 0.11) - ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "f2822807-4054-4fd3-a2ee-d700505a5e20") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) ) (pad "1" smd roundrect - (at -0.9375 -0.95) - (size 1.475 0.6) + (at -0.48 0) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "GND") - (pinfunction "A_1") + (net "/TC2_TN") (pintype "passive") - (uuid "42a73d9b-4561-48a5-baf8-470c757c317a") + (uuid "b25fd198-630a-4154-b727-e37b1683ef89") ) (pad "2" smd roundrect - (at -0.9375 0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pinfunction "K_2") - (pintype "passive") - (uuid "f660a4a5-3182-4525-816f-eeccd2f6b2d6") - ) - (pad "3" smd roundrect - (at 0.9375 0) - (size 1.475 0.6) + (at 0.48 0) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/CURR_SENSE") - (pinfunction "COM_3") + (net "GND") (pintype "passive") - (uuid "896e268e-4dd6-4df0-a597-d70d6fe2cd3d") + (uuid "efcfb6b1-b992-4a3b-82d4-db7d1756df72") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -19503,17 +18874,17 @@ ) ) ) - (footprint "Capacitor_SMD:C_0805_2012Metric" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "b3e99e4d-9b2b-45d9-94c6-d8856e7fe5aa") - (at 63 57.05 -90) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") - (tags "capacitor") - (property "Reference" "C3" - (at 0 -1.68 90) + (uuid "9892c22f-c7d9-4226-a90b-73a334683bd8") + (at 136 49.7 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R33" + (at 0 -1.17 90) (layer "F.SilkS") (hide yes) - (uuid "52875e0d-9928-4821-9288-9c5348a1d417") + (uuid "0fe9dc31-353a-4a2e-8a6a-b21ed282cfce") (effects (font (size 1 1) @@ -19521,11 +18892,11 @@ ) ) ) - (property "Value" "10uF" - (at 0 1.68 90) + (property "Value" "18k" + (at 0 1.17 90) (layer "F.Fab") (hide yes) - (uuid "c985787a-9b61-4084-9055-4297fc215967") + (uuid "22d054d6-02ed-4ab0-be6e-3d4f76cb10a4") (effects (font (size 1 1) @@ -19537,7 +18908,7 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "72bca05c-e602-430e-9676-8312ac991a3b") + (uuid "c2cebf33-92ea-4114-a6e7-b43bff63fe53") (effects (font (size 1.27 1.27) @@ -19548,28 +18919,15 @@ (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "dbc18c6b-2d5e-4e0c-a09a-7df2f03590b4") + (uuid "17d3727a-daf1-4264-b103-9f7abae788ae") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C15850" - (at 0 0 270) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "4d78a1ac-853e-45f7-b30b-33b2163210af") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "C_*") - (path "/74970d4f-ab4f-41f7-8df3-eeadfc570866") + (property ki_fp_filters "R_*") + (path "/27d3a768-5d83-4034-96c2-8794e28e568a") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -19581,78 +18939,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.261252 0.735) - (end 0.261252 0.735) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "61e5f001-7252-41a6-bfa7-ad09a156b670") + (uuid "be20e546-7f53-4506-ba30-f18c79902415") ) (fp_line - (start -0.261252 -0.735) - (end 0.261252 -0.735) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "c15b8c48-74a1-4e22-8525-356b91200fd4") + (uuid "04d2279f-84c2-437a-9bc1-40b27bbe0ca1") ) (fp_rect - (start -1.7 -0.98) - (end 1.7 0.98) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "854870d8-4e96-4887-ab43-5e941d9762f3") + (uuid "3a830d0b-1bec-4f0f-b3d2-f8b3843cbf9b") ) (fp_rect - (start -1 -0.625) - (end 1 0.625) + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "0738b47c-15de-4a98-8208-8ac09ed93eb5") + (uuid "1394833a-2370-4d9a-b142-2afe71f1cd39") ) (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") - (uuid "eb00e8aa-b18b-4503-bb26-79975cc0fecb") + (uuid "ab35743c-940c-476c-92d7-a97e2249c0b4") (effects (font - (size 0.5 0.5) - (thickness 0.08) + (size 0.26 0.26) + (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.95 0 270) - (size 1 1.45) + (at -0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "+3.3V") + (net "/COIL_FEEDBACK") (pintype "passive") - (uuid "3aa3d000-c5fb-47f0-95c2-811023a1f19b") + (uuid "3fbe3e00-6dc8-4331-a2cf-6d688d3acb66") ) (pad "2" smd roundrect - (at 0.95 0 270) - (size 1 1.45) + (at 0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "2ea0faea-4ec1-456b-ad82-9328d744ec77") + (uuid "a9dd9851-1b3b-481f-b15c-9d863262b61b") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -19664,41 +19022,41 @@ ) ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "b544ef11-dada-4cde-9031-9d992aa6d47b") - (at 137.9675 49.75 90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R30" - (at 0 -1.17 90) + (uuid "99b96364-be6d-4bc2-b476-d4d00d66706d") + (at 134.75 41.75) + (property "Reference" "TP19" + (at 0 -1.648 0) + (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "bff6ef83-540f-4b40-8b2f-aaeb2c340928") + (uuid "d5b7e47f-1ad3-4e1e-a239-22488bdc0b99") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "10k" - (at 0 1.17 90) - (layer "F.Fab") + (property "Value" "HEAT_EN" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") (hide yes) - (uuid "726c23d0-0e1a-446a-bf88-a29501c198f7") + (uuid "c6edbacc-188e-4637-a362-2d331676e962") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "311de7a0-71dd-4f45-a3b9-0e8a2aedecaf") + (uuid "260694fb-0c67-4adb-9f2d-deeb1dfebd75") (effects (font (size 1.27 1.27) @@ -19706,147 +19064,153 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "7beadbd6-599d-49c2-8aa9-f7a2f9a5e278") + (uuid "d4431d18-cb25-4631-b8c7-ee546b072abb") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "R_*") - (path "/37fb3a4b-2563-4a12-8927-aa95cf0d8534") + (property ki_fp_filters "Pin* Test*") + (path "/318dccf0-d69b-4f53-ab9d-9139beceffbc") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "0ed68e74-f949-450d-9a6d-4df9002cfd49") + (uuid "f99c3d0d-8c0d-49fa-ac30-892bea8aa185") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "65650d73-94ae-45d8-937a-43f720c4a014") + (uuid "07719a62-6631-4268-b0b2-fa6c454c0fb3") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (fill no) - (layer "F.CrtYd") - (uuid "0df09482-896e-4b00-9d3e-ff31af6a022f") + (layer "F.SilkS") + (uuid "7cfaf5d6-248d-45c6-abc8-53bc25605cce") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) (stroke - (width 0.1) - (type solid) + (width 0.12) + (type default) ) - (fill no) - (layer "F.Fab") - (uuid "cb360347-6133-44b0-86bd-847bc2bb4859") + (layer "F.SilkS") + (uuid "b013da3f-cee4-4e4c-98b7-1ee59a440d0d") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "32787a75-4b84-4426-9556-1b21027c63e8") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "42603a25-d79f-4efe-82dc-4bde69bb27c9") ) - (pad "1" smd roundrect - (at -0.51 0 90) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/LID_SWITCH") - (pintype "passive") - (uuid "aed7dbc3-08c8-4032-8119-6f0eb509a8ff") - ) - (pad "2" smd roundrect - (at 0.51 0 90) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/LID_SENSE") - (pintype "passive") - (uuid "70b417e2-9a47-434d-ae9b-b288e1cd43d3") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) ) - (scale - (xyz 1 1 1) + (layer "F.CrtYd") + (uuid "0725e48d-8327-4314-a017-9fe998f58f9c") + ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) ) - (rotate - (xyz 0 0 0) + (layer "F.CrtYd") + (uuid "8456efa8-bf80-45bf-9bfc-b639ba07c662") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) ) + (layer "F.CrtYd") + (uuid "557a0ea2-889a-4bc2-ae79-afece0bb2303") + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/HEAT_EN") + (pinfunction "1_1") + (pintype "passive") + (uuid "dbde7e7e-c06e-4732-99a0-3d001e121ce7") ) + (embedded_fonts no) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "b5df3728-ccd8-4113-b57e-44ce5b360a26") - (at 61.25 57 -90) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C4" - (at 0 -1.16 90) + (uuid "9aaf0550-6154-4a96-b487-689bc813aabb") + (at 126.7 105.9) + (property "Reference" "TP13" + (at 0 -1.648 0) + (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "fea01434-5a48-4dc9-a7d2-196479190902") + (uuid "9c41b864-00ce-4945-ade8-6bd7a83148ba") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) - (property "Value" "100nF" - (at 0 1.16 90) - (layer "F.Fab") + (property "Value" "TC1_FAULT" + (at 0 1.75 0) + (unlocked yes) + (layer "F.SilkS") (hide yes) - (uuid "29bdf216-02a3-42a5-b55c-ab731e9547f9") + (uuid "cc9a5750-43ed-442c-b91d-89bdec3bd4ac") (effects (font (size 1 1) - (thickness 0.15) + (line_spacing 0) ) ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "c98663b9-6632-4167-b277-99e32ee9ada8") + (uuid "fc70a31f-5f3d-42d5-912a-b253f5f50f44") (effects (font (size 1.27 1.27) @@ -19854,146 +19218,141 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "7f57eec7-7a4d-4af5-ad26-70d52efc2fa7") + (uuid "c83addb9-b418-4b66-b79d-f5fe82524acb") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C1525" - (at 0 0 270) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "f81da9de-5bf5-4ce3-8151-ef37cbe0f4ea") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "C_*") - (path "/174ce40b-db46-409a-9fa5-2d5f70d1b8cc") + (property ki_fp_filters "Pin* Test*") + (path "/7d09633c-bc8a-4ad4-af71-21c86e6983a3") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "80e9bf4c-7c3b-4948-b6b9-83ad06c6db43") + (uuid "5df23ef3-a11b-453e-bdb1-38496b19b543") ) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) - (type solid) + (type default) ) (layer "F.SilkS") - (uuid "f90c1307-117c-4ff4-9f73-5afd83818e1a") + (uuid "442086c5-0253-4279-b158-7e1797596ebd") ) - (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "029cd014-3b52-4a8f-a580-23b819667ea1") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "548c9856-afbc-44df-896d-fb7ef311cbec") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) - (fill no) (layer "F.CrtYd") - (uuid "16bd592f-42dd-4614-8d3b-26f4ae70a367") + (uuid "744821dd-8df6-45bd-9f00-4b02cc0d2ef7") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.1) - (type solid) + (width 0.05) + (type default) ) - (fill no) - (layer "F.Fab") - (uuid "56cca4a8-833b-4f0a-a705-8490223cdeca") + (layer "F.CrtYd") + (uuid "7e6b088e-7816-44b0-a47f-845dc6c9beb0") ) - (fp_text user "${REFERENCE}" - (at 0 0 90) - (layer "F.Fab") - (uuid "18196bd2-a94e-4d77-b5df-c7146d5b6ae0") + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "e7f7c61e-51f4-4db9-a73e-7a17cc826db2") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "617533ae-e2ac-4adc-b631-77a8377044ad") + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC1_FAULT") + (pinfunction "1_1") + (pintype "passive") + (uuid "340336d5-193e-4415-9d7f-9daffb0dfed1") + ) + (embedded_fonts no) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "9ba54662-d794-4348-8cfb-43ab9a8f91fe") + (at 139.95 106.7) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP29" + (at 0 -1.648 0) + (layer "F.SilkS") + (hide yes) + (uuid "5cef24f0-27c4-4961-84fd-a842e7ac5d3b") (effects (font - (size 0.25 0.25) - (thickness 0.04) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.48 0 270) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pintype "passive") - (uuid "748c2e3d-b21d-4c87-8210-c7a277754030") - ) - (pad "2" smd roundrect - (at 0.48 0 270) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pintype "passive") - (uuid "d265b715-4cea-49ab-a6f4-ff984a252332") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (layer "F.Cu") - (uuid "b686f1bf-9dce-4902-9407-aff767bc5be7") - (at 54.25 51.1 90) - (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") - (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") - (property "Reference" "J1" - (at 2.25 -5.12 90) - (layer "F.SilkS") - (uuid "11acdcfd-c9ac-418b-b2ae-a5cba62c5e12") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "5V DC IN" - (at 9.1 0 180) + (property "Value" "TC2_P" + (at 0 1.75 0) (layer "F.Fab") - (uuid "e34707e6-9464-4544-b58f-2ff2fe44646d") + (hide yes) + (uuid "8753e4b1-a01c-420b-8980-2e7aa1300a0a") (effects (font (size 1 1) @@ -20002,393 +19361,283 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "39ad1655-47d2-42d7-a28a-037736228b3d") + (uuid "06e4dc7f-8669-49e2-8121-dac1c6290f51") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 90) - (layer "F.Fab") - (hide yes) - (uuid "cba89523-d487-4d2d-9974-6c5090be7653") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C474881" - (at 0 0 90) + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "ca155746-81e8-4744-8e98-9678bb203a6a") + (uuid "7b36719f-663a-4353-be35-974367c6234a") (effects (font - (size 1 1) + (size 1.27 1.27) (thickness 0.15) ) ) ) - (property ki_fp_filters "TerminalBlock*:*") - (path "/f32efe51-6d4f-4f5c-829d-63aa36fabca1") + (property ki_fp_filters "Pin* Test*") + (path "/c5c35a42-ae7d-4be1-b2dc-6ad4d4bae6aa") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1") ) ) - (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 7.62 -4.12) - (end 7.62 3.92) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "385157c2-98c8-461c-9c5b-58c16ed555f6") + (uuid "c6385e47-47a1-45b1-9af4-2a7068b0afde") ) (fp_line - (start -3.12 -4.12) - (end 7.62 -4.12) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "fef8e495-af5d-4c1c-81fb-e897ce4e56e8") + (uuid "14e34939-c1dc-498a-b73e-ea21d3be3621") ) (fp_line - (start 6.812 -0.5) - (end 7.62 -0.5) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "c9c0a46c-8151-4a84-b175-c72b0ee7603a") + (uuid "8d422bcb-db73-4a0a-935a-50721587fb5d") ) (fp_line - (start 1.88 -0.5) - (end 3.188 -0.5) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e48867a7-b031-4603-9b76-58f9be7ccffe") + (uuid "6b9c1ecd-2f73-4f30-ab14-81e7e0fa0866") ) (fp_line - (start -3.12 -0.5) - (end -1.88 -0.5) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "903476b2-afc1-4c71-8ea4-f1d9b656ea42") + (layer "F.CrtYd") + (uuid "516a5567-8ed9-45a3-a8b3-11436735778e") ) (fp_line - (start 6.812 0.5) - (end 7.62 0.5) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "8c525670-f53c-4f0d-ae75-cca611dfd520") + (layer "F.CrtYd") + (uuid "35b1dcda-4570-4c9c-b774-307ff47d19bb") ) (fp_line - (start 1.88 0.5) - (end 3.188 0.5) + (start 1.25 1.25) + (end -1.25 1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "d9425959-8f47-4d1d-af1f-f44300fe86b7") + (layer "F.CrtYd") + (uuid "a0cea517-eccd-4eac-9ce4-cd5590f91ea1") ) (fp_line - (start -3.12 0.5) - (end -1.88 0.5) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) + (layer "F.CrtYd") + (uuid "2566fa5d-2334-4aee-935e-463830142572") + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC2_P") + (pinfunction "1_1") + (pintype "passive") + (uuid "978ae92f-4463-4ffe-82f7-84eb9df7651f") + ) + (embedded_fonts no) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "9f1d4432-da84-484d-aace-45600fab0561") + (at 114.95 50.475 180) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R22" + (at 0 -1.17 0) (layer "F.SilkS") - (uuid "5f192e51-905c-406c-9f44-b88dff7edf20") + (hide yes) + (uuid "46ba99e9-6fee-467c-8c4c-07ee514fcdcc") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (fp_line - (start 5.543 1.8) - (end 7.62 1.8) - (stroke - (width 0.12) - (type solid) + (property "Value" "100R" + (at 0 1.17 0) + (layer "F.Fab") + (hide yes) + (uuid "5c61862a-882d-42b4-bb65-47e12c480d4d") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.SilkS") - (uuid "bdb981c7-10c7-4865-8442-3236e6232079") ) - (fp_line - (start 1.88 1.8) - (end 4.457 1.8) - (stroke - (width 0.12) - (type solid) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "72ee9253-7f93-414a-8f81-2820f50eecfa") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.SilkS") - (uuid "38fc1dd6-fb04-41f6-b65d-e48fe24b7c97") ) - (fp_line - (start -3.12 1.8) - (end -1.88 1.8) - (stroke - (width 0.12) - (type solid) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "58840953-6d90-45e9-a14a-eb44eb7bb6c6") + (effects + (font + (size 1.27 1.27) + ) ) - (layer "F.SilkS") - (uuid "3845e3bc-26ec-491b-9a57-9b06f81a0bd0") ) - (fp_line - (start 7.62 3.92) - (end 0.3 3.92) - (stroke - (width 0.12) - (type solid) + (property "LCSC" "C25076" + (at 0 0 180) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "8c326e82-dbe7-4d87-99a6-6ac1c26f895b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/559d7b59-4fcf-43b2-a6b5-eaffd4d52363") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") ) - (layer "F.SilkS") - (uuid "3bd70e4f-24cc-4f0c-9cb6-656916b19021") ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.3 3.92) - (end -3.12 3.92) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "0d91ea58-5258-4039-8bbf-9d4ebf3db2d9") + (uuid "1b127b19-3ade-4c0e-86c1-88a9ad82f287") ) (fp_line - (start -3.12 3.92) - (end -3.12 -4.12) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "8ea9ab96-68e7-4847-8404-d75abde9bffc") - ) - (fp_poly - (pts - (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) - ) - (stroke - (width 0.12) - (type solid) - ) - (fill yes) - (layer "F.SilkS") - (uuid "5ad7a017-78d1-4756-9dab-a1702e9afdab") + (uuid "4ab08997-0cc9-4f12-8181-46e8492094ec") ) (fp_rect - (start -3.5 -4.5) - (end 8 4.31) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "b26a9927-0439-4f83-8e07-1ecbe304dd27") - ) - (fp_line - (start 7.5 -4) - (end 7.5 3.8) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "cba50398-a417-4361-89a7-7fecdb54f0d8") - ) - (fp_line - (start -3 -4) - (end 7.5 -4) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "f22da373-154b-4d91-8fa0-f597c1f492c5") - ) - (fp_line - (start 6.018 -1.213) - (end 3.787 1.018) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "f3319656-8e89-4c2e-872d-1fd53ce72f04") - ) - (fp_line - (start 1.018 -1.213) - (end -1.213 1.018) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "f8b3d19a-4e7f-4efd-bbc1-f833dea1d220") - ) - (fp_line - (start 6.213 -1.018) - (end 3.982 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "980995d7-1a23-44d0-940c-482d7b7281c7") - ) - (fp_line - (start 1.213 -1.018) - (end -1.018 1.213) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "a251b55f-1e27-4382-b909-90da211dcbe0") - ) - (fp_line - (start -3 -0.5) - (end 7.5 -0.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "613ea7b6-f482-4678-9055-f3dfd7b52579") - ) - (fp_line - (start -3 0.5) - (end 7.5 0.5) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "6904acdc-7d57-4a51-a8d9-17e4c6ef47a5") - ) - (fp_line - (start -3 1.8) - (end 7.5 1.8) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "68a1245f-23f7-400a-8375-a15cd4899a4e") - ) - (fp_line - (start -3 1.85) - (end -3 -4) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "bc73260d-1892-4b1d-9d5d-233cc8c8cc00") - ) - (fp_line - (start 7.5 3.8) - (end -1.05 3.8) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "893c6f0d-013e-4c90-88e9-8b334c3f4fea") - ) - (fp_line - (start -1.05 3.8) - (end -3 1.85) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "4bbe15af-0864-486e-bc87-9072b55f5211") - ) - (fp_circle - (center 5 0) - (end 6.6 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "7ec4e307-c700-4948-8e22-e4aa9e417492") + (uuid "05710c6f-18a2-4dbe-8684-637979f3178a") ) - (fp_circle - (center 0 0) - (end 1.6 0) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "eda05b16-5fa8-464e-9134-d06ccebdd466") + (uuid "c9e8f6a4-d66f-4c9c-bb0e-248e2899cb4d") ) (fp_text user "${REFERENCE}" - (at 2.25 2.65 90) + (at 0 0 0) (layer "F.Fab") - (uuid "d766f108-5fd9-446c-9bdb-31115a342be7") + (uuid "81bdd06b-54fe-4b1c-b7d8-51223beaeb49") (effects (font - (size 1 1) - (thickness 0.15) + (size 0.26 0.26) + (thickness 0.04) ) ) ) - (pad "1" thru_hole roundrect - (at 0 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (roundrect_rratio 0.089286) - (net "/V_IN") - (pinfunction "Pin_1_1") + (pad "1" smd roundrect + (at -0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/ALARM") (pintype "passive") - (uuid "fc0059a9-b3d7-4dd1-90ca-370a57068b16") + (uuid "82ee721d-3d34-41e6-97bd-338a4d47530b") ) - (pad "2" thru_hole circle - (at 5 0 90) - (size 2.8 2.8) - (drill 1.3) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "Pin_2_2") + (pad "2" smd roundrect + (at 0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(Q4-G)") (pintype "passive") - (uuid "8c1b9a8c-cc20-4b66-b558-109ee4146057") + (uuid "808c9a57-8146-4d43-9cbd-02567c6667e7") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -20400,33 +19649,33 @@ ) ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "b7cebc04-c2b0-4a35-a4d0-ca7a9ba559c0") - (at 69.75 64.75) - (property "Reference" "TP2" - (at 0 -1.647999 0) - (unlocked yes) + (uuid "a0b043c5-6c7a-4692-b068-9d3ee9160870") + (at 139.9 97.85) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C9" + (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "62dc681e-b9bc-4102-b905-349022b54807") + (uuid "3aa75fa6-5b77-41fd-acff-765eb733ae8a") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "+3V3" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "100pF" + (at 0 1.16 0) + (layer "F.Fab") (hide yes) - (uuid "9c6a1c2f-0c99-425b-9f94-e52d5106bee1") + (uuid "cb0e3e30-eb80-4c04-81b1-e26ccf15dd50") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -20434,7 +19683,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "50eaff55-4f9e-48d0-824e-c2df982bf5b5") + (uuid "1e1d2908-3d39-489f-889e-9445b430c50a") (effects (font (size 1.27 1.27) @@ -20445,142 +19694,149 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "18649ebe-c77a-4870-9448-0758b2f60cac") + (uuid "328c4ce1-f7c5-424d-b4c7-b52fa6de998c") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/80dc827b-8a31-44d0-bd68-12166fbf7fe6") + (property "LCSC" "C26409" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "f00e6c6a-a8c8-4a62-9f3e-dbf62aea4ba2") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/92a66687-e21b-4c15-a8d5-5fd628a23ce6") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.949999) - (end 0.95 -0.949999) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "a15b9139-75c9-49a2-bde1-b842a08e1f7c") + (uuid "6acfd463-ff29-4bc6-95fb-f1284d8b137f") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.949999) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "59bd9cf4-ba8e-42dc-884d-988d81554c9b") - ) - (fp_line - (start 0.95 -0.949999) - (end 0.95 0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "29838606-850f-493f-bafc-9b9ab0b8902b") - ) - (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "732b458e-888f-460a-ba33-95e9b1822465") + (uuid "77d504b0-668e-4efd-8a2b-8166adf34c7c") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "2792b15c-c079-4036-9545-7316946721f8") + (uuid "46c0bd52-f300-40bd-b2b4-b8aced4afc1b") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "d63c03d6-f0d6-4467-9f57-5b784ff2aaa9") + (fill no) + (layer "F.Fab") + (uuid "31d7d825-da93-4fb6-8b95-1d0f4d6326a1") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "95cadf17-70d0-4840-addc-bbe7f134923c") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "49d3594f-ec80-400f-b7d9-1405762b096c") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "853c8b45-3590-4d2a-8481-efacc5b5e8a7") + (pad "1" smd roundrect + (at -0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_TP") + (pintype "passive") + (uuid "0ee9d8d1-a6b3-484e-b076-5b9b0e536efc") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/+3V3") - (pinfunction "1_1") + (pad "2" smd roundrect + (at 0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") (pintype "passive") - (uuid "fa20f589-3177-4a8a-852c-86d7df26b382") + (uuid "8b400232-90cd-4c74-ac6e-e7ae44ce9ca6") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "b89867c3-7f9d-46aa-9cd7-bad8222fb75e") - (at 127.485 111.75) - (property "Reference" "TP14" - (at 0 -1.648 0) - (unlocked yes) + (uuid "a1a5bcc7-74f2-4d2e-83e3-c9f2494a2896") + (at 139.95 113.4 180) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R17" + (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "d0ec4323-c963-4e7d-98de-733b47041433") + (uuid "76412e4b-cce9-4dbd-bbb4-dbd337f5edab") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "TC2_FAULT" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "100R" + (at 0 1.17 0) + (layer "F.Fab") (hide yes) - (uuid "9229d1f1-d67f-4a35-8cd5-cd6c00e1d49f") + (uuid "88e7602f-eeb7-4d2c-834b-6dc4b652e268") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -20588,7 +19844,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "16af2077-3a51-4de2-ba97-7ae47612462e") + (uuid "81758472-a2c2-4bf3-a7db-7c76a42e1b5e") (effects (font (size 1.27 1.27) @@ -20599,125 +19855,120 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "142f9fc3-82b3-49e5-83e3-946f70ca9d6f") + (uuid "d93cbe11-d82a-49ed-a569-69eda038834d") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/417c3cea-d0bb-4ff9-9616-a5367059fcdc") + (property ki_fp_filters "R_*") + (path "/9f2d76f0-65f9-4e69-878c-bd33add6596d") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "359a3ace-81db-4ad2-8c75-9546e41ceee0") - ) - (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) - (stroke - (width 0.12) - (type default) - ) - (layer "F.SilkS") - (uuid "f339257e-d390-49c1-bf99-68fde06cd594") - ) - (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "cbf0f12e-cf83-4bb3-9756-bee63ddb26fd") + (uuid "7e493ab2-8529-4e67-8db2-7b9bf893e6e3") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "0f0020a1-a219-4ff6-bdb6-c1d7ab3f0fc8") + (uuid "e1d13384-c46e-489f-9640-2eb8cb6b718e") ) - (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) - (type default) + (type solid) ) + (fill no) (layer "F.CrtYd") - (uuid "078f6376-b272-4546-9404-3a2be8fd6211") + (uuid "0ea7e01a-fb36-475f-bcc8-04a4e4d32887") ) - (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.05) - (type default) + (width 0.1) + (type solid) ) - (layer "F.CrtYd") - (uuid "27cad9b0-3d0f-4a51-8cfc-8751bc08d66b") + (fill no) + (layer "F.Fab") + (uuid "9941651a-06a3-4607-a459-1e200c860644") ) - (fp_line - (start 1.25 1.25) - (end -1.25 1.25) - (stroke - (width 0.05) - (type default) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "21ada25b-a774-4e65-93c7-b2e8fe5caa25") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) ) - (layer "F.CrtYd") - (uuid "0df6db73-5df4-46fa-b84c-891598597555") ) - (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) - (stroke - (width 0.05) - (type default) - ) - (layer "F.CrtYd") - (uuid "858b70d4-58cb-4734-8a05-c63552a4dedf") + (pad "1" smd roundrect + (at -0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_N") + (pintype "passive") + (uuid "1b1ca352-09b1-4b4d-a015-b11dc1daa372") ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC2_FAULT") - (pinfunction "1_1") + (pad "2" smd roundrect + (at 0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_TN") (pintype "passive") - (uuid "4c7504cb-7615-42bb-8cc9-3544d5c76cbd") + (uuid "bef43f59-e446-4337-8f1e-4c0948cfaf2e") ) (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) ) - (footprint "Button_Switch_THT:SW_PUSH_6mm_H5mm" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "b94f9b9d-bff7-4964-9783-97164c09062f") - (at 111.5 74.5) - (descr "tactile push button, 6x6mm e.g. PHAP33xx series, height=5mm") - (tags "tact sw push 6mm") - (property "Reference" "SW2" - (at 3.25 -2 0) + (uuid "a7f64631-5ede-44b6-94a7-fed447732441") + (at 120.25 46.74 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R29" + (at 0 -1.17 90) (layer "F.SilkS") - (uuid "6d03f0e0-ae75-4042-bb7f-94221d73d73e") + (hide yes) + (uuid "4e17c650-d44e-4ab7-953f-6a986a5c2030") (effects (font (size 1 1) @@ -20725,10 +19976,11 @@ ) ) ) - (property "Value" "BOOT" - (at 3.75 6.7 0) + (property "Value" "10k" + (at 0 1.17 90) (layer "F.Fab") - (uuid "1b9ebe93-28a5-4fc1-8da4-66147a477c60") + (hide yes) + (uuid "939cf3a3-f586-4458-95ec-379e6c6939b6") (effects (font (size 1 1) @@ -20737,45 +19989,29 @@ ) ) (property "Datasheet" "" - (at 0 0 0) - (unlocked yes) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "15d8bde5-c68f-4409-9c8c-fd1adcedade7") + (uuid "52bcb48e-3c97-4988-a98d-c4d357f27687") (effects (font (size 1.27 1.27) - (thickness 0.15) ) ) ) (property "Description" "" - (at 0 0 0) - (unlocked yes) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "3e839c3f-8414-4c77-8f80-125880b8fb9d") + (uuid "3868dc30-80ca-433c-81a0-59b42cfa50b0") (effects (font (size 1.27 1.27) - (thickness 0.15) - ) - ) - ) - (property "LCSC" "C111609" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "2ad34d22-5e8d-4868-b476-6cfc70f34d01") - (effects - (font - (size 1 1) - (thickness 0.15) ) ) ) - (path "/3a1fa904-f175-46fb-a7f4-b90010f54b5d") + (property ki_fp_filters "R_*") + (path "/fb58a8d4-1087-45bf-961d-8bb1dbbfda57") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -20784,308 +20020,257 @@ (pins "1" "2") ) ) - (attr through_hole) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.25 1.5) - (end -0.25 3) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "6e33593e-3872-4a0e-a8b0-134f3f64f8c5") + (uuid "d1b1f114-8036-44e1-baed-e1bd0896de19") ) (fp_line - (start 1 5.5) - (end 5.5 5.5) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "6315fbde-0f36-4786-b2b4-d8e8a38ae2e4") + (uuid "15e9e635-fe22-4db3-9fd0-83256b591cc9") ) - (fp_line - (start 5.5 -1) - (end 1 -1) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "98250b06-d502-4caf-9279-a6928b368a2a") + (fill no) + (layer "F.CrtYd") + (uuid "9f8d8e55-4ed9-4b94-9057-3e7ee8f92f43") ) - (fp_line - (start 6.75 3) - (end 6.75 1.5) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.12) + (width 0.1) (type solid) ) + (fill no) + (layer "F.Fab") + (uuid "20a3c9c2-b7d0-474f-89dd-cf296538da29") + ) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "1e2b9ac8-2b42-4f9c-a735-3146a61b7788") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pintype "passive") + (uuid "5e3c866e-8268-4227-ba1c-48a859b8dbc7") + ) + (pad "2" smd roundrect + (at 0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_PERMIT") + (pintype "passive") + (uuid "5235f204-3acf-45aa-a027-f14dc6294299") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "a96f8539-04f9-4396-9085-409af75f54cc") + (at 126.7 95.8 90) + (property "Reference" "TP9" + (at 0 -1.648 90) + (unlocked yes) (layer "F.SilkS") - (uuid "e12daf7a-dcc1-4998-b64f-5dfc808adb42") + (hide yes) + (uuid "1f321704-c8bd-4527-b860-39d113ff565f") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Value" "TC1_CS" + (at 0 1.75 90) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "7f1cb4e1-b624-46b4-97fc-4eb3489a0583") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "c591cd28-731a-4087-b24b-910833a3e96b") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "d6570a2b-1acc-47e0-9979-545dbdde9c8e") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/6c70294b-4e8e-411d-8244-ca094c3aa425") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) ) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -1.5 -1.5) - (end -1.25 -1.5) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "524e6713-ffb0-41ef-846a-5f268d8072fd") + (layer "F.SilkS") + (uuid "bd4d116a-1df4-4fb3-8ace-6a776679a380") ) (fp_line - (start -1.5 -1.25) - (end -1.5 -1.5) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "1dd6b95a-602a-416a-92f9-8ac30c4290db") + (layer "F.SilkS") + (uuid "7f40f0a4-007a-4083-b250-2913005c51d5") ) (fp_line - (start -1.5 5.75) - (end -1.5 -1.25) + (start 0.95 0.95) + (end -0.95 0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "586bcec8-9ae5-41bf-bbd2-78339a04375b") + (layer "F.SilkS") + (uuid "2f12fb1b-e3a9-4b3d-8351-2f5586d993cf") ) (fp_line - (start -1.5 5.75) - (end -1.5 6) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke - (width 0.05) - (type solid) + (width 0.12) + (type default) ) - (layer "F.CrtYd") - (uuid "3327541d-9b69-457b-8a3f-b2d4ca12db47") + (layer "F.SilkS") + (uuid "0006f114-357c-4e05-9bf7-c63f3516db10") ) (fp_line - (start -1.5 6) - (end -1.25 6) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "55971d56-e304-4bd3-a21a-6bc8e874fce6") + (uuid "32bd87db-0ff9-4f37-be7f-5f3b6a8f5471") ) (fp_line - (start -1.25 -1.5) - (end 7.75 -1.5) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "5df85a2c-e522-4b65-85f4-b446ac81b7fc") + (uuid "06c50da7-a770-4c44-aa0c-6cc863acf1c6") ) (fp_line - (start 7.75 -1.5) - (end 8 -1.5) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "ef0f5a71-921f-4265-b743-1270c786a25d") + (uuid "6e9627e6-813d-43c0-8e56-0b242cd50464") ) (fp_line - (start 7.75 6) - (end -1.25 6) + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) - (type solid) + (type default) ) (layer "F.CrtYd") - (uuid "223e1937-1f63-4291-a950-8ef792ef7203") + (uuid "b93ddae9-002c-4be4-ac28-a58d3151da66") ) - (fp_line - (start 7.75 6) - (end 8 6) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "5a531fe4-aa23-4e16-ad30-9b4b6106d5b0") - ) - (fp_line - (start 8 -1.5) - (end 8 -1.25) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "a2dbb949-a28f-4624-91a4-356100bcd0f9") - ) - (fp_line - (start 8 -1.25) - (end 8 5.75) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "7c916eb0-d564-45aa-8912-6db08e21aff2") - ) - (fp_line - (start 8 6) - (end 8 5.75) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "32404a65-1acd-4c21-ab49-9719c960a981") - ) - (fp_line - (start 0.25 -0.75) - (end 3.25 -0.75) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "7b381bd6-7d64-47e9-8958-48e65f3207fe") - ) - (fp_line - (start 0.25 5.25) - (end 0.25 -0.75) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "87597981-1225-4b5a-bd4a-9ce1f9be1d0a") - ) - (fp_line - (start 3.25 -0.75) - (end 6.25 -0.75) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "14735116-1bbf-47ba-9349-9c86cf85b827") - ) - (fp_line - (start 6.25 -0.75) - (end 6.25 5.25) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "4239a619-02d6-4173-ae6b-a0aabe4f6e61") - ) - (fp_line - (start 6.25 5.25) - (end 0.25 5.25) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "0d906fe5-2109-4b4d-8a9b-3e4d1ad1f0c9") - ) - (fp_circle - (center 3.25 2.25) - (end 1.25 2.5) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "4e32402d-2bae-487b-8dcb-3a4b81f79318") - ) - (fp_text user "${REFERENCE}" - (at 3.25 2.25 0) - (layer "F.Fab") - (uuid "3051e2a9-c636-470e-b1fa-0d08543add14") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (pad "1" thru_hole circle + (pad "1" smd rect (at 0 0 90) - (size 2 2) - (drill 1.1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "1_1") - (pintype "passive") - (uuid "e287d60b-8236-4b0d-bd2a-db18cd50fee6") - ) - (pad "1" thru_hole circle - (at 6.5 0 90) - (size 2 2) - (drill 1.1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "GND") + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC1_CS") (pinfunction "1_1") (pintype "passive") - (uuid "74ef04e1-fcdd-4f6d-bc07-a9a56bd1606b") - ) - (pad "2" thru_hole circle - (at 0 4.5 90) - (size 2 2) - (drill 1.1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/MCU_IO0") - (pinfunction "2_2") - (pintype "passive") - (uuid "357c2249-ece3-4981-a379-5f9c7eeccc9c") - ) - (pad "2" thru_hole circle - (at 6.5 4.5 90) - (size 2 2) - (drill 1.1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/MCU_IO0") - (pinfunction "2_2") - (pintype "passive") - (uuid "d27b1498-b0d9-49b2-bfe1-77772a3ec1da") + (uuid "c16b9a2d-9ad4-45e6-9242-6b02f462233b") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Button_Switch_THT.3dshapes/SW_PUSH_6mm_H5mm.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "baa15438-2050-447a-88aa-2ed1b6ae7db1") - (at 135.78 60.26 -90) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R14" - (at 0 -1.17 90) + (uuid "aabef1cb-08cc-4c10-a8d8-d83870cc81ed") + (at 111.73 105.75) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C11" + (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "e16fdff6-bdbd-455b-9854-cc93d3ddc00d") + (uuid "28e700fd-4f9e-439a-85b2-c069e3d0aba7") (effects (font (size 1 1) @@ -21093,11 +20278,11 @@ ) ) ) - (property "Value" "10k" - (at 0 1.17 90) + (property "Value" "100nF" + (at 0 1.16 0) (layer "F.Fab") (hide yes) - (uuid "470c0f3f-46e9-4a0c-8bbd-f661d9fd212e") + (uuid "afbee59c-7ee9-4431-9cc7-8d8e7e5132f8") (effects (font (size 1 1) @@ -21106,10 +20291,10 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "94833db7-79f1-4ca8-8d50-c08fc045d3a6") + (uuid "c549b093-0e93-4816-902f-e12446389423") (effects (font (size 1.27 1.27) @@ -21117,22 +20302,22 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "968db157-10ca-4b98-93e5-19b6d3779bdb") + (uuid "9bb69d6a-9086-4da1-86a5-bc957b1554b3") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25744" - (at 0 0 270) + (property "LCSC" "C1525" + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "75e23046-2ceb-462a-9290-41e03e2023b8") + (uuid "d8e5a026-bf44-4511-9a6d-a37f583b5136") (effects (font (size 1 1) @@ -21140,8 +20325,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/523f474c-03ad-4648-8a06-189ef3cbdab6") + (property ki_fp_filters "C_*") + (path "/97c59e01-3e02-4767-af1f-666af411dd42") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -21153,78 +20338,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "d72ac103-695d-4f5c-af94-ed7e989b039f") + (uuid "29ec8b95-2fa4-40b2-84ba-408a16edfa45") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "8c780973-8234-4a7d-9ad4-598ba1739c17") + (uuid "662a6cb9-844c-44b8-b2b2-242f51c2e9e4") ) (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "02de5322-3a54-4efc-808e-61b3c64dde73") + (uuid "717cea82-d459-4d65-b1a2-5ab4aecb34cc") ) (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (start -0.5 -0.25) + (end 0.5 0.25) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "20b46243-73a3-422f-bb7d-7ffc9ac1299c") + (uuid "6da4772d-6aeb-4416-ab67-49c6a3c74d34") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") - (uuid "1d309f3c-d338-43bb-b364-ca53e971115e") + (uuid "d3ffd62b-d92b-4dac-a84a-85c15ac8aeb6") (effects (font - (size 0.26 0.26) + (size 0.25 0.25) (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.51 0 270) - (size 0.54 0.64) + (at -0.48 0) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "Net-(Q1-G)") + (net "+3.3V") (pintype "passive") - (uuid "de5b2cca-1761-4ece-bb37-5511c7d15ddd") + (uuid "6fdf4902-aaa5-43bb-b66b-9ffa6dd74957") ) (pad "2" smd roundrect - (at 0.51 0 270) - (size 0.54 0.64) + (at 0.48 0) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "b907c8a6-e754-4f4d-aadc-c7b7e557a2ca") + (uuid "2efb585d-f05e-4d83-a1fb-73e7c7260dcf") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -21236,17 +20421,16 @@ ) ) ) - (footprint "Capacitor_SMD:CP_Elec_6.3x7.7" + (footprint "Package_TO_SOT_SMD:SOT-23" (layer "F.Cu") - (uuid "bb881fbb-bd11-48b6-aef8-2c59cf173f53") - (at 67.75 49.75) - (descr "SMD capacitor, aluminum electrolytic, Nichicon, 6.3x7.7mm") - (tags "capacitor electrolytic") - (property "Reference" "C1" - (at 0 -4.35 0) + (uuid "ad3d8738-8e67-4ded-81c3-247151dc8fc4") + (at 112.9375 89.55) + (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") + (tags "SOT TO_SOT_SMD") + (property "Reference" "D9" + (at 0 -2.4 0) (layer "F.SilkS") - (hide yes) - (uuid "8b0e935d-0886-473e-b279-ffdc18e939bf") + (uuid "8e25c797-beb0-4dd3-b542-928484461199") (effects (font (size 1 1) @@ -21254,11 +20438,11 @@ ) ) ) - (property "Value" "100uF 16V" - (at 0 4.35 0) + (property "Value" "BAT54S" + (at 0.0475 3.05 0) (layer "F.Fab") (hide yes) - (uuid "5d08a713-cb5f-43b3-87d4-b55eb5f76313") + (uuid "6ce2f8a1-31f1-4c71-a892-c80fe86e79de") (effects (font (size 1 1) @@ -21270,7 +20454,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "9a59e5ce-bdc5-4e90-b883-9b713b1e6c18") + (uuid "e0a71983-820a-422b-9e8d-132297835820") (effects (font (size 1.27 1.27) @@ -21281,19 +20465,19 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "b558bba6-3048-4c60-9f0d-baab02862244") + (uuid "c20517f9-6702-40b9-800f-2448ca41ef55") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C231174" + (property "LCSC" "C19726" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "3695e244-3efd-4758-93b2-8f283b897385") + (uuid "60e6b933-7b1c-45ba-b42e-7aa96a8a37df") (effects (font (size 1 1) @@ -21301,380 +20485,315 @@ ) ) ) - (property ki_fp_filters "CP_*") - (path "/e0a9064d-6664-44c6-a559-ab65851b0e55") + (property ki_fp_filters "SOT?23*") + (path "/6c79d0c4-a4a2-4dc7-8c35-6643ee91ceed") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2") + (pins "1" "3" "2") ) ) (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -4.4375 -1.8475) - (end -3.65 -1.8475) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "519031c4-abaa-4055-9bf2-7e19b83d4783") - ) - (fp_line - (start -4.04375 -2.24125) - (end -4.04375 -1.45375) + (start -0.76 -1.56) + (end 0.76 -1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "ca3c39c3-1bca-4077-8440-8061a83dc4b2") + (uuid "dece0d0a-3404-42f1-abd7-489310608c07") ) (fp_line - (start -3.41 -2.345563) - (end -3.41 -1.06) + (start -0.76 -1.51) + (end -0.76 -1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "a8a8eaab-0d82-4062-ad7a-2be81eb36a7e") + (uuid "17e47ec1-031e-4b49-ba5c-15ebcb819d1f") ) (fp_line - (start -3.41 -2.345563) - (end -2.345563 -3.41) + (start -0.76 0.39) + (end -0.76 -0.39) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "37629c17-88be-441a-8ed6-3976d2ff5c8f") + (uuid "908b6c5e-3141-46f9-8b51-61d4f0783dc1") ) (fp_line - (start -3.41 2.345563) - (end -3.41 1.06) + (start -0.76 1.56) + (end -0.76 1.51) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "02322c1c-45e1-41ff-a109-06c5eac0a82e") + (uuid "94b1150e-44e1-49d7-96ff-c0bdaaaed114") ) (fp_line - (start -3.41 2.345563) - (end -2.345563 3.41) + (start 0.76 -1.56) + (end 0.76 -0.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "574f6223-e678-4153-9420-366745f2a57f") + (uuid "de61db85-f22f-4f67-988d-558a177cb949") ) (fp_line - (start -2.345563 -3.41) - (end 3.41 -3.41) + (start 0.76 0.56) + (end 0.76 1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "fe4af205-4a36-4319-94f5-30cd26d7dc67") + (uuid "9ad09844-191b-419c-84b7-838c265a947a") ) (fp_line - (start -2.345563 3.41) - (end 3.41 3.41) + (start 0.76 1.56) + (end -0.76 1.56) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "0a1e9842-b7bb-4045-b123-66a74be2ecac") + (uuid "553b6105-a780-4227-a4ed-59a1dffa5c5f") ) - (fp_line - (start 3.41 -3.41) - (end 3.41 -1.06) - (stroke - (width 0.12) - (type solid) + (fp_poly + (pts + (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) ) - (layer "F.SilkS") - (uuid "9a56797e-fc9b-452a-af26-b2c1f49ff39a") - ) - (fp_line - (start 3.41 3.41) - (end 3.41 1.06) (stroke (width 0.12) (type solid) ) + (fill yes) (layer "F.SilkS") - (uuid "2d20ecb3-2ea5-4d48-b124-ac8db8ff220f") + (uuid "5f8247ab-8098-41c3-82d4-3c7d23f24957") ) (fp_line - (start -4.7 -1.05) - (end -4.7 1.05) + (start -1.93 -1.5) + (end -0.9 -1.5) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "3be153db-4c96-4b80-9522-5f683decdf52") + (uuid "9eec78f2-18d7-4bd2-974b-a3cb1145f7c4") ) (fp_line - (start -4.7 1.05) - (end -3.55 1.05) + (start -1.93 -0.39) + (end -1.93 -1.5) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "89686447-1cf1-4e8a-87b0-32f6d5a01965") + (uuid "66aff173-7af1-4ba4-846a-d63af1633298") ) (fp_line - (start -3.55 -2.4) - (end -3.55 -1.05) + (start -1.93 0.39) + (end -0.9 0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "812599c0-3df7-4d93-801b-352fdaa15e4e") + (uuid "5296f843-a196-44dc-8b68-aa6aca500e98") ) (fp_line - (start -3.55 -2.4) - (end -2.4 -3.55) + (start -1.93 1.5) + (end -1.93 0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "9650d7a0-42e0-4c35-935e-ec98c4f0a028") + (uuid "8b98aff7-dada-41b4-8d62-dcdca8b4bd0a") ) (fp_line - (start -3.55 -1.05) - (end -4.7 -1.05) + (start -0.9 -1.7) + (end 0.9 -1.7) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "999c228e-a34c-4e58-8ad7-5d7e6f33a0ba") + (uuid "22e0d175-aeb5-4f9f-ab39-07d21ff83190") ) (fp_line - (start -3.55 1.05) - (end -3.55 2.4) + (start -0.9 -1.5) + (end -0.9 -1.7) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "b6e8079b-8928-456f-b899-827a9d21fbba") + (uuid "81e9c429-c164-4e83-8dcd-cac35148387f") ) (fp_line - (start -3.55 2.4) - (end -2.4 3.55) + (start -0.9 -0.39) + (end -1.93 -0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "4f117d79-efd8-42d0-9b20-32d89499bedc") + (uuid "a6c21f0e-25a8-4872-8233-1baf896fe359") ) (fp_line - (start -2.4 -3.55) - (end 3.55 -3.55) + (start -0.9 0.39) + (end -0.9 -0.39) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "c129cba9-f9be-45c3-a029-58cbf8951583") + (uuid "95a85f80-92c6-4fbd-ab0e-20d68363cff3") ) (fp_line - (start -2.4 3.55) - (end 3.55 3.55) + (start -0.9 1.5) + (end -1.93 1.5) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "fa64b351-5b4e-440e-b482-d5e3175e0f27") + (uuid "023d903a-787a-4c35-8223-707b7b87c063") ) (fp_line - (start 3.55 -3.55) - (end 3.55 -1.05) + (start -0.9 1.7) + (end -0.9 1.5) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "2998765b-472d-4507-b5bc-59ac5f5eec4c") + (uuid "80be26e9-1d0b-4961-8c23-04db20284629") ) (fp_line - (start 3.55 -1.05) - (end 4.7 -1.05) + (start 0.9 -1.7) + (end 0.9 -0.55) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "b37f0390-5595-421f-bb36-a149bd71f11d") + (uuid "16b6514d-3604-4647-b573-b9b1cd37a34b") ) (fp_line - (start 3.55 1.05) - (end 3.55 3.55) + (start 0.9 -0.55) + (end 1.93 -0.55) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "ce527bb9-7fc2-4872-942d-0b87967ba1b5") + (uuid "8bbe8c1a-1275-4c08-89aa-f4ca9a999616") ) (fp_line - (start 4.7 -1.05) - (end 4.7 1.05) + (start 0.9 0.55) + (end 0.9 1.7) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "3214ea91-ea14-4b11-b899-ebbfad0002f7") + (uuid "9b144d8e-8b05-49ce-82c4-7b8d08c6bfb5") ) (fp_line - (start 4.7 1.05) - (end 3.55 1.05) + (start 0.9 1.7) + (end -0.9 1.7) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "096b4391-0ca8-4022-8b63-521dfa534838") + (uuid "96d1a476-bd9e-496a-9602-a4816593117c") ) (fp_line - (start -3.3 -2.3) - (end -3.3 2.3) + (start 1.93 -0.55) + (end 1.93 0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "4c688ae2-6e10-4c08-b224-76b90761bcfc") + (layer "F.CrtYd") + (uuid "8c6a36a9-92d2-4327-82e3-721ea3512d42") ) (fp_line - (start -3.3 -2.3) - (end -2.3 -3.3) + (start 1.93 0.55) + (end 0.9 0.55) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "F.Fab") - (uuid "7af8da6d-c1a3-4549-99e5-adfb25b87179") + (layer "F.CrtYd") + (uuid "d5890e2e-3017-4f4a-ba7d-976bd73307fa") ) - (fp_line - (start -3.3 2.3) - (end -2.3 3.3) - (stroke - (width 0.1) - (type solid) + (fp_poly + (pts + (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) ) - (layer "F.Fab") - (uuid "592c7ae4-39d9-447a-8969-6b7f5a85ee29") - ) - (fp_line - (start -2.704838 -1.33) - (end -2.074838 -1.33) (stroke (width 0.1) (type solid) ) + (fill no) (layer "F.Fab") - (uuid "13a04161-fd5f-4e71-bcba-099e0fc5113e") + (uuid "a54c4a28-dc04-4bb3-89b0-a9707219aac9") ) - (fp_line - (start -2.389838 -1.645) - (end -2.389838 -1.015) - (stroke - (width 0.1) - (type solid) - ) + (fp_text user "${REFERENCE}" + (at 0 0 90) (layer "F.Fab") - (uuid "e881ccca-d19c-4d90-9035-d9159a6cec2c") - ) - (fp_line - (start -2.3 -3.3) - (end 3.3 -3.3) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "de05e648-fbf4-4576-94d6-8647e3f3b656") - ) - (fp_line - (start -2.3 3.3) - (end 3.3 3.3) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "50581397-760f-4fde-b214-fe4cb7a3adf5") - ) - (fp_line - (start 3.3 -3.3) - (end 3.3 3.3) - (stroke - (width 0.1) - (type solid) - ) - (layer "F.Fab") - (uuid "19e1868a-dc9f-4e34-b02b-67405a2be03f") - ) - (fp_circle - (center 0 0) - (end 3.15 0) - (stroke - (width 0.1) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "0dcb40be-7d75-4065-b78a-bf86f473938b") - ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "25ce49d9-983e-433d-bd33-f7453d3a41bc") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (uuid "7fdc2859-f483-4d1e-9afe-cd38ca6f33d9") + (effects + (font + (size 0.72 0.72) + (thickness 0.11) + ) ) ) (pad "1" smd roundrect - (at -2.7 0) - (size 3.5 1.6) + (at -0.9375 -0.95) + (size 1.475 0.6) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.15625) - (net "+5V") + (roundrect_rratio 0.25) + (net "GND") + (pinfunction "A_1") (pintype "passive") - (uuid "e321d3a8-7b00-456d-9215-c3a97c0e2917") + (uuid "42a73d9b-4561-48a5-baf8-470c757c317a") ) (pad "2" smd roundrect - (at 2.7 0) - (size 3.5 1.6) + (at -0.9375 0.95) + (size 1.475 0.6) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.15625) - (net "GND") + (roundrect_rratio 0.25) + (net "+3.3V") + (pinfunction "K_2") (pintype "passive") - (uuid "493add2d-c0d4-4fc6-bb55-83f35eadeb17") + (uuid "f660a4a5-3182-4525-816f-eeccd2f6b2d6") + ) + (pad "3" smd roundrect + (at 0.9375 0) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/CURR_SENSE") + (pinfunction "COM_3") + (pintype "passive") + (uuid "896e268e-4dd6-4df0-a597-d70d6fe2cd3d") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/CP_Elec_6.3x7.7.step" + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" (offset (xyz 0 0 0) ) @@ -21686,17 +20805,17 @@ ) ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") - (uuid "c0782ffa-6fc5-41ef-8f6f-eca5c65718bf") - (at 53.84 88.8) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R11" - (at 0 -1.17 0) + (uuid "b3e99e4d-9b2b-45d9-94c6-d8856e7fe5aa") + (at 63 57.05 -90) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") + (tags "capacitor") + (property "Reference" "C3" + (at 0 -1.68 90) (layer "F.SilkS") (hide yes) - (uuid "c5367930-4525-44ac-abb0-fd489bb02672") + (uuid "52875e0d-9928-4821-9288-9c5348a1d417") (effects (font (size 1 1) @@ -21704,11 +20823,11 @@ ) ) ) - (property "Value" "10k" - (at 0 1.17 0) + (property "Value" "10uF" + (at 0 1.68 90) (layer "F.Fab") (hide yes) - (uuid "15bf045f-d3b7-4fc7-9b5f-eb5e4c0b1ae0") + (uuid "c985787a-9b61-4084-9055-4297fc215967") (effects (font (size 1 1) @@ -21717,10 +20836,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "8577fe34-9a9c-4de4-b56c-1a1c5d46647a") + (uuid "72bca05c-e602-430e-9676-8312ac991a3b") (effects (font (size 1.27 1.27) @@ -21728,22 +20847,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "c52bdde9-22f3-4c11-8c9d-d9e42153b735") + (uuid "dbc18c6b-2d5e-4e0c-a09a-7df2f03590b4") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25744" - (at 0 0 0) + (property "LCSC" "C15850" + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "06364e39-9d36-4284-b81d-fb493ebbd554") + (uuid "4d78a1ac-853e-45f7-b30b-33b2163210af") (effects (font (size 1 1) @@ -21751,8 +20870,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/491dccb6-f66b-4115-bae8-e4c00ebf7f63") + (property ki_fp_filters "C_*") + (path "/74970d4f-ab4f-41f7-8df3-eeadfc570866") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -21764,78 +20883,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.261252 0.735) + (end 0.261252 0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "b7b47f01-506e-4a46-8c8b-28bded7c9314") + (uuid "61e5f001-7252-41a6-bfa7-ad09a156b670") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.261252 -0.735) + (end 0.261252 -0.735) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e04d73d7-9764-40ba-92c8-f9e1d1309e0d") + (uuid "c15b8c48-74a1-4e22-8525-356b91200fd4") ) (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (start -1.7 -0.98) + (end 1.7 0.98) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "46de6edc-d0cb-4581-aec5-8947b67b34fe") + (uuid "854870d8-4e96-4887-ab43-5e941d9762f3") ) (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (start -1 -0.625) + (end 1 0.625) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "d4cbc158-c3e9-42ea-83f7-965a2623a897") + (uuid "0738b47c-15de-4a98-8208-8ac09ed93eb5") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "6bc329a0-8e43-4d78-b946-6804bfaf7691") + (uuid "eb00e8aa-b18b-4503-bb26-79975cc0fecb") (effects (font - (size 0.26 0.26) - (thickness 0.04) + (size 0.5 0.5) + (thickness 0.08) ) ) ) (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) + (at -0.95 0 270) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "+3.3V") (pintype "passive") - (uuid "0ba93de0-86e7-4a62-a337-93ea9d1ed1ff") + (uuid "3aa3d000-c5fb-47f0-95c2-811023a1f19b") ) (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) + (at 0.95 0 270) + (size 1 1.45) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/ENC_B") + (net "GND") (pintype "passive") - (uuid "b2e12d50-bbe0-49ad-bcb2-0e1dc82c1628") + (uuid "2ea0faea-4ec1-456b-ad82-9328d744ec77") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" (offset (xyz 0 0 0) ) @@ -21847,17 +20966,17 @@ ) ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "c2fb27c0-d606-4c39-9641-07b5fa1d9f7f") - (at 140.0175 112.25) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C15" - (at 0 -1.16 0) + (uuid "b544ef11-dada-4cde-9031-9d992aa6d47b") + (at 137.9675 49.69 90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R30" + (at 0 -1.17 90) (layer "F.SilkS") (hide yes) - (uuid "924b5606-f7be-427c-a589-3d032564f134") + (uuid "bff6ef83-540f-4b40-8b2f-aaeb2c340928") (effects (font (size 1 1) @@ -21865,11 +20984,11 @@ ) ) ) - (property "Value" "100pF" - (at 0 1.16 0) + (property "Value" "10k" + (at 0 1.17 90) (layer "F.Fab") (hide yes) - (uuid "8e609834-07ba-4ece-909a-db091d94ebcb") + (uuid "726c23d0-0e1a-446a-bf88-a29501c198f7") (effects (font (size 1 1) @@ -21878,10 +20997,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "d6dc6f79-bf51-4309-8bf3-ff0806527b70") + (uuid "311de7a0-71dd-4f45-a3b9-0e8a2aedecaf") (effects (font (size 1.27 1.27) @@ -21889,31 +21008,18 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "fc7413f6-924e-460d-8fbc-f0afe2e3cb44") + (uuid "7beadbd6-599d-49c2-8aa9-f7a2f9a5e278") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C26409" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "68c0632e-a2e9-47ad-af8d-b793be793b15") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "C_*") - (path "/9d31f0ab-834c-473b-a6db-e8a21517103d") + (property ki_fp_filters "R_*") + (path "/37fb3a4b-2563-4a12-8927-aa95cf0d8534") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -21925,78 +21031,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "00890238-dc67-4b5f-a50b-750ece56d1da") + (uuid "0ed68e74-f949-450d-9a6d-4df9002cfd49") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "4f289d24-3a36-4699-afce-f2d49c458198") + (uuid "65650d73-94ae-45d8-937a-43f720c4a014") ) (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "368afa90-8882-4e34-9c28-03c81c93be87") + (uuid "0df09482-896e-4b00-9d3e-ff31af6a022f") ) (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "cd2aeec7-7c5d-4e56-aca7-5e76e09ec62f") + (uuid "cb360347-6133-44b0-86bd-847bc2bb4859") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "43ca1a8e-4789-44f5-a244-653bb6708b7c") + (uuid "32787a75-4b84-4426-9556-1b21027c63e8") (effects (font - (size 0.25 0.25) + (size 0.26 0.26) (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) + (at -0.51 0 90) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/TC2_TP") + (net "/LID_SWITCH") (pintype "passive") - (uuid "51b046d4-3991-4611-bba6-9b0f45a38c6e") + (uuid "aed7dbc3-08c8-4032-8119-6f0eb509a8ff") ) (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) + (at 0.51 0 90) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "GND") + (net "/LID_SENSE") (pintype "passive") - (uuid "4a67c322-45e6-43af-a4db-3d673f075bd1") + (uuid "70b417e2-9a47-434d-ae9b-b288e1cd43d3") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -22010,15 +21116,15 @@ ) (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "cfc89b4a-3f0c-40e1-a937-52f6daf5d421") - (at 56.73 89.75) + (uuid "b5df3728-ccd8-4113-b57e-44ce5b360a26") + (at 61.25 57 -90) (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "capacitor") - (property "Reference" "C20" - (at 0 -1.16 0) + (property "Reference" "C4" + (at 0 -1.16 90) (layer "F.SilkS") (hide yes) - (uuid "73c7155b-ffcf-49ec-977b-23acf961df0f") + (uuid "fea01434-5a48-4dc9-a7d2-196479190902") (effects (font (size 1 1) @@ -22027,10 +21133,10 @@ ) ) (property "Value" "100nF" - (at 0 1.16 0) + (at 0 1.16 90) (layer "F.Fab") (hide yes) - (uuid "432ff294-544c-420b-9bb7-52cfa9ed8559") + (uuid "29bdf216-02a3-42a5-b55c-ab731e9547f9") (effects (font (size 1 1) @@ -22039,10 +21145,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "93436512-4418-4536-b809-991130cb2b52") + (uuid "c98663b9-6632-4167-b277-99e32ee9ada8") (effects (font (size 1.27 1.27) @@ -22050,10 +21156,10 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "27c2ff9b-b54d-47ab-8d4c-bac5daee237c") + (uuid "7f57eec7-7a4d-4af5-ad26-70d52efc2fa7") (effects (font (size 1.27 1.27) @@ -22061,11 +21167,11 @@ ) ) (property "LCSC" "C1525" - (at 0 0 0) + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "8351c50b-1b04-4d6f-9da8-f8c4205fb228") + (uuid "f81da9de-5bf5-4ce3-8151-ef37cbe0f4ea") (effects (font (size 1 1) @@ -22074,7 +21180,7 @@ ) ) (property ki_fp_filters "C_*") - (path "/0e8d4150-f0d2-4bdc-8676-9c0befd5628e") + (path "/174ce40b-db46-409a-9fa5-2d5f70d1b8cc") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -22086,24 +21192,24 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "f3282389-3e24-4ab7-abb5-2567ffb015a9") + (uuid "80e9bf4c-7c3b-4948-b6b9-83ad06c6db43") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "08223862-609f-490b-9ac5-780c1e77c8f3") + (uuid "f90c1307-117c-4ff4-9f73-5afd83818e1a") ) (fp_rect (start -0.91 -0.46) @@ -22114,7 +21220,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "226f91db-942e-47d0-b42d-17b105e8417c") + (uuid "16bd592f-42dd-4614-8d3b-26f4ae70a367") ) (fp_rect (start -0.5 -0.25) @@ -22125,12 +21231,12 @@ ) (fill no) (layer "F.Fab") - (uuid "11df33eb-d33a-4b44-b96b-720b52824b8a") + (uuid "56cca4a8-833b-4f0a-a705-8490223cdeca") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "c62a17ff-d51c-422d-8d98-19a138c1cb25") + (uuid "18196bd2-a94e-4d77-b5df-c7146d5b6ae0") (effects (font (size 0.25 0.25) @@ -22139,22 +21245,22 @@ ) ) (pad "1" smd roundrect - (at -0.48 0) + (at -0.48 0 270) (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/ENC_A") + (net "+3.3V") (pintype "passive") - (uuid "6bef7f58-451f-46e4-a46a-dc83da6c8a80") + (uuid "748c2e3d-b21d-4c87-8210-c7a277754030") ) (pad "2" smd roundrect - (at 0.48 0) + (at 0.48 0 270) (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "4c56bd3f-94eb-4614-bae2-31075e131aa0") + (uuid "d265b715-4cea-49ab-a6f4-ff984a252332") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" @@ -22169,17 +21275,16 @@ ) ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" (layer "F.Cu") - (uuid "d1c127a9-ad76-4dbe-8a43-fe21dfb9a54a") - (at 82.34 99.05) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R9" - (at 0 -1.17 0) + (uuid "b686f1bf-9dce-4902-9407-aff767bc5be7") + (at 54.25 51.1 90) + (descr "terminal block MaiXu MX126-5.0-02P, 2 pins, pitch 5mm, size 10.5x7.8mm, drill diameter 1.3mm, pad diameter 2.8mm, https://www.lcsc.com/datasheet/lcsc_datasheet_2309150913_MAX-MX126-5-0-03P-GN01-Cu-S-A_C5188435.pdf") + (tags "THT terminal block MaiXu MX126-5.0-02P pitch 5mm size 10.5x7.8mm drill 1.3mm pad 2.8mm") + (property "Reference" "J1" + (at 2.25 -5.12 90) (layer "F.SilkS") - (hide yes) - (uuid "d553d9fd-47c6-4064-a716-1b739fccf596") + (uuid "11acdcfd-c9ac-418b-b2ae-a5cba62c5e12") (effects (font (size 1 1) @@ -22187,11 +21292,10 @@ ) ) ) - (property "Value" "4.7k" - (at 0 1.17 0) + (property "Value" "5V DC IN" + (at 9.1 0 180) (layer "F.Fab") - (hide yes) - (uuid "3616542c-052e-434a-8bf3-ae10c5a152fa") + (uuid "e34707e6-9464-4544-b58f-2ff2fe44646d") (effects (font (size 1 1) @@ -22200,10 +21304,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "a38c0e1d-b750-44ba-8f87-25c42e8fb658") + (uuid "39ad1655-47d2-42d7-a28a-037736228b3d") (effects (font (size 1.27 1.27) @@ -22211,22 +21315,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "12056156-aa45-4888-883d-8991cc93e24b") + (uuid "cba89523-d487-4d2d-9974-6c5090be7653") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25900" - (at 0 0 0) + (property "LCSC" "C474881" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "ad0737dd-24e2-4970-a0c1-88fd406f1a8b") + (uuid "ca155746-81e8-4744-8e98-9678bb203a6a") (effects (font (size 1 1) @@ -22234,8 +21338,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/a8a6fc8c-bdec-4920-9998-3f1c229299b8") + (property ki_fp_filters "TerminalBlock*:*") + (path "/f32efe51-6d4f-4f5c-829d-63aa36fabca1") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -22244,555 +21348,349 @@ (pins "1" "2") ) ) - (attr smd) + (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start 7.62 -4.12) + (end 7.62 3.92) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "11e48075-16f5-4055-acc8-585affb68e1e") + (uuid "385157c2-98c8-461c-9c5b-58c16ed555f6") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -3.12 -4.12) + (end 7.62 -4.12) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "3cddcf37-bdf7-45e0-a131-532414570be8") - ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) - (stroke - (width 0.05) - (type solid) - ) - (fill no) - (layer "F.CrtYd") - (uuid "49d218b3-983c-4ca3-8b66-fdab30635751") + (uuid "fef8e495-af5d-4c1c-81fb-e897ce4e56e8") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_line + (start 6.812 -0.5) + (end 7.62 -0.5) (stroke - (width 0.1) + (width 0.12) (type solid) ) - (fill no) - (layer "F.Fab") - (uuid "90b8be45-c023-44ab-b7bd-7e9f3a2465c4") - ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "d87b01d9-82b2-4d79-9cf9-5ce0a627c239") - (effects - (font - (size 0.26 0.26) - (thickness 0.04) - ) - ) - ) - (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pintype "passive") - (uuid "95d31f19-15fc-4e16-85c4-949200616822") - ) - (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/I2C_SCL") - (pintype "passive") - (uuid "529178da-7aaf-4c82-8491-1e326feeae4e") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" - (layer "F.Cu") - (uuid "d6732174-663d-4ad7-a833-41c15af03778") - (at 139.735 115.25) - (property "Reference" "TP29" - (at 0 -1.648 0) - (unlocked yes) - (layer "F.SilkS") - (hide yes) - (uuid "5b30ca04-9594-40c3-bd05-c9a84ac50f7e") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Value" "TC2_P" - (at 0 1.75 0) - (unlocked yes) (layer "F.SilkS") - (hide yes) - (uuid "8f76a9b6-3892-4eb9-8266-fd0ea4780fbf") - (effects - (font - (size 1 1) - (line_spacing 0) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "ce0396be-d0ce-4280-9ca8-aeeb217654be") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "9c65d565-7562-4ef9-b3f0-ef25fb4fb3e6") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property ki_fp_filters "Pin* Test*") - (path "/00adba66-1376-432a-a10c-d1c4c7c69923") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1") - ) + (uuid "c9c0a46c-8151-4a84-b175-c72b0ee7603a") ) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 1.88 -0.5) + (end 3.188 -0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "0c900e14-1133-4f35-8b6f-c654e453d07e") + (uuid "e48867a7-b031-4603-9b76-58f9be7ccffe") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start -3.12 -0.5) + (end -1.88 -0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "3d0fd39e-809f-4d05-a957-229344d12f84") + (uuid "903476b2-afc1-4c71-8ea4-f1d9b656ea42") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start 6.812 0.5) + (end 7.62 0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "ac42dc2c-428b-4a6f-a4bf-e2d044b93408") + (uuid "8c525670-f53c-4f0d-ae75-cca611dfd520") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start 1.88 0.5) + (end 3.188 0.5) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "4818ea12-1bcb-4889-ac63-b471a2f3fb0c") + (uuid "d9425959-8f47-4d1d-af1f-f44300fe86b7") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -3.12 0.5) + (end -1.88 0.5) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "ec8e27f2-694a-4901-8669-de75c44b92e8") + (layer "F.SilkS") + (uuid "5f192e51-905c-406c-9f44-b88dff7edf20") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start 5.543 1.8) + (end 7.62 1.8) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "ef2c5de0-0755-433a-baeb-637917b01d43") + (layer "F.SilkS") + (uuid "bdb981c7-10c7-4865-8442-3236e6232079") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start 1.88 1.8) + (end 4.457 1.8) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "8f038ed1-9443-45e8-9abb-1787b707fc2f") + (layer "F.SilkS") + (uuid "38fc1dd6-fb04-41f6-b65d-e48fe24b7c97") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -3.12 1.8) + (end -1.88 1.8) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "939fc02b-21bc-407c-986a-493e455735c6") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/TC2_P") - (pinfunction "1_1") - (pintype "passive") - (uuid "549f1c23-9472-4694-944c-bddbdd71de85") - ) - (embedded_fonts no) - ) - (footprint "Capacitor_SMD:C_0402_1005Metric" - (layer "F.Cu") - (uuid "d994726f-e373-4a1a-bb3a-422c1e24b8de") - (at 111.27 101) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C12" - (at 0 -1.16 0) (layer "F.SilkS") - (uuid "4273c438-7a73-48a8-b991-d8858a57a019") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "100nF" - (at 0 1.16 0) - (layer "F.Fab") - (uuid "35d02335-fd85-4ea7-a618-392846624bc5") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "1843df0d-ff7b-49dd-8d90-91a4a6371b32") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "e4b58d48-acb5-4f75-95aa-64ceaf33e9b0") - (effects - (font - (size 1.27 1.27) - ) - ) + (uuid "3845e3bc-26ec-491b-9a57-9b06f81a0bd0") ) - (property "LCSC" "C1525" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "84663273-7567-49d5-b75b-1dcb4484aa37") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start 7.62 3.92) + (end 0.3 3.92) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "3bd70e4f-24cc-4f0c-9cb6-656916b19021") ) - (property ki_fp_filters "C_*") - (path "/b36ba817-34a0-4f27-bcd8-584786b3b47e") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") + (fp_line + (start -0.3 3.92) + (end -3.12 3.92) + (stroke + (width 0.12) + (type solid) ) + (layer "F.SilkS") + (uuid "0d91ea58-5258-4039-8bbf-9d4ebf3db2d9") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -3.12 3.92) + (end -3.12 -4.12) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e02abab8-c410-4000-b9e3-ca6a75da46a9") + (uuid "8ea9ab96-68e7-4847-8404-d75abde9bffc") ) - (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (fp_poly + (pts + (xy 0 3.92) (xy 0.44 4.53) (xy -0.44 4.53) + ) (stroke (width 0.12) (type solid) ) + (fill yes) (layer "F.SilkS") - (uuid "74116b03-750c-4d80-bd8f-53351f16e947") + (uuid "5ad7a017-78d1-4756-9dab-a1702e9afdab") ) (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (start -3.5 -4.5) + (end 8 4.31) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "6804988e-7693-4ded-8ea5-62b56a79a6d7") + (uuid "b26a9927-0439-4f83-8e07-1ecbe304dd27") ) - (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (fp_line + (start 7.5 -4) + (end 7.5 3.8) (stroke (width 0.1) (type solid) ) - (fill no) (layer "F.Fab") - (uuid "f37655a2-9992-46a7-a0da-93f458a3ffa8") + (uuid "cba50398-a417-4361-89a7-7fecdb54f0d8") ) - (fp_text user "${REFERENCE}" - (at 0 0 0) - (layer "F.Fab") - (uuid "45a4b96e-1199-440f-8e39-087536b4f3dd") - (effects - (font - (size 0.25 0.25) - (thickness 0.04) - ) + (fp_line + (start -3 -4) + (end 7.5 -4) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "f22da373-154b-4d91-8fa0-f597c1f492c5") ) - (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "+3.3V") - (pintype "passive") - (uuid "1aa20500-e770-4665-8dc7-635ae98bb4fc") + (fp_line + (start 6.018 -1.213) + (end 3.787 1.018) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f3319656-8e89-4c2e-872d-1fd53ce72f04") ) - (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "GND") - (pintype "passive") - (uuid "6e7646b8-5efc-461f-b093-e545536c26af") + (fp_line + (start 1.018 -1.213) + (end -1.213 1.018) + (stroke + (width 0.1) + (type solid) + ) + (layer "F.Fab") + (uuid "f8b3d19a-4e7f-4efd-bbc1-f833dea1d220") ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" - (offset - (xyz 0 0 0) + (fp_line + (start 6.213 -1.018) + (end 3.982 1.213) + (stroke + (width 0.1) + (type solid) ) - (scale - (xyz 1 1 1) + (layer "F.Fab") + (uuid "980995d7-1a23-44d0-940c-482d7b7281c7") + ) + (fp_line + (start 1.213 -1.018) + (end -1.018 1.213) + (stroke + (width 0.1) + (type solid) ) - (rotate - (xyz 0 0 0) + (layer "F.Fab") + (uuid "a251b55f-1e27-4382-b909-90da211dcbe0") + ) + (fp_line + (start -3 -0.5) + (end 7.5 -0.5) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "613ea7b6-f482-4678-9055-f3dfd7b52579") ) - ) - (footprint "Resistor_SMD:R_0402_1005Metric" - (layer "F.Cu") - (uuid "dae362ec-6a2b-48ea-88c4-dc08223d5243") - (at 139.9675 101.75 180) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R4" - (at 0 -1.17 0) - (layer "F.SilkS") - (hide yes) - (uuid "5bd513c2-7a76-4778-a0df-415196a4e770") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "100R" - (at 0 1.17 0) - (layer "F.Fab") - (hide yes) - (uuid "db3a71ec-359f-49bc-8972-34b849afd642") - (effects - (font - (size 1 1) - (thickness 0.15) - ) + (fp_line + (start -3 0.5) + (end 7.5 0.5) + (stroke + (width 0.1) + (type solid) ) - ) - (property "Datasheet" "" - (at 0 0 0) (layer "F.Fab") - (hide yes) - (uuid "1f157fd5-4961-47ab-a6f6-90c2053f51ab") - (effects - (font - (size 1.27 1.27) - ) - ) + (uuid "6904acdc-7d57-4a51-a8d9-17e4c6ef47a5") ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "50753ced-d6d7-4589-9d99-c2361e205b78") - (effects - (font - (size 1.27 1.27) - ) + (fp_line + (start -3 1.8) + (end 7.5 1.8) + (stroke + (width 0.1) + (type solid) ) - ) - (property "LCSC" "C25076" - (at 0 0 180) - (unlocked yes) (layer "F.Fab") - (hide yes) - (uuid "a2f09ae3-2b09-4ceb-a049-d81dff5d1043") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (uuid "68a1245f-23f7-400a-8375-a15cd4899a4e") ) - (property ki_fp_filters "R_*") - (path "/15e7f11e-276a-42b1-89fc-15ad7725f530") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "2") + (fp_line + (start -3 1.85) + (end -3 -4) + (stroke + (width 0.1) + (type solid) ) + (layer "F.Fab") + (uuid "bc73260d-1892-4b1d-9d5d-233cc8c8cc00") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start 7.5 3.8) + (end -1.05 3.8) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "1a911abc-fa8d-456c-8d9d-6d1f4579dd5c") + (layer "F.Fab") + (uuid "893c6f0d-013e-4c90-88e9-8b334c3f4fea") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -1.05 3.8) + (end -3 1.85) (stroke - (width 0.12) + (width 0.1) (type solid) ) - (layer "F.SilkS") - (uuid "0b163a51-5b1c-4c72-8443-ab3ad126455f") + (layer "F.Fab") + (uuid "4bbe15af-0864-486e-bc87-9072b55f5211") ) - (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (fp_circle + (center 5 0) + (end 6.6 0) (stroke - (width 0.05) + (width 0.1) (type solid) ) (fill no) - (layer "F.CrtYd") - (uuid "ca520f2e-48fe-4ddf-a7c4-c6a08e2cd2a1") + (layer "F.Fab") + (uuid "7ec4e307-c700-4948-8e22-e4aa9e417492") ) - (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (fp_circle + (center 0 0) + (end 1.6 0) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "72a13498-0b11-4bf6-926d-965b332d9f88") + (uuid "eda05b16-5fa8-464e-9134-d06ccebdd466") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 2.25 2.65 90) (layer "F.Fab") - (uuid "d78c5d82-d436-4b8b-8cc0-c8c2740afe8f") + (uuid "d766f108-5fd9-446c-9bdb-31115a342be7") (effects (font - (size 0.26 0.26) - (thickness 0.04) + (size 1 1) + (thickness 0.15) ) ) ) - (pad "1" smd roundrect - (at -0.51 0 180) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_P") + (pad "1" thru_hole roundrect + (at 0 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (roundrect_rratio 0.089286) + (net "/V_IN") + (pinfunction "Pin_1_1") (pintype "passive") - (uuid "523b2f2c-ce97-4742-827a-fba3f52d8dc3") + (uuid "fc0059a9-b3d7-4dd1-90ca-370a57068b16") ) - (pad "2" smd roundrect - (at 0.51 0 180) - (size 0.54 0.64) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/TC1_TP") + (pad "2" thru_hole circle + (at 5 0 90) + (size 2.8 2.8) + (drill 1.3) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "Pin_2_2") (pintype "passive") - (uuid "2a373449-9629-46f4-a321-b869fb9bc9d8") + (uuid "8c1b9a8c-cc20-4b66-b558-109ee4146057") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/TerminalBlock.3dshapes/TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm.step" (offset (xyz 0 0 0) ) @@ -22806,13 +21704,14 @@ ) (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "ddb41f5c-da72-4815-bd7a-ed5d4089c703") - (at 108.5 53) - (property "Reference" "TP23" - (at 0 -1.648 0) + (uuid "b7cebc04-c2b0-4a35-a4d0-ca7a9ba559c0") + (at 72.9 60.5 180) + (property "Reference" "TP2" + (at 0 -1.647999 180) (unlocked yes) (layer "F.SilkS") - (uuid "5a38f608-2475-40ca-8d5a-d2e6074522db") + (hide yes) + (uuid "62dc681e-b9bc-4102-b905-349022b54807") (effects (font (size 1 1) @@ -22820,12 +21719,12 @@ ) ) ) - (property "Value" "ALARM" - (at 0 1.75 0) + (property "Value" "+3V3" + (at 0 1.75 180) (unlocked yes) (layer "F.SilkS") (hide yes) - (uuid "5eeb7aeb-4a61-422f-8f20-920f7aaa5b86") + (uuid "9c6a1c2f-0c99-425b-9f94-e52d5106bee1") (effects (font (size 1 1) @@ -22837,7 +21736,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "ec895d69-122b-48c2-87cc-ffeca4621b26") + (uuid "50eaff55-4f9e-48d0-824e-c2df982bf5b5") (effects (font (size 1.27 1.27) @@ -22848,7 +21747,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "78c437f4-e569-4626-be42-4837638d62c5") + (uuid "18649ebe-c77a-4870-9448-0758b2f60cac") (effects (font (size 1.27 1.27) @@ -22856,7 +21755,7 @@ ) ) (property ki_fp_filters "Pin* Test*") - (path "/69a8b718-f639-4a3c-ab86-1974c857c27c") + (path "/80dc827b-8a31-44d0-bd68-12166fbf7fe6") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -22867,130 +21766,117 @@ ) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.95) - (end 0.95 -0.95) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "e7836b22-1d13-47e2-9f95-10d9afea0c35") + (uuid "732b458e-888f-460a-ba33-95e9b1822465") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.95) + (start 0.95 -0.949999) + (end 0.95 0.95) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "ba3d109e-e7f2-486d-af82-9b51e931c25c") + (uuid "29838606-850f-493f-bafc-9b9ab0b8902b") ) (fp_line - (start 0.95 -0.95) - (end 0.95 0.95) + (start -0.95 0.95) + (end -0.95 -0.949999) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "d9a6048b-f58c-4a2e-bc3c-b328c9d1e5ca") + (uuid "59bd9cf4-ba8e-42dc-884d-988d81554c9b") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -0.95 -0.949999) + (end 0.95 -0.949999) (stroke (width 0.12) (type default) ) (layer "F.SilkS") - (uuid "b6e8a3c8-1463-45d6-b477-60c3afd994c8") + (uuid "a15b9139-75c9-49a2-bde1-b842a08e1f7c") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "25e56ea7-3ca8-45d8-bf9e-61f5e1b58c75") + (uuid "853c8b45-3590-4d2a-8481-efacc5b5e8a7") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "5d533183-0d1a-4207-ae42-7a6f9b880c49") + (uuid "49d3594f-ec80-400f-b7d9-1405762b096c") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "8626910d-2c07-4cca-94ab-8f008ff72071") + (uuid "d63c03d6-f0d6-4467-9f57-5b784ff2aaa9") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) (type default) ) (layer "F.CrtYd") - (uuid "f99354e7-e82c-42f9-9cae-d5b145df9462") - ) - (fp_text user "${REFERENCE}" - (at 0 -1.65 0) - (unlocked yes) - (layer "F.Fab") - (uuid "fe55294b-3003-430e-8028-c0e5cf71fb45") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) + (uuid "2792b15c-c079-4036-9545-7316946721f8") ) (pad "1" smd rect - (at 0 0) + (at 0 0 180) (size 1.5 1.5) (layers "F.Cu" "F.Mask") - (net "/ALARM") + (net "+3.3V") (pinfunction "1_1") (pintype "passive") - (uuid "70ffa336-7744-44e5-a650-e4f315b4b433") + (uuid "fa20f589-3177-4a8a-852c-86d7df26b382") ) (embedded_fonts no) ) - (footprint "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" + (footprint "Button_Switch_THT:SW_PUSH_6mm_H5mm" (layer "F.Cu") - (uuid "e03c2a8f-5981-470f-9d79-dad41001db10") - (at 78.1 93.93) - (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row") - (tags "Through hole pin header THT 1x04 2.54mm single row") - (property "Reference" "J5" - (at 0 -2.38 0) - (layer "F.SilkS") - (uuid "00a25186-255d-4466-b1d1-875eb011be76") - (effects - (font - (size 1 1) + (uuid "b94f9b9d-bff7-4964-9783-97164c09062f") + (at 111.5 74.5) + (descr "tactile push button, 6x6mm e.g. PHAP33xx series, height=5mm") + (tags "tact sw push 6mm") + (property "Reference" "SW2" + (at 3.25 -2 0) + (layer "F.SilkS") + (uuid "6d03f0e0-ae75-4042-bb7f-94221d73d73e") + (effects + (font + (size 1 1) (thickness 0.15) ) ) ) - (property "Value" "OLED 128x64 I2C" - (at 0 10 0) + (property "Value" "BOOT" + (at 3.75 6.7 0) (layer "F.Fab") - (hide yes) - (uuid "eb9b5f0f-9885-4a4f-b0c3-3789db422fdd") + (uuid "1b9ebe93-28a5-4fc1-8da4-66147a477c60") (effects (font (size 1 1) @@ -23000,32 +21886,36 @@ ) (property "Datasheet" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "befd888e-9921-4b4d-afdb-44514ee8c551") + (uuid "15d8bde5-c68f-4409-9c8c-fd1adcedade7") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) (property "Description" "" (at 0 0 0) + (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "9150eb14-fe3c-4205-a3fc-fca8bf16435e") + (uuid "3e839c3f-8414-4c77-8f80-125880b8fb9d") (effects (font (size 1.27 1.27) + (thickness 0.15) ) ) ) - (property "LCSC" "C2691448" + (property "LCSC" "C111609" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "66510a4c-5b45-4307-8b30-a381540cf71e") + (uuid "2ad34d22-5e8d-4868-b476-6cfc70f34d01") (effects (font (size 1 1) @@ -23033,143 +21923,242 @@ ) ) ) - (property ki_fp_filters "Connector*:*_1x??_*") - (path "/ff5a4fae-c51b-4ab1-82c0-9d3c76f77d6f") + (path "/3a1fa904-f175-46fb-a7f4-b90010f54b5d") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1" "2" "3" "4") + (pins "1" "2") ) ) (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -1.38 -1.38) - (end 0 -1.38) + (start -0.25 1.5) + (end -0.25 3) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "09772007-99a6-418c-b120-228b49105ee8") + (uuid "6e33593e-3872-4a0e-a8b0-134f3f64f8c5") ) (fp_line - (start -1.38 0) - (end -1.38 -1.38) + (start 1 5.5) + (end 5.5 5.5) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e05e23d9-c388-4112-8e29-ad6dd7c3f266") + (uuid "6315fbde-0f36-4786-b2b4-d8e8a38ae2e4") ) (fp_line - (start -1.38 1.27) - (end -1.38 9) + (start 5.5 -1) + (end 1 -1) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "1e3143e1-86d8-403b-970b-1e2bee24ed0f") + (uuid "98250b06-d502-4caf-9279-a6928b368a2a") ) (fp_line - (start -1.38 1.27) - (end 1.38 1.27) + (start 6.75 3) + (end 6.75 1.5) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e878dcd4-4d78-4117-9f47-3b1762192a95") + (uuid "e12daf7a-dcc1-4998-b64f-5dfc808adb42") ) (fp_line - (start -1.38 9) - (end 1.38 9) + (start -1.5 -1.5) + (end -1.25 -1.5) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "2339ff01-24cd-48ed-b2c7-e997f32b3c21") + (layer "F.CrtYd") + (uuid "524e6713-ffb0-41ef-846a-5f268d8072fd") ) (fp_line - (start 1.38 1.27) - (end 1.38 9) + (start -1.5 -1.25) + (end -1.5 -1.5) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "42cbc7d1-12af-41ec-b2d6-aa57751655ae") + (layer "F.CrtYd") + (uuid "1dd6b95a-602a-416a-92f9-8ac30c4290db") ) - (fp_rect - (start -1.77 -1.77) - (end 1.77 9.39) + (fp_line + (start -1.5 5.75) + (end -1.5 -1.25) (stroke (width 0.05) (type solid) ) - (fill no) (layer "F.CrtYd") - (uuid "4504f369-43e6-4bdb-be46-d767df86b00f") + (uuid "586bcec8-9ae5-41bf-bbd2-78339a04375b") ) (fp_line - (start -1.27 -0.635) - (end -0.635 -1.27) + (start -1.5 5.75) + (end -1.5 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "3327541d-9b69-457b-8a3f-b2d4ca12db47") + ) + (fp_line + (start -1.5 6) + (end -1.25 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "55971d56-e304-4bd3-a21a-6bc8e874fce6") + ) + (fp_line + (start -1.25 -1.5) + (end 7.75 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5df85a2c-e522-4b65-85f4-b446ac81b7fc") + ) + (fp_line + (start 7.75 -1.5) + (end 8 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "ef0f5a71-921f-4265-b743-1270c786a25d") + ) + (fp_line + (start 7.75 6) + (end -1.25 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "223e1937-1f63-4291-a950-8ef792ef7203") + ) + (fp_line + (start 7.75 6) + (end 8 6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "5a531fe4-aa23-4e16-ad30-9b4b6106d5b0") + ) + (fp_line + (start 8 -1.5) + (end 8 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "a2dbb949-a28f-4624-91a4-356100bcd0f9") + ) + (fp_line + (start 8 -1.25) + (end 8 5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7c916eb0-d564-45aa-8912-6db08e21aff2") + ) + (fp_line + (start 8 6) + (end 8 5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "32404a65-1acd-4c21-ab49-9719c960a981") + ) + (fp_line + (start 0.25 -0.75) + (end 3.25 -0.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "cf2eea20-945f-4733-8603-608535093525") + (uuid "7b381bd6-7d64-47e9-8958-48e65f3207fe") ) (fp_line - (start -1.27 8.89) - (end -1.27 -0.635) + (start 0.25 5.25) + (end 0.25 -0.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "0f300d06-8bd2-4a3b-a2f4-7738b13b309b") + (uuid "87597981-1225-4b5a-bd4a-9ce1f9be1d0a") ) (fp_line - (start -0.635 -1.27) - (end 1.27 -1.27) + (start 3.25 -0.75) + (end 6.25 -0.75) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "3bcd0ac0-8e26-457f-8bbd-f3a050cbef60") + (uuid "14735116-1bbf-47ba-9349-9c86cf85b827") ) (fp_line - (start 1.27 -1.27) - (end 1.27 8.89) + (start 6.25 -0.75) + (end 6.25 5.25) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "936dc7ea-5f7e-446d-ae43-de2164695b3a") + (uuid "4239a619-02d6-4173-ae6b-a0aabe4f6e61") ) (fp_line - (start 1.27 8.89) - (end -1.27 8.89) + (start 6.25 5.25) + (end 0.25 5.25) (stroke (width 0.1) (type solid) ) (layer "F.Fab") - (uuid "dfc6a7a8-381e-4488-bec2-a4cc82888e28") + (uuid "0d906fe5-2109-4b4d-8a9b-3e4d1ad1f0c9") + ) + (fp_circle + (center 3.25 2.25) + (end 1.25 2.5) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "4e32402d-2bae-487b-8dcb-3a4b81f79318") ) (fp_text user "${REFERENCE}" - (at 0 3.81 90) + (at 3.25 2.25 0) (layer "F.Fab") - (uuid "b419c283-0660-4576-a5cd-e9adc38d2b48") + (uuid "3051e2a9-c636-470e-b1fa-0d08543add14") (effects (font (size 1 1) @@ -23177,52 +22166,52 @@ ) ) ) - (pad "1" thru_hole rect - (at 0 0) - (size 1.7 1.7) - (drill 1) + (pad "1" thru_hole circle + (at 0 0 90) + (size 2 2) + (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) (net "GND") - (pinfunction "Pin_1_1") + (pinfunction "1_1") (pintype "passive") - (uuid "fc776b0a-4d05-4ca8-8e63-38b80c1c5400") + (uuid "e287d60b-8236-4b0d-bd2a-db18cd50fee6") ) - (pad "2" thru_hole circle - (at 0 2.54) - (size 1.7 1.7) - (drill 1) + (pad "1" thru_hole circle + (at 6.5 0 90) + (size 2 2) + (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) - (net "+3.3V") - (pinfunction "Pin_2_2") + (net "GND") + (pinfunction "1_1") (pintype "passive") - (uuid "69520ef2-7fe3-4472-b7bc-3a5226fa0db1") + (uuid "74ef04e1-fcdd-4f6d-bc07-a9a56bd1606b") ) - (pad "3" thru_hole circle - (at 0 5.08) - (size 1.7 1.7) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/I2C_SCL") - (pinfunction "Pin_3_3") + (pad "2" thru_hole circle + (at 0 4.5 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/ESP32_IO0") + (pinfunction "2_2") (pintype "passive") - (uuid "8daa92a9-0e26-43f8-ab3c-9d02cb918ab0") + (uuid "357c2249-ece3-4981-a379-5f9c7eeccc9c") ) - (pad "4" thru_hole circle - (at 0 7.62) - (size 1.7 1.7) - (drill 1) + (pad "2" thru_hole circle + (at 6.5 4.5 90) + (size 2 2) + (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) - (net "/I2C_SDA") - (pinfunction "Pin_4_4") + (net "/ESP32_IO0") + (pinfunction "2_2") (pintype "passive") - (uuid "b97881ca-7969-4785-bc99-83f61e29cc16") + (uuid "d27b1498-b0d9-49b2-bfe1-77772a3ec1da") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.step" + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_THT.3dshapes/SW_PUSH_6mm_H5mm.step" (offset (xyz 0 0 0) ) @@ -23234,17 +22223,17 @@ ) ) ) - (footprint "Capacitor_SMD:C_0402_1005Metric" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "e5cb2abf-c632-4496-a59f-122b648b7b68") - (at 130.835 96) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C17" - (at 0 -1.16 0) + (uuid "baa15438-2050-447a-88aa-2ed1b6ae7db1") + (at 135.78 60.26 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R14" + (at 0 -1.17 90) (layer "F.SilkS") (hide yes) - (uuid "ea1f8076-aefd-49c1-bb1f-30b00425757b") + (uuid "e16fdff6-bdbd-455b-9854-cc93d3ddc00d") (effects (font (size 1 1) @@ -23252,11 +22241,11 @@ ) ) ) - (property "Value" "100nF" - (at 0 1.16 0) + (property "Value" "10k" + (at 0 1.17 90) (layer "F.Fab") (hide yes) - (uuid "9b1b986d-a49c-41aa-8aa3-055062830230") + (uuid "470c0f3f-46e9-4a0c-8bbd-f661d9fd212e") (effects (font (size 1 1) @@ -23265,10 +22254,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "f5acabe8-5a85-4253-9e1b-23b25e995b49") + (uuid "94833db7-79f1-4ca8-8d50-c08fc045d3a6") (effects (font (size 1.27 1.27) @@ -23276,22 +22265,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "0581238c-46dc-494a-a901-c9569384e79d") + (uuid "968db157-10ca-4b98-93e5-19b6d3779bdb") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C1525" - (at 0 0 0) + (property "LCSC" "C25744" + (at 0 0 270) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "619f34c4-1d28-4ce5-ba7c-52688253e78b") + (uuid "75e23046-2ceb-462a-9290-41e03e2023b8") (effects (font (size 1 1) @@ -23299,8 +22288,8 @@ ) ) ) - (property ki_fp_filters "C_*") - (path "/713eebb3-7ff9-4e99-aa79-6157a983f50b") + (property ki_fp_filters "R_*") + (path "/523f474c-03ad-4648-8a06-189ef3cbdab6") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -23312,78 +22301,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.107836 -0.36) - (end 0.107836 -0.36) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "e459cc03-116c-4fe9-9b7a-b470a3cd9218") + (uuid "d72ac103-695d-4f5c-af94-ed7e989b039f") ) (fp_line - (start -0.107836 0.36) - (end 0.107836 0.36) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "a2733f5e-2308-4c55-b310-ab0218b56497") + (uuid "8c780973-8234-4a7d-9ad4-598ba1739c17") ) (fp_rect - (start -0.91 -0.46) - (end 0.91 0.46) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "7f602aac-fab3-4f53-8c10-6118cc20aca1") + (uuid "02de5322-3a54-4efc-808e-61b3c64dde73") ) (fp_rect - (start -0.5 -0.25) - (end 0.5 0.25) + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "eeff485f-62b3-4c7d-9958-42ef6a8c8abf") + (uuid "20b46243-73a3-422f-bb7d-7ffc9ac1299c") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "bdebd4f5-d2c8-4a05-acf4-5add499debae") + (uuid "1d309f3c-d338-43bb-b364-ca53e971115e") (effects (font - (size 0.25 0.25) + (size 0.26 0.26) (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.48 0) - (size 0.56 0.62) + (at -0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "+3.3V") + (net "Net-(Q1-G)") (pintype "passive") - (uuid "1592c14b-0be8-46c7-9df0-3f8b2796aeec") + (uuid "de5b2cca-1761-4ece-bb37-5511c7d15ddd") ) (pad "2" smd roundrect - (at 0.48 0) - (size 0.56 0.62) + (at 0.51 0 270) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "9884516e-3795-4311-b2d2-7c3330a690b5") + (uuid "b907c8a6-e754-4f4d-aadc-c7b7e557a2ca") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -23395,33 +22384,33 @@ ) ) ) - (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (footprint "Capacitor_SMD:CP_Elec_6.3x7.7" (layer "F.Cu") - (uuid "ec910917-910c-46b9-9204-738a6a001e44") - (at 84 71) - (property "Reference" "TP7" - (at 0 -1.648 0) - (unlocked yes) + (uuid "bb881fbb-bd11-48b6-aef8-2c59cf173f53") + (at 67.75 49.75) + (descr "SMD capacitor, aluminum electrolytic, Nichicon, 6.3x7.7mm") + (tags "capacitor electrolytic") + (property "Reference" "C1" + (at 0 -4.35 0) (layer "F.SilkS") (hide yes) - (uuid "bdeaebf0-580e-4436-859f-72b065353327") + (uuid "8b0e935d-0886-473e-b279-ffdc18e939bf") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) - (property "Value" "SPI_MOSI" - (at 0 1.75 0) - (unlocked yes) - (layer "F.SilkS") + (property "Value" "100uF 16V" + (at 0 4.35 0) + (layer "F.Fab") (hide yes) - (uuid "75ab1f75-2531-4ce2-a243-beee09984b7c") + (uuid "5d08a713-cb5f-43b3-87d4-b55eb5f76313") (effects (font (size 1 1) - (line_spacing 0) + (thickness 0.15) ) ) ) @@ -23429,7 +22418,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "7c7b42ab-1b9a-433e-bbac-6b1071bb18db") + (uuid "9a59e5ce-bdc5-4e90-b883-9b713b1e6c18") (effects (font (size 1.27 1.27) @@ -23440,488 +22429,400 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "c83a5ce5-393b-482a-86f3-5b9eb61798f4") + (uuid "b558bba6-3048-4c60-9f0d-baab02862244") (effects (font (size 1.27 1.27) ) ) ) - (property ki_fp_filters "Pin* Test*") - (path "/34b262da-bfea-4f2b-9a04-fb876ae3d712") + (property "LCSC" "C231174" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "3695e244-3efd-4758-93b2-8f283b897385") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "CP_*") + (path "/e0a9064d-6664-44c6-a559-ab65851b0e55") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "1") + (pins "1" "2") ) ) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.95 -0.950001) - (end 0.95 -0.950001) + (start -4.4375 -1.8475) + (end -3.65 -1.8475) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "67811736-a6f9-4c50-9b56-9381076e667a") + (uuid "519031c4-abaa-4055-9bf2-7e19b83d4783") ) (fp_line - (start -0.95 0.95) - (end -0.95 -0.950001) + (start -4.04375 -2.24125) + (end -4.04375 -1.45375) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "97116891-565f-4120-aa0c-47e8c1165c43") + (uuid "ca3c39c3-1bca-4077-8440-8061a83dc4b2") ) (fp_line - (start 0.95 -0.950001) - (end 0.95 0.95) + (start -3.41 -2.345563) + (end -3.41 -1.06) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "37d5272a-cc2f-49b1-855b-17d8cb8d4312") + (uuid "a8a8eaab-0d82-4062-ad7a-2be81eb36a7e") ) (fp_line - (start 0.95 0.95) - (end -0.95 0.95) + (start -3.41 -2.345563) + (end -2.345563 -3.41) (stroke (width 0.12) - (type default) + (type solid) ) (layer "F.SilkS") - (uuid "388f0ded-35fb-4108-9914-86133573dc3f") + (uuid "37629c17-88be-441a-8ed6-3976d2ff5c8f") ) (fp_line - (start -1.25 -1.25) - (end -1.25 1.25) + (start -3.41 2.345563) + (end -3.41 1.06) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "9b927d0a-a849-464c-b9c9-002cbaf88772") + (layer "F.SilkS") + (uuid "02322c1c-45e1-41ff-a109-06c5eac0a82e") ) (fp_line - (start -1.25 -1.25) - (end 1.25 -1.25) + (start -3.41 2.345563) + (end -2.345563 3.41) (stroke - (width 0.05) - (type default) + (width 0.12) + (type solid) ) - (layer "F.CrtYd") - (uuid "7f774137-08af-4502-88eb-8083cf6d6ad9") + (layer "F.SilkS") + (uuid "574f6223-e678-4153-9420-366745f2a57f") ) (fp_line - (start 1.25 1.25) - (end -1.25 1.25) + (start -2.345563 -3.41) + (end 3.41 -3.41) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "fe4af205-4a36-4319-94f5-30cd26d7dc67") + ) + (fp_line + (start -2.345563 3.41) + (end 3.41 3.41) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0a1e9842-b7bb-4045-b123-66a74be2ecac") + ) + (fp_line + (start 3.41 -3.41) + (end 3.41 -1.06) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9a56797e-fc9b-452a-af26-b2c1f49ff39a") + ) + (fp_line + (start 3.41 3.41) + (end 3.41 1.06) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2d20ecb3-2ea5-4d48-b124-ac8db8ff220f") + ) + (fp_line + (start -4.7 -1.05) + (end -4.7 1.05) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "c780a21b-6ec2-4a13-8753-5d9a58750568") + (uuid "3be153db-4c96-4b80-9522-5f683decdf52") ) (fp_line - (start 1.25 1.25) - (end 1.25 -1.25) + (start -4.7 1.05) + (end -3.55 1.05) (stroke (width 0.05) - (type default) + (type solid) ) (layer "F.CrtYd") - (uuid "ee92ceb2-7e49-462a-ae4a-e8977f2ae3bd") - ) - (pad "1" smd rect - (at 0 0) - (size 1.5 1.5) - (layers "F.Cu" "F.Mask") - (net "/SPI_MOSI") - (pinfunction "1_1") - (pintype "passive") - (uuid "05a1b141-6bd9-4b35-b205-09bf0478e562") - ) - (embedded_fonts no) - ) - (footprint "Package_TO_SOT_SMD:SOT-23" - (layer "F.Cu") - (uuid "ef4b9aa8-7839-4a16-9fd9-ecea7169ace4") - (at 131.4375 48.3) - (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") - (tags "SOT TO_SOT_SMD") - (property "Reference" "Q3" - (at 0 -2.4 0) - (layer "F.SilkS") - (hide yes) - (uuid "3511bc8b-1811-4f53-b806-165e24aa2f12") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "AO3400A" - (at 0 2.4 0) - (layer "F.Fab") - (hide yes) - (uuid "81cb7a5b-f779-46b0-9d36-58f9a78f622b") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "d7d3c2bc-c6ae-4e75-ba13-f83742bafca5") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 0 0 0) - (layer "F.Fab") - (hide yes) - (uuid "57d6f2c6-ec6e-4b98-babd-d715864febe8") - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C20917" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "79906dd4-fdbd-4e57-bea8-89542e29db89") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (path "/b5a0af6d-8529-4e0c-aeaa-0573721c9f95") - (sheetname "/") - (sheetfile "kilncontrol.kicad_sch") - (units - (unit - (name "A") - (pins "1" "3" "2") - ) + (uuid "89686447-1cf1-4e8a-87b0-32f6d5a01965") ) - (attr smd) - (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.76 -1.56) - (end 0.76 -1.56) + (start -3.55 -2.4) + (end -3.55 -1.05) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "27d315d4-c059-4f3a-ab65-b289fac86f62") + (layer "F.CrtYd") + (uuid "812599c0-3df7-4d93-801b-352fdaa15e4e") ) (fp_line - (start -0.76 -1.51) - (end -0.76 -1.56) + (start -3.55 -2.4) + (end -2.4 -3.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "9f3e9466-5be9-4c60-800d-007b7ae4cf96") + (layer "F.CrtYd") + (uuid "9650d7a0-42e0-4c35-935e-ec98c4f0a028") ) (fp_line - (start -0.76 0.39) - (end -0.76 -0.39) + (start -3.55 -1.05) + (end -4.7 -1.05) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "62c6a128-5a76-4bf2-992b-a35e3d6492c7") + (layer "F.CrtYd") + (uuid "999c228e-a34c-4e58-8ad7-5d7e6f33a0ba") ) (fp_line - (start -0.76 1.56) - (end -0.76 1.51) + (start -3.55 1.05) + (end -3.55 2.4) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "0640cba3-3095-4aa6-b0d2-337fbf6e9d9d") + (layer "F.CrtYd") + (uuid "b6e8079b-8928-456f-b899-827a9d21fbba") ) (fp_line - (start 0.76 -1.56) - (end 0.76 -0.56) + (start -3.55 2.4) + (end -2.4 3.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "a46e1a94-57a6-4042-8240-982844d9ed6c") + (layer "F.CrtYd") + (uuid "4f117d79-efd8-42d0-9b20-32d89499bedc") ) (fp_line - (start 0.76 0.56) - (end 0.76 1.56) + (start -2.4 -3.55) + (end 3.55 -3.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "7a0377e6-612d-4bb2-8233-89b9eff6ef2f") + (layer "F.CrtYd") + (uuid "c129cba9-f9be-45c3-a029-58cbf8951583") ) (fp_line - (start 0.76 1.56) - (end -0.76 1.56) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.SilkS") - (uuid "c2589174-874d-4d89-8e1c-7ec54f67090d") - ) - (fp_poly - (pts - (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) - ) + (start -2.4 3.55) + (end 3.55 3.55) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (fill yes) - (layer "F.SilkS") - (uuid "3518be40-e3f7-43fc-b1b7-24e33c281148") + (layer "F.CrtYd") + (uuid "fa64b351-5b4e-440e-b482-d5e3175e0f27") ) (fp_line - (start -1.93 -1.5) - (end -0.9 -1.5) + (start 3.55 -3.55) + (end 3.55 -1.05) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "f06b5583-10d6-4bf5-ac9c-6ff3f89cc97a") + (uuid "2998765b-472d-4507-b5bc-59ac5f5eec4c") ) (fp_line - (start -1.93 -0.39) - (end -1.93 -1.5) + (start 3.55 -1.05) + (end 4.7 -1.05) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "31c5044e-90d6-4631-a5e8-50a20bf89b42") + (uuid "b37f0390-5595-421f-bb36-a149bd71f11d") ) (fp_line - (start -1.93 0.39) - (end -0.9 0.39) + (start 3.55 1.05) + (end 3.55 3.55) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "3d18eef5-bd9f-403e-8f01-ef904b17b9fb") + (uuid "ce527bb9-7fc2-4872-942d-0b87967ba1b5") ) (fp_line - (start -1.93 1.5) - (end -1.93 0.39) + (start 4.7 -1.05) + (end 4.7 1.05) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "1b292746-ed3b-42e4-908c-121d817093df") + (uuid "3214ea91-ea14-4b11-b899-ebbfad0002f7") ) (fp_line - (start -0.9 -1.7) - (end 0.9 -1.7) + (start 4.7 1.05) + (end 3.55 1.05) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "180e9e8d-ecbd-4691-9dc2-0f3d855b276e") + (uuid "096b4391-0ca8-4022-8b63-521dfa534838") ) (fp_line - (start -0.9 -1.5) - (end -0.9 -1.7) + (start -3.3 -2.3) + (end -3.3 2.3) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "64e28ef3-9a5c-4c7f-8601-a2e90e1888ae") + (layer "F.Fab") + (uuid "4c688ae2-6e10-4c08-b224-76b90761bcfc") ) (fp_line - (start -0.9 -0.39) - (end -1.93 -0.39) + (start -3.3 -2.3) + (end -2.3 -3.3) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "18df4980-c3f2-4eee-8d10-cc70a3ee42c9") + (layer "F.Fab") + (uuid "7af8da6d-c1a3-4549-99e5-adfb25b87179") ) (fp_line - (start -0.9 0.39) - (end -0.9 -0.39) + (start -3.3 2.3) + (end -2.3 3.3) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "22a19a4e-d361-41e8-97de-63e776689b57") + (layer "F.Fab") + (uuid "592c7ae4-39d9-447a-8969-6b7f5a85ee29") ) (fp_line - (start -0.9 1.5) - (end -1.93 1.5) + (start -2.704838 -1.33) + (end -2.074838 -1.33) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "bd69815a-b5fd-4117-912c-5e462322e349") + (layer "F.Fab") + (uuid "13a04161-fd5f-4e71-bcba-099e0fc5113e") ) (fp_line - (start -0.9 1.7) - (end -0.9 1.5) + (start -2.389838 -1.645) + (end -2.389838 -1.015) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "7070f16e-0dd7-42ac-a6e5-175b5fe54d99") + (layer "F.Fab") + (uuid "e881ccca-d19c-4d90-9035-d9159a6cec2c") ) (fp_line - (start 0.9 -1.7) - (end 0.9 -0.55) + (start -2.3 -3.3) + (end 3.3 -3.3) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "b5271df0-a247-4b71-ab5a-ddd7d48793f9") - ) - (fp_line - (start 0.9 -0.55) - (end 1.93 -0.55) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "cab7a038-1d55-434c-9f7a-ac24fe25ac5d") - ) - (fp_line - (start 0.9 0.55) - (end 0.9 1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "bbb18c37-84a3-4a75-b6d2-d843ea825f66") - ) - (fp_line - (start 0.9 1.7) - (end -0.9 1.7) - (stroke - (width 0.05) - (type solid) - ) - (layer "F.CrtYd") - (uuid "23bae6ad-aff4-4dde-b502-42c37835e55d") + (layer "F.Fab") + (uuid "de05e648-fbf4-4576-94d6-8647e3f3b656") ) (fp_line - (start 1.93 -0.55) - (end 1.93 0.55) + (start -2.3 3.3) + (end 3.3 3.3) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "232350f6-27aa-4ad2-afb2-cdf4344c6fcd") + (layer "F.Fab") + (uuid "50581397-760f-4fde-b214-fe4cb7a3adf5") ) (fp_line - (start 1.93 0.55) - (end 0.9 0.55) + (start 3.3 -3.3) + (end 3.3 3.3) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "F.CrtYd") - (uuid "c707f8f3-1256-4a6d-bba6-7abdc51e57fc") + (layer "F.Fab") + (uuid "19e1868a-dc9f-4e34-b02b-67405a2be03f") ) - (fp_poly - (pts - (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) - ) + (fp_circle + (center 0 0) + (end 3.15 0) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "699fd1f5-fda4-410a-b320-7c71092bb9df") + (uuid "0dcb40be-7d75-4065-b78a-bf86f473938b") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") - (uuid "5244b2fe-a753-44aa-b86b-42c634bb877c") + (uuid "25ce49d9-983e-433d-bd33-f7453d3a41bc") (effects (font - (size 0.72 0.72) - (thickness 0.11) + (size 1 1) + (thickness 0.15) ) ) ) (pad "1" smd roundrect - (at -0.9375 -0.95) - (size 1.475 0.6) - (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/HEAT_EN_DC") - (pinfunction "G_1") - (pintype "input") - (uuid "f3c89bd0-fc0c-4af6-b068-9b3e8b1f00e5") - ) - (pad "2" smd roundrect - (at -0.9375 0.95) - (size 1.475 0.6) + (at -2.7 0) + (size 3.5 1.6) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/COIL_RTN1") - (pinfunction "S_2") + (roundrect_rratio 0.15625) + (net "+5V") (pintype "passive") - (uuid "c949def2-55e1-4d32-9180-53fadb950bd7") + (uuid "e321d3a8-7b00-456d-9215-c3a97c0e2917") ) - (pad "3" smd roundrect - (at 0.9375 0) - (size 1.475 0.6) + (pad "2" smd roundrect + (at 2.7 0) + (size 3.5 1.6) (layers "F.Cu" "F.Mask" "F.Paste") - (roundrect_rratio 0.25) - (net "/COIL_DRV") - (pinfunction "D_3") + (roundrect_rratio 0.15625) + (net "GND") (pintype "passive") - (uuid "6c3db8d6-7429-4668-b289-cc73cb94dc4d") + (uuid "493add2d-c0d4-4fc6-bb55-83f35eadeb17") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/CP_Elec_6.3x7.7.step" (offset (xyz 0 0 0) ) @@ -23933,17 +22834,17 @@ ) ) ) - (footprint "Capacitor_SMD:C_0805_2012Metric" + (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "f08ab202-a3ab-4e98-98a1-b995fe5f68da") - (at 131.535 105.5) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") - (tags "capacitor") - (property "Reference" "C19" - (at 0 -1.68 0) + (uuid "c0782ffa-6fc5-41ef-8f6f-eca5c65718bf") + (at 53.84 88.8) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R11" + (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "19b75b3c-a873-4ee7-a4ab-7ca725fcc9cd") + (uuid "c5367930-4525-44ac-abb0-fd489bb02672") (effects (font (size 1 1) @@ -23951,11 +22852,11 @@ ) ) ) - (property "Value" "10uF" - (at 0 1.68 0) + (property "Value" "10k" + (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "ee705a67-1fdb-4a0a-b128-50db6f0cff58") + (uuid "15bf045f-d3b7-4fc7-9b5f-eb5e4c0b1ae0") (effects (font (size 1 1) @@ -23967,7 +22868,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "751d82a9-7066-45e3-a608-13a6d874317b") + (uuid "8577fe34-9a9c-4de4-b56c-1a1c5d46647a") (effects (font (size 1.27 1.27) @@ -23978,19 +22879,19 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "7d9ba8f4-1ec9-41b7-adf8-5a3311b0b9bd") + (uuid "c52bdde9-22f3-4c11-8c9d-d9e42153b735") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C15850" + (property "LCSC" "C25744" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "17ed3bfd-dcbc-4114-a9d3-8971a2fa2f5c") + (uuid "06364e39-9d36-4284-b81d-fb493ebbd554") (effects (font (size 1 1) @@ -23998,8 +22899,8 @@ ) ) ) - (property ki_fp_filters "C_*") - (path "/17066cb4-1886-41b3-b68c-32caaa2b3092") + (property ki_fp_filters "R_*") + (path "/491dccb6-f66b-4115-bae8-e4c00ebf7f63") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -24011,78 +22912,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.261252 -0.735) - (end 0.261252 -0.735) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "173b5ea5-a733-4395-88b6-9f0f1f1a4b09") + (uuid "b7b47f01-506e-4a46-8c8b-28bded7c9314") ) (fp_line - (start -0.261252 0.735) - (end 0.261252 0.735) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "0e81b596-bd00-4f43-83b4-b2eacb2b622b") + (uuid "e04d73d7-9764-40ba-92c8-f9e1d1309e0d") ) (fp_rect - (start -1.7 -0.98) - (end 1.7 0.98) + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "a0b29744-8eed-460e-8d7c-ddaebdcadc21") + (uuid "46de6edc-d0cb-4581-aec5-8947b67b34fe") ) (fp_rect - (start -1 -0.625) - (end 1 0.625) + (start -0.525 -0.27) + (end 0.525 0.27) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "c7ed7283-e22c-4453-af2e-519b6fee2a99") + (uuid "d4cbc158-c3e9-42ea-83f7-965a2623a897") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "0b2ac20d-8687-41d6-b859-93449bf389f3") + (uuid "6bc329a0-8e43-4d78-b946-6804bfaf7691") (effects (font - (size 0.5 0.5) - (thickness 0.08) + (size 0.26 0.26) + (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.95 0) - (size 1 1.45) + (at -0.51 0) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "+3.3V") (pintype "passive") - (uuid "f59a6697-6ed5-4c06-bf15-bf3e1c03f754") + (uuid "0ba93de0-86e7-4a62-a337-93ea9d1ed1ff") ) (pad "2" smd roundrect - (at 0.95 0) - (size 1 1.45) + (at 0.51 0) + (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "GND") + (net "/ENC_B") (pintype "passive") - (uuid "8d36913b-a8fb-4f7d-9ebb-d0921480613d") + (uuid "b2e12d50-bbe0-49ad-bcb2-0e1dc82c1628") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -24094,17 +22995,17 @@ ) ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "f1e68f96-9151-472b-a0df-5357a0bbf8bd") - (at 60.74 64.25) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R2" - (at 0 -1.17 0) + (uuid "c2fb27c0-d606-4c39-9641-07b5fa1d9f7f") + (at 123.5 85.98 90) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C15" + (at 0 -1.16 90) (layer "F.SilkS") (hide yes) - (uuid "21e3d6bc-0397-46d2-a400-6d5eaf45c694") + (uuid "924b5606-f7be-427c-a589-3d032564f134") (effects (font (size 1 1) @@ -24112,11 +23013,11 @@ ) ) ) - (property "Value" "5.1k" - (at 0 1.17 0) + (property "Value" "100nF" + (at 0 1.16 90) (layer "F.Fab") (hide yes) - (uuid "61a691c4-1736-4dbb-901d-647c4d7cd0d3") + (uuid "8e609834-07ba-4ece-909a-db091d94ebcb") (effects (font (size 1 1) @@ -24125,10 +23026,10 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "c8a8a67d-8ae6-4a6d-b298-660ff0895073") + (uuid "d6dc6f79-bf51-4309-8bf3-ff0806527b70") (effects (font (size 1.27 1.27) @@ -24136,22 +23037,22 @@ ) ) (property "Description" "" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") (hide yes) - (uuid "bc24852a-4e5e-48e6-a200-1f1930a3c75d") + (uuid "fc7413f6-924e-460d-8fbc-f0afe2e3cb44") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25905" - (at 0 0 0) + (property "LCSC" "C26409" + (at 0 0 90) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "9ee26c60-aa62-43a9-a6aa-7849fdc8b4f4") + (uuid "68c0632e-a2e9-47ad-af8d-b793be793b15") (effects (font (size 1 1) @@ -24159,8 +23060,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/7ce1c7a2-8cc7-4225-b901-61baf681b0e4") + (property ki_fp_filters "C_*") + (path "/0f3d0cde-d424-466f-b803-7f970b216823") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -24172,78 +23073,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "7a491a1c-c6e6-4126-9277-1cbd75cfe86f") + (uuid "00890238-dc67-4b5f-a50b-750ece56d1da") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "b02ec7a2-854c-45c4-a20b-5419889a7104") + (uuid "4f289d24-3a36-4699-afce-f2d49c458198") ) (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "a11183e8-d8ae-4d0f-a039-be3e3fb2aecd") + (uuid "368afa90-8882-4e34-9c28-03c81c93be87") ) (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (start -0.5 -0.25) + (end 0.5 0.25) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "e5b59228-4357-4945-a729-c9d26dc28544") + (uuid "cd2aeec7-7c5d-4e56-aca7-5e76e09ec62f") ) (fp_text user "${REFERENCE}" - (at 0 0 0) + (at 0 0 90) (layer "F.Fab") - (uuid "047f0df2-bc7b-4a9b-bb08-77d7040e2073") + (uuid "43ca1a8e-4789-44f5-a244-653bb6708b7c") (effects (font - (size 0.26 0.26) + (size 0.25 0.25) (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) + (at -0.48 0 90) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/USB_CC2") + (net "/SUPERVISOR_RESET") (pintype "passive") - (uuid "310be60e-9490-4f4d-a0fb-5e71c1c763b8") + (uuid "51b046d4-3991-4611-bba6-9b0f45a38c6e") ) (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) + (at 0.48 0 90) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "4e542fe3-bb9f-4963-bea7-e712713ce46c") + (uuid "4a67c322-45e6-43af-a4db-3d673f075bd1") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -24255,16 +23156,17 @@ ) ) ) - (footprint "Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm" + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" (layer "F.Cu") - (uuid "f222e664-a8b3-45da-9641-af695e6d2b52") - (at 54.5 95.75) - (descr "Alps rotary encoder, EC11E... with switch, vertical shaft, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html") - (tags "rotary encoder") - (property "Reference" "SW3" - (at 2.8 -4.7 0) + (uuid "c3c406c8-8153-44fa-938e-962d6e94714c") + (at 126.7 123.2) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP30" + (at 0 -1.648 0) (layer "F.SilkS") - (uuid "a4f50ac0-0f90-4caa-9de8-82faf2da686a") + (hide yes) + (uuid "cbc4d4ea-fc9e-4222-b117-020a72f54796") (effects (font (size 1 1) @@ -24272,10 +23174,11 @@ ) ) ) - (property "Value" "ENCODER" - (at 7.5 10.4 0) + (property "Value" "TC2_FAULT" + (at 0 1.75 0) (layer "F.Fab") - (uuid "4991dc4d-e1a5-48e5-9a61-83e9b57c2b20") + (hide yes) + (uuid "49562e0f-d61a-4bb4-8fe8-595d36054277") (effects (font (size 1 1) @@ -24288,7 +23191,7 @@ (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "b4f7a038-dd99-4fb7-8120-0db8cc9c1c38") + (uuid "b7f17723-2193-4256-bc44-e40d32c1dcea") (effects (font (size 1.27 1.27) @@ -24301,7 +23204,7 @@ (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "ca69e6b8-14bd-43c4-8fc9-be0c1d02c7e1") + (uuid "e9747231-1ca6-46cf-b498-8a97c44e3ae7") (effects (font (size 1.27 1.27) @@ -24309,411 +23212,289 @@ ) ) ) - (property "LCSC" "C7275025" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "f1d26771-4f49-40c4-8da3-05fc928791aa") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property ki_fp_filters "RotaryEncoder*Switch*") - (path "/36485909-9d6f-4245-8e20-98a2e3041944") + (property ki_fp_filters "Pin* Test*") + (path "/6a9ebc65-0658-40f8-96ea-4240945197e7") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units (unit (name "A") - (pins "A" "C" "B" "S1" "S2") + (pins "1") ) ) - (attr through_hole) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.3 -1.6) - (end 0.3 -1.6) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "f785772a-efe3-4df5-a760-6e36395f4cf6") + (uuid "fe3d4869-5f74-4320-8ed8-1afe802a716a") ) (fp_line - (start 0 -1.3) - (end -0.3 -1.6) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "01cf14d8-e297-4185-82e7-1165dcf824a0") + (uuid "e5c790a9-1cdf-4893-b990-35bd3405735e") ) (fp_line - (start 0.3 -1.6) - (end 0 -1.3) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "69fbac71-ffa0-498c-85f2-ebafb5b1e812") + (uuid "abae4b4f-f346-4b05-aefd-4e9cd01b8bba") ) (fp_line - (start 1.4 -3.4) - (end 1.4 8.4) + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "dfbdbfd1-aae7-4f8c-bbc1-f340ca31054e") + (uuid "560db3d2-879a-4fcb-a20f-08482bfddcff") ) (fp_line - (start 5.5 -3.4) - (end 1.4 -3.4) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "356fecbb-157f-42e7-959e-f3f7472dd80d") + (layer "F.CrtYd") + (uuid "e86aac44-7b8b-4525-8f57-5db2dba08d0b") ) (fp_line - (start 5.5 8.4) - (end 1.4 8.4) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "eb0814d4-0b70-4860-b20c-a2088851aacb") + (layer "F.CrtYd") + (uuid "3f15ae1e-823e-4a1d-bd96-4b87d89c549c") ) (fp_line - (start 7 2.5) - (end 8 2.5) + (start 1.25 1.25) + (end -1.25 1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) - (layer "F.SilkS") - (uuid "f8cf723c-8733-4dd8-9d4e-d4af105b3830") + (layer "F.CrtYd") + (uuid "dcf0714c-8dcc-41ab-8884-9c8f50b1447b") ) (fp_line - (start 7.5 2) - (end 7.5 3) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke - (width 0.12) + (width 0.05) (type solid) ) + (layer "F.CrtYd") + (uuid "e21db434-573e-414e-867d-12e59eceef76") + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC2_FAULT") + (pinfunction "1_1") + (pintype "passive") + (uuid "33e2e241-ba61-4321-ab41-c3b5678e8761") + ) + (embedded_fonts no) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "c5e4bde1-6450-4b8e-97fe-34de9e59cd41") + (at 134.3 51.9) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP37" + (at 0 -1.648 0) (layer "F.SilkS") - (uuid "6afdc6e8-24bf-4849-8248-f18a3fd8e079") + (hide yes) + (uuid "56212fcc-0145-4563-93d9-b4cfd9be6744") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) ) - (fp_line - (start 9.5 -3.4) - (end 13.6 -3.4) - (stroke - (width 0.12) - (type solid) + (property "Value" "COIL_FEEDBACK" + (at 0 1.75 0) + (layer "F.Fab") + (hide yes) + (uuid "799600bb-2a62-409a-b3e5-ffe8e23a07f5") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.SilkS") - (uuid "73d812e7-e343-4e4c-a9d7-c0dd9d175fbc") ) - (fp_line - (start 13.6 -3.4) - (end 13.6 -1) - (stroke - (width 0.12) - (type solid) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "213033d7-dc43-4498-9732-5a2de34eccc3") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "9262a99d-9a93-4e8b-8a18-37bea37469b9") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/f054c17e-29b9-43a5-9497-dfaf8a4cde44") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") ) - (layer "F.SilkS") - (uuid "910c04e4-5597-48c5-b946-52b41956fc8c") ) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 13.6 1.2) - (end 13.6 3.8) + (start -0.95 -0.95) + (end 0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "a5a4d420-4ded-437b-90db-1324abee8265") + (uuid "f9e43583-c6de-4f24-b82a-c4f030bc7529") ) (fp_line - (start 13.6 6) - (end 13.6 8.4) + (start -0.95 0.95) + (end -0.95 -0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "16666dce-f053-4419-8509-f3ce77d09f40") + (uuid "94d508cb-109d-4558-a580-00b6188a9337") ) (fp_line - (start 13.6 8.4) - (end 9.5 8.4) + (start 0.95 -0.95) + (end 0.95 0.95) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "f83cfb26-f391-4383-95af-26728d7359eb") + (uuid "5a064a92-14fc-4276-a086-aab001b5a7ba") ) - (fp_circle - (center 7.5 2.5) - (end 10.5 2.5) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) (stroke (width 0.12) (type solid) ) - (fill no) (layer "F.SilkS") - (uuid "7a998892-b0ca-4dd7-bd79-54276c2a716e") + (uuid "daa77582-a72a-4d38-812f-5d992fb61445") ) (fp_line - (start -1.5 -4.6) - (end -1.5 9.6) + (start -1.25 -1.25) + (end -1.25 1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "28ff7ac9-f90a-43b7-a72c-43891ed481a7") + (uuid "9b616da3-fda3-4f7c-b9d1-826070c2af1b") ) (fp_line - (start -1.5 -4.6) - (end 16 -4.6) + (start -1.25 -1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "b092f9bc-e760-4f7f-8c32-0d6d103c25d5") + (uuid "010965ff-2a12-4cce-8a4c-503e7408b33e") ) (fp_line - (start 16 9.6) - (end -1.5 9.6) + (start 1.25 1.25) + (end -1.25 1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "351526bc-60c8-4fa5-8658-74e277fb5b92") + (uuid "0aa550b1-6449-490e-ba8a-118f2bbceade") ) (fp_line - (start 16 9.6) - (end 16 -4.6) + (start 1.25 1.25) + (end 1.25 -1.25) (stroke (width 0.05) (type solid) ) (layer "F.CrtYd") - (uuid "8d29d83e-786b-4587-b2a3-1871f9a4d6fa") + (uuid "c1a95736-aaa1-4d00-a636-6e1ca2ea3d55") ) - (fp_line - (start 1.5 -2.2) - (end 2.5 -3.3) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.Fab") - (uuid "1981e7b0-4fe8-4b03-9a6c-dd26c551354b") + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/COIL_FEEDBACK") + (pinfunction "1_1") + (pintype "passive") + (uuid "589149cb-bb85-4154-b39c-5d710260ec46") ) - (fp_line - (start 1.5 8.3) - (end 1.5 -2.2) - (stroke - (width 0.12) - (type solid) + (embedded_fonts no) + ) + (footprint "Capacitor_SMD:C_0402_1005Metric" + (layer "F.Cu") + (uuid "cb394140-fe6f-4fab-9288-deeea04a5c4b") + (at 136.7875 121.45) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C19" + (at 0 -1.16 0) + (layer "F.SilkS") + (hide yes) + (uuid "6ceae5cc-5020-42d1-8b9b-c3040b0804cc") + (effects + (font + (size 1 1) + (thickness 0.15) + ) ) - (layer "F.Fab") - (uuid "c1f7402a-79db-460f-ac89-951cb4a7184e") ) - (fp_line - (start 2.5 -3.3) - (end 13.5 -3.3) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.Fab") - (uuid "775d70bb-993a-482d-81d6-7be05dfff2bb") - ) - (fp_line - (start 4.5 2.5) - (end 10.5 2.5) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.Fab") - (uuid "2b81f02c-0d09-4683-a1f1-389a43a89855") - ) - (fp_line - (start 7.5 -0.5) - (end 7.5 5.5) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.Fab") - (uuid "77e64372-2dda-4501-bd18-c40c2431c00e") - ) - (fp_line - (start 13.5 -3.3) - (end 13.5 8.3) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.Fab") - (uuid "9eec3711-a6dd-4654-8e3a-9446df89c7d0") - ) - (fp_line - (start 13.5 8.3) - (end 1.5 8.3) - (stroke - (width 0.12) - (type solid) - ) - (layer "F.Fab") - (uuid "2fe6680d-5934-4c1c-bceb-8549ad7824e3") - ) - (fp_circle - (center 7.5 2.5) - (end 10.5 2.5) - (stroke - (width 0.12) - (type solid) - ) - (fill no) - (layer "F.Fab") - (uuid "0b007828-bdba-48d6-855a-71d65a1f7171") - ) - (fp_text user "${REFERENCE}" - (at 11.1 6.3 0) - (layer "F.Fab") - (uuid "1172bf08-c301-4dcc-8ab7-5c1615f78eb7") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (pad "A" thru_hole rect - (at 0 0) - (size 2 2) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/ENC_A") - (pinfunction "A_A") - (pintype "passive") - (uuid "7ec5de8c-f6c8-4025-98ff-7888fb4ae449") - ) - (pad "B" thru_hole circle - (at 0 5) - (size 2 2) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/ENC_B") - (pinfunction "B_B") - (pintype "passive") - (uuid "0185854f-eb24-4a75-bd38-cdfcf29b750b") - ) - (pad "C" thru_hole circle - (at 0 2.5) - (size 2 2) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "C_C") - (pintype "passive") - (uuid "8f2700e1-d5a8-4589-91dd-91f8a4769001") - ) - (pad "MP" thru_hole rect - (at 7.5 -3.1) - (size 3.2 2) - (drill oval 2.8 1.5) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (uuid "190bb730-2e3a-4230-b92c-f4cd88e59978") - ) - (pad "MP" thru_hole rect - (at 7.5 8.1) - (size 3.2 2) - (drill oval 2.8 1.5) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (uuid "91bc767a-4f24-4777-ba98-800294b5ff34") - ) - (pad "S1" thru_hole circle - (at 14.5 5) - (size 2 2) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "/ENC_BTN") - (pinfunction "S1_S1") - (pintype "passive") - (uuid "7750f94a-cbed-4002-9a03-b85410180452") - ) - (pad "S2" thru_hole circle - (at 14.5 0) - (size 2 2) - (drill 1) - (layers "*.Cu" "*.Mask") - (remove_unused_layers no) - (net "GND") - (pinfunction "S2_S2") - (pintype "passive") - (uuid "f3de47e5-fd54-4458-9d5e-83aef680ea79") - ) - (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Rotary_Encoder.3dshapes/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm.step" - (offset - (xyz 0 0 0) - ) - (scale - (xyz 1 1 1) - ) - (rotate - (xyz 0 0 0) - ) - ) - ) - (footprint "Capacitor_SMD:C_0402_1005Metric" - (layer "F.Cu") - (uuid "fb24eabe-6b68-4317-9714-920208df29ca") - (at 56.75 87.75) - (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "capacitor") - (property "Reference" "C22" - (at 0 -1.16 0) - (layer "F.SilkS") - (hide yes) - (uuid "341bdc9c-dc86-4d00-9a2e-4822fbe6be02") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) - (property "Value" "100nF" - (at 0 1.16 0) + (property "Value" "100nF" + (at 0 1.16 0) (layer "F.Fab") (hide yes) - (uuid "6f1def66-897d-43cc-ba9c-e6a56fc24639") + (uuid "883e30d7-febd-4940-b424-4a5a109ba09f") (effects (font (size 1 1) @@ -24725,7 +23506,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "74562e2f-3f0c-47ee-a055-132a5b856b9d") + (uuid "0f82e663-96c6-4078-b969-cb45262c4880") (effects (font (size 1.27 1.27) @@ -24736,28 +23517,15 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "8c66c525-1871-4fe1-8bf2-1bbd7d4eb1b5") + (uuid "1c58d082-f8e8-4343-b31f-dac3011a7987") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C1525" - (at 0 0 0) - (unlocked yes) - (layer "F.Fab") - (hide yes) - (uuid "67f9e42b-97ad-4280-ac99-c104b728d2ab") - (effects - (font - (size 1 1) - (thickness 0.15) - ) - ) - ) (property ki_fp_filters "C_*") - (path "/a12a6a61-106d-4474-8cf0-d87a16fb5635") + (path "/242b824c-5f5e-426a-ada7-80214cb35100") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -24776,7 +23544,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "15bc96fa-68c9-4e62-9073-29fbe0bb053d") + (uuid "215f8471-331c-42fc-9870-501c7bdb60a2") ) (fp_line (start -0.107836 0.36) @@ -24786,7 +23554,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "1348bf15-0a87-47c2-93fe-894ce57706c4") + (uuid "8694ad0d-e440-4364-bf3e-1691f8bc9dbd") ) (fp_rect (start -0.91 -0.46) @@ -24797,7 +23565,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "651f5b03-4f48-490e-b601-f03258d935e1") + (uuid "44d24802-2c9f-4eb5-947b-7ccf1973180d") ) (fp_rect (start -0.5 -0.25) @@ -24808,12 +23576,12 @@ ) (fill no) (layer "F.Fab") - (uuid "8cf58f5d-b28a-412c-b8f9-231ef1e55968") + (uuid "c4b568af-3fd1-4f44-8085-48caaf194d70") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "9bf1cdb8-0cfd-4413-ac67-8cee63348fa7") + (uuid "7340ca17-f5bb-4fca-a86d-7ddb9b4c7c7d") (effects (font (size 0.25 0.25) @@ -24826,9 +23594,9 @@ (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/ENC_BTN") + (net "+3.3V") (pintype "passive") - (uuid "7e22c6b0-2048-4b4a-b27b-764cffa27cc7") + (uuid "b53ec452-355e-4745-afe9-dbf422ca6a72") ) (pad "2" smd roundrect (at 0.48 0) @@ -24837,7 +23605,7 @@ (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "a1b62cfb-24b7-4a07-b433-95cbcaa270e0") + (uuid "68967c93-71f4-47c1-8d80-e1f2c664dfa7") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" @@ -24854,15 +23622,15 @@ ) (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "fc3c50a6-c53e-4ab4-9ac7-6081ccf97287") - (at 140.0175 109.25) + (uuid "cfc89b4a-3f0c-40e1-a937-52f6daf5d421") + (at 56.73 89.75) (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "capacitor") - (property "Reference" "C16" + (property "Reference" "C20" (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "2b5537cf-85a3-417e-ac7e-fba1bbce5c4b") + (uuid "73c7155b-ffcf-49ec-977b-23acf961df0f") (effects (font (size 1 1) @@ -24870,11 +23638,11 @@ ) ) ) - (property "Value" "100pF" + (property "Value" "100nF" (at 0 1.16 0) (layer "F.Fab") (hide yes) - (uuid "952dbb4a-6806-4b7d-81e2-06364fcfa4c6") + (uuid "432ff294-544c-420b-9bb7-52cfa9ed8559") (effects (font (size 1 1) @@ -24886,7 +23654,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "c73ee19a-ec20-4fe1-bac4-5f84c2050d58") + (uuid "93436512-4418-4536-b809-991130cb2b52") (effects (font (size 1.27 1.27) @@ -24897,19 +23665,19 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "d8d01156-d179-4a78-9a83-41140378691e") + (uuid "27c2ff9b-b54d-47ab-8d4c-bac5daee237c") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C26409" + (property "LCSC" "C1525" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "b0ce6aac-5f7b-4113-81a0-4ed2f20327b3") + (uuid "8351c50b-1b04-4d6f-9da8-f8c4205fb228") (effects (font (size 1 1) @@ -24918,7 +23686,7 @@ ) ) (property ki_fp_filters "C_*") - (path "/2cdcf8c0-8e32-4d9b-81ad-9ff7ae04b6a4") + (path "/0e8d4150-f0d2-4bdc-8676-9c0befd5628e") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -24937,7 +23705,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "c3fb2cbe-fd6c-49f3-bf0b-7607b005f2b9") + (uuid "f3282389-3e24-4ab7-abb5-2567ffb015a9") ) (fp_line (start -0.107836 0.36) @@ -24947,7 +23715,7 @@ (type solid) ) (layer "F.SilkS") - (uuid "49dbffb6-8491-4ae7-9747-3bc8d5fc7549") + (uuid "08223862-609f-490b-9ac5-780c1e77c8f3") ) (fp_rect (start -0.91 -0.46) @@ -24958,7 +23726,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "6d2f6744-9f37-47f0-a9e1-4de26fd5ea8f") + (uuid "226f91db-942e-47d0-b42d-17b105e8417c") ) (fp_rect (start -0.5 -0.25) @@ -24969,12 +23737,12 @@ ) (fill no) (layer "F.Fab") - (uuid "809d2fbf-0d62-4786-bfc6-2f1c4a0d8faf") + (uuid "11df33eb-d33a-4b44-b96b-720b52824b8a") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "3ce9dc1e-9de7-4719-b43b-6f77cddc109d") + (uuid "c62a17ff-d51c-422d-8d98-19a138c1cb25") (effects (font (size 0.25 0.25) @@ -24987,9 +23755,9 @@ (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/TC2_TN") + (net "/ENC_A") (pintype "passive") - (uuid "a6034f85-9a67-4eb5-86b6-9e8bb30f6f1d") + (uuid "6bef7f58-451f-46e4-a46a-dc83da6c8a80") ) (pad "2" smd roundrect (at 0.48 0) @@ -24998,7 +23766,7 @@ (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "46bef2fe-54e1-4332-98f4-085063f29078") + (uuid "4c56bd3f-94eb-4614-bae2-31075e131aa0") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" @@ -25015,15 +23783,15 @@ ) (footprint "Resistor_SMD:R_0402_1005Metric" (layer "F.Cu") - (uuid "fe9f8f9e-cfbd-4234-8511-e491006aab11") - (at 133 42.75 -90) + (uuid "d1c127a9-ad76-4dbe-8a43-fe21dfb9a54a") + (at 82.34 99.05) (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") (tags "resistor") - (property "Reference" "R19" - (at 0 -1.17 90) + (property "Reference" "R9" + (at 0 -1.17 0) (layer "F.SilkS") (hide yes) - (uuid "1e6a228c-17a7-4c76-acea-0ebacbcabc6b") + (uuid "d553d9fd-47c6-4064-a716-1b739fccf596") (effects (font (size 1 1) @@ -25031,11 +23799,11 @@ ) ) ) - (property "Value" "100R" - (at 0 1.17 90) + (property "Value" "4.7k" + (at 0 1.17 0) (layer "F.Fab") (hide yes) - (uuid "ff9b00a2-0cb3-44eb-92a5-29b330201bbd") + (uuid "3616542c-052e-434a-8bf3-ae10c5a152fa") (effects (font (size 1 1) @@ -25044,10 +23812,10 @@ ) ) (property "Datasheet" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "9cdda50b-494f-4b48-92d5-ffdf5f7bf61a") + (uuid "a38c0e1d-b750-44ba-8f87-25c42e8fb658") (effects (font (size 1.27 1.27) @@ -25055,22 +23823,22 @@ ) ) (property "Description" "" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "4bf3e911-52a2-4889-954c-b858119a0e0a") + (uuid "12056156-aa45-4888-883d-8991cc93e24b") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25076" - (at 0 0 270) + (property "LCSC" "C25900" + (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "c70c6fa6-6c39-4c33-b89e-21f122b80a31") + (uuid "ad0737dd-24e2-4970-a0c1-88fd406f1a8b") (effects (font (size 1 1) @@ -25079,7 +23847,7 @@ ) ) (property ki_fp_filters "R_*") - (path "/5290bec0-3568-422d-a6a5-aafe25303629") + (path "/a8a6fc8c-bdec-4920-9998-3f1c229299b8") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -25091,24 +23859,24 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "27d63c28-096b-4229-871a-d63558f80c8b") + (uuid "11e48075-16f5-4055-acc8-585affb68e1e") ) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "d23513e9-ec5c-4a6c-b2a7-6d3cefae5d4d") + (uuid "3cddcf37-bdf7-45e0-a131-532414570be8") ) (fp_rect (start -0.93 -0.47) @@ -25119,7 +23887,7 @@ ) (fill no) (layer "F.CrtYd") - (uuid "89c6ea5b-2fa3-4efc-9b48-1f0e49d9213f") + (uuid "49d218b3-983c-4ca3-8b66-fdab30635751") ) (fp_rect (start -0.525 -0.27) @@ -25130,12 +23898,12 @@ ) (fill no) (layer "F.Fab") - (uuid "569f6311-7736-43cf-97e0-f54687a82902") + (uuid "90b8be45-c023-44ab-b7bd-7e9f3a2465c4") ) (fp_text user "${REFERENCE}" - (at 0 0 90) + (at 0 0 0) (layer "F.Fab") - (uuid "c9530f81-48b9-47ba-ae47-c1904529031f") + (uuid "d87b01d9-82b2-4d79-9cf9-5ce0a627c239") (effects (font (size 0.26 0.26) @@ -25144,22 +23912,22 @@ ) ) (pad "1" smd roundrect - (at -0.51 0 270) + (at -0.51 0) (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/HEAT_EN") + (net "+3.3V") (pintype "passive") - (uuid "ff07bf86-b606-43ba-91ff-3dfdfe514ba2") + (uuid "95d31f19-15fc-4e16-85c4-949200616822") ) (pad "2" smd roundrect - (at 0.51 0 270) + (at 0.51 0) (size 0.54 0.64) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "Net-(C23-Pad1)") + (net "/I2C_SCL") (pintype "passive") - (uuid "a265deac-0ae4-4d66-8f5f-5463d98f3959") + (uuid "529178da-7aaf-4c82-8491-1e326feeae4e") ) (embedded_fonts no) (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" @@ -25174,17 +23942,17 @@ ) ) ) - (footprint "Resistor_SMD:R_0402_1005Metric" + (footprint "Capacitor_SMD:C_0402_1005Metric" (layer "F.Cu") - (uuid "ff873c24-693a-4eb4-8934-d6523e477811") - (at 60.74 61.25) - (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") - (tags "resistor") - (property "Reference" "R1" - (at 0 -1.17 0) + (uuid "d994726f-e373-4a1a-bb3a-422c1e24b8de") + (at 111.27 101) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C12" + (at 0 -1.16 0) (layer "F.SilkS") (hide yes) - (uuid "89bf2d7b-94ab-4470-b89f-147eabdfb2b9") + (uuid "4273c438-7a73-48a8-b991-d8858a57a019") (effects (font (size 1 1) @@ -25192,11 +23960,11 @@ ) ) ) - (property "Value" "5.1k" - (at 0 1.17 0) + (property "Value" "100nF" + (at 0 1.16 0) (layer "F.Fab") (hide yes) - (uuid "80c67681-e5ea-4eae-9819-2ff91cdc070a") + (uuid "35d02335-fd85-4ea7-a618-392846624bc5") (effects (font (size 1 1) @@ -25208,7 +23976,7 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "29e9d733-8300-44ed-b38d-ef65e2fbd3b5") + (uuid "1843df0d-ff7b-49dd-8d90-91a4a6371b32") (effects (font (size 1.27 1.27) @@ -25219,19 +23987,19 @@ (at 0 0 0) (layer "F.Fab") (hide yes) - (uuid "dfd713ce-2350-408c-a919-81521805e884") + (uuid "e4b58d48-acb5-4f75-95aa-64ceaf33e9b0") (effects (font (size 1.27 1.27) ) ) ) - (property "LCSC" "C25905" + (property "LCSC" "C1525" (at 0 0 0) (unlocked yes) (layer "F.Fab") (hide yes) - (uuid "a2dc483e-695d-46ad-8221-00860f15f445") + (uuid "84663273-7567-49d5-b75b-1dcb4484aa37") (effects (font (size 1 1) @@ -25239,8 +24007,8 @@ ) ) ) - (property ki_fp_filters "R_*") - (path "/a9ca25f6-22d9-4d6d-8c59-cbb9f096217e") + (property ki_fp_filters "C_*") + (path "/b36ba817-34a0-4f27-bcd8-584786b3b47e") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -25252,78 +24020,78 @@ (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -0.153641 -0.38) - (end 0.153641 -0.38) + (start -0.107836 -0.36) + (end 0.107836 -0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "386fe032-31b3-4138-b778-5855a34e76fe") + (uuid "e02abab8-c410-4000-b9e3-ca6a75da46a9") ) (fp_line - (start -0.153641 0.38) - (end 0.153641 0.38) + (start -0.107836 0.36) + (end 0.107836 0.36) (stroke (width 0.12) (type solid) ) (layer "F.SilkS") - (uuid "64b85e12-ecb8-43a6-b3b6-f5fc92072249") + (uuid "74116b03-750c-4d80-bd8f-53351f16e947") ) (fp_rect - (start -0.93 -0.47) - (end 0.93 0.47) + (start -0.91 -0.46) + (end 0.91 0.46) (stroke (width 0.05) (type solid) ) (fill no) (layer "F.CrtYd") - (uuid "936f9ec0-bdd4-48e7-9508-269c1dad592c") + (uuid "6804988e-7693-4ded-8ea5-62b56a79a6d7") ) (fp_rect - (start -0.525 -0.27) - (end 0.525 0.27) + (start -0.5 -0.25) + (end 0.5 0.25) (stroke (width 0.1) (type solid) ) (fill no) (layer "F.Fab") - (uuid "c6edacbb-b4d5-48a4-af01-88d52eef99b0") + (uuid "f37655a2-9992-46a7-a0da-93f458a3ffa8") ) (fp_text user "${REFERENCE}" (at 0 0 0) (layer "F.Fab") - (uuid "f790d9b4-4803-4ed5-bbf4-19dbce5bb009") + (uuid "45a4b96e-1199-440f-8e39-087536b4f3dd") (effects (font - (size 0.26 0.26) + (size 0.25 0.25) (thickness 0.04) ) ) ) (pad "1" smd roundrect - (at -0.51 0) - (size 0.54 0.64) + (at -0.48 0) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) - (net "/USB_CC1") + (net "+3.3V") (pintype "passive") - (uuid "22fceb47-9a1b-432d-aecf-5fef4b55dfbf") + (uuid "1aa20500-e770-4665-8dc7-635ae98bb4fc") ) (pad "2" smd roundrect - (at 0.51 0) - (size 0.54 0.64) + (at 0.48 0) + (size 0.56 0.62) (layers "F.Cu" "F.Mask" "F.Paste") (roundrect_rratio 0.25) (net "GND") (pintype "passive") - (uuid "edafe612-0ba0-4711-b059-8ddc9e273c5f") + (uuid "6e7646b8-5efc-461f-b093-e545536c26af") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -25335,79 +24103,73 @@ ) ) ) - (footprint "Button_Switch_THT:SW_PUSH_6mm_H5mm" - (layer "B.Cu") - (uuid "67ddb44b-c141-4af8-bb0b-c9e0c2fb3d02") - (at 107.75 74.5 180) - (descr "tactile push button, 6x6mm e.g. PHAP33xx series, height=5mm") - (tags "tact sw push 6mm") - (property "Reference" "SW1" - (at 3.25 2 0) - (layer "B.SilkS") - (uuid "000cd26a-ef86-49a6-8176-34b1f96ba385") + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "dae362ec-6a2b-48ea-88c4-dc08223d5243") + (at 139.9 96.85 180) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R4" + (at 0 -1.17 0) + (layer "F.SilkS") + (hide yes) + (uuid "5bd513c2-7a76-4778-a0df-415196a4e770") (effects (font (size 1 1) (thickness 0.15) ) - (justify mirror) ) ) - (property "Value" "RESET" - (at 3.75 -6.7 0) - (layer "B.Fab") - (uuid "cd052d6c-7096-4086-a3ad-780a4de56072") + (property "Value" "100R" + (at 0 1.17 0) + (layer "F.Fab") + (hide yes) + (uuid "db3a71ec-359f-49bc-8972-34b849afd642") (effects (font (size 1 1) (thickness 0.15) ) - (justify mirror) ) ) (property "Datasheet" "" (at 0 0 0) - (unlocked yes) - (layer "B.Fab") + (layer "F.Fab") (hide yes) - (uuid "657b2163-0957-4405-a6c7-a3f05efb7c1d") + (uuid "1f157fd5-4961-47ab-a6f6-90c2053f51ab") (effects (font (size 1.27 1.27) - (thickness 0.15) ) - (justify mirror) ) ) (property "Description" "" (at 0 0 0) - (unlocked yes) - (layer "B.Fab") + (layer "F.Fab") (hide yes) - (uuid "dd985d2a-8ff5-4824-8278-37557c695b5c") + (uuid "50753ced-d6d7-4589-9d99-c2361e205b78") (effects (font (size 1.27 1.27) - (thickness 0.15) ) - (justify mirror) ) ) - (property "LCSC" "C111609" - (at 0 0 0) + (property "LCSC" "C25076" + (at 0 0 180) (unlocked yes) - (layer "B.Fab") + (layer "F.Fab") (hide yes) - (uuid "a96fcdb4-6e70-4a7b-b9ff-82aca99eaaa3") + (uuid "a2f09ae3-2b09-4ceb-a049-d81dff5d1043") (effects (font (size 1 1) (thickness 0.15) ) - (justify mirror) ) ) - (path "/9b15da63-f570-402a-adfa-2bc693c9ac1c") + (property ki_fp_filters "R_*") + (path "/15e7f11e-276a-42b1-89fc-15ad7725f530") (sheetname "/") (sheetfile "kilncontrol.kicad_sch") (units @@ -25416,287 +24178,494 @@ (pins "1" "2") ) ) - (attr through_hole) + (attr smd) (duplicate_pad_numbers_are_jumpers no) (fp_line - (start 6.75 -3) - (end 6.75 -1.5) - (stroke - (width 0.12) - (type solid) - ) - (layer "B.SilkS") - (uuid "3ef9125a-7361-4e0f-9085-c00519f4a4bc") - ) - (fp_line - (start 5.5 1) - (end 1 1) - (stroke - (width 0.12) - (type solid) - ) - (layer "B.SilkS") - (uuid "63be6c8e-ec40-4c77-8962-23eb173b5d2d") - ) - (fp_line - (start 1 -5.5) - (end 5.5 -5.5) + (start -0.153641 0.38) + (end 0.153641 0.38) (stroke (width 0.12) (type solid) ) - (layer "B.SilkS") - (uuid "ee0dc1b3-7329-4ff3-b914-4d006c0dbc58") + (layer "F.SilkS") + (uuid "1a911abc-fa8d-456c-8d9d-6d1f4579dd5c") ) (fp_line - (start -0.25 -1.5) - (end -0.25 -3) + (start -0.153641 -0.38) + (end 0.153641 -0.38) (stroke (width 0.12) (type solid) ) - (layer "B.SilkS") - (uuid "974ec563-0176-480f-bb81-d0d67123356e") + (layer "F.SilkS") + (uuid "0b163a51-5b1c-4c72-8443-ab3ad126455f") ) - (fp_line - (start 8 1.5) - (end 8 1.25) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) (stroke (width 0.05) (type solid) ) - (layer "B.CrtYd") - (uuid "f6d28aa0-bc35-477d-958f-13f616c65a9a") + (fill no) + (layer "F.CrtYd") + (uuid "ca520f2e-48fe-4ddf-a7c4-c6a08e2cd2a1") ) - (fp_line - (start 8 1.25) - (end 8 -5.75) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) (stroke - (width 0.05) + (width 0.1) (type solid) ) - (layer "B.CrtYd") - (uuid "476cbc87-92ae-47f5-b86a-893039192452") + (fill no) + (layer "F.Fab") + (uuid "72a13498-0b11-4bf6-926d-965b332d9f88") ) - (fp_line - (start 8 -6) - (end 8 -5.75) - (stroke - (width 0.05) - (type solid) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "d78c5d82-d436-4b8b-8cc0-c8c2740afe8f") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) ) - (layer "B.CrtYd") - (uuid "dd3e404b-a4a2-455d-aace-30b34b22daf6") ) - (fp_line - (start 7.75 1.5) - (end 8 1.5) - (stroke - (width 0.05) - (type solid) - ) - (layer "B.CrtYd") - (uuid "f16c3edb-ad5b-46cf-bf76-133f1ab35f27") + (pad "1" smd roundrect + (at -0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_P") + (pintype "passive") + (uuid "523b2f2c-ce97-4742-827a-fba3f52d8dc3") ) - (fp_line - (start 7.75 -6) - (end 8 -6) - (stroke - (width 0.05) - (type solid) + (pad "2" smd roundrect + (at 0.51 0 180) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC1_TP") + (pintype "passive") + (uuid "2a373449-9629-46f4-a321-b869fb9bc9d8") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) ) - (layer "B.CrtYd") - (uuid "715973d9-52ef-459d-b4c3-a1d197164661") ) - (fp_line - (start 7.75 -6) - (end -1.25 -6) - (stroke - (width 0.05) - (type solid) + ) + (footprint "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" + (layer "F.Cu") + (uuid "e03c2a8f-5981-470f-9d79-dad41001db10") + (at 78.1 93.93) + (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row") + (tags "Through hole pin header THT 1x04 2.54mm single row") + (property "Reference" "J5" + (at 0 -2.38 0) + (layer "F.SilkS") + (uuid "00a25186-255d-4466-b1d1-875eb011be76") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "OLED 128x64 I2C" + (at 0 10 0) + (layer "F.Fab") + (hide yes) + (uuid "eb9b5f0f-9885-4a4f-b0c3-3789db422fdd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "befd888e-9921-4b4d-afdb-44514ee8c551") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "9150eb14-fe3c-4205-a3fc-fca8bf16435e") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C2691448" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "66510a4c-5b45-4307-8b30-a381540cf71e") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Connector*:*_1x??_*") + (path "/ff5a4fae-c51b-4ab1-82c0-9d3c76f77d6f") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2" "3" "4") ) - (layer "B.CrtYd") - (uuid "ad7fb860-33b8-4071-877d-ba5db6ca6af3") ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) (fp_line - (start -1.25 1.5) - (end 7.75 1.5) + (start -1.38 -1.38) + (end 0 -1.38) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "B.CrtYd") - (uuid "33af2252-b23d-4a49-9a4f-bb2e54e0023d") + (layer "F.SilkS") + (uuid "09772007-99a6-418c-b120-228b49105ee8") ) (fp_line - (start -1.5 1.5) - (end -1.25 1.5) + (start -1.38 0) + (end -1.38 -1.38) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "B.CrtYd") - (uuid "d9886d9b-8cfd-4e7e-bd71-f56379c1f2fd") + (layer "F.SilkS") + (uuid "e05e23d9-c388-4112-8e29-ad6dd7c3f266") ) (fp_line - (start -1.5 1.25) - (end -1.5 1.5) + (start -1.38 1.27) + (end -1.38 9) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "B.CrtYd") - (uuid "0d39e3b1-4189-4e02-93ad-f97a3ad9aa9f") + (layer "F.SilkS") + (uuid "1e3143e1-86d8-403b-970b-1e2bee24ed0f") ) (fp_line - (start -1.5 -5.75) - (end -1.5 1.25) + (start -1.38 1.27) + (end 1.38 1.27) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "B.CrtYd") - (uuid "d7eca8e6-b1f1-4951-b3ee-588ae37c56e0") + (layer "F.SilkS") + (uuid "e878dcd4-4d78-4117-9f47-3b1762192a95") ) (fp_line - (start -1.5 -5.75) - (end -1.5 -6) + (start -1.38 9) + (end 1.38 9) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "B.CrtYd") - (uuid "af9373c0-fca2-433a-b866-717600433881") + (layer "F.SilkS") + (uuid "2339ff01-24cd-48ed-b2c7-e997f32b3c21") ) (fp_line - (start -1.5 -6) - (end -1.25 -6) + (start 1.38 1.27) + (end 1.38 9) (stroke - (width 0.05) + (width 0.12) (type solid) ) - (layer "B.CrtYd") - (uuid "b058a542-d513-4e20-8d40-0c9399293054") + (layer "F.SilkS") + (uuid "42cbc7d1-12af-41ec-b2d6-aa57751655ae") ) - (fp_line - (start 6.25 0.75) - (end 6.25 -5.25) + (fp_rect + (start -1.77 -1.77) + (end 1.77 9.39) (stroke - (width 0.1) + (width 0.05) (type solid) ) - (layer "B.Fab") - (uuid "602aa9c3-646e-403d-95c5-b3a902fff86c") + (fill no) + (layer "F.CrtYd") + (uuid "4504f369-43e6-4bdb-be46-d767df86b00f") ) (fp_line - (start 6.25 -5.25) - (end 0.25 -5.25) + (start -1.27 -0.635) + (end -0.635 -1.27) (stroke (width 0.1) (type solid) ) - (layer "B.Fab") - (uuid "18f0533e-0093-481b-a57a-2a41e7c14d53") + (layer "F.Fab") + (uuid "cf2eea20-945f-4733-8603-608535093525") ) (fp_line - (start 3.25 0.75) - (end 6.25 0.75) + (start -1.27 8.89) + (end -1.27 -0.635) (stroke (width 0.1) (type solid) ) - (layer "B.Fab") - (uuid "39a90ff8-a480-4a88-99bc-6d0665b1806d") + (layer "F.Fab") + (uuid "0f300d06-8bd2-4a3b-a2f4-7738b13b309b") ) (fp_line - (start 0.25 0.75) - (end 3.25 0.75) + (start -0.635 -1.27) + (end 1.27 -1.27) (stroke (width 0.1) (type solid) ) - (layer "B.Fab") - (uuid "bbbaf091-fe56-4266-bf43-542330ab6a1d") + (layer "F.Fab") + (uuid "3bcd0ac0-8e26-457f-8bbd-f3a050cbef60") ) (fp_line - (start 0.25 -5.25) - (end 0.25 0.75) + (start 1.27 -1.27) + (end 1.27 8.89) (stroke (width 0.1) (type solid) ) - (layer "B.Fab") - (uuid "96fc50bc-b06e-4f99-980a-8b850cd57249") + (layer "F.Fab") + (uuid "936dc7ea-5f7e-446d-ae43-de2164695b3a") ) - (fp_circle - (center 3.25 -2.25) - (end 1.25 -2.5) + (fp_line + (start 1.27 8.89) + (end -1.27 8.89) (stroke (width 0.1) (type solid) ) - (fill no) - (layer "B.Fab") - (uuid "4af4c8b5-8483-476d-8fba-a39a0a37d463") + (layer "F.Fab") + (uuid "dfc6a7a8-381e-4488-bec2-a4cc82888e28") ) (fp_text user "${REFERENCE}" - (at 3.25 -2.25 0) - (layer "B.Fab") - (uuid "48eb3bbe-a607-4c45-97c2-f2c581cfada7") + (at 0 3.81 90) + (layer "F.Fab") + (uuid "b419c283-0660-4576-a5cd-e9adc38d2b48") (effects (font (size 1 1) (thickness 0.15) ) - (justify mirror) ) ) - (pad "1" thru_hole circle - (at 0 0 90) - (size 2 2) - (drill 1.1) + (pad "1" thru_hole rect + (at 0 0) + (size 1.7 1.7) + (drill 1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) (net "GND") - (pinfunction "1_1") + (pinfunction "Pin_1_1") (pintype "passive") - (uuid "52f39dce-99ce-4798-be3f-62d4220bcf8e") + (uuid "fc776b0a-4d05-4ca8-8e63-38b80c1c5400") ) - (pad "1" thru_hole circle - (at 6.5 0 90) - (size 2 2) - (drill 1.1) + (pad "2" thru_hole circle + (at 0 2.54) + (size 1.7 1.7) + (drill 1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) - (net "GND") - (pinfunction "1_1") + (net "+3.3V") + (pinfunction "Pin_2_2") (pintype "passive") - (uuid "3ab4bb41-e863-4daf-a7a8-4cf709da2ae5") + (uuid "69520ef2-7fe3-4472-b7bc-3a5226fa0db1") ) - (pad "2" thru_hole circle - (at 0 -4.5 90) - (size 2 2) - (drill 1.1) + (pad "3" thru_hole circle + (at 0 5.08) + (size 1.7 1.7) + (drill 1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) - (net "/MCU_EN") - (pinfunction "2_2") + (net "/I2C_SCL") + (pinfunction "Pin_3_3") (pintype "passive") - (uuid "f960ada8-e3b6-40d3-89bc-f6a9d74e8023") + (uuid "8daa92a9-0e26-43f8-ab3c-9d02cb918ab0") ) - (pad "2" thru_hole circle - (at 6.5 -4.5 90) - (size 2 2) - (drill 1.1) + (pad "4" thru_hole circle + (at 0 7.62) + (size 1.7 1.7) + (drill 1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) - (net "/MCU_EN") - (pinfunction "2_2") + (net "/I2C_SDA") + (pinfunction "Pin_4_4") (pintype "passive") - (uuid "3c2909c3-0371-41fb-bbe0-5d5a65764998") + (uuid "b97881ca-7969-4785-bc99-83f61e29cc16") ) (embedded_fonts no) - (model "${KICAD10_3DMODEL_DIR}/Button_Switch_THT.3dshapes/SW_PUSH_6mm_H5mm.step" + (model "${KICAD10_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x04_P2.54mm_Vertical.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Capacitor_SMD:C_0402_1005Metric" + (layer "F.Cu") + (uuid "e9f08d37-8214-47bf-8047-ed04081c9bab") + (at 139.4 110.92 -90) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C16" + (at 0 -1.16 90) + (layer "F.SilkS") + (hide yes) + (uuid "c38725c0-322a-4848-89f1-fb5458098371") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "10nF" + (at 0 1.16 90) + (layer "F.Fab") + (hide yes) + (uuid "49fc9190-6fa9-443a-9031-aae457eedbb6") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "bb565fe8-461f-4549-b0f9-22d42e71f9dd") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "8fd00677-831f-41af-85bd-19e71fc29e60") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/95e51d09-57f9-43c2-b37f-ffd42ee9cdb9") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.107836 0.36) + (end 0.107836 0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "82ddedbf-d048-4b01-8787-d543ad9c51af") + ) + (fp_line + (start -0.107836 -0.36) + (end 0.107836 -0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "ac82a8ee-2eba-406c-8e50-91aa538c02b2") + ) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "ca7b852c-b8e0-458f-a8f9-58302167425a") + ) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "260b288b-4eb8-48b1-bf1b-fdb5fcd28d10") + ) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "86cf0ff7-e406-4dfe-b81f-3d344a144f0c") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.48 0 270) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_TP") + (pintype "passive") + (uuid "cf3cc460-68de-487a-9eb9-324cd4b0ec8d") + ) + (pad "2" smd roundrect + (at 0.48 0 270) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/TC2_TN") + (pintype "passive") + (uuid "0a005702-6274-4b41-a7a3-9ed1b4210555") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" (offset (xyz 0 0 0) ) @@ -25708,30 +24677,4390 @@ ) ) ) - (gr_rect - (start 50 40) - (end 150 110) - (stroke - (width 0.2) - (type solid) - ) - (fill no) - (locked yes) - (layer "Edge.Cuts") - (uuid "b6177efe-7172-4eb3-8da5-c53ecd01a6a0") + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "ea02cdac-61f5-47c6-b5cb-254c479acd67") + (at 126.7 93.25) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP35" + (at 0 -1.648 0) + (layer "F.SilkS") + (hide yes) + (uuid "d3146dfe-bcb7-43c6-a996-959003aac08c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "SUPERVISOR_TX" + (at 0 1.75 0) + (layer "F.Fab") + (hide yes) + (uuid "8274150d-28e2-4487-85cf-6427ca9034e6") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "048bde6d-788b-43f7-93ea-ec15f67d9ead") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "0bba9c66-09d1-4e64-a4ba-cc03f526f360") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/90b252f9-0209-46e9-9740-7931a375785a") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) + ) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.95 -0.95) + (end 0.95 -0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e7a78649-90d1-4133-8fb8-fdc0ec6c7fbc") + ) + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "738c091a-0d89-4b61-a890-7056226e1557") + ) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "209b4828-c22a-46ff-893f-4ea6a5c7c9e7") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c7ea75e9-4e8a-47d8-b16f-522fad29444e") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "8495d7b4-9c79-446a-a10e-483742b956e3") + ) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "4d9aaebc-7192-4fe0-8e59-d605f039714d") + ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "23344d81-b097-4384-9873-0eabaabeaa88") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "811a6a60-3a1d-4ef2-87a8-e9e6204b2993") + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/SUPERVISOR_TX") + (pinfunction "1_1") + (pintype "passive") + (uuid "6f85094d-d4b5-4410-9fe5-348bbb314115") + ) + (embedded_fonts no) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "ec910917-910c-46b9-9204-738a6a001e44") + (at 126.7 103.35 90) + (property "Reference" "TP7" + (at 0 -1.648 90) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "bdeaebf0-580e-4436-859f-72b065353327") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Value" "TC1_MOSI" + (at 0 1.75 90) + (unlocked yes) + (layer "F.SilkS") + (hide yes) + (uuid "75ab1f75-2531-4ce2-a243-beee09984b7c") + (effects + (font + (size 1 1) + (line_spacing 0) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "7c7b42ab-1b9a-433e-bbac-6b1071bb18db") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "c83a5ce5-393b-482a-86f3-5b9eb61798f4") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/34b262da-bfea-4f2b-9a04-fb876ae3d712") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) + ) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 0.95 -0.950001) + (end 0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "37d5272a-cc2f-49b1-855b-17d8cb8d4312") + ) + (fp_line + (start -0.95 -0.950001) + (end 0.95 -0.950001) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "67811736-a6f9-4c50-9b56-9381076e667a") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "388f0ded-35fb-4108-9914-86133573dc3f") + ) + (fp_line + (start -0.95 0.95) + (end -0.95 -0.950001) + (stroke + (width 0.12) + (type default) + ) + (layer "F.SilkS") + (uuid "97116891-565f-4120-aa0c-47e8c1165c43") + ) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "7f774137-08af-4502-88eb-8083cf6d6ad9") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "9b927d0a-a849-464c-b9c9-002cbaf88772") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "ee92ceb2-7e49-462a-ae4a-e8977f2ae3bd") + ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type default) + ) + (layer "F.CrtYd") + (uuid "c780a21b-6ec2-4a13-8753-5d9a58750568") + ) + (pad "1" smd rect + (at 0 0 90) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/TC1_MOSI") + (pinfunction "1_1") + (pintype "passive") + (uuid "05a1b141-6bd9-4b35-b205-09bf0478e562") + ) + (embedded_fonts no) + ) + (footprint "Package_TO_SOT_SMD:SOT-23" + (layer "F.Cu") + (uuid "ef4b9aa8-7839-4a16-9fd9-ecea7169ace4") + (at 131.4375 48.3) + (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") + (tags "SOT TO_SOT_SMD") + (property "Reference" "Q3" + (at 0 -2.4 0) + (layer "F.SilkS") + (hide yes) + (uuid "3511bc8b-1811-4f53-b806-165e24aa2f12") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "AO3400A" + (at 0 2.4 0) + (layer "F.Fab") + (hide yes) + (uuid "81cb7a5b-f779-46b0-9d36-58f9a78f622b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "d7d3c2bc-c6ae-4e75-ba13-f83742bafca5") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "57d6f2c6-ec6e-4b98-babd-d715864febe8") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C20917" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "79906dd4-fdbd-4e57-bea8-89542e29db89") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (path "/b5a0af6d-8529-4e0c-aeaa-0573721c9f95") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "3" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.76 -1.56) + (end 0.76 -1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "27d315d4-c059-4f3a-ab65-b289fac86f62") + ) + (fp_line + (start -0.76 -1.51) + (end -0.76 -1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "9f3e9466-5be9-4c60-800d-007b7ae4cf96") + ) + (fp_line + (start -0.76 0.39) + (end -0.76 -0.39) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "62c6a128-5a76-4bf2-992b-a35e3d6492c7") + ) + (fp_line + (start -0.76 1.56) + (end -0.76 1.51) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0640cba3-3095-4aa6-b0d2-337fbf6e9d9d") + ) + (fp_line + (start 0.76 -1.56) + (end 0.76 -0.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a46e1a94-57a6-4042-8240-982844d9ed6c") + ) + (fp_line + (start 0.76 0.56) + (end 0.76 1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7a0377e6-612d-4bb2-8233-89b9eff6ef2f") + ) + (fp_line + (start 0.76 1.56) + (end -0.76 1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c2589174-874d-4d89-8e1c-7ec54f67090d") + ) + (fp_poly + (pts + (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) + (layer "F.SilkS") + (uuid "3518be40-e3f7-43fc-b1b7-24e33c281148") + ) + (fp_line + (start -1.93 -1.5) + (end -0.9 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f06b5583-10d6-4bf5-ac9c-6ff3f89cc97a") + ) + (fp_line + (start -1.93 -0.39) + (end -1.93 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "31c5044e-90d6-4631-a5e8-50a20bf89b42") + ) + (fp_line + (start -1.93 0.39) + (end -0.9 0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "3d18eef5-bd9f-403e-8f01-ef904b17b9fb") + ) + (fp_line + (start -1.93 1.5) + (end -1.93 0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "1b292746-ed3b-42e4-908c-121d817093df") + ) + (fp_line + (start -0.9 -1.7) + (end 0.9 -1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "180e9e8d-ecbd-4691-9dc2-0f3d855b276e") + ) + (fp_line + (start -0.9 -1.5) + (end -0.9 -1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "64e28ef3-9a5c-4c7f-8601-a2e90e1888ae") + ) + (fp_line + (start -0.9 -0.39) + (end -1.93 -0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "18df4980-c3f2-4eee-8d10-cc70a3ee42c9") + ) + (fp_line + (start -0.9 0.39) + (end -0.9 -0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "22a19a4e-d361-41e8-97de-63e776689b57") + ) + (fp_line + (start -0.9 1.5) + (end -1.93 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "bd69815a-b5fd-4117-912c-5e462322e349") + ) + (fp_line + (start -0.9 1.7) + (end -0.9 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7070f16e-0dd7-42ac-a6e5-175b5fe54d99") + ) + (fp_line + (start 0.9 -1.7) + (end 0.9 -0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "b5271df0-a247-4b71-ab5a-ddd7d48793f9") + ) + (fp_line + (start 0.9 -0.55) + (end 1.93 -0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "cab7a038-1d55-434c-9f7a-ac24fe25ac5d") + ) + (fp_line + (start 0.9 0.55) + (end 0.9 1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "bbb18c37-84a3-4a75-b6d2-d843ea825f66") + ) + (fp_line + (start 0.9 1.7) + (end -0.9 1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "23bae6ad-aff4-4dde-b502-42c37835e55d") + ) + (fp_line + (start 1.93 -0.55) + (end 1.93 0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "232350f6-27aa-4ad2-afb2-cdf4344c6fcd") + ) + (fp_line + (start 1.93 0.55) + (end 0.9 0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "c707f8f3-1256-4a6d-bba6-7abdc51e57fc") + ) + (fp_poly + (pts + (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) + ) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "699fd1f5-fda4-410a-b320-7c71092bb9df") + ) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "5244b2fe-a753-44aa-b86b-42c634bb877c") + (effects + (font + (size 0.72 0.72) + (thickness 0.11) + ) + ) + ) + (pad "1" smd roundrect + (at -0.9375 -0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/HEAT_EN_DC") + (pinfunction "G_1") + (pintype "input") + (uuid "f3c89bd0-fc0c-4af6-b068-9b3e8b1f00e5") + ) + (pad "2" smd roundrect + (at -0.9375 0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_RTN1") + (pinfunction "S_2") + (pintype "passive") + (uuid "c949def2-55e1-4d32-9180-53fadb950bd7") + ) + (pad "3" smd roundrect + (at 0.9375 0) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/COIL_DRV") + (pinfunction "D_3") + (pintype "passive") + (uuid "6c3db8d6-7429-4668-b289-cc73cb94dc4d") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "f1e68f96-9151-472b-a0df-5357a0bbf8bd") + (at 61.3 65.7) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R2" + (at 0 -1.17 0) + (layer "F.SilkS") + (hide yes) + (uuid "c5babcdc-97b4-4eab-b670-c69f4ad44dcf") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "5.1k" + (at 0 1.17 0) + (layer "F.Fab") + (hide yes) + (uuid "019da435-65f7-4024-a692-947688aaad9c") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "f93a912d-1d65-4bcf-902d-13e67d5966f6") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "ae6aeb50-c540-422d-bda6-96a0e5c15706") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25905" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "9ee26c60-aa62-43a9-a6aa-7849fdc8b4f4") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/7ce1c7a2-8cc7-4225-b901-61baf681b0e4") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.153641 -0.38) + (end 0.153641 -0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "7a491a1c-c6e6-4126-9277-1cbd75cfe86f") + ) + (fp_line + (start -0.153641 0.38) + (end 0.153641 0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "b02ec7a2-854c-45c4-a20b-5419889a7104") + ) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "a11183e8-d8ae-4d0f-a039-be3e3fb2aecd") + ) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "e5b59228-4357-4945-a729-c9d26dc28544") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "047f0df2-bc7b-4a9b-bb08-77d7040e2073") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/USB_CC2") + (pintype "passive") + (uuid "310be60e-9490-4f4d-a0fb-5e71c1c763b8") + ) + (pad "2" smd roundrect + (at 0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "4e542fe3-bb9f-4963-bea7-e712713ce46c") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm" + (layer "F.Cu") + (uuid "f222e664-a8b3-45da-9641-af695e6d2b52") + (at 54.5 95.75) + (descr "Alps rotary encoder, EC11E... with switch, vertical shaft, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html") + (tags "rotary encoder") + (property "Reference" "SW3" + (at 2.8 -4.7 0) + (layer "F.SilkS") + (uuid "a4f50ac0-0f90-4caa-9de8-82faf2da686a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "ENCODER" + (at 7.5 10.4 0) + (layer "F.Fab") + (uuid "4991dc4d-e1a5-48e5-9a61-83e9b57c2b20") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "b4f7a038-dd99-4fb7-8120-0db8cc9c1c38") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "ca69e6b8-14bd-43c4-8fc9-be0c1d02c7e1") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "LCSC" "C7275025" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "f1d26771-4f49-40c4-8da3-05fc928791aa") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "RotaryEncoder*Switch*") + (path "/36485909-9d6f-4245-8e20-98a2e3041944") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "A" "C" "B" "S1" "S2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.3 -1.6) + (end 0.3 -1.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f785772a-efe3-4df5-a760-6e36395f4cf6") + ) + (fp_line + (start 0 -1.3) + (end -0.3 -1.6) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "01cf14d8-e297-4185-82e7-1165dcf824a0") + ) + (fp_line + (start 0.3 -1.6) + (end 0 -1.3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "69fbac71-ffa0-498c-85f2-ebafb5b1e812") + ) + (fp_line + (start 1.4 -3.4) + (end 1.4 8.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "dfbdbfd1-aae7-4f8c-bbc1-f340ca31054e") + ) + (fp_line + (start 5.5 -3.4) + (end 1.4 -3.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "356fecbb-157f-42e7-959e-f3f7472dd80d") + ) + (fp_line + (start 5.5 8.4) + (end 1.4 8.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "eb0814d4-0b70-4860-b20c-a2088851aacb") + ) + (fp_line + (start 7 2.5) + (end 8 2.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f8cf723c-8733-4dd8-9d4e-d4af105b3830") + ) + (fp_line + (start 7.5 2) + (end 7.5 3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "6afdc6e8-24bf-4849-8248-f18a3fd8e079") + ) + (fp_line + (start 9.5 -3.4) + (end 13.6 -3.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "73d812e7-e343-4e4c-a9d7-c0dd9d175fbc") + ) + (fp_line + (start 13.6 -3.4) + (end 13.6 -1) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "910c04e4-5597-48c5-b946-52b41956fc8c") + ) + (fp_line + (start 13.6 1.2) + (end 13.6 3.8) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "a5a4d420-4ded-437b-90db-1324abee8265") + ) + (fp_line + (start 13.6 6) + (end 13.6 8.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "16666dce-f053-4419-8509-f3ce77d09f40") + ) + (fp_line + (start 13.6 8.4) + (end 9.5 8.4) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "f83cfb26-f391-4383-95af-26728d7359eb") + ) + (fp_circle + (center 7.5 2.5) + (end 10.5 2.5) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.SilkS") + (uuid "7a998892-b0ca-4dd7-bd79-54276c2a716e") + ) + (fp_line + (start -1.5 -4.6) + (end -1.5 9.6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "28ff7ac9-f90a-43b7-a72c-43891ed481a7") + ) + (fp_line + (start -1.5 -4.6) + (end 16 -4.6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "b092f9bc-e760-4f7f-8c32-0d6d103c25d5") + ) + (fp_line + (start 16 9.6) + (end -1.5 9.6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "351526bc-60c8-4fa5-8658-74e277fb5b92") + ) + (fp_line + (start 16 9.6) + (end 16 -4.6) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "8d29d83e-786b-4587-b2a3-1871f9a4d6fa") + ) + (fp_line + (start 1.5 -2.2) + (end 2.5 -3.3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.Fab") + (uuid "1981e7b0-4fe8-4b03-9a6c-dd26c551354b") + ) + (fp_line + (start 1.5 8.3) + (end 1.5 -2.2) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.Fab") + (uuid "c1f7402a-79db-460f-ac89-951cb4a7184e") + ) + (fp_line + (start 2.5 -3.3) + (end 13.5 -3.3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.Fab") + (uuid "775d70bb-993a-482d-81d6-7be05dfff2bb") + ) + (fp_line + (start 4.5 2.5) + (end 10.5 2.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.Fab") + (uuid "2b81f02c-0d09-4683-a1f1-389a43a89855") + ) + (fp_line + (start 7.5 -0.5) + (end 7.5 5.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.Fab") + (uuid "77e64372-2dda-4501-bd18-c40c2431c00e") + ) + (fp_line + (start 13.5 -3.3) + (end 13.5 8.3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.Fab") + (uuid "9eec3711-a6dd-4654-8e3a-9446df89c7d0") + ) + (fp_line + (start 13.5 8.3) + (end 1.5 8.3) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.Fab") + (uuid "2fe6680d-5934-4c1c-bceb-8549ad7824e3") + ) + (fp_circle + (center 7.5 2.5) + (end 10.5 2.5) + (stroke + (width 0.12) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "0b007828-bdba-48d6-855a-71d65a1f7171") + ) + (fp_text user "${REFERENCE}" + (at 11.1 6.3 0) + (layer "F.Fab") + (uuid "1172bf08-c301-4dcc-8ab7-5c1615f78eb7") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "A" thru_hole rect + (at 0 0) + (size 2 2) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/ENC_A") + (pinfunction "A_A") + (pintype "passive") + (uuid "7ec5de8c-f6c8-4025-98ff-7888fb4ae449") + ) + (pad "B" thru_hole circle + (at 0 5) + (size 2 2) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/ENC_B") + (pinfunction "B_B") + (pintype "passive") + (uuid "0185854f-eb24-4a75-bd38-cdfcf29b750b") + ) + (pad "C" thru_hole circle + (at 0 2.5) + (size 2 2) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "C_C") + (pintype "passive") + (uuid "8f2700e1-d5a8-4589-91dd-91f8a4769001") + ) + (pad "MP" thru_hole rect + (at 7.5 -3.1) + (size 3.2 2) + (drill oval 2.8 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "190bb730-2e3a-4230-b92c-f4cd88e59978") + ) + (pad "MP" thru_hole rect + (at 7.5 8.1) + (size 3.2 2) + (drill oval 2.8 1.5) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (uuid "91bc767a-4f24-4777-ba98-800294b5ff34") + ) + (pad "S1" thru_hole circle + (at 14.5 5) + (size 2 2) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "/ENC_BTN") + (pinfunction "S1_S1") + (pintype "passive") + (uuid "7750f94a-cbed-4002-9a03-b85410180452") + ) + (pad "S2" thru_hole circle + (at 14.5 0) + (size 2 2) + (drill 1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "S2_S2") + (pintype "passive") + (uuid "f3de47e5-fd54-4458-9d5e-83aef680ea79") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Rotary_Encoder.3dshapes/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Package_TO_SOT_SMD:SOT-23" + (layer "F.Cu") + (uuid "f264e112-1787-4db3-86f6-dfab864a5807") + (at 100.5 84.05) + (descr "SOT, 3 Pin (JEDEC TO-236 Var AB https://www.jedec.org/document_search?search_api_views_fulltext=TO-236)") + (tags "SOT TO_SOT_SMD") + (property "Reference" "D4" + (at 0 -2.4 0) + (layer "F.SilkS") + (hide yes) + (uuid "324720dc-68fa-4a04-aaa1-a9415e960d31") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "BAT54C" + (at 0 2.4 0) + (layer "F.Fab") + (hide yes) + (uuid "97cab49f-a0ad-4a04-8073-1d050f5171bb") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "64577c56-ce89-4c01-a427-a1b999183a4f") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "a77bd724-7cc3-47f4-b441-49936cbf1e6a") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "SOT?23*") + (path "/b2063f59-e583-4de1-a038-77fe20adc954") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "3" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.76 -1.56) + (end 0.76 -1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1d7c1a6d-bd01-4fe8-a657-8d41a37ff1d6") + ) + (fp_line + (start -0.76 -1.51) + (end -0.76 -1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "aad0ed46-9cb5-48b5-aa1d-7fbc55832497") + ) + (fp_line + (start -0.76 0.39) + (end -0.76 -0.39) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1482f493-081f-4477-ad29-fc97c999f89c") + ) + (fp_line + (start -0.76 1.56) + (end -0.76 1.51) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e231b134-9b50-4a73-988c-6ff262a4f448") + ) + (fp_line + (start 0.76 -1.56) + (end 0.76 -0.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "4201ae16-cfe5-463d-834e-ac3675ca657c") + ) + (fp_line + (start 0.76 0.56) + (end 0.76 1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "c3a440d7-fab2-4cfc-a355-3294feae0e6a") + ) + (fp_line + (start 0.76 1.56) + (end -0.76 1.56) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "2fc8a11e-3f0a-4c59-99aa-35d941089ef5") + ) + (fp_poly + (pts + (xy -1.3 -0.38) (xy -1.06 -0.05) (xy -1.54 -0.05) + ) + (stroke + (width 0.12) + (type solid) + ) + (fill yes) + (layer "F.SilkS") + (uuid "1d6b8c22-dde8-40ab-b837-c9ad4b689449") + ) + (fp_line + (start -1.93 -1.5) + (end -0.9 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "7ad83cd4-729f-4264-8570-725af9c81f1c") + ) + (fp_line + (start -1.93 -0.39) + (end -1.93 -1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "d3dfbf27-003b-4fc2-9811-cad03c4a6a7b") + ) + (fp_line + (start -1.93 0.39) + (end -0.9 0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "01731855-e773-4823-8f00-b9a3baee20d1") + ) + (fp_line + (start -1.93 1.5) + (end -1.93 0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "2161cd08-989a-48db-8206-0b3b1e4c7265") + ) + (fp_line + (start -0.9 -1.7) + (end 0.9 -1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "297d586e-14fa-43b2-aa96-e5397feb4394") + ) + (fp_line + (start -0.9 -1.5) + (end -0.9 -1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "fd6bd05e-a628-4c85-bc6e-964e6880f10b") + ) + (fp_line + (start -0.9 -0.39) + (end -1.93 -0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "af923dfd-ecb8-4738-bcaf-8657a81e4202") + ) + (fp_line + (start -0.9 0.39) + (end -0.9 -0.39) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f1ef49e4-0ac9-48ef-b9c0-c17e4d5ce8b1") + ) + (fp_line + (start -0.9 1.5) + (end -1.93 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "a2956aee-2aa3-407a-bc2e-9525218c7bdc") + ) + (fp_line + (start -0.9 1.7) + (end -0.9 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "94ffb09f-1130-41ee-8661-5914213c8dc8") + ) + (fp_line + (start 0.9 -1.7) + (end 0.9 -0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "d9cde8fd-26fc-44aa-b9e7-e5e54cdb2167") + ) + (fp_line + (start 0.9 -0.55) + (end 1.93 -0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "a4c146e2-88c1-4243-9cab-69d1510b50e8") + ) + (fp_line + (start 0.9 0.55) + (end 0.9 1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "20b574d8-8817-45b3-be8d-bbfdd2b94c81") + ) + (fp_line + (start 0.9 1.7) + (end -0.9 1.7) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "d9da932f-32c1-45b3-8cac-938ad203662a") + ) + (fp_line + (start 1.93 -0.55) + (end 1.93 0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "73270192-bdb7-4401-a93f-8bff274b7fdb") + ) + (fp_line + (start 1.93 0.55) + (end 0.9 0.55) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "f2f39315-7c53-4085-845e-5e41f76f3447") + ) + (fp_poly + (pts + (xy -0.325 -1.45) (xy 0.65 -1.45) (xy 0.65 1.45) (xy -0.65 1.45) (xy -0.65 -1.125) + ) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "8522ec65-91fa-4e8a-992a-44d649b6b99c") + ) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "ce3001a6-ab7d-4fb1-b90a-dbfb6c1526b7") + (effects + (font + (size 0.72 0.72) + (thickness 0.11) + ) + ) + ) + (pad "1" smd roundrect + (at -0.9375 -0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/SUPERVISOR_RESET") + (pintype "passive") + (uuid "c4580d75-07ca-4475-a0cd-9a67de2f132c") + ) + (pad "2" smd roundrect + (at -0.9375 0.95) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/ESP32_EN") + (pintype "passive") + (uuid "700ae553-ac96-4a6d-9099-308887fa6c00") + ) + (pad "3" smd roundrect + (at 0.9375 0) + (size 1.475 0.6) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(D4-Pad3)") + (pintype "passive") + (uuid "2cc53aea-05bb-49f4-87aa-e07521c2f049") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "TestPoint:TestPoint_Pad_1.5x1.5mm" + (layer "F.Cu") + (uuid "f733c384-0332-4c09-ac3a-53c0329a0e6d") + (at 79.075 77.175) + (descr "SMD rectangular pad as test Point, square 1.5mm side length") + (tags "test point SMD pad rectangle square") + (property "Reference" "TP23" + (at 0 -1.648 0) + (layer "F.SilkS") + (uuid "85ae5142-3374-4649-8dcc-ce3a31945425") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "ALARM" + (at 0 1.75 0) + (layer "F.Fab") + (uuid "139fea2a-3a0c-4e17-a8b0-6055832ef8a5") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "06eb4f95-82bb-4d08-98d3-9034fb8c904f") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "e8c2a301-7eed-4df2-9285-b08aa1aa5e48") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "Pin* Test*") + (path "/69a8b718-f639-4a3c-ab86-1974c857c27c") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1") + ) + ) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.95 -0.95) + (end 0.95 -0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "e0c84429-c0e1-47c6-b3bb-89c6adeeacfa") + ) + (fp_line + (start -0.95 0.95) + (end -0.95 -0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "0b6c01ca-0856-48d5-8418-2dcbaa06d31e") + ) + (fp_line + (start 0.95 -0.95) + (end 0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "403e2635-5836-48ad-8e2c-2bfdb09eb60f") + ) + (fp_line + (start 0.95 0.95) + (end -0.95 0.95) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1a7281dc-0a26-4aa5-bcb5-1f718df56c7f") + ) + (fp_line + (start -1.25 -1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "18eb44b1-8fef-405a-9b5a-837395aa4fb9") + ) + (fp_line + (start -1.25 -1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "3b6f4ea6-5436-41e0-9741-bf93192c63fe") + ) + (fp_line + (start 1.25 1.25) + (end -1.25 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "dd0e953a-d5c1-4e2f-b57c-e349409bcee2") + ) + (fp_line + (start 1.25 1.25) + (end 1.25 -1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "F.CrtYd") + (uuid "2494fd6f-fc1e-4f7e-b1b2-14592d03d546") + ) + (fp_text user "${REFERENCE}" + (at 0 -1.65 0) + (layer "F.Fab") + (uuid "a5ef3311-d601-4c51-b992-24a3eaa9ddea") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (pad "1" smd rect + (at 0 0) + (size 1.5 1.5) + (layers "F.Cu" "F.Mask") + (net "/ALARM") + (pinfunction "1_1") + (pintype "passive") + (uuid "35cf6427-c837-4b09-a9e1-ac7d173bfb6e") + ) + (embedded_fonts no) + ) + (footprint "Capacitor_SMD:C_0402_1005Metric" + (layer "F.Cu") + (uuid "fb24eabe-6b68-4317-9714-920208df29ca") + (at 56.75 87.75) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "capacitor") + (property "Reference" "C22" + (at 0 -1.16 0) + (layer "F.SilkS") + (hide yes) + (uuid "341bdc9c-dc86-4d00-9a2e-4822fbe6be02") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "100nF" + (at 0 1.16 0) + (layer "F.Fab") + (hide yes) + (uuid "6f1def66-897d-43cc-ba9c-e6a56fc24639") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "74562e2f-3f0c-47ee-a055-132a5b856b9d") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "8c66c525-1871-4fe1-8bf2-1bbd7d4eb1b5") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C1525" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "67f9e42b-97ad-4280-ac99-c104b728d2ab") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/a12a6a61-106d-4474-8cf0-d87a16fb5635") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.107836 -0.36) + (end 0.107836 -0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "15bc96fa-68c9-4e62-9073-29fbe0bb053d") + ) + (fp_line + (start -0.107836 0.36) + (end 0.107836 0.36) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "1348bf15-0a87-47c2-93fe-894ce57706c4") + ) + (fp_rect + (start -0.91 -0.46) + (end 0.91 0.46) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "651f5b03-4f48-490e-b601-f03258d935e1") + ) + (fp_rect + (start -0.5 -0.25) + (end 0.5 0.25) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "8cf58f5d-b28a-412c-b8f9-231ef1e55968") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "9bf1cdb8-0cfd-4413-ac67-8cee63348fa7") + (effects + (font + (size 0.25 0.25) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/ENC_BTN") + (pintype "passive") + (uuid "7e22c6b0-2048-4b4a-b27b-764cffa27cc7") + ) + (pad "2" smd roundrect + (at 0.48 0) + (size 0.56 0.62) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "a1b62cfb-24b7-4a07-b433-95cbcaa270e0") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Capacitor_SMD:C_0805_2012Metric" + (layer "F.Cu") + (uuid "fe2a47b9-f630-40c6-91fb-ddaa7645cfe1") + (at 136.9875 124.15 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing)") + (tags "capacitor") + (property "Reference" "C27" + (at 0 -1.68 0) + (layer "F.SilkS") + (hide yes) + (uuid "67cb28cd-a39e-4521-8a54-75b992834d65") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "10uF" + (at 0 1.68 0) + (layer "F.Fab") + (hide yes) + (uuid "8d9f158a-8e1e-458b-8bb1-befb621b907a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "cd209bc4-f35c-4972-aa35-b87cc74f4f83") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "8f7da289-9d93-4e71-a0e0-827f6009ee8e") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property ki_fp_filters "C_*") + (path "/22c0438b-3843-44a3-b1d7-5fe4fe7fbdcf") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.261252 0.735) + (end 0.261252 0.735) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d0310984-e32f-4505-a846-6d738c6fc2d8") + ) + (fp_line + (start -0.261252 -0.735) + (end 0.261252 -0.735) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "015092e6-0feb-49f5-bde9-07fe2e237b81") + ) + (fp_rect + (start -1.7 -0.98) + (end 1.7 0.98) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "fb3daed9-ba83-4072-a580-c6e98c992432") + ) + (fp_rect + (start -1 -0.625) + (end 1 0.625) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "3bad210e-b852-4a79-ad35-51b62c7b8c5c") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "7fd6d4eb-6673-4ea6-9213-f375c34d572b") + (effects + (font + (size 0.5 0.5) + (thickness 0.08) + ) + ) + ) + (pad "1" smd roundrect + (at -0.95 0 180) + (size 1 1.45) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "+3.3V") + (pintype "passive") + (uuid "5027adae-8fe4-4c3e-8673-cc27a725a219") + ) + (pad "2" smd roundrect + (at 0.95 0 180) + (size 1 1.45) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "1a95954d-ad54-4ba1-b655-95a98cad823e") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "fe9f8f9e-cfbd-4234-8511-e491006aab11") + (at 133 42.75 -90) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R19" + (at 0 -1.17 90) + (layer "F.SilkS") + (hide yes) + (uuid "1e6a228c-17a7-4c76-acea-0ebacbcabc6b") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "100R" + (at 0 1.17 90) + (layer "F.Fab") + (hide yes) + (uuid "ff9b00a2-0cb3-44eb-92a5-29b330201bbd") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "9cdda50b-494f-4b48-92d5-ffdf5f7bf61a") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 90) + (layer "F.Fab") + (hide yes) + (uuid "4bf3e911-52a2-4889-954c-b858119a0e0a") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25076" + (at 0 0 270) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "c70c6fa6-6c39-4c33-b89e-21f122b80a31") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/5290bec0-3568-422d-a6a5-aafe25303629") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.153641 0.38) + (end 0.153641 0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "27d63c28-096b-4229-871a-d63558f80c8b") + ) + (fp_line + (start -0.153641 -0.38) + (end 0.153641 -0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "d23513e9-ec5c-4a6c-b2a7-6d3cefae5d4d") + ) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "89c6ea5b-2fa3-4efc-9b48-1f0e49d9213f") + ) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "569f6311-7736-43cf-97e0-f54687a82902") + ) + (fp_text user "${REFERENCE}" + (at 0 0 90) + (layer "F.Fab") + (uuid "c9530f81-48b9-47ba-ae47-c1904529031f") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/HEAT_EN") + (pintype "passive") + (uuid "ff07bf86-b606-43ba-91ff-3dfdfe514ba2") + ) + (pad "2" smd roundrect + (at 0.51 0 270) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "Net-(C23-Pad1)") + (pintype "passive") + (uuid "a265deac-0ae4-4d66-8f5f-5463d98f3959") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Resistor_SMD:R_0402_1005Metric" + (layer "F.Cu") + (uuid "ff873c24-693a-4eb4-8934-d6523e477811") + (at 61.3 61) + (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC-7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf)") + (tags "resistor") + (property "Reference" "R1" + (at 0 -1.17 0) + (layer "F.SilkS") + (hide yes) + (uuid "89bf2d7b-94ab-4470-b89f-147eabdfb2b9") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Value" "5.1k" + (at 0 1.17 0) + (layer "F.Fab") + (hide yes) + (uuid "80c67681-e5ea-4eae-9819-2ff91cdc070a") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "29e9d733-8300-44ed-b38d-ef65e2fbd3b5") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 0 0 0) + (layer "F.Fab") + (hide yes) + (uuid "dfd713ce-2350-408c-a919-81521805e884") + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25905" + (at 0 0 0) + (unlocked yes) + (layer "F.Fab") + (hide yes) + (uuid "a2dc483e-695d-46ad-8221-00860f15f445") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + ) + ) + (property ki_fp_filters "R_*") + (path "/a9ca25f6-22d9-4d6d-8c59-cbb9f096217e") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr smd) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start -0.153641 -0.38) + (end 0.153641 -0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "386fe032-31b3-4138-b778-5855a34e76fe") + ) + (fp_line + (start -0.153641 0.38) + (end 0.153641 0.38) + (stroke + (width 0.12) + (type solid) + ) + (layer "F.SilkS") + (uuid "64b85e12-ecb8-43a6-b3b6-f5fc92072249") + ) + (fp_rect + (start -0.93 -0.47) + (end 0.93 0.47) + (stroke + (width 0.05) + (type solid) + ) + (fill no) + (layer "F.CrtYd") + (uuid "936f9ec0-bdd4-48e7-9508-269c1dad592c") + ) + (fp_rect + (start -0.525 -0.27) + (end 0.525 0.27) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "F.Fab") + (uuid "c6edacbb-b4d5-48a4-af01-88d52eef99b0") + ) + (fp_text user "${REFERENCE}" + (at 0 0 0) + (layer "F.Fab") + (uuid "f790d9b4-4803-4ed5-bbf4-19dbce5bb009") + (effects + (font + (size 0.26 0.26) + (thickness 0.04) + ) + ) + ) + (pad "1" smd roundrect + (at -0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "/USB_CC1") + (pintype "passive") + (uuid "22fceb47-9a1b-432d-aecf-5fef4b55dfbf") + ) + (pad "2" smd roundrect + (at 0.51 0) + (size 0.54 0.64) + (layers "F.Cu" "F.Mask" "F.Paste") + (roundrect_rratio 0.25) + (net "GND") + (pintype "passive") + (uuid "edafe612-0ba0-4711-b059-8ddc9e273c5f") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (footprint "Button_Switch_THT:SW_PUSH_6mm_H5mm" + (layer "B.Cu") + (uuid "67ddb44b-c141-4af8-bb0b-c9e0c2fb3d02") + (at 107.75 74.5 180) + (descr "tactile push button, 6x6mm e.g. PHAP33xx series, height=5mm") + (tags "tact sw push 6mm") + (property "Reference" "SW1" + (at 3.25 2 0) + (layer "B.SilkS") + (uuid "000cd26a-ef86-49a6-8176-34b1f96ba385") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Value" "RESET" + (at 3.75 -6.7 0) + (layer "B.Fab") + (uuid "cd052d6c-7096-4086-a3ad-780a4de56072") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (unlocked yes) + (layer "B.Fab") + (hide yes) + (uuid "657b2163-0957-4405-a6c7-a3f05efb7c1d") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "Description" "" + (at 0 0 0) + (unlocked yes) + (layer "B.Fab") + (hide yes) + (uuid "dd985d2a-8ff5-4824-8278-37557c695b5c") + (effects + (font + (size 1.27 1.27) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (property "LCSC" "C111609" + (at 0 0 0) + (unlocked yes) + (layer "B.Fab") + (hide yes) + (uuid "a96fcdb4-6e70-4a7b-b9ff-82aca99eaaa3") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (path "/9b15da63-f570-402a-adfa-2bc693c9ac1c") + (sheetname "/") + (sheetfile "kilncontrol.kicad_sch") + (units + (unit + (name "A") + (pins "1" "2") + ) + ) + (attr through_hole) + (duplicate_pad_numbers_are_jumpers no) + (fp_line + (start 6.75 -3) + (end 6.75 -1.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "3ef9125a-7361-4e0f-9085-c00519f4a4bc") + ) + (fp_line + (start 5.5 1) + (end 1 1) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "63be6c8e-ec40-4c77-8962-23eb173b5d2d") + ) + (fp_line + (start 1 -5.5) + (end 5.5 -5.5) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "ee0dc1b3-7329-4ff3-b914-4d006c0dbc58") + ) + (fp_line + (start -0.25 -1.5) + (end -0.25 -3) + (stroke + (width 0.12) + (type solid) + ) + (layer "B.SilkS") + (uuid "974ec563-0176-480f-bb81-d0d67123356e") + ) + (fp_line + (start 8 1.5) + (end 8 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "f6d28aa0-bc35-477d-958f-13f616c65a9a") + ) + (fp_line + (start 8 1.25) + (end 8 -5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "476cbc87-92ae-47f5-b86a-893039192452") + ) + (fp_line + (start 8 -6) + (end 8 -5.75) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "dd3e404b-a4a2-455d-aace-30b34b22daf6") + ) + (fp_line + (start 7.75 1.5) + (end 8 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "f16c3edb-ad5b-46cf-bf76-133f1ab35f27") + ) + (fp_line + (start 7.75 -6) + (end 8 -6) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "715973d9-52ef-459d-b4c3-a1d197164661") + ) + (fp_line + (start 7.75 -6) + (end -1.25 -6) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "ad7fb860-33b8-4071-877d-ba5db6ca6af3") + ) + (fp_line + (start -1.25 1.5) + (end 7.75 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "33af2252-b23d-4a49-9a4f-bb2e54e0023d") + ) + (fp_line + (start -1.5 1.5) + (end -1.25 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "d9886d9b-8cfd-4e7e-bd71-f56379c1f2fd") + ) + (fp_line + (start -1.5 1.25) + (end -1.5 1.5) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "0d39e3b1-4189-4e02-93ad-f97a3ad9aa9f") + ) + (fp_line + (start -1.5 -5.75) + (end -1.5 1.25) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "d7eca8e6-b1f1-4951-b3ee-588ae37c56e0") + ) + (fp_line + (start -1.5 -5.75) + (end -1.5 -6) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "af9373c0-fca2-433a-b866-717600433881") + ) + (fp_line + (start -1.5 -6) + (end -1.25 -6) + (stroke + (width 0.05) + (type solid) + ) + (layer "B.CrtYd") + (uuid "b058a542-d513-4e20-8d40-0c9399293054") + ) + (fp_line + (start 6.25 0.75) + (end 6.25 -5.25) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "602aa9c3-646e-403d-95c5-b3a902fff86c") + ) + (fp_line + (start 6.25 -5.25) + (end 0.25 -5.25) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "18f0533e-0093-481b-a57a-2a41e7c14d53") + ) + (fp_line + (start 3.25 0.75) + (end 6.25 0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "39a90ff8-a480-4a88-99bc-6d0665b1806d") + ) + (fp_line + (start 0.25 0.75) + (end 3.25 0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "bbbaf091-fe56-4266-bf43-542330ab6a1d") + ) + (fp_line + (start 0.25 -5.25) + (end 0.25 0.75) + (stroke + (width 0.1) + (type solid) + ) + (layer "B.Fab") + (uuid "96fc50bc-b06e-4f99-980a-8b850cd57249") + ) + (fp_circle + (center 3.25 -2.25) + (end 1.25 -2.5) + (stroke + (width 0.1) + (type solid) + ) + (fill no) + (layer "B.Fab") + (uuid "4af4c8b5-8483-476d-8fba-a39a0a37d463") + ) + (fp_text user "${REFERENCE}" + (at 3.25 -2.25 0) + (layer "B.Fab") + (uuid "48eb3bbe-a607-4c45-97c2-f2c581cfada7") + (effects + (font + (size 1 1) + (thickness 0.15) + ) + (justify mirror) + ) + ) + (pad "1" thru_hole circle + (at 0 0 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "1_1") + (pintype "passive") + (uuid "52f39dce-99ce-4798-be3f-62d4220bcf8e") + ) + (pad "1" thru_hole circle + (at 6.5 0 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "GND") + (pinfunction "1_1") + (pintype "passive") + (uuid "3ab4bb41-e863-4daf-a7a8-4cf709da2ae5") + ) + (pad "2" thru_hole circle + (at 0 -4.5 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(D4-Pad3)") + (pinfunction "2_2") + (pintype "passive") + (uuid "f960ada8-e3b6-40d3-89bc-f6a9d74e8023") + ) + (pad "2" thru_hole circle + (at 6.5 -4.5 90) + (size 2 2) + (drill 1.1) + (layers "*.Cu" "*.Mask") + (remove_unused_layers no) + (net "Net-(D4-Pad3)") + (pinfunction "2_2") + (pintype "passive") + (uuid "3c2909c3-0371-41fb-bbe0-5d5a65764998") + ) + (embedded_fonts no) + (model "${KICAD10_3DMODEL_DIR}/Button_Switch_THT.3dshapes/SW_PUSH_6mm_H5mm.step" + (offset + (xyz 0 0 0) + ) + (scale + (xyz 1 1 1) + ) + (rotate + (xyz 0 0 0) + ) + ) + ) + (gr_rect + (start 50 40) + (end 150 110) + (stroke + (width 0.2) + (type solid) + ) + (fill no) + (locked yes) + (layer "Edge.Cuts") + (uuid "b6177efe-7172-4eb3-8da5-c53ecd01a6a0") + ) + (segment + (start 70.35 62.55) + (end 70.6 62.3) + (width 0.2) + (layer "F.Cu") + (net "GND") + (uuid "7bad8bf6-3a03-4de6-92d9-a1235cea3e28") + ) + (segment + (start 65.6 62.3) + (end 65.85 62.55) + (width 0.2) + (layer "F.Cu") + (net "GND") + (uuid "b2f64c96-b250-4ab0-a432-e7bccd6d10cf") + ) + (segment + (start 65.85 62.55) + (end 70.35 62.55) + (width 0.2) + (layer "F.Cu") + (net "GND") + (uuid "c93b6066-0036-44c3-b78e-5bffc633acea") + ) + (via + (at 70.6 62.3) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "05bb9824-66ef-4c58-9baa-25963a941d81") + ) + (via + (at 76.2 62.3) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "1c201084-30bc-49d1-a663-b74a1846ca7e") + ) + (via + (at 76.2 64.6) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "420ed73b-621b-41fd-9287-4bc1f1b699ba") + ) + (via + (at 65.6 64.6) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "542dd838-f703-4ab6-92af-c36f45341ddb") + ) + (via + (at 65.6 62.3) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "86051d93-ba07-4803-8fa7-eae0e35c2ae3") + ) + (via + (at 60.6 62.3) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "970fa13a-cb74-4772-87e6-e911afda61c2") + ) + (via + (at 60.6 64.6) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "d7013a1b-85d9-4893-b4f6-b6de69d09f40") + ) + (via + (at 70.6 64.6) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (free yes) + (net "GND") + (uuid "efc32db4-93dd-4954-b5b2-164329cf8c06") + ) + (segment + (start 56.72 65.649999) + (end 56.72 62.31759) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "06a990cb-3e4b-4bba-8354-b578558a7ecd") + ) + (segment + (start 56.72 62.31759) + (end 57.58759 61.45) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "6bcec930-3dce-426b-9388-6f3ae60d3890") + ) + (segment + (start 57.58759 61.45) + (end 58.145 61.45) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "820470fe-4772-42e6-9415-4709ac57b50d") + ) + (segment + (start 54.15 59.414594) + (end 54.15 58.35) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "8a01b06c-51df-4864-ae66-349f954e7706") + ) + (segment + (start 57.91 61.685) + (end 56.420406 61.685) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "8cb5af29-57f3-49f8-8979-8f82dbcaae4a") + ) + (segment + (start 58.145 66.35) + (end 57.420001 66.35) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "a4ad24d7-6832-48fc-8d13-b616234140b0") + ) + (segment + (start 58.145 61.45) + (end 57.91 61.685) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "c9b40ba4-663c-46aa-b4d9-91a974235851") + ) + (segment + (start 56.420406 61.685) + (end 54.15 59.414594) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "d187bec9-9f86-4544-be8d-736936135c36") + ) + (segment + (start 57.420001 66.35) + (end 56.72 65.649999) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "e2d5e0cf-f165-4b29-befa-e63b9ae1b790") + ) + (segment + (start 54.15 58.35) + (end 52.2 56.4) + (width 0.2) + (layer "F.Cu") + (net "/VBUS") + (uuid "f62a182e-bfcb-448a-9c21-a24631cbbc85") + ) + (segment + (start 58.95 62.65) + (end 60.6 61) + (width 0.2) + (layer "F.Cu") + (net "/USB_CC1") + (uuid "46d1d8d5-1e09-4a67-b0a5-42d3e91f6300") + ) + (segment + (start 60.6 61) + (end 60.79 61) + (width 0.2) + (layer "F.Cu") + (net "/USB_CC1") + (uuid "932eebaa-4146-42f0-9b48-6bad1ec598e4") + ) + (segment + (start 58.145 62.65) + (end 58.95 62.65) + (width 0.2) + (layer "F.Cu") + (net "/USB_CC1") + (uuid "d56aa644-cae7-4f7c-9335-03246ac3ce6d") + ) + (segment + (start 59.213212 63.65) + (end 58.145 63.65) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "0f012ed5-d160-400b-b3e9-6bb3243a7057") + ) + (segment + (start 58.90241 64.65) + (end 59.253212 64.299198) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "27f3b62b-b2c9-43b7-b8a8-be9542da4dfb") + ) + (segment + (start 77.159999 64.1) + (end 76.749999 63.69) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "623dbb8d-fe71-4553-92fe-fd5e761dec10") + ) + (segment + (start 59.253212 63.69) + (end 59.213212 63.65) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "6d2d56da-c863-490f-869d-77c453134cfe") + ) + (segment + (start 76.749999 63.69) + (end 59.253212 63.69) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "6eefeb66-35a2-4f0c-93ac-c4241ff1c90d") + ) + (segment + (start 59.253212 64.299198) + (end 59.253212 63.69) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "a780fcaa-ffeb-4282-a351-fa2a6885dfa5") + ) + (segment + (start 58.145 64.65) + (end 58.90241 64.65) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "cefcb19f-3cc1-4d37-807e-d8d95402d1c6") + ) + (segment + (start 78.285 64.1) + (end 77.159999 64.1) + (width 0.2) + (layer "F.Cu") + (net "/USB_DP") + (uuid "f908f8c9-e3b6-45b4-a428-773be8d42af3") + ) + (segment + (start 58.145 64.15) + (end 57.38759 64.15) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "023a9245-adaf-48c8-ae37-b173b6408b83") + ) + (segment + (start 57.12 63.41759) + (end 57.38759 63.15) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "188aaac1-40a8-4325-b1b0-dd39474d2a35") + ) + (segment + (start 57.38759 64.15) + (end 57.12 63.88241) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "25007357-097b-4106-8850-8af9dbacea56") + ) + (segment + (start 58.991006 63.15) + (end 58.145 63.15) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "521b0756-8ed3-4aa4-8dc9-135db5e76063") + ) + (segment + (start 59.081006 63.24) + (end 58.991006 63.15) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "59011457-50fa-4e29-9d0d-4912afdabd93") + ) + (segment + (start 57.38759 63.15) + (end 58.145 63.15) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "66efb451-ec1f-4205-ad4b-7fedf4f4c9ef") + ) + (segment + (start 57.12 63.88241) + (end 57.12 63.41759) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "8a59e876-8e4e-4bc8-832b-4d3272f37774") + ) + (segment + (start 76.749999 63.24) + (end 59.081006 63.24) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "cf201cff-9e16-40a0-8207-3785e2566a08") + ) + (segment + (start 77.159999 62.83) + (end 76.749999 63.24) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "d2056ad7-28ea-43dc-b1b6-56333db839c2") + ) + (segment + (start 78.285 62.83) + (end 77.159999 62.83) + (width 0.2) + (layer "F.Cu") + (net "/USB_DN") + (uuid "daa59bce-fa2b-4aa7-a6c9-fdc72f8d3254") + ) + (segment + (start 60.54 65.65) + (end 60.59 65.7) + (width 0.2) + (layer "F.Cu") + (net "/USB_CC2") + (uuid "4a0499f9-8cb8-47a2-9ea1-82e431afc166") + ) + (segment + (start 60.59 65.7) + (end 60.79 65.7) + (width 0.2) + (layer "F.Cu") + (net "/USB_CC2") + (uuid "7af35d54-744b-47dd-97cc-8353a3b18ae5") + ) + (segment + (start 58.145 65.65) + (end 60.54 65.65) + (width 0.2) + (layer "F.Cu") + (net "/USB_CC2") + (uuid "ee5df174-1b5a-43d7-b176-04d84550880d") + ) + (segment + (start 121.1 61.5) + (end 117.5 61.5) + (width 0.8) + (layer "F.Cu") + (net "+5V") + (uuid "54303015-a504-4718-98d1-5973594fbfee") + ) + (segment + (start 115.25 59.25) + (end 113.4 59.25) + (width 0.8) + (layer "F.Cu") + (net "+5V") + (uuid "84f8ba3b-f872-4660-9453-c65113b1b199") + ) + (segment + (start 117.5 61.5) + (end 115.25 59.25) + (width 0.8) + (layer "F.Cu") + (net "+5V") + (uuid "f4123777-09e1-4914-8221-a2673bfd9272") + ) + (segment + (start 117.7 53.9) + (end 115.65 55.95) + (width 0.6) + (layer "F.Cu") + (net "/ALARM_DRV") + (uuid "15c355f2-1f33-4633-b2b3-96d14748831c") + ) + (segment + (start 113.4 54.1) + (end 113.4 55.95) + (width 0.6) + (layer "F.Cu") + (net "/ALARM_DRV") + (uuid "86f845ba-f5a2-4813-b56a-9417346c07b8") + ) + (segment + (start 121.1 53.9) + (end 117.7 53.9) + (width 0.6) + (layer "F.Cu") + (net "/ALARM_DRV") + (uuid "a85b353f-0fa2-45bc-908f-e89e8a4d40e4") + ) + (segment + (start 115.65 55.95) + (end 113.4 55.95) + (width 0.6) + (layer "F.Cu") + (net "/ALARM_DRV") + (uuid "b968cbd6-2d60-43ae-8b4a-a6dbc40c647e") + ) + (segment + (start 137.25 44.75) + (end 137.25 41.75) + (width 0.2) + (layer "F.Cu") + (net "/PUMP_NODE") + (uuid "845dce26-8e53-4f88-9166-3e0a378f29d2") + ) + (segment + (start 134.5 45.5) + (end 136.5 45.5) + (width 0.2) + (layer "F.Cu") + (net "/PUMP_NODE") + (uuid "8bc3d686-2db9-495f-b82a-9e924c20a07a") + ) + (segment + (start 132.375 44.55) + (end 133.55 44.55) + (width 0.2) + (layer "F.Cu") + (net "/PUMP_NODE") + (uuid "c1311d52-fb4f-4fde-90de-a7b7037d53b6") + ) + (segment + (start 133.55 44.55) + (end 134.5 45.5) + (width 0.2) + (layer "F.Cu") + (net "/PUMP_NODE") + (uuid "e73c8faa-3395-4220-9ef8-05c66d6f0cd4") + ) + (segment + (start 136.5 45.5) + (end 137.25 44.75) + (width 0.2) + (layer "F.Cu") + (net "/PUMP_NODE") + (uuid "f4c9c586-4f05-4cef-90f9-bf91ac22539e") + ) + (segment + (start 128.35 45.5) + (end 128.25 45.4) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN_DC") + (uuid "0cca13d4-49b9-455f-8efa-820d4eba8d11") + ) + (segment + (start 125.26 45.26) + (end 124.25 44.25) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN_DC") + (uuid "230e02fa-a173-4523-bde3-19209d706a2b") + ) + (segment + (start 130.5 47.35) + (end 130.5 45.5) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN_DC") + (uuid "4a4eed87-557f-4886-a24a-5677a93f3fee") + ) + (segment + (start 126.5 45.26) + (end 125.26 45.26) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN_DC") + (uuid "654db8fa-b476-4ddc-8bc7-3805885ced3e") + ) + (segment + (start 128.25 45.4) + (end 126.64 45.4) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN_DC") + (uuid "8dc31539-d800-427a-ae50-b8c29987a02a") + ) + (segment + (start 130.5 45.5) + (end 128.35 45.5) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN_DC") + (uuid "a75e02fc-bcb5-417a-858d-2ae989e2039b") + ) + (segment + (start 126.64 45.4) + (end 126.5 45.26) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN_DC") + (uuid "c56293eb-c366-4de3-8080-ca6efe9eacbe") + ) + (segment + (start 144.6175 50.15) + (end 145.7175 51.25) + (width 0.2) + (layer "F.Cu") + (net "/LID_SWITCH") + (uuid "22c60012-f49b-47c3-9c0c-db305a653ad4") + ) + (segment + (start 139.9175 50.2) + (end 139.9675 50.15) + (width 0.2) + (layer "F.Cu") + (net "/LID_SWITCH") + (uuid "da29aaad-f13a-4c40-a05a-fc6296baf1e7") + ) + (segment + (start 139.9675 50.15) + (end 144.6175 50.15) + (width 0.2) + (layer "F.Cu") + (net "/LID_SWITCH") + (uuid "ea3767dd-0cb7-454d-9e30-67536a6de40e") + ) + (segment + (start 137.9675 50.2) + (end 139.9175 50.2) + (width 0.2) + (layer "F.Cu") + (net "/LID_SWITCH") + (uuid "f733cea1-f00b-4487-b59c-1dd12b055236") + ) + (segment + (start 139.9675 46.85) + (end 145.1175 46.85) + (width 0.6) + (layer "F.Cu") + (net "/COIL_DRV") + (uuid "0f3e94fa-2d0e-46d3-9114-3b1e5dfae1a2") + ) + (segment + (start 135.8 46.9) + (end 139.9175 46.9) + (width 0.6) + (layer "F.Cu") + (net "/COIL_DRV") + (uuid "2aa7062a-a6e0-477b-beef-81d9c690f91f") + ) + (segment + (start 132.375 48.3) + (end 134.4 48.3) + (width 0.6) + (layer "F.Cu") + (net "/COIL_DRV") + (uuid "2c30c5fb-bcab-46ef-a2a0-458a4e05495a") + ) + (segment + (start 134.4 48.3) + (end 135.8 46.9) + (width 0.6) + (layer "F.Cu") + (net "/COIL_DRV") + (uuid "5eff0798-1ab4-4b90-aec6-f2e93f8d5dc0") + ) + (segment + (start 145.1175 46.85) + (end 145.7175 46.25) + (width 0.6) + (layer "F.Cu") + (net "/COIL_DRV") + (uuid "acf8f6c1-d76c-41c2-9778-e37147104749") + ) + (segment + (start 139.85 102.21) + (end 140.41 101.65) + (width 0.2) + (layer "F.Cu") + (net "/TC1_N") + (uuid "3f39c41e-e2d9-4251-b87a-f97cf7bfce77") + ) + (segment + (start 140.41 101.65) + (end 145.635 101.65) + (width 0.2) + (layer "F.Cu") + (net "/TC1_N") + (uuid "4e2cc42a-2c86-4f64-8d7b-1212b55599ff") + ) + (segment + (start 139.85 103.45) + (end 139.85 102.21) + (width 0.2) + (layer "F.Cu") + (net "/TC1_N") + (uuid "b8ccaf73-528e-4ce2-98d7-77d239a4800a") + ) + (segment + (start 145.635 101.65) + (end 145.735 101.75) + (width 0.2) + (layer "F.Cu") + (net "/TC1_N") + (uuid "bb39b424-af47-4a18-a164-af414f19a131") + ) + (segment + (start 139.4675 100.5825) + (end 139.4 100.65) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "0dd8ba2c-2b1a-480f-9e25-9d55332e84b4") + ) + (segment + (start 139.4 100.65) + (end 139.4 101.64) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "111c7121-6de3-49b5-8f63-3c533ac77977") + ) + (segment + (start 136.0975 100.55) + (end 138.6475 100.55) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "3ce3f7c2-2ae4-4acb-b7ad-b45cf28beea1") + ) + (segment + (start 139.2975 99.9) + (end 136.0975 99.9) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "4493e80c-020b-4924-a47d-89d7cde04465") + ) + (segment + (start 139.4675 99.73) + (end 139.2975 99.9) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "72d443ab-67ae-4848-81c0-7bca7f6c8fbb") + ) + (segment + (start 139.4 101.64) + (end 139.39 101.65) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "9248dc97-dd16-4e94-b44c-ee61d73ed9a4") + ) + (segment + (start 139.4675 99.73) + (end 139.4675 100.5825) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "9276ff45-d6ed-4709-afbc-5cdd0adb9562") + ) + (segment + (start 138.6475 100.55) + (end 139.4675 99.73) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TN") + (uuid "f4a4809b-88e1-4e26-aa54-08dc6a56a0a9") + ) + (segment + (start 122 47.35) + (end 122 44.5) + (width 0.2) + (layer "F.Cu") + (net "/COIL_PERMIT") + (uuid "0b28b5eb-cce3-4a13-a6a5-c7898c286ec4") + ) + (segment + (start 122 44.5) + (end 121.75 44.25) + (width 0.2) + (layer "F.Cu") + (net "/COIL_PERMIT") + (uuid "306fe3e3-b5ab-4cc0-b998-7019876abce1") + ) + (segment + (start 120.25 47.25) + (end 121.9 47.25) + (width 0.2) + (layer "F.Cu") + (net "/COIL_PERMIT") + (uuid "3bdc0ee8-c50b-4626-b557-981469095bd5") + ) + (segment + (start 121.9 47.25) + (end 122 47.35) + (width 0.2) + (layer "F.Cu") + (net "/COIL_PERMIT") + (uuid "6db9cf37-df6e-4c00-be77-196d856f9683") + ) + (segment + (start 126.7 91.26) + (end 125.74 91.26) + (width 0.2) + (layer "F.Cu") + (net "/SUPERVISOR_TX") + (uuid "0e7e52a5-7539-4c7a-a4c6-f0a0a13fe181") + ) + (segment + (start 125.74 91.26) + (end 125.7 91.3) + (width 0.2) + (layer "F.Cu") + (net "/SUPERVISOR_TX") + (uuid "388e2936-a30e-43a1-8638-841a844cb13f") + ) + (segment + (start 126.7 91.26) + (end 126.7 93.25) + (width 0.2) + (layer "F.Cu") + (net "/SUPERVISOR_TX") + (uuid "7543822b-dcc8-42eb-8b2e-c3fd66805081") + ) + (segment + (start 133 42.24) + (end 132.66 41.9) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN") + (uuid "4d1d482b-32ab-4844-be3e-14be4e28ce14") + ) + (segment + (start 134.75 41.75) + (end 133.49 41.75) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN") + (uuid "84a4cde5-ecd0-4fc6-9f90-2dc6c60cf654") + ) + (segment + (start 133.49 41.75) + (end 133 42.24) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN") + (uuid "9dd312c0-35f7-443b-a2e3-b1b62f21ce00") + ) + (segment + (start 132.66 41.9) + (end 117.5 41.9) + (width 0.2) + (layer "F.Cu") + (net "/HEAT_EN") + (uuid "cbb8547c-5f81-4221-b0a8-3099a17ba7a1") + ) + (segment + (start 137.01 49.18) + (end 137 49.19) + (width 0.2) + (layer "F.Cu") + (net "/LID_SENSE") + (uuid "51c9079c-e7a4-4266-a584-6661327f8117") + ) + (segment + (start 137.9675 49.18) + (end 137.01 49.18) + (width 0.2) + (layer "F.Cu") + (net "/LID_SENSE") + (uuid "601f43ab-ca4b-4d73-9b0b-fddff8363ed3") + ) + (segment + (start 95.785 53.94) + (end 99.34 53.94) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO42") + (uuid "2b898ace-2009-475d-8a8d-5e2538146935") + ) + (segment + (start 100.65 55.25) + (end 100.65 59.5) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO42") + (uuid "78eb2454-9071-4fea-bb9e-d504024d5580") + ) + (segment + (start 99.34 53.94) + (end 100.65 55.25) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO42") + (uuid "b35e8613-2a1c-41f4-b056-a6fa2d619455") + ) + (segment + (start 101.75 60.6) + (end 102.6 60.6) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO42") + (uuid "f4209d11-dc47-49d8-952d-b991251b072a") + ) + (segment + (start 100.65 59.5) + (end 101.75 60.6) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO42") + (uuid "fef6d165-2d37-4718-8955-564015ac191d") + ) + (segment + (start 95.785 52.67) + (end 99.75 52.67) + (width 0.2) + (layer "F.Cu") + (net "/UART_RXD0") + (uuid "c84b367a-658f-43cf-b086-80e974ef66c2") + ) + (segment + (start 99.75 52.67) + (end 102.6 55.52) + (width 0.2) + (layer "F.Cu") + (net "/UART_RXD0") + (uuid "fab7bca7-7127-4033-8320-e6cf710ceaa5") + ) + (segment + (start 101.02 51.4) + (end 102.6 52.98) + (width 0.2) + (layer "F.Cu") + (net "/UART_TXD0") + (uuid "449170f6-c295-4467-8e2b-0d3c8b00b2de") + ) + (segment + (start 95.785 51.4) + (end 101.02 51.4) + (width 0.2) + (layer "F.Cu") + (net "/UART_TXD0") + (uuid "fb60853d-59cf-499a-9a3e-48657c3e0abb") + ) + (segment + (start 100.7 50.1) + (end 97.16 50.1) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO2") + (uuid "14d42578-d38f-42e4-bc28-ee56fdbe77f9") + ) + (segment + (start 97.13 50.13) + (end 95.785 50.13) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO2") + (uuid "6bcdf13c-4f0c-491f-881f-f995692f8cd3") + ) + (segment + (start 97.16 50.1) + (end 97.13 50.13) + (width 0.2) + (layer "F.Cu") + (net "/EXP_IO2") + (uuid "f8009743-966a-4963-903a-97f8a6573eea") + ) + (via + (at 100.7 50.1) + (size 0.6) + (drill 0.3) + (layers "F.Cu" "B.Cu") + (net "/EXP_IO2") + (uuid "d56a98fb-4ec4-4f9b-84c8-f4c5c345323c") + ) + (segment + (start 101.3 56.76) + (end 102.6 58.06) + (width 0.2) + (layer "B.Cu") + (net "/EXP_IO2") + (uuid "061a4828-107a-4971-b8a7-924b16c73bbc") + ) + (segment + (start 100.7 50.1) + (end 101.3 50.7) + (width 0.2) + (layer "B.Cu") + (net "/EXP_IO2") + (uuid "7b34c530-5a2e-4e35-a7e3-0404b9146e52") + ) + (segment + (start 101.3 50.7) + (end 101.3 56.76) + (width 0.2) + (layer "B.Cu") + (net "/EXP_IO2") + (uuid "aa5ae5e0-8b62-48eb-bfbb-0056588ff03f") + ) + (segment + (start 113.45 50.475) + (end 114.44 50.475) + (width 0.2) + (layer "F.Cu") + (net "Net-(Q4-G)") + (uuid "07ab8b34-c14e-4849-acae-72a00bc98357") + ) + (segment + (start 114.35 52.225) + (end 114.35 50.565) + (width 0.2) + (layer "F.Cu") + (net "Net-(Q4-G)") + (uuid "9288b7b2-9f40-4332-991a-3add8f673bbd") + ) + (segment + (start 114.35 50.565) + (end 114.44 50.475) + (width 0.2) + (layer "F.Cu") + (net "Net-(Q4-G)") + (uuid "bb763d09-9ee0-4fc2-8faa-1457033486ff") + ) + (segment + (start 127.75 94.6) + (end 127.6 94.75) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "1e4c18f9-e48d-4814-a31d-eac4174c0fa6") + ) + (segment + (start 126.16 47.26) + (end 126.25 47.35) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "27831cbf-a1ad-4af2-9e48-498ee9a6745b") + ) + (segment + (start 127.5 92.2) + (end 127.75 92.2) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "30d1aaa2-3977-4c84-9426-3632f75274dc") + ) + (segment + (start 127.75 102.435001) + (end 127.75 104.8) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "35ef8e13-9363-4974-930c-0847762c39c4") + ) + (segment + (start 125.65 94.9) + (end 125.65 104.75) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "42c0e4a9-faba-44e2-90bd-d6ddf9988df2") + ) + (segment + (start 125.7 104.8) + (end 127.75 104.8) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "6dfebfe2-127b-43ce-a8a1-27eba45b3a29") + ) + (segment + (start 127.75 104.85) + (end 126.7 105.9) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "7825778a-1351-4741-a479-8706dc6361d5") + ) + (segment + (start 127.5 88.425) + (end 127.5 92.2) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "7a5b3d83-d9fd-4e40-b652-d22969e99620") + ) + (segment + (start 125.65 104.75) + (end 125.7 104.8) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "850447f2-b027-464f-9e9b-2e76755b73ed") + ) + (segment + (start 130.3725 100.55) + (end 129.635001 100.55) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "8718e292-d7d1-4c52-b9da-e803cfd1d7e7") + ) + (segment + (start 124.5 47.26) + (end 126.16 47.26) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "875eb193-71e8-4177-b62c-2b2c8097b8d3") + ) + (segment + (start 127.75 104.8) + (end 127.75 104.85) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "a30898c4-1907-4a8a-8f5d-97058756b3c9") + ) + (segment + (start 127.6 94.75) + (end 125.8 94.75) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "a420d73f-58a7-4608-9e9f-cb881a1e6e38") + ) + (segment + (start 129.635001 100.55) + (end 127.75 102.435001) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "e022b289-f725-4b80-8af7-ec3b355441eb") + ) + (segment + (start 127.75 92.2) + (end 127.75 94.6) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "ed10b957-6710-40a8-8ccb-5a1626d07e35") + ) + (segment + (start 125.8 94.75) + (end 125.65 94.9) + (width 0.2) + (layer "F.Cu") + (net "/TC1_FAULT") + (uuid "f39e9763-b982-4959-ba2a-47ff399678c6") + ) + (segment + (start 123.875 48.3) + (end 125.3 48.3) + (width 0.2) + (layer "F.Cu") + (net "/COIL_RTN1") + (uuid "168e15de-e736-43fe-876a-dbd93b1111a1") + ) + (segment + (start 125.3 48.3) + (end 126.25 49.25) + (width 0.2) + (layer "F.Cu") + (net "/COIL_RTN1") + (uuid "1b74178a-8880-41d2-b70a-fc620c850ee1") + ) + (segment + (start 129.55 48.3) + (end 130.5 49.25) + (width 0.2) + (layer "F.Cu") + (net "/COIL_RTN1") + (uuid "3cff2f9b-db01-437f-a56b-c2fbe4b127aa") + ) + (segment + (start 128.125 48.3) + (end 129.55 48.3) + (width 0.2) + (layer "F.Cu") + (net "/COIL_RTN1") + (uuid "460adc3f-b405-4a2d-b95e-95933c98afda") + ) + (segment + (start 140.41 96.85) + (end 145.635 96.85) + (width 0.2) + (layer "F.Cu") + (net "/TC1_P") + (uuid "2ffb4c6d-daa5-47c1-a951-e67fbbc5620b") + ) + (segment + (start 145.635 96.85) + (end 145.735 96.75) + (width 0.2) + (layer "F.Cu") + (net "/TC1_P") + (uuid "4aaf5258-9149-4372-89eb-12439c6e5022") + ) + (segment + (start 139.85 96.29) + (end 140.41 96.85) + (width 0.2) + (layer "F.Cu") + (net "/TC1_P") + (uuid "54c0c076-e86f-4d55-8a19-914a11f491ec") + ) + (segment + (start 139.85 95) + (end 139.85 96.29) + (width 0.2) + (layer "F.Cu") + (net "/TC1_P") + (uuid "578cbb2a-3127-4b82-aa1a-da66907cf650") + ) + (segment + (start 126.7 88.425) + (end 126.7 90.24) + (width 0.2) + (layer "F.Cu") + (net "Net-(U5-PA2)") + (uuid "5bd0ffa3-b933-4bae-a823-2b7d5a0c4215") + ) + (segment + (start 133.34 43.6) + (end 133 43.26) + (width 0.2) + (layer "F.Cu") + (net "Net-(C23-Pad1)") + (uuid "9a64a1cc-2a56-4b62-987c-0582dfa02136") + ) + (segment + (start 134.5 43.6) + (end 133.34 43.6) + (width 0.2) + (layer "F.Cu") + (net "Net-(C23-Pad1)") + (uuid "f0695f67-5f5b-4510-b5c3-1bef6fd3df52") + ) + (segment + (start 128.85 93.257843) + (end 131.45 95.857843) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "09602d7b-2b3b-4136-9cb8-e02a94115a44") + ) + (segment + (start 128.3 89.25) + (end 128.85 89.8) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "1ea5e92b-a5b6-4668-9d3a-de22d6ffc996") + ) + (segment + (start 130.3725 97.95) + (end 128.85 97.95) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "46551841-8cdd-4657-9817-189324633cb2") + ) + (segment + (start 131.45 95.857843) + (end 131.45 97.609999) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "6f75ea46-ecb4-46ea-b122-9560860cdfe6") + ) + (segment + (start 128.85 97.95) + (end 126.7 95.8) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "7e5cc97b-62d6-469e-821e-40847181a6c2") + ) + (segment + (start 131.45 97.609999) + (end 131.109999 97.95) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "7f7f2010-e34e-42cf-8f2c-9f2a36ff026f") + ) + (segment + (start 131.109999 97.95) + (end 130.3725 97.95) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "9958bcab-ad4b-45c8-953f-e3d6221d4f78") + ) + (segment + (start 128.85 89.8) + (end 128.85 93.257843) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "99c610fb-0041-4b58-8a17-5742e4c0daa8") + ) + (segment + (start 128.3 88.425) + (end 128.3 89.25) + (width 0.2) + (layer "F.Cu") + (net "/TC1_CS") + (uuid "b70f1685-06ee-4d34-af1d-96c30a83bfbf") + ) + (segment + (start 134 76.75) + (end 134 81.125) + (width 0.2) + (layer "F.Cu") + (net "/SW_DIO") + (uuid "033e0845-5333-4bb3-859b-c9f9adca1fed") + ) + (segment + (start 134 81.125) + (end 133.675 81.45) + (width 0.2) + (layer "F.Cu") + (net "/SW_DIO") + (uuid "fb4c66f9-77a6-4796-b89c-b785871a8874") + ) + (segment + (start 132.73 78.52) + (end 132.3 78.95) + (width 0.2) + (layer "F.Cu") + (net "/SW_CLK") + (uuid "0476bdc6-3418-43ef-b444-df64dbff6eef") + ) + (segment + (start 132.73 76.75) + (end 132.73 78.52) + (width 0.2) + (layer "F.Cu") + (net "/SW_CLK") + (uuid "0bd61c9e-fe72-442d-be1f-2b5a9b05639f") + ) + (segment + (start 132.3 78.95) + (end 132.3 80.075) + (width 0.2) + (layer "F.Cu") + (net "/SW_CLK") + (uuid "59b10670-afff-4e33-8285-a41c3ffa382d") + ) + (segment + (start 139.42 97.85) + (end 139.42 96.88) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TP") + (uuid "20031eec-696b-46b0-80d6-291610e2452a") + ) + (segment + (start 139.4675 98.77) + (end 138.9875 99.25) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TP") + (uuid "32c454a3-75bb-4342-b6b5-75423eb63a69") + ) + (segment + (start 139.42 96.88) + (end 139.39 96.85) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TP") + (uuid "47294051-1ec4-41fa-8b05-2c04bf07c831") + ) + (segment + (start 139.4675 97.8975) + (end 139.42 97.85) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TP") + (uuid "7f9ed680-aba0-4c2a-b963-932d73b9fda9") + ) + (segment + (start 138.9875 99.25) + (end 136.0975 99.25) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TP") + (uuid "8d6c0873-5d5c-4d1a-b8ae-09797de80a6c") + ) + (segment + (start 139.4675 98.77) + (end 139.4675 97.8975) + (width 0.2) + (layer "F.Cu") + (net "/TC1_TP") + (uuid "ff8b1799-7edb-4f6c-acd3-9fed3786ef17") + ) + (segment + (start 130.3725 98.6) + (end 127 98.6) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "03705446-243f-4bbd-ba79-b9b696eadb26") + ) + (segment + (start 131.194313 98.6) + (end 130.3725 98.6) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "30d92ff9-476f-4c62-b433-021be8502128") + ) + (segment + (start 129.1 88.425) + (end 129.25 88.575) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "50a5410b-9e0e-4938-9a73-5017dc872007") + ) + (segment + (start 129.25 93.065686) + (end 131.85 95.665686) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "75c32d13-71dc-4d68-94dd-294d948d5778") + ) + (segment + (start 129.25 88.575) + (end 129.25 93.065686) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "d595af95-e4c7-439c-94ec-671dfb7caa6b") + ) + (segment + (start 127 98.6) + (end 126.7 98.3) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "d9145511-3bce-4b3a-a421-5519bdfe8adb") + ) + (segment + (start 131.85 95.665686) + (end 131.85 97.944313) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "f8e75c26-82b6-4b08-a6bc-673332bfdc12") + ) + (segment + (start 131.85 97.944313) + (end 131.194313 98.6) + (width 0.2) + (layer "F.Cu") + (net "/TC1_SCK") + (uuid "fe50a24f-5ecc-4aa5-ae80-dd16363de6c9") + ) + (segment + (start 129.635001 99.9) + (end 126.7 102.835001) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "0e66b70f-4ef9-4a6b-9bd9-3b3fc38aac7c") + ) + (segment + (start 132.65 95.2) + (end 132.65 98.278456) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "4b3d9b28-ecd1-498d-a8c1-f89abb897b87") + ) + (segment + (start 130.2 92.75) + (end 132.65 95.2) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "60a10fa6-180f-4150-88c7-d2c157940bf9") + ) + (segment + (start 131.028456 99.9) + (end 130.3725 99.9) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "78c3fd73-8799-4ce1-a0bf-8be05e353081") + ) + (segment + (start 126.7 102.835001) + (end 126.7 103.35) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "9311c202-c07e-48aa-9c3e-4315d281cff5") + ) + (segment + (start 130.7 89.3) + (end 130.2 89.8) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "93aeb616-20d4-48d8-9810-04dfb7f55a4b") + ) + (segment + (start 132.65 98.278456) + (end 131.028456 99.9) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "a3a25d66-e324-4ac7-8a12-2800e5f857d2") + ) + (segment + (start 130.7 88.425) + (end 130.7 89.3) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "a8c63a7c-acec-4854-8750-2b70121feeae") + ) + (segment + (start 130.2 89.8) + (end 130.2 92.75) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "bed9a8bf-664c-4715-aabe-77376e84329f") + ) + (segment + (start 130.3725 99.9) + (end 129.635001 99.9) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MOSI") + (uuid "f6213bb3-9202-4bce-b8d4-318ff59fc658") + ) + (segment + (start 132.25 98.109999) + (end 131.109999 99.25) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "1205c5fd-a150-47c9-b305-00d76142a5f1") + ) + (segment + (start 129.9 88.425) + (end 129.75 88.575) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "22cf551b-d1a4-434a-9945-31d81461c53b") + ) + (segment + (start 131.109999 99.25) + (end 130.3725 99.25) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "2708073b-d793-4d28-99dc-69e1d6e0c605") + ) + (segment + (start 129.75 88.575) + (end 129.75 93) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "53d3bba1-7dd4-4340-bb17-e39ed06113e8") + ) + (segment + (start 128.035001 100.85) + (end 126.7 100.85) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "5c36b06b-ff0d-4e3c-becf-e82054af6601") ) - (gr_line - (start 50 140) - (end 50 40) - (stroke - (width 0.05) - (type solid) - ) - (layer "Edge.Cuts") - (uuid "268a861b-e6c9-43ac-9589-10417b926855") + (segment + (start 130.3725 99.25) + (end 129.635001 99.25) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "7e4097be-1956-41d3-97bb-ab302a687a7f") + ) + (segment + (start 129.635001 99.25) + (end 128.035001 100.85) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "7ee23f31-0fef-4de9-895b-ccca6009fb2d") + ) + (segment + (start 129.75 93) + (end 132.25 95.500001) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "a41e0dd7-be4b-4311-b44c-f7dca38ca9ec") + ) + (segment + (start 132.25 95.500001) + (end 132.25 98.109999) + (width 0.2) + (layer "F.Cu") + (net "/TC1_MISO") + (uuid "bfe85bc3-3739-4f4c-88cc-5cf8a2d04f46") ) (zone (net "GND") + (locked yes) (layer "F.Cu") (uuid "1c4b4705-9dd9-4b18-8e57-60dd8d9e9745") (hatch edge 0.5) @@ -25755,87 +29084,43 @@ (xy 59.442438 40.520185) (xy 59.488193 40.572989) (xy 59.498137 40.642147) (xy 59.480938 40.689594) (xy 59.475254 40.698812) (xy 59.440187 40.755663) (xy 59.440185 40.755668) (xy 59.412349 40.83967) (xy 59.385001 40.922203) (xy 59.385001 40.922204) (xy 59.385 40.922204) (xy 59.3745 41.024983) (xy 59.3745 41.875001) - (xy 59.374501 41.875019) (xy 59.385 41.977796) (xy 59.385001 41.977799) (xy 59.405884 42.040819) + (xy 59.374501 41.875019) (xy 59.385 41.977796) (xy 59.385001 41.977799) (xy 59.436027 42.131783) (xy 59.440186 42.144334) (xy 59.532288 42.293656) (xy 59.656344 42.417712) (xy 59.805666 42.509814) (xy 59.972203 42.564999) (xy 60.074991 42.5755) (xy 61.425008 42.575499) (xy 61.527797 42.564999) (xy 61.694334 42.509814) (xy 61.843656 42.417712) (xy 61.967712 42.293656) (xy 62.059814 42.144334) (xy 62.114999 41.977797) (xy 62.1255 41.875009) (xy 62.125499 41.024992) (xy 62.114999 40.922203) (xy 62.059814 40.755666) (xy 62.019061 40.689595) (xy 62.000622 40.622204) (xy 62.021545 40.555541) (xy 62.075187 40.510771) (xy 62.124601 40.5005) (xy 62.911 40.5005) (xy 62.978039 40.520185) (xy 63.023794 40.572989) - (xy 63.035 40.6245) (xy 63.035 46.1) (xy 107.639942 46.1) (xy 107.706981 46.119685) (xy 107.752736 46.172489) - (xy 107.76268 46.241647) (xy 107.733655 46.305203) (xy 107.703063 46.330732) (xy 107.672405 46.348862) - (xy 107.672396 46.348869) (xy 107.558869 46.462396) (xy 107.558863 46.462404) (xy 107.477131 46.600606) - (xy 107.477129 46.600611) (xy 107.432335 46.754791) (xy 107.432334 46.754797) (xy 107.4295 46.790811) - (xy 107.4295 47.189169) (xy 107.429501 47.189191) (xy 107.432335 47.225205) (xy 107.477129 47.379388) - (xy 107.477132 47.379395) (xy 107.511128 47.436881) (xy 107.528309 47.504605) (xy 107.511128 47.563119) - (xy 107.477132 47.620604) (xy 107.477129 47.620611) (xy 107.432335 47.774791) (xy 107.432334 47.774797) - (xy 107.4295 47.810811) (xy 107.4295 48.209169) (xy 107.429501 48.209191) (xy 107.432335 48.245205) - (xy 107.477129 48.399388) (xy 107.477132 48.399396) (xy 107.502257 48.441881) (xy 107.519438 48.509605) - (xy 107.502257 48.568119) (xy 107.477132 48.610603) (xy 107.477129 48.610611) (xy 107.432335 48.764791) - (xy 107.432334 48.764797) (xy 107.4295 48.800811) (xy 107.4295 49.199169) (xy 107.429501 49.199179) - (xy 107.432335 49.235205) (xy 107.477127 49.389382) (xy 107.47713 49.389391) (xy 107.477131 49.389393) - (xy 107.493742 49.417481) (xy 107.511419 49.447371) (xy 107.528601 49.515095) (xy 107.511419 49.573611) - (xy 107.477594 49.630806) (xy 107.437156 49.77) (xy 107.989591 49.77) (xy 107.999318 49.770382) - (xy 107.999516 49.770397) (xy 108.000819 49.7705) (xy 108.49918 49.770499) (xy 108.535204 49.767665) - (xy 108.539968 49.76628) (xy 108.691111 49.750657) (xy 108.693554 49.751108) (xy 108.703862 49.75) - (xy 109.75 49.75) (xy 109.75 49.2) (xy 109.34685 49.2) (xy 109.31001 49.202899) (xy 109.229093 49.226408) - (xy 109.202836 49.226332) (xy 109.176852 49.230069) (xy 109.168455 49.226234) (xy 109.159224 49.226208) - (xy 109.137178 49.21195) (xy 109.113296 49.201044) (xy 109.108304 49.193277) (xy 109.100554 49.188265) - (xy 109.089716 49.164352) (xy 109.075522 49.142266) (xy 109.073578 49.128746) (xy 109.071711 49.124627) - (xy 109.070499 49.107341) (xy 109.070499 48.993187) (xy 109.090184 48.92615) (xy 109.142988 48.880395) - (xy 109.212146 48.870451) (xy 109.229094 48.874113) (xy 109.309926 48.897597) (xy 109.309929 48.897597) - (xy 109.309931 48.897598) (xy 109.346806 48.9005) (xy 110.513 48.9005) (xy 110.521685 48.90305) - (xy 110.530647 48.901762) (xy 110.554687 48.91274) (xy 110.580039 48.920185) (xy 110.585966 48.927025) - (xy 110.594203 48.930787) (xy 110.608492 48.953021) (xy 110.625794 48.972989) (xy 110.628081 48.983503) - (xy 110.631977 48.989565) (xy 110.637 49.0245) (xy 110.637 49.076) (xy 110.617315 49.143039) (xy 110.564511 49.188794) - (xy 110.513 49.2) (xy 110.25 49.2) (xy 110.25 49.75) (xy 110.905685 49.75) (xy 110.968806 49.767268) - (xy 111.027102 49.801744) (xy 111.055161 49.809896) (xy 111.184926 49.847597) (xy 111.184929 49.847597) - (xy 111.184931 49.847598) (xy 111.221806 49.8505) (xy 111.221814 49.8505) (xy 112.528186 49.8505) - (xy 112.528194 49.8505) (xy 112.565069 49.847598) (xy 112.565071 49.847597) (xy 112.565073 49.847597) - (xy 112.606691 49.835505) (xy 112.722898 49.801744) (xy 112.864365 49.718081) (xy 112.980581 49.601865) - (xy 113.040823 49.500001) (xy 120.765204 49.500001) (xy 120.765399 49.502485) (xy 120.811218 49.660198) - (xy 120.894814 49.801552) (xy 120.894821 49.801561) (xy 121.010938 49.917678) (xy 121.010947 49.917685) - (xy 121.152303 50.001282) (xy 121.152306 50.001283) (xy 121.310004 50.047099) (xy 121.31001 50.0471) - (xy 121.34685 50.049999) (xy 121.346866 50.05) (xy 121.75 50.05) (xy 122.25 50.05) (xy 122.653134 50.05) - (xy 122.653149 50.049999) (xy 122.689989 50.0471) (xy 122.689995 50.047099) (xy 122.847693 50.001283) - (xy 122.847696 50.001282) (xy 122.989052 49.917685) (xy 122.989061 49.917678) (xy 123.105178 49.801561) - (xy 123.105185 49.801552) (xy 123.188781 49.660198) (xy 123.2346 49.502485) (xy 123.234601 49.502485) - (xy 123.234795 49.500001) (xy 123.234795 49.5) (xy 122.25 49.5) (xy 122.25 50.05) (xy 121.75 50.05) - (xy 121.75 49.5) (xy 120.765205 49.5) (xy 120.765204 49.500001) (xy 113.040823 49.500001) (xy 113.064244 49.460398) - (xy 113.070412 49.439169) (xy 113.075673 49.421061) (xy 113.110097 49.302573) (xy 113.110098 49.302567) - (xy 113.111768 49.281344) (xy 113.113 49.265694) (xy 113.113 48.999998) (xy 120.765204 48.999998) - (xy 120.765205 49) (xy 121.75 49) (xy 121.75 48.45) (xy 121.34685 48.45) (xy 121.31001 48.452899) - (xy 121.310004 48.4529) (xy 121.152306 48.498716) (xy 121.152303 48.498717) (xy 121.010947 48.582314) - (xy 121.010938 48.582321) (xy 120.894821 48.698438) (xy 120.894814 48.698447) (xy 120.811218 48.839801) - (xy 120.765399 48.997513) (xy 120.765204 48.999998) (xy 113.113 48.999998) (xy 113.113 48.834306) - (xy 113.110098 48.797431) (xy 113.097655 48.754604) (xy 113.076173 48.680663) (xy 113.064244 48.639602) - (xy 112.980581 48.498135) (xy 112.980579 48.498133) (xy 112.980576 48.498129) (xy 112.86437 48.381923) - (xy 112.864362 48.381917) (xy 112.748852 48.313605) (xy 112.722898 48.298256) (xy 112.722897 48.298255) - (xy 112.722896 48.298255) (xy 112.722893 48.298254) (xy 112.565073 48.252402) (xy 112.565067 48.252401) - (xy 112.528201 48.2495) (xy 112.528194 48.2495) (xy 111.362 48.2495) (xy 111.294961 48.229815) (xy 111.249206 48.177011) - (xy 111.238 48.1255) (xy 111.238 47.884313) (xy 111.237999 47.884298) (xy 111.235098 47.847432) - (xy 111.235097 47.847426) (xy 111.189245 47.689606) (xy 111.189244 47.689603) (xy 111.189244 47.689602) - (xy 111.105581 47.548135) (xy 111.105579 47.548133) (xy 111.105576 47.548129) (xy 110.98937 47.431923) - (xy 110.989362 47.431917) (xy 110.847896 47.348255) (xy 110.847893 47.348254) (xy 110.690073 47.302402) - (xy 110.690067 47.302401) (xy 110.653201 47.2995) (xy 110.653194 47.2995) (xy 109.346806 47.2995) - (xy 109.346798 47.2995) (xy 109.309934 47.302401) (xy 109.228067 47.326186) (xy 109.158197 47.325986) - (xy 109.099527 47.288044) (xy 109.070684 47.224405) (xy 109.069855 47.197373) (xy 109.070499 47.189194) - (xy 109.070499 47.189191) (xy 109.0705 47.189181) (xy 109.070499 46.79082) (xy 109.067665 46.754796) - (xy 109.022869 46.600607) (xy 108.941135 46.462402) (xy 108.941133 46.4624) (xy 108.94113 46.462396) - (xy 108.827603 46.348869) (xy 108.827594 46.348862) (xy 108.796937 46.330732) (xy 108.749254 46.279663) - (xy 108.73675 46.210921) (xy 108.763395 46.146332) (xy 108.820731 46.106402) (xy 108.860058 46.1) - (xy 111.035 46.1) (xy 111.035 40.6245) (xy 111.054685 40.557461) (xy 111.107489 40.511706) (xy 111.159 40.5005) - (xy 133.500999 40.5005) (xy 133.568038 40.520185) (xy 133.613793 40.572989) (xy 133.623737 40.642147) - (xy 133.600265 40.69881) (xy 133.580238 40.725562) (xy 133.556204 40.757668) (xy 133.556202 40.757671) - (xy 133.505908 40.892517) (xy 133.499501 40.952116) (xy 133.499501 40.952123) (xy 133.4995 40.952135) - (xy 133.4995 41.369441) (xy 133.479815 41.43648) (xy 133.427011 41.482235) (xy 133.357853 41.492179) - (xy 133.34091 41.488519) (xy 133.285204 41.472335) (xy 133.285201 41.472334) (xy 133.285202 41.472334) - (xy 133.249181 41.4695) (xy 132.75083 41.4695) (xy 132.750808 41.469501) (xy 132.714794 41.472335) - (xy 132.560611 41.517129) (xy 132.560606 41.517131) (xy 132.422404 41.598863) (xy 132.422396 41.598869) - (xy 132.308869 41.712396) (xy 132.308863 41.712404) (xy 132.227131 41.850606) (xy 132.227129 41.850611) - (xy 132.182335 42.004791) (xy 132.182334 42.004797) (xy 132.1795 42.040811) (xy 132.1795 42.439169) - (xy 132.179501 42.439191) (xy 132.182335 42.475205) (xy 132.227129 42.629388) (xy 132.227132 42.629395) - (xy 132.261128 42.686881) (xy 132.278309 42.754605) (xy 132.261128 42.813119) (xy 132.227132 42.870604) + (xy 63.035 40.6245) (xy 63.035 46.1) (xy 111.035 46.1) (xy 111.035 40.6245) (xy 111.054685 40.557461) + (xy 111.107489 40.511706) (xy 111.159 40.5005) (xy 133.500999 40.5005) (xy 133.568038 40.520185) + (xy 133.613793 40.572989) (xy 133.623737 40.642147) (xy 133.600265 40.69881) (xy 133.580238 40.725562) + (xy 133.556204 40.757668) (xy 133.556202 40.757671) (xy 133.505908 40.892517) (xy 133.499501 40.952116) + (xy 133.499501 40.952123) (xy 133.4995 40.952135) (xy 133.4995 41.030621) (xy 133.479815 41.09766) + (xy 133.427011 41.143415) (xy 133.407595 41.150395) (xy 133.25822 41.190421) (xy 133.258209 41.190426) + (xy 133.12129 41.269475) (xy 133.121286 41.269478) (xy 133.059583 41.33118) (xy 132.998259 41.364664) + (xy 132.928568 41.359678) (xy 132.909905 41.350884) (xy 132.891785 41.340423) (xy 132.739057 41.299499) + (xy 132.580943 41.299499) (xy 132.573347 41.299499) (xy 132.573331 41.2995) (xy 117.420943 41.2995) + (xy 117.268216 41.340423) (xy 117.268209 41.340426) (xy 117.13129 41.419475) (xy 117.131282 41.419481) + (xy 117.019481 41.531282) (xy 117.019475 41.53129) (xy 116.940426 41.668209) (xy 116.940423 41.668216) + (xy 116.8995 41.820943) (xy 116.8995 41.979056) (xy 116.940423 42.131783) (xy 116.940426 42.13179) + (xy 117.019475 42.268709) (xy 117.019479 42.268714) (xy 117.01948 42.268716) (xy 117.131284 42.38052) + (xy 117.131286 42.380521) (xy 117.13129 42.380524) (xy 117.195703 42.417712) (xy 117.268216 42.459577) + (xy 117.420943 42.5005) (xy 127.164477 42.5005) (xy 127.231516 42.520185) (xy 127.277271 42.572989) + (xy 127.287215 42.642147) (xy 127.25819 42.705703) (xy 127.252158 42.712181) (xy 127.182684 42.781654) + (xy 127.090643 42.930875) (xy 127.090641 42.93088) (xy 127.035494 43.097302) (xy 127.035493 43.097309) + (xy 127.025 43.200013) (xy 127.025 43.25) (xy 129.481 43.25) (xy 129.548039 43.269685) (xy 129.593794 43.322489) + (xy 129.598327 43.343327) (xy 129.605 43.35) (xy 130.25 43.35) (xy 130.75 43.35) (xy 131.734795 43.35) + (xy 131.734795 43.349998) (xy 131.7346 43.347513) (xy 131.688781 43.189801) (xy 131.605185 43.048447) + (xy 131.605178 43.048438) (xy 131.489061 42.932321) (xy 131.489052 42.932314) (xy 131.347696 42.848717) + (xy 131.347693 42.848716) (xy 131.189995 42.8029) (xy 131.189989 42.802899) (xy 131.153149 42.8) + (xy 130.75 42.8) (xy 130.75 43.35) (xy 130.25 43.35) (xy 130.25 42.8) (xy 129.84685 42.8) (xy 129.81001 42.802899) + (xy 129.810004 42.8029) (xy 129.652306 42.848716) (xy 129.652299 42.848719) (xy 129.541922 42.913995) + (xy 129.474198 42.931178) (xy 129.407936 42.909018) (xy 129.373263 42.87236) (xy 129.317315 42.781654) + (xy 129.247842 42.712181) (xy 129.214357 42.650858) (xy 129.219341 42.581166) (xy 129.261213 42.525233) + (xy 129.326677 42.500816) (xy 129.335523 42.5005) (xy 132.096582 42.5005) (xy 132.163621 42.520185) + (xy 132.209207 42.572618) (xy 132.213076 42.581018) (xy 132.227131 42.629393) (xy 132.264361 42.692347) + (xy 132.26702 42.698118) (xy 132.271218 42.726656) (xy 132.278309 42.754605) (xy 132.276324 42.761362) + (xy 132.27719 42.767244) (xy 132.269814 42.783535) (xy 132.261128 42.813119) (xy 132.227132 42.870604) (xy 132.227129 42.870611) (xy 132.182335 43.024791) (xy 132.182334 43.024797) (xy 132.1795 43.060811) (xy 132.1795 43.459169) (xy 132.179501 43.459191) (xy 132.182334 43.495201) (xy 132.210139 43.590906) (xy 132.209939 43.660775) (xy 132.171996 43.719445) (xy 132.108358 43.748288) (xy 132.091062 43.7495) @@ -25863,577 +29148,471 @@ (xy 125.922714 43.599261) (xy 125.922705 43.599268) (xy 125.809268 43.712705) (xy 125.809261 43.712714) (xy 125.731231 43.844657) (xy 125.680162 43.892341) (xy 125.61142 43.904844) (xy 125.546831 43.878199) (xy 125.506901 43.820863) (xy 125.500499 43.781536) (xy 125.500499 43.452129) (xy 125.500498 43.452123) - (xy 125.500497 43.452116) (xy 125.494091 43.392517) (xy 125.478232 43.349998) (xy 125.452978 43.282288) - (xy 125.443796 43.257669) (xy 125.443792 43.257664) (xy 125.400635 43.200013) (xy 127.025 43.200013) - (xy 127.025 43.25) (xy 128 43.25) (xy 128.5 43.25) (xy 129.481 43.25) (xy 129.548039 43.269685) - (xy 129.593794 43.322489) (xy 129.598327 43.343327) (xy 129.605 43.35) (xy 130.25 43.35) (xy 130.75 43.35) - (xy 131.734795 43.35) (xy 131.734795 43.349998) (xy 131.7346 43.347513) (xy 131.688781 43.189801) - (xy 131.605185 43.048447) (xy 131.605178 43.048438) (xy 131.489061 42.932321) (xy 131.489052 42.932314) - (xy 131.347696 42.848717) (xy 131.347693 42.848716) (xy 131.189995 42.8029) (xy 131.189989 42.802899) - (xy 131.153149 42.8) (xy 130.75 42.8) (xy 130.75 43.35) (xy 130.25 43.35) (xy 130.25 42.8) (xy 129.84685 42.8) - (xy 129.81001 42.802899) (xy 129.810004 42.8029) (xy 129.652306 42.848716) (xy 129.652299 42.848719) - (xy 129.541922 42.913995) (xy 129.474198 42.931178) (xy 129.407936 42.909018) (xy 129.373263 42.87236) - (xy 129.317315 42.781654) (xy 129.193345 42.657684) (xy 129.044124 42.565643) (xy 129.044119 42.565641) - (xy 128.877697 42.510494) (xy 128.87769 42.510493) (xy 128.774986 42.5) (xy 128.5 42.5) (xy 128.5 43.25) - (xy 128 43.25) (xy 128 42.5) (xy 127.725029 42.5) (xy 127.725012 42.500001) (xy 127.622302 42.510494) - (xy 127.45588 42.565641) (xy 127.455875 42.565643) (xy 127.306654 42.657684) (xy 127.182684 42.781654) - (xy 127.090643 42.930875) (xy 127.090641 42.93088) (xy 127.035494 43.097302) (xy 127.035493 43.097309) - (xy 127.025 43.200013) (xy 125.400635 43.200013) (xy 125.357547 43.142455) (xy 125.357544 43.142452) - (xy 125.242335 43.056206) (xy 125.242328 43.056202) (xy 125.107482 43.005908) (xy 125.107483 43.005908) - (xy 125.047883 42.999501) (xy 125.047881 42.9995) (xy 125.047873 42.9995) (xy 125.047864 42.9995) - (xy 123.452129 42.9995) (xy 123.452123 42.999501) (xy 123.392516 43.005908) (xy 123.257671 43.056202) - (xy 123.257664 43.056206) (xy 123.142455 43.142452) (xy 123.142452 43.142455) (xy 123.056206 43.257664) - (xy 123.056202 43.257671) (xy 123.005908 43.392517) (xy 123.004422 43.406344) (xy 122.999501 43.452123) - (xy 122.9995 43.452135) (xy 122.9995 45.04787) (xy 122.999501 45.047876) (xy 123.005908 45.107483) - (xy 123.056202 45.242328) (xy 123.056206 45.242335) (xy 123.142452 45.357544) (xy 123.142455 45.357547) - (xy 123.257664 45.443793) (xy 123.257671 45.443797) (xy 123.27941 45.451905) (xy 123.392517 45.494091) - (xy 123.452127 45.5005) (xy 123.721406 45.500499) (xy 123.788443 45.520183) (xy 123.834198 45.572987) - (xy 123.844142 45.642146) (xy 123.815117 45.705701) (xy 123.809093 45.712173) (xy 123.808869 45.712396) - (xy 123.808863 45.712404) (xy 123.727131 45.850606) (xy 123.727129 45.850611) (xy 123.682335 46.004791) - (xy 123.682334 46.004797) (xy 123.6795 46.040811) (xy 123.6795 46.439169) (xy 123.679501 46.439191) - (xy 123.682335 46.475205) (xy 123.727129 46.629388) (xy 123.727132 46.629395) (xy 123.761128 46.686881) - (xy 123.778309 46.754605) (xy 123.761128 46.813119) (xy 123.727132 46.870604) (xy 123.727129 46.870611) - (xy 123.682335 47.024791) (xy 123.682334 47.024797) (xy 123.6795 47.060811) (xy 123.6795 47.060819) - (xy 123.6795 47.255045) (xy 123.679501 47.3755) (xy 123.67695 47.384186) (xy 123.678239 47.393147) - (xy 123.667261 47.417183) (xy 123.659817 47.442539) (xy 123.652974 47.448467) (xy 123.649214 47.456703) - (xy 123.626982 47.470989) (xy 123.607013 47.488294) (xy 123.596497 47.490581) (xy 123.590436 47.494477) - (xy 123.555501 47.4995) (xy 123.362 47.4995) (xy 123.294961 47.479815) (xy 123.249206 47.427011) - (xy 123.238 47.3755) (xy 123.238 47.134313) (xy 123.237999 47.134298) (xy 123.235098 47.097432) - (xy 123.235097 47.097426) (xy 123.189245 46.939606) (xy 123.189244 46.939603) (xy 123.189244 46.939602) - (xy 123.105581 46.798135) (xy 123.105579 46.798133) (xy 123.105576 46.798129) (xy 122.98937 46.681923) - (xy 122.989362 46.681917) (xy 122.888236 46.622112) (xy 122.847898 46.598256) (xy 122.847897 46.598255) - (xy 122.847896 46.598255) (xy 122.847893 46.598254) (xy 122.690073 46.552402) (xy 122.690067 46.552401) - (xy 122.653201 46.5495) (xy 122.653194 46.5495) (xy 121.346806 46.5495) (xy 121.346798 46.5495) - (xy 121.309932 46.552401) (xy 121.309926 46.552402) (xy 121.227262 46.576419) (xy 121.157392 46.57622) - (xy 121.098722 46.538278) (xy 121.069879 46.474639) (xy 121.069049 46.447613) (xy 121.069068 46.447373) - (xy 121.0705 46.429181) (xy 121.070499 46.03082) (xy 121.067665 45.994796) (xy 121.022869 45.840607) - (xy 120.941135 45.702402) (xy 120.941133 45.7024) (xy 120.94113 45.702396) (xy 120.827603 45.588869) - (xy 120.827595 45.588863) (xy 120.689393 45.507131) (xy 120.689388 45.507129) (xy 120.535208 45.462335) - (xy 120.535202 45.462334) (xy 120.499181 45.4595) (xy 120.00083 45.4595) (xy 120.000808 45.459501) - (xy 119.964794 45.462335) (xy 119.810611 45.507129) (xy 119.810606 45.507131) (xy 119.672404 45.588863) - (xy 119.672396 45.588869) (xy 119.558869 45.702396) (xy 119.558863 45.702404) (xy 119.477131 45.840606) - (xy 119.477129 45.840611) (xy 119.432335 45.994791) (xy 119.432334 45.994797) (xy 119.4295 46.030811) - (xy 119.4295 46.429169) (xy 119.429501 46.429191) (xy 119.432335 46.465205) (xy 119.477129 46.619388) - (xy 119.477132 46.619395) (xy 119.511128 46.676881) (xy 119.528309 46.744605) (xy 119.511128 46.803119) - (xy 119.477132 46.860604) (xy 119.477129 46.860611) (xy 119.432335 47.014791) (xy 119.432334 47.014797) - (xy 119.4295 47.050811) (xy 119.4295 47.449169) (xy 119.429501 47.449191) (xy 119.432335 47.485205) - (xy 119.477129 47.639388) (xy 119.477131 47.639393) (xy 119.558863 47.777595) (xy 119.558869 47.777603) - (xy 119.672396 47.89113) (xy 119.6724 47.891133) (xy 119.672402 47.891135) (xy 119.810607 47.972869) - (xy 119.826568 47.977506) (xy 119.964791 48.017664) (xy 119.964794 48.017664) (xy 119.964796 48.017665) - (xy 120.000819 48.0205) (xy 120.49918 48.020499) (xy 120.535204 48.017665) (xy 120.689393 47.972869) - (xy 120.780055 47.919251) (xy 120.847778 47.902069) (xy 120.91404 47.924229) (xy 120.930856 47.938303) - (xy 121.010629 48.018076) (xy 121.010633 48.018079) (xy 121.010635 48.018081) (xy 121.152102 48.101744) - (xy 121.193724 48.113836) (xy 121.309926 48.147597) (xy 121.309929 48.147597) (xy 121.309931 48.147598) - (xy 121.346806 48.1505) (xy 122.513 48.1505) (xy 122.521685 48.15305) (xy 122.530647 48.151762) - (xy 122.554687 48.16274) (xy 122.580039 48.170185) (xy 122.585966 48.177025) (xy 122.594203 48.180787) - (xy 122.608492 48.203021) (xy 122.625794 48.222989) (xy 122.628081 48.233503) (xy 122.631977 48.239565) - (xy 122.637 48.2745) (xy 122.637 48.326) (xy 122.617315 48.393039) (xy 122.564511 48.438794) (xy 122.513 48.45) - (xy 122.25 48.45) (xy 122.25 49) (xy 122.905685 49) (xy 122.968806 49.017268) (xy 123.027102 49.051744) - (xy 123.068724 49.063836) (xy 123.184926 49.097597) (xy 123.184929 49.097597) (xy 123.184931 49.097598) - (xy 123.221806 49.1005) (xy 123.221814 49.1005) (xy 124.528186 49.1005) (xy 124.528194 49.1005) - (xy 124.565069 49.097598) (xy 124.565071 49.097597) (xy 124.565073 49.097597) (xy 124.639409 49.076) - (xy 124.722898 49.051744) (xy 124.824881 48.991431) (xy 124.892602 48.974249) (xy 124.958865 48.996409) - (xy 125.002629 49.050875) (xy 125.012 49.098164) (xy 125.012 49.465701) (xy 125.014901 49.502567) - (xy 125.014902 49.502573) (xy 125.060754 49.660393) (xy 125.060755 49.660396) (xy 125.060756 49.660398) - (xy 125.09487 49.718082) (xy 125.144417 49.801862) (xy 125.144423 49.80187) (xy 125.260629 49.918076) - (xy 125.260633 49.918079) (xy 125.260635 49.918081) (xy 125.402102 50.001744) (xy 125.443724 50.013836) - (xy 125.559926 50.047597) (xy 125.559929 50.047597) (xy 125.559931 50.047598) (xy 125.596806 50.0505) - (xy 125.596814 50.0505) (xy 126.903186 50.0505) (xy 126.903194 50.0505) (xy 126.940069 50.047598) - (xy 126.940071 50.047597) (xy 126.940073 50.047597) (xy 126.981691 50.035505) (xy 127.097898 50.001744) - (xy 127.239365 49.918081) (xy 127.355581 49.801865) (xy 127.439244 49.660398) (xy 127.483728 49.507286) - (xy 127.485097 49.502573) (xy 127.485098 49.502567) (xy 127.488 49.465694) (xy 127.488 49.2245) - (xy 127.507685 49.157461) (xy 127.560489 49.111706) (xy 127.612 49.1005) (xy 128.778186 49.1005) - (xy 128.778194 49.1005) (xy 128.815069 49.097598) (xy 128.815071 49.097597) (xy 128.815073 49.097597) - (xy 128.889409 49.076) (xy 128.972898 49.051744) (xy 129.074881 48.991431) (xy 129.142602 48.974249) - (xy 129.208865 48.996409) (xy 129.252629 49.050875) (xy 129.262 49.098164) (xy 129.262 49.465701) - (xy 129.264901 49.502567) (xy 129.264902 49.502573) (xy 129.310754 49.660393) (xy 129.310755 49.660396) - (xy 129.310756 49.660398) (xy 129.34487 49.718082) (xy 129.394417 49.801862) (xy 129.394423 49.80187) - (xy 129.510629 49.918076) (xy 129.510633 49.918079) (xy 129.510635 49.918081) (xy 129.652102 50.001744) - (xy 129.693724 50.013836) (xy 129.809926 50.047597) (xy 129.809929 50.047597) (xy 129.809931 50.047598) - (xy 129.846806 50.0505) (xy 129.846814 50.0505) (xy 131.153186 50.0505) (xy 131.153194 50.0505) - (xy 131.190069 50.047598) (xy 131.190071 50.047597) (xy 131.190073 50.047597) (xy 131.231691 50.035505) - (xy 131.347898 50.001744) (xy 131.489365 49.918081) (xy 131.605581 49.801865) (xy 131.689244 49.660398) - (xy 131.733728 49.507286) (xy 131.735097 49.502573) (xy 131.735098 49.502567) (xy 131.738 49.465694) - (xy 131.738 49.2245) (xy 131.757685 49.157461) (xy 131.810489 49.111706) (xy 131.862 49.1005) (xy 133.028186 49.1005) - (xy 133.028194 49.1005) (xy 133.065069 49.097598) (xy 133.065071 49.097597) (xy 133.065073 49.097597) - (xy 133.139409 49.076) (xy 133.222898 49.051744) (xy 133.364365 48.968081) (xy 133.480581 48.851865) - (xy 133.564244 48.710398) (xy 133.60558 48.568119) (xy 133.610097 48.552573) (xy 133.610098 48.552567) - (xy 133.611768 48.531344) (xy 133.613 48.515694) (xy 133.613 48.084306) (xy 133.611151 48.060811) - (xy 137.147 48.060811) (xy 137.147 48.459169) (xy 137.147001 48.459191) (xy 137.149835 48.495205) - (xy 137.19463 48.649391) (xy 137.194634 48.6494) (xy 137.216799 48.68688) (xy 137.233982 48.754604) - (xy 137.216799 48.81312) (xy 137.194634 48.850599) (xy 137.19463 48.850608) (xy 137.149835 49.004791) - (xy 137.149834 49.004797) (xy 137.147 49.040811) (xy 137.147 49.439169) (xy 137.147001 49.439191) - (xy 137.149835 49.475205) (xy 137.194629 49.629388) (xy 137.194632 49.629395) (xy 137.228628 49.686881) - (xy 137.245809 49.754605) (xy 137.228628 49.813119) (xy 137.194632 49.870604) (xy 137.194629 49.870611) - (xy 137.149835 50.024791) (xy 137.149834 50.024797) (xy 137.147 50.060811) (xy 137.147 50.459169) - (xy 137.147001 50.459191) (xy 137.149835 50.495205) (xy 137.194629 50.649388) (xy 137.194631 50.649393) - (xy 137.276363 50.787595) (xy 137.276369 50.787603) (xy 137.389896 50.90113) (xy 137.3899 50.901133) - (xy 137.389902 50.901135) (xy 137.528107 50.982869) (xy 137.534795 50.984812) (xy 137.682291 51.027664) - (xy 137.682294 51.027664) (xy 137.682296 51.027665) (xy 137.718319 51.0305) (xy 138.21668 51.030499) - (xy 138.252704 51.027665) (xy 138.406893 50.982869) (xy 138.545098 50.901135) (xy 138.658635 50.787598) - (xy 138.718577 50.68624) (xy 138.769646 50.638558) (xy 138.838387 50.626054) (xy 138.902977 50.652699) - (xy 138.930847 50.684265) (xy 139.019529 50.82804) (xy 139.019532 50.828044) (xy 139.139455 50.947967) + (xy 125.500497 43.452116) (xy 125.494091 43.392517) (xy 125.478233 43.35) (xy 125.443797 43.257671) + (xy 125.443793 43.257664) (xy 125.357547 43.142455) (xy 125.357544 43.142452) (xy 125.242335 43.056206) + (xy 125.242328 43.056202) (xy 125.107482 43.005908) (xy 125.107483 43.005908) (xy 125.047883 42.999501) + (xy 125.047881 42.9995) (xy 125.047873 42.9995) (xy 125.047864 42.9995) (xy 123.452129 42.9995) + (xy 123.452123 42.999501) (xy 123.392516 43.005908) (xy 123.257671 43.056202) (xy 123.257664 43.056206) + (xy 123.142455 43.142452) (xy 123.099266 43.200145) (xy 123.043332 43.242015) (xy 122.97364 43.246999) + (xy 122.912317 43.213513) (xy 122.900734 43.200145) (xy 122.872585 43.162544) (xy 122.857546 43.142454) + (xy 122.857544 43.142453) (xy 122.857544 43.142452) (xy 122.742335 43.056206) (xy 122.742328 43.056202) + (xy 122.607482 43.005908) (xy 122.607483 43.005908) (xy 122.547883 42.999501) (xy 122.547881 42.9995) + (xy 122.547873 42.9995) (xy 122.547864 42.9995) (xy 120.952129 42.9995) (xy 120.952123 42.999501) + (xy 120.892516 43.005908) (xy 120.757671 43.056202) (xy 120.757664 43.056206) (xy 120.642455 43.142452) + (xy 120.642452 43.142455) (xy 120.556206 43.257664) (xy 120.556202 43.257671) (xy 120.505908 43.392517) + (xy 120.499501 43.452116) (xy 120.499501 43.452123) (xy 120.4995 43.452135) (xy 120.4995 45.04787) + (xy 120.499501 45.047876) (xy 120.505908 45.107483) (xy 120.556202 45.242328) (xy 120.556204 45.242331) + (xy 120.570321 45.261189) (xy 120.594738 45.326654) (xy 120.579886 45.394927) (xy 120.530481 45.444332) + (xy 120.471054 45.4595) (xy 120.00083 45.4595) (xy 120.000808 45.459501) (xy 119.964794 45.462335) + (xy 119.810611 45.507129) (xy 119.810606 45.507131) (xy 119.672404 45.588863) (xy 119.672396 45.588869) + (xy 119.558869 45.702396) (xy 119.558863 45.702404) (xy 119.477131 45.840606) (xy 119.477129 45.840611) + (xy 119.432335 45.994791) (xy 119.432334 45.994797) (xy 119.4295 46.030811) (xy 119.4295 46.429169) + (xy 119.429501 46.429191) (xy 119.432335 46.465205) (xy 119.477129 46.619388) (xy 119.477132 46.619395) + (xy 119.511128 46.676881) (xy 119.528309 46.744605) (xy 119.511128 46.803119) (xy 119.477132 46.860604) + (xy 119.477129 46.860611) (xy 119.432335 47.014791) (xy 119.432334 47.014797) (xy 119.4295 47.050811) + (xy 119.4295 47.449169) (xy 119.429501 47.449191) (xy 119.432335 47.485205) (xy 119.477129 47.639388) + (xy 119.477131 47.639393) (xy 119.558863 47.777595) (xy 119.558869 47.777603) (xy 119.672396 47.89113) + (xy 119.6724 47.891133) (xy 119.672402 47.891135) (xy 119.810607 47.972869) (xy 119.826568 47.977506) + (xy 119.964791 48.017664) (xy 119.964794 48.017664) (xy 119.964796 48.017665) (xy 120.000819 48.0205) + (xy 120.49918 48.020499) (xy 120.535204 48.017665) (xy 120.689393 47.972869) (xy 120.780055 47.919251) + (xy 120.847778 47.902069) (xy 120.91404 47.924229) (xy 120.930856 47.938303) (xy 121.010629 48.018076) + (xy 121.010633 48.018079) (xy 121.010635 48.018081) (xy 121.152102 48.101744) (xy 121.193724 48.113836) + (xy 121.309926 48.147597) (xy 121.309929 48.147597) (xy 121.309931 48.147598) (xy 121.346806 48.1505) + (xy 122.513 48.1505) (xy 122.521685 48.15305) (xy 122.530647 48.151762) (xy 122.554687 48.16274) + (xy 122.580039 48.170185) (xy 122.585966 48.177025) (xy 122.594203 48.180787) (xy 122.608492 48.203021) + (xy 122.625794 48.222989) (xy 122.628081 48.233503) (xy 122.631977 48.239565) (xy 122.637 48.2745) + (xy 122.637 48.326) (xy 122.617315 48.393039) (xy 122.564511 48.438794) (xy 122.513 48.45) (xy 122.25 48.45) + (xy 122.25 49) (xy 122.905685 49) (xy 122.968806 49.017268) (xy 123.027102 49.051744) (xy 123.068724 49.063836) + (xy 123.184926 49.097597) (xy 123.184929 49.097597) (xy 123.184931 49.097598) (xy 123.221806 49.1005) + (xy 123.221814 49.1005) (xy 124.528186 49.1005) (xy 124.528194 49.1005) (xy 124.565069 49.097598) + (xy 124.565071 49.097597) (xy 124.565073 49.097597) (xy 124.606691 49.085505) (xy 124.722898 49.051744) + (xy 124.864365 48.968081) (xy 124.895626 48.93682) (xy 124.922556 48.922114) (xy 124.948373 48.905523) + (xy 124.954571 48.904631) (xy 124.956948 48.903334) (xy 124.983308 48.9005) (xy 124.999903 48.9005) + (xy 125.066942 48.920185) (xy 125.087584 48.936819) (xy 125.881284 49.730519) (xy 126.018215 49.809577) + (xy 126.170943 49.850501) (xy 126.170946 49.850501) (xy 126.329054 49.850501) (xy 126.329057 49.850501) + (xy 126.481785 49.809577) (xy 126.618716 49.730519) (xy 126.730519 49.618716) (xy 126.809577 49.481785) + (xy 126.850501 49.329057) (xy 126.850501 49.170943) (xy 126.809577 49.018215) (xy 126.730519 48.881284) + (xy 125.991093 48.141858) (xy 125.957608 48.080535) (xy 125.962592 48.010843) (xy 126.004464 47.95491) + (xy 126.069928 47.930493) (xy 126.11086 47.934401) (xy 126.170942 47.9505) (xy 126.170945 47.9505) + (xy 126.329055 47.9505) (xy 126.329057 47.9505) (xy 126.481784 47.909577) (xy 126.618716 47.830519) + (xy 126.730519 47.718716) (xy 126.809577 47.581784) (xy 126.8505 47.429057) (xy 126.8505 47.270942) + (xy 126.809577 47.118215) (xy 126.730519 46.981284) (xy 126.64759 46.898355) (xy 126.647588 46.898352) + (xy 126.528717 46.779481) (xy 126.528716 46.77948) (xy 126.429853 46.722402) (xy 126.429852 46.722401) + (xy 126.391783 46.700422) (xy 126.322728 46.681919) (xy 126.239057 46.659499) (xy 126.080943 46.659499) + (xy 126.073347 46.659499) (xy 126.073331 46.6595) (xy 124.420943 46.6595) (xy 124.268216 46.700423) + (xy 124.268209 46.700426) (xy 124.13129 46.779475) (xy 124.131282 46.779481) (xy 124.019481 46.891282) + (xy 124.019475 46.89129) (xy 123.940426 47.028209) (xy 123.940423 47.028216) (xy 123.8995 47.180943) + (xy 123.8995 47.339057) (xy 123.900665 47.343408) (xy 123.899003 47.413256) (xy 123.859841 47.471119) + (xy 123.795612 47.498623) (xy 123.780891 47.4995) (xy 123.362 47.4995) (xy 123.294961 47.479815) + (xy 123.249206 47.427011) (xy 123.238 47.3755) (xy 123.238 47.134313) (xy 123.237999 47.134298) + (xy 123.236733 47.118215) (xy 123.235098 47.097431) (xy 123.233629 47.092376) (xy 123.189245 46.939606) + (xy 123.189244 46.939603) (xy 123.189244 46.939602) (xy 123.105581 46.798135) (xy 123.105579 46.798133) + (xy 123.105576 46.798129) (xy 122.98937 46.681923) (xy 122.989362 46.681917) (xy 122.904371 46.631654) + (xy 122.847898 46.598256) (xy 122.847897 46.598255) (xy 122.847896 46.598255) (xy 122.847895 46.598254) + (xy 122.689904 46.552353) (xy 122.631019 46.514746) (xy 122.601813 46.451274) (xy 122.6005 46.433277) + (xy 122.6005 45.58279) (xy 122.620185 45.515751) (xy 122.672989 45.469996) (xy 122.681146 45.466616) + (xy 122.742331 45.443796) (xy 122.857546 45.357546) (xy 122.900734 45.299854) (xy 122.956667 45.257984) + (xy 123.026359 45.253) (xy 123.087682 45.286485) (xy 123.099263 45.29985) (xy 123.142454 45.357546) + (xy 123.188643 45.392123) (xy 123.257664 45.443793) (xy 123.257671 45.443797) (xy 123.392517 45.494091) + (xy 123.392516 45.494091) (xy 123.399444 45.494835) (xy 123.452127 45.5005) (xy 124.599901 45.500499) + (xy 124.66694 45.520184) (xy 124.687582 45.536818) (xy 124.891284 45.74052) (xy 124.891286 45.740521) + (xy 124.89129 45.740524) (xy 124.980641 45.79211) (xy 125.028216 45.819577) (xy 125.180943 45.860501) + (xy 125.180945 45.860501) (xy 125.346654 45.860501) (xy 125.34667 45.8605) (xy 125.830404 45.8605) + (xy 125.897443 45.880185) (xy 125.918085 45.896819) (xy 125.922396 45.90113) (xy 125.9224 45.901133) + (xy 125.922402 45.901135) (xy 126.060607 45.982869) (xy 126.065712 45.984352) (xy 126.214791 46.027664) + (xy 126.214794 46.027664) (xy 126.214796 46.027665) (xy 126.250819 46.0305) (xy 126.74918 46.030499) + (xy 126.785204 46.027665) (xy 126.861758 46.005423) (xy 126.896353 46.0005) (xy 127.040202 46.0005) + (xy 127.107241 46.020185) (xy 127.145739 46.059401) (xy 127.182288 46.118656) (xy 127.306344 46.242712) + (xy 127.455666 46.334814) (xy 127.622203 46.389999) (xy 127.724991 46.4005) (xy 128.775008 46.400499) + (xy 128.775016 46.400498) (xy 128.775019 46.400498) (xy 128.831826 46.394695) (xy 128.877797 46.389999) + (xy 129.044334 46.334814) (xy 129.193656 46.242712) (xy 129.29955 46.136818) (xy 129.326483 46.122111) + (xy 129.352296 46.105523) (xy 129.358496 46.104631) (xy 129.360873 46.103334) (xy 129.387231 46.1005) + (xy 129.391692 46.1005) (xy 129.458731 46.120185) (xy 129.479374 46.13682) (xy 129.510629 46.168076) + (xy 129.510633 46.168079) (xy 129.510635 46.168081) (xy 129.652102 46.251744) (xy 129.701814 46.266187) + (xy 129.810095 46.297646) (xy 129.832508 46.311959) (xy 129.856703 46.323009) (xy 129.861501 46.330475) + (xy 129.868981 46.335252) (xy 129.880098 46.359413) (xy 129.894477 46.381787) (xy 129.896333 46.394695) + (xy 129.898187 46.398725) (xy 129.8995 46.416722) (xy 129.8995 46.433277) (xy 129.879815 46.500316) + (xy 129.827011 46.546071) (xy 129.810096 46.552353) (xy 129.652104 46.598254) (xy 129.652103 46.598255) + (xy 129.510637 46.681917) (xy 129.510629 46.681923) (xy 129.394423 46.798129) (xy 129.394417 46.798137) + (xy 129.310755 46.939603) (xy 129.310754 46.939606) (xy 129.264902 47.097426) (xy 129.264901 47.097432) + (xy 129.262 47.134298) (xy 129.262 47.565686) (xy 129.262001 47.565717) (xy 129.262006 47.565778) + (xy 129.262003 47.565787) (xy 129.262096 47.568132) (xy 129.261506 47.568155) (xy 129.247638 47.634155) + (xy 129.198584 47.683909) (xy 129.138388 47.6995) (xy 128.045943 47.6995) (xy 127.893216 47.740423) + (xy 127.893209 47.740426) (xy 127.75629 47.819475) (xy 127.756282 47.819481) (xy 127.644481 47.931282) + (xy 127.644475 47.93129) (xy 127.565426 48.068209) (xy 127.565423 48.068216) (xy 127.5245 48.220943) + (xy 127.5245 48.379057) (xy 127.560976 48.515185) (xy 127.565423 48.531783) (xy 127.565426 48.53179) + (xy 127.644475 48.668709) (xy 127.644479 48.668714) (xy 127.64448 48.668716) (xy 127.756284 48.78052) + (xy 127.756286 48.780521) (xy 127.75629 48.780524) (xy 127.871783 48.847203) (xy 127.893216 48.859577) + (xy 128.045943 48.9005) (xy 129.138388 48.9005) (xy 129.205427 48.920185) (xy 129.251182 48.972989) + (xy 129.261586 49.031847) (xy 129.262096 49.031868) (xy 129.262004 49.03421) (xy 129.262006 49.034222) + (xy 129.262001 49.034282) (xy 129.262 49.034313) (xy 129.262 49.465701) (xy 129.264901 49.502567) + (xy 129.264902 49.502573) (xy 129.310754 49.660393) (xy 129.310755 49.660396) (xy 129.310756 49.660398) + (xy 129.328263 49.69) (xy 129.394417 49.801862) (xy 129.394423 49.80187) (xy 129.510629 49.918076) + (xy 129.510633 49.918079) (xy 129.510635 49.918081) (xy 129.652102 50.001744) (xy 129.658628 50.00364) + (xy 129.809926 50.047597) (xy 129.809929 50.047597) (xy 129.809931 50.047598) (xy 129.846806 50.0505) + (xy 129.846814 50.0505) (xy 131.153186 50.0505) (xy 131.153194 50.0505) (xy 131.190069 50.047598) + (xy 131.190071 50.047597) (xy 131.190073 50.047597) (xy 131.24036 50.032987) (xy 131.347898 50.001744) + (xy 131.489365 49.918081) (xy 131.605581 49.801865) (xy 131.689244 49.660398) (xy 131.735098 49.502569) + (xy 131.738 49.465694) (xy 131.738 49.224499) (xy 131.757685 49.157461) (xy 131.810489 49.111706) + (xy 131.862 49.1005) (xy 132.296158 49.1005) (xy 134.0555 49.1005) (xy 134.122539 49.120185) (xy 134.168294 49.172989) + (xy 134.1795 49.224499) (xy 134.1795 49.379169) (xy 134.179501 49.379191) (xy 134.182335 49.415205) + (xy 134.227129 49.569388) (xy 134.227132 49.569395) (xy 134.261128 49.626881) (xy 134.278309 49.694605) + (xy 134.261128 49.753119) (xy 134.227132 49.810604) (xy 134.227129 49.810611) (xy 134.182335 49.964791) + (xy 134.182334 49.964797) (xy 134.1795 50.000811) (xy 134.1795 50.399169) (xy 134.179501 50.399191) + (xy 134.182334 50.435202) (xy 134.198518 50.490906) (xy 134.198318 50.560775) (xy 134.160375 50.619445) + (xy 134.096737 50.648288) (xy 134.079441 50.6495) (xy 133.502129 50.6495) (xy 133.502123 50.649501) + (xy 133.442516 50.655908) (xy 133.307671 50.706202) (xy 133.307664 50.706206) (xy 133.192455 50.792452) + (xy 133.192452 50.792455) (xy 133.106206 50.907664) (xy 133.106202 50.907671) (xy 133.055908 51.042517) + (xy 133.049501 51.102116) (xy 133.0495 51.102135) (xy 133.0495 52.69787) (xy 133.049501 52.697876) + (xy 133.055908 52.757483) (xy 133.106202 52.892328) (xy 133.106206 52.892335) (xy 133.192452 53.007544) + (xy 133.192455 53.007547) (xy 133.307664 53.093793) (xy 133.307671 53.093797) (xy 133.442517 53.144091) + (xy 133.442516 53.144091) (xy 133.449444 53.144835) (xy 133.502127 53.1505) (xy 135.097872 53.150499) + (xy 135.157483 53.144091) (xy 135.292331 53.093796) (xy 135.407546 53.007546) (xy 135.493796 52.892331) + (xy 135.544091 52.757483) (xy 135.5505 52.697873) (xy 135.550499 51.102128) (xy 135.550499 51.102127) + (xy 135.550499 51.10212) (xy 135.550446 51.101131) (xy 135.550499 51.100906) (xy 135.550499 51.098807) + (xy 135.550995 51.098807) (xy 135.566515 51.033134) (xy 135.616795 50.984619) (xy 135.685322 50.97099) + (xy 135.708867 50.975421) (xy 135.714875 50.977166) (xy 135.714877 50.977167) (xy 135.75 50.979931) + (xy 135.75 50.97993) (xy 136.25 50.97993) (xy 136.285122 50.977167) (xy 136.285128 50.977166) (xy 136.439189 50.932407) + (xy 136.446352 50.929308) (xy 136.447157 50.931169) (xy 136.504585 50.916591) (xy 136.552999 50.930806) + (xy 136.553648 50.929308) (xy 136.56081 50.932407) (xy 136.714871 50.977166) (xy 136.714877 50.977167) + (xy 136.75 50.979931) (xy 136.75 50.46) (xy 136.25 50.46) (xy 136.25 50.97993) (xy 135.75 50.97993) + (xy 135.75 50.661984) (xy 135.767269 50.598862) (xy 135.772869 50.589393) (xy 135.817665 50.435204) + (xy 135.8205 50.399181) (xy 135.820499 50.33364) (xy 135.820501 50.3334) (xy 135.830453 50.300102) + (xy 135.840185 50.266961) (xy 135.84042 50.266757) (xy 135.84051 50.266457) (xy 135.86686 50.243846) + (xy 135.892989 50.221206) (xy 135.893333 50.221131) (xy 135.893535 50.220958) (xy 135.895176 50.22073) + (xy 135.9445 50.21) (xy 136 50.21) (xy 136 50.084499) (xy 136.002486 50.076032) (xy 136.001198 50.067301) + (xy 136.012179 50.043021) (xy 136.019685 50.01746) (xy 136.026354 50.011681) (xy 136.029991 50.00364) + (xy 136.052355 49.989151) (xy 136.072489 49.971705) (xy 136.082764 49.969449) (xy 136.08863 49.96565) + (xy 136.122664 49.960693) (xy 136.123546 49.9605) (xy 136.123819 49.960499) (xy 136.24918 49.960499) + (xy 136.255294 49.960017) (xy 136.259939 49.960001) (xy 136.25999 49.960015) (xy 136.260393 49.96) + (xy 136.739591 49.96) (xy 136.749318 49.960382) (xy 136.749516 49.960397) (xy 136.750819 49.9605) + (xy 136.876001 49.960499) (xy 136.943039 49.980183) (xy 136.988794 50.032987) (xy 137 50.084499) + (xy 137 50.21) (xy 137.023001 50.21) (xy 137.09004 50.229685) (xy 137.135795 50.282489) (xy 137.147001 50.334) + (xy 137.147001 50.399193) (xy 137.149834 50.4352) (xy 137.149835 50.435202) (xy 137.149835 50.435204) + (xy 137.194631 50.589393) (xy 137.229461 50.648288) (xy 137.232732 50.653818) (xy 137.25 50.716939) + (xy 137.25 50.97993) (xy 137.285122 50.977167) (xy 137.285128 50.977166) (xy 137.439192 50.932406) + (xy 137.44635 50.929309) (xy 137.447659 50.932335) (xy 137.500685 50.918815) (xy 137.530825 50.923659) + (xy 137.682291 50.967664) (xy 137.682294 50.967664) (xy 137.682296 50.967665) (xy 137.718319 50.9705) + (xy 138.21668 50.970499) (xy 138.252704 50.967665) (xy 138.406893 50.922869) (xy 138.545098 50.841135) + (xy 138.54581 50.840423) (xy 138.549415 50.836819) (xy 138.610738 50.803334) (xy 138.637096 50.8005) + (xy 138.940626 50.8005) (xy 139.007665 50.820185) (xy 139.028307 50.836819) (xy 139.139455 50.947967) (xy 139.139459 50.94797) (xy 139.283794 51.036998) (xy 139.283797 51.036999) (xy 139.283803 51.037003) (xy 139.444792 51.090349) (xy 139.544155 51.1005) (xy 140.390844 51.100499) (xy 140.390852 51.100498) (xy 140.390855 51.100498) (xy 140.44526 51.09494) (xy 140.490208 51.090349) (xy 140.651197 51.037003) - (xy 140.795544 50.947968) (xy 140.915468 50.828044) (xy 141.004503 50.683697) (xy 141.057849 50.522708) - (xy 141.068 50.423345) (xy 141.067999 50.049984) (xy 143.817 50.049984) (xy 143.817 52.450015) (xy 143.8275 52.552795) - (xy 143.827501 52.552797) (xy 143.838834 52.586998) (xy 143.882686 52.719335) (xy 143.882687 52.719337) - (xy 143.974786 52.868651) (xy 143.974789 52.868655) (xy 144.098844 52.99271) (xy 144.098848 52.992713) - (xy 144.248162 53.084812) (xy 144.248164 53.084813) (xy 144.248166 53.084814) (xy 144.414703 53.139999) - (xy 144.517492 53.1505) (xy 144.517497 53.1505) (xy 146.917503 53.1505) (xy 146.917508 53.1505) - (xy 147.020297 53.139999) (xy 147.186834 53.084814) (xy 147.336155 52.992711) (xy 147.460211 52.868655) - (xy 147.552314 52.719334) (xy 147.607499 52.552797) (xy 147.618 52.450008) (xy 147.618 50.049992) - (xy 147.607499 49.947203) (xy 147.552314 49.780666) (xy 147.546043 49.7705) (xy 147.460213 49.631348) - (xy 147.46021 49.631344) (xy 147.336155 49.507289) (xy 147.336151 49.507286) (xy 147.186837 49.415187) - (xy 147.186835 49.415186) (xy 147.072571 49.377323) (xy 147.020297 49.360001) (xy 147.020295 49.36) - (xy 146.917515 49.3495) (xy 146.917508 49.3495) (xy 144.517492 49.3495) (xy 144.517484 49.3495) - (xy 144.414704 49.36) (xy 144.414703 49.360001) (xy 144.248164 49.415186) (xy 144.248162 49.415187) - (xy 144.098848 49.507286) (xy 144.098844 49.507289) (xy 143.974789 49.631344) (xy 143.974786 49.631348) - (xy 143.882687 49.780662) (xy 143.882686 49.780664) (xy 143.827501 49.947203) (xy 143.8275 49.947204) - (xy 143.817 50.049984) (xy 141.067999 50.049984) (xy 141.067999 49.876656) (xy 141.06201 49.818031) - (xy 141.057849 49.777292) (xy 141.057848 49.777289) (xy 141.050331 49.754605) (xy 141.004503 49.616303) - (xy 141.004499 49.616297) (xy 141.004498 49.616294) (xy 140.91547 49.471959) (xy 140.915469 49.471957) - (xy 140.915468 49.471956) (xy 140.795544 49.352032) (xy 140.79554 49.352029) (xy 140.651205 49.263001) - (xy 140.651199 49.262998) (xy 140.651197 49.262997) (xy 140.567323 49.235204) (xy 140.490209 49.209651) - (xy 140.390846 49.1995) (xy 139.544162 49.1995) (xy 139.544144 49.199501) (xy 139.444792 49.20965) - (xy 139.444789 49.209651) (xy 139.283805 49.262996) (xy 139.283794 49.263001) (xy 139.139459 49.352029) - (xy 139.139455 49.352032) (xy 139.01953 49.471957) (xy 139.017533 49.475196) (xy 139.015584 49.476948) - (xy 139.015051 49.477623) (xy 139.014935 49.477531) (xy 138.965581 49.521916) (xy 138.896618 49.533133) - (xy 138.832538 49.505285) (xy 138.793686 49.447213) (xy 138.787999 49.410097) (xy 138.787999 49.04082) - (xy 138.785165 49.004796) (xy 138.740369 48.850607) (xy 138.738356 48.847204) (xy 138.7182 48.813122) - (xy 138.701016 48.745398) (xy 138.7182 48.686878) (xy 138.740369 48.649393) (xy 138.779212 48.515694) - (xy 138.785164 48.495208) (xy 138.785164 48.495206) (xy 138.785165 48.495204) (xy 138.788 48.459181) - (xy 138.787999 48.06082) (xy 138.785165 48.024796) (xy 138.740369 47.870607) (xy 138.706081 47.812629) - (xy 138.688898 47.744905) (xy 138.697679 47.703463) (xy 138.775415 47.509088) (xy 138.793404 47.486195) - (xy 138.809078 47.461653) (xy 138.814737 47.459049) (xy 138.818586 47.454151) (xy 138.846097 47.444618) - (xy 138.872551 47.432446) (xy 138.87872 47.433315) (xy 138.884605 47.431276) (xy 138.912902 47.43813) - (xy 138.941737 47.442192) (xy 138.946456 47.446257) (xy 138.952511 47.447724) (xy 138.972611 47.46879) - (xy 138.994672 47.487795) (xy 138.996087 47.490035) (xy 139.019531 47.528043) (xy 139.139455 47.647967) - (xy 139.139459 47.64797) (xy 139.283794 47.736998) (xy 139.283797 47.736999) (xy 139.283803 47.737003) + (xy 140.795544 50.947968) (xy 140.915468 50.828044) (xy 140.926965 50.809403) (xy 140.978912 50.762679) + (xy 141.032504 50.7505) (xy 143.693 50.7505) (xy 143.760039 50.770185) (xy 143.805794 50.822989) + (xy 143.817 50.8745) (xy 143.817 52.450015) (xy 143.8275 52.552795) (xy 143.827501 52.552797) (xy 143.839748 52.589755) + (xy 143.882686 52.719335) (xy 143.882687 52.719337) (xy 143.974786 52.868651) (xy 143.974789 52.868655) + (xy 144.098844 52.99271) (xy 144.098848 52.992713) (xy 144.248162 53.084812) (xy 144.248164 53.084813) + (xy 144.248166 53.084814) (xy 144.414703 53.139999) (xy 144.517492 53.1505) (xy 144.517497 53.1505) + (xy 146.917503 53.1505) (xy 146.917508 53.1505) (xy 147.020297 53.139999) (xy 147.186834 53.084814) + (xy 147.336155 52.992711) (xy 147.460211 52.868655) (xy 147.552314 52.719334) (xy 147.607499 52.552797) + (xy 147.618 52.450008) (xy 147.618 50.049992) (xy 147.607499 49.947203) (xy 147.552314 49.780666) + (xy 147.547867 49.773457) (xy 147.460213 49.631348) (xy 147.46021 49.631344) (xy 147.336155 49.507289) + (xy 147.336151 49.507286) (xy 147.186837 49.415187) (xy 147.186835 49.415186) (xy 147.072571 49.377323) + (xy 147.020297 49.360001) (xy 147.020295 49.36) (xy 146.917515 49.3495) (xy 146.917508 49.3495) + (xy 144.517492 49.3495) (xy 144.517484 49.3495) (xy 144.414704 49.36) (xy 144.414703 49.360001) + (xy 144.248164 49.415186) (xy 144.248162 49.415187) (xy 144.098848 49.507286) (xy 144.098844 49.507289) + (xy 144.092953 49.513181) (xy 144.03163 49.546666) (xy 144.005272 49.5495) (xy 141.032504 49.5495) + (xy 140.965465 49.529815) (xy 140.926965 49.490596) (xy 140.92153 49.481785) (xy 140.915468 49.471956) + (xy 140.795544 49.352032) (xy 140.79554 49.352029) (xy 140.651205 49.263001) (xy 140.651199 49.262998) + (xy 140.651197 49.262997) (xy 140.640152 49.259337) (xy 140.490209 49.209651) (xy 140.390846 49.1995) + (xy 139.544162 49.1995) (xy 139.544144 49.199501) (xy 139.444792 49.20965) (xy 139.444789 49.209651) + (xy 139.283805 49.262996) (xy 139.283794 49.263001) (xy 139.139459 49.352029) (xy 139.139455 49.352032) + (xy 139.019529 49.471958) (xy 139.015187 49.478999) (xy 138.963237 49.525722) (xy 138.894274 49.536941) + (xy 138.830193 49.509095) (xy 138.791339 49.451024) (xy 138.786033 49.40417) (xy 138.788 49.379181) + (xy 138.787999 48.98082) (xy 138.785165 48.944796) (xy 138.740369 48.790607) (xy 138.658635 48.652402) + (xy 138.658633 48.6524) (xy 138.65863 48.652396) (xy 138.545103 48.538869) (xy 138.545095 48.538863) + (xy 138.406893 48.457131) (xy 138.406888 48.457129) (xy 138.252708 48.412335) (xy 138.252702 48.412334) + (xy 138.216681 48.4095) (xy 137.71833 48.4095) (xy 137.718308 48.409501) (xy 137.682294 48.412335) + (xy 137.528111 48.457129) (xy 137.520946 48.46023) (xy 137.519707 48.457368) (xy 137.465973 48.470986) + (xy 137.436014 48.466149) (xy 137.285208 48.422335) (xy 137.285202 48.422334) (xy 137.249181 48.4195) + (xy 136.75083 48.4195) (xy 136.750808 48.419501) (xy 136.714794 48.422335) (xy 136.560611 48.467129) + (xy 136.553446 48.47023) (xy 136.552616 48.468313) (xy 136.495374 48.482825) (xy 136.447222 48.468686) + (xy 136.446554 48.47023) (xy 136.439388 48.467129) (xy 136.285208 48.422335) (xy 136.285202 48.422334) + (xy 136.249181 48.4195) (xy 135.75083 48.4195) (xy 135.750805 48.419501) (xy 135.718759 48.422023) + (xy 135.650382 48.407657) (xy 135.600627 48.358604) (xy 135.58529 48.290438) (xy 135.609241 48.224802) + (xy 135.621353 48.210724) (xy 135.762742 48.069336) (xy 136.095259 47.736819) (xy 136.156582 47.703334) + (xy 136.18294 47.7005) (xy 139.189457 47.7005) (xy 139.254553 47.718961) (xy 139.283803 47.737003) (xy 139.444792 47.790349) (xy 139.544155 47.8005) (xy 140.390844 47.800499) (xy 140.390852 47.800498) (xy 140.390855 47.800498) (xy 140.44526 47.79494) (xy 140.490208 47.790349) (xy 140.651197 47.737003) - (xy 140.795544 47.647968) (xy 140.915468 47.528044) (xy 141.004503 47.383697) (xy 141.057849 47.222708) - (xy 141.068 47.123345) (xy 141.067999 46.576656) (xy 141.067954 46.57622) (xy 141.057849 46.477292) - (xy 141.057848 46.477289) (xy 141.043773 46.434814) (xy 141.004503 46.316303) (xy 141.004499 46.316297) - (xy 141.004498 46.316294) (xy 140.924424 46.186475) (xy 140.924423 46.186474) (xy 140.915468 46.171956) - (xy 140.868953 46.125441) (xy 143.817 46.125441) (xy 143.817 46.374558) (xy 143.817001 46.374575) - (xy 143.849517 46.621561) (xy 143.913998 46.862207) (xy 144.00933 47.092361) (xy 144.009337 47.092376) - (xy 144.1339 47.308126) (xy 144.28556 47.505774) (xy 144.285566 47.505781) (xy 144.461718 47.681933) - (xy 144.461725 47.681939) (xy 144.659373 47.833599) (xy 144.875123 47.958162) (xy 144.875138 47.958169) - (xy 144.974325 47.999253) (xy 145.105293 48.053502) (xy 145.345935 48.117982) (xy 145.592935 48.1505) - (xy 145.592942 48.1505) (xy 145.842058 48.1505) (xy 145.842065 48.1505) (xy 146.089065 48.117982) - (xy 146.329707 48.053502) (xy 146.559873 47.958164) (xy 146.775627 47.833599) (xy 146.973276 47.681938) - (xy 147.149438 47.505776) (xy 147.301099 47.308127) (xy 147.425664 47.092373) (xy 147.521002 46.862207) - (xy 147.585482 46.621565) (xy 147.618 46.374565) (xy 147.618 46.125435) (xy 147.585482 45.878435) - (xy 147.521002 45.637793) (xy 147.453364 45.4745) (xy 147.425669 45.407638) (xy 147.425662 45.407623) - (xy 147.301099 45.191873) (xy 147.149439 44.994225) (xy 147.149433 44.994218) (xy 146.973281 44.818066) - (xy 146.973274 44.81806) (xy 146.775626 44.6664) (xy 146.559876 44.541837) (xy 146.559861 44.54183) - (xy 146.329707 44.446498) (xy 146.160884 44.401262) (xy 146.089065 44.382018) (xy 146.089064 44.382017) - (xy 146.089061 44.382017) (xy 145.842075 44.349501) (xy 145.84207 44.3495) (xy 145.842065 44.3495) - (xy 145.592935 44.3495) (xy 145.592929 44.3495) (xy 145.592924 44.349501) (xy 145.345938 44.382017) - (xy 145.105292 44.446498) (xy 144.875138 44.54183) (xy 144.875123 44.541837) (xy 144.659373 44.6664) - (xy 144.461725 44.81806) (xy 144.461718 44.818066) (xy 144.285566 44.994218) (xy 144.28556 44.994225) - (xy 144.1339 45.191873) (xy 144.009337 45.407623) (xy 144.00933 45.407638) (xy 143.913998 45.637792) - (xy 143.849517 45.878438) (xy 143.817001 46.125424) (xy 143.817 46.125441) (xy 140.868953 46.125441) - (xy 140.795544 46.052032) (xy 140.79554 46.052029) (xy 140.651205 45.963001) (xy 140.651199 45.962998) - (xy 140.651197 45.962997) (xy 140.638175 45.958682) (xy 140.490209 45.909651) (xy 140.390846 45.8995) - (xy 139.544162 45.8995) (xy 139.544144 45.899501) (xy 139.444792 45.90965) (xy 139.444789 45.909651) - (xy 139.283805 45.962996) (xy 139.283794 45.963001) (xy 139.139459 46.052029) (xy 139.139455 46.052032) - (xy 139.019532 46.171955) (xy 139.019529 46.171959) (xy 138.930501 46.316294) (xy 138.930496 46.316305) - (xy 138.877151 46.47729) (xy 138.867 46.576647) (xy 138.867 46.622112) (xy 138.847315 46.689151) - (xy 138.794511 46.734906) (xy 138.725353 46.74485) (xy 138.661797 46.715825) (xy 138.655319 46.709793) - (xy 138.544794 46.599268) (xy 138.544785 46.599261) (xy 138.406691 46.517593) (xy 138.406688 46.517592) - (xy 138.25263 46.472834) (xy 138.2175 46.470068) (xy 138.2175 47.116) (xy 138.197815 47.183039) - (xy 138.145011 47.228794) (xy 138.0935 47.24) (xy 137.9675 47.24) (xy 137.9675 47.3655) (xy 137.965014 47.373966) - (xy 137.966302 47.382697) (xy 137.95532 47.406977) (xy 137.947815 47.432539) (xy 137.941147 47.438316) - (xy 137.93751 47.446359) (xy 137.915143 47.460848) (xy 137.895011 47.478294) (xy 137.884734 47.480549) - (xy 137.878871 47.484348) (xy 137.844837 47.489305) (xy 137.843955 47.489499) (xy 137.843477 47.4895) - (xy 137.71832 47.489501) (xy 137.712206 47.489981) (xy 137.707562 47.489999) (xy 137.70751 47.489984) - (xy 137.707107 47.49) (xy 137.154656 47.49) (xy 137.195094 47.629193) (xy 137.228919 47.686388) - (xy 137.246101 47.754112) (xy 137.228919 47.812628) (xy 137.19463 47.870607) (xy 137.194629 47.870611) - (xy 137.149835 48.024791) (xy 137.149834 48.024797) (xy 137.147 48.060811) (xy 133.611151 48.060811) - (xy 133.610098 48.047431) (xy 133.608355 48.041432) (xy 133.57282 47.919119) (xy 133.564244 47.889602) - (xy 133.480581 47.748135) (xy 133.480579 47.748133) (xy 133.480576 47.748129) (xy 133.36437 47.631923) - (xy 133.364362 47.631917) (xy 133.262756 47.571828) (xy 133.222896 47.548255) (xy 133.222893 47.548254) - (xy 133.065073 47.502402) (xy 133.065067 47.502401) (xy 133.028201 47.4995) (xy 133.028194 47.4995) - (xy 131.862 47.4995) (xy 131.794961 47.479815) (xy 131.749206 47.427011) (xy 131.738 47.3755) (xy 131.738 47.134313) - (xy 131.737999 47.134298) (xy 131.735098 47.097432) (xy 131.735097 47.097426) (xy 131.721173 47.049499) - (xy 131.703887 46.99) (xy 137.154656 46.99) (xy 137.7175 46.99) (xy 137.7175 46.470068) (xy 137.717499 46.470068) - (xy 137.682369 46.472834) (xy 137.682368 46.472834) (xy 137.528311 46.517592) (xy 137.528308 46.517593) - (xy 137.390214 46.599261) (xy 137.390205 46.599268) (xy 137.276768 46.712705) (xy 137.276761 46.712714) - (xy 137.195095 46.850805) (xy 137.154656 46.99) (xy 131.703887 46.99) (xy 131.689246 46.939606) - (xy 131.689244 46.939603) (xy 131.689244 46.939602) (xy 131.605581 46.798135) (xy 131.605579 46.798133) - (xy 131.605576 46.798129) (xy 131.48937 46.681923) (xy 131.489362 46.681917) (xy 131.388236 46.622112) - (xy 131.347898 46.598256) (xy 131.347897 46.598255) (xy 131.347896 46.598255) (xy 131.347893 46.598254) - (xy 131.190073 46.552402) (xy 131.190067 46.552401) (xy 131.153201 46.5495) (xy 131.153194 46.5495) - (xy 129.846806 46.5495) (xy 129.846798 46.5495) (xy 129.809932 46.552401) (xy 129.809926 46.552402) - (xy 129.652106 46.598254) (xy 129.652103 46.598255) (xy 129.510637 46.681917) (xy 129.510629 46.681923) - (xy 129.394423 46.798129) (xy 129.394417 46.798137) (xy 129.310755 46.939603) (xy 129.310754 46.939606) - (xy 129.264902 47.097426) (xy 129.264901 47.097432) (xy 129.262 47.134298) (xy 129.262 47.501835) - (xy 129.242315 47.568874) (xy 129.189511 47.614629) (xy 129.120353 47.624573) (xy 129.074879 47.608567) - (xy 128.972896 47.548255) (xy 128.972893 47.548254) (xy 128.815073 47.502402) (xy 128.815067 47.502401) - (xy 128.778201 47.4995) (xy 128.778194 47.4995) (xy 127.612 47.4995) (xy 127.544961 47.479815) (xy 127.499206 47.427011) - (xy 127.488 47.3755) (xy 127.488 47.134313) (xy 127.487999 47.134298) (xy 127.485098 47.097432) - (xy 127.485097 47.097426) (xy 127.439245 46.939606) (xy 127.439244 46.939603) (xy 127.439244 46.939602) - (xy 127.355581 46.798135) (xy 127.355579 46.798133) (xy 127.355576 46.798129) (xy 127.23937 46.681923) - (xy 127.239362 46.681917) (xy 127.138236 46.622112) (xy 127.097898 46.598256) (xy 127.097897 46.598255) - (xy 127.097896 46.598255) (xy 127.097893 46.598254) (xy 126.940073 46.552402) (xy 126.940067 46.552401) - (xy 126.903201 46.5495) (xy 126.903194 46.5495) (xy 125.596806 46.5495) (xy 125.596798 46.5495) - (xy 125.559934 46.552401) (xy 125.478067 46.576186) (xy 125.408197 46.575986) (xy 125.349527 46.538044) - (xy 125.320684 46.474405) (xy 125.319855 46.447373) (xy 125.320499 46.439194) (xy 125.320499 46.439191) - (xy 125.3205 46.439181) (xy 125.320499 46.04082) (xy 125.317665 46.004796) (xy 125.272869 45.850607) - (xy 125.191135 45.712402) (xy 125.191133 45.7124) (xy 125.19113 45.712396) (xy 125.145841 45.667107) - (xy 125.112356 45.605784) (xy 125.11734 45.536092) (xy 125.159212 45.480159) (xy 125.190189 45.463244) - (xy 125.242328 45.443797) (xy 125.242327 45.443797) (xy 125.242331 45.443796) (xy 125.357546 45.357546) - (xy 125.443796 45.242331) (xy 125.443796 45.242328) (xy 125.446666 45.237075) (xy 125.49607 45.187668) - (xy 125.564342 45.172814) (xy 125.629807 45.197228) (xy 125.67168 45.253161) (xy 125.6795 45.296497) - (xy 125.6795 45.459169) (xy 125.679501 45.459191) (xy 125.682335 45.495205) (xy 125.727129 45.649388) - (xy 125.727131 45.649393) (xy 125.808863 45.787595) (xy 125.808869 45.787603) (xy 125.922396 45.90113) - (xy 125.9224 45.901133) (xy 125.922402 45.901135) (xy 126.060607 45.982869) (xy 126.101268 45.994682) - (xy 126.214791 46.027664) (xy 126.214794 46.027664) (xy 126.214796 46.027665) (xy 126.250819 46.0305) - (xy 126.74918 46.030499) (xy 126.785204 46.027665) (xy 126.939393 45.982869) (xy 126.951235 45.975865) - (xy 127.018957 45.958682) (xy 127.08522 45.980841) (xy 127.119894 46.017499) (xy 127.182288 46.118656) - (xy 127.306344 46.242712) (xy 127.455666 46.334814) (xy 127.622203 46.389999) (xy 127.724991 46.4005) - (xy 128.775008 46.400499) (xy 128.775016 46.400498) (xy 128.775019 46.400498) (xy 128.831302 46.394748) - (xy 128.877797 46.389999) (xy 129.044334 46.334814) (xy 129.193656 46.242712) (xy 129.301782 46.134585) - (xy 129.363101 46.101103) (xy 129.432793 46.106087) (xy 129.477141 46.134588) (xy 129.510629 46.168076) - (xy 129.510633 46.168079) (xy 129.510635 46.168081) (xy 129.652102 46.251744) (xy 129.693724 46.263836) - (xy 129.809926 46.297597) (xy 129.809929 46.297597) (xy 129.809931 46.297598) (xy 129.846806 46.3005) - (xy 129.846814 46.3005) (xy 131.153186 46.3005) (xy 131.153194 46.3005) (xy 131.190069 46.297598) - (xy 131.190071 46.297597) (xy 131.190073 46.297597) (xy 131.251801 46.279663) (xy 131.347898 46.251744) - (xy 131.489365 46.168081) (xy 131.605581 46.051865) (xy 131.689244 45.910398) (xy 131.735098 45.752569) - (xy 131.738 45.715694) (xy 131.738 45.4745) (xy 131.757685 45.407461) (xy 131.810489 45.361706) - (xy 131.862 45.3505) (xy 133.028186 45.3505) (xy 133.028194 45.3505) (xy 133.065069 45.347598) (xy 133.065071 45.347597) - (xy 133.065073 45.347597) (xy 133.115905 45.332829) (xy 133.185774 45.333028) (xy 133.244444 45.37097) - (xy 133.273288 45.434608) (xy 133.2745 45.451905) (xy 133.2745 45.800001) (xy 133.274501 45.800019) - (xy 133.285 45.902796) (xy 133.285001 45.902799) (xy 133.32301 46.0175) (xy 133.340186 46.069334) - (xy 133.432288 46.218656) (xy 133.556344 46.342712) (xy 133.705666 46.434814) (xy 133.872203 46.489999) - (xy 133.974991 46.5005) (xy 135.025008 46.500499) (xy 135.025016 46.500498) (xy 135.025019 46.500498) - (xy 135.081302 46.494748) (xy 135.127797 46.489999) (xy 135.294334 46.434814) (xy 135.443656 46.342712) - (xy 135.567712 46.218656) (xy 135.659814 46.069334) (xy 135.714999 45.902797) (xy 135.7255 45.800009) - (xy 135.725499 45.199992) (xy 135.714999 45.097203) (xy 135.659814 44.930666) (xy 135.567712 44.781344) - (xy 135.443656 44.657288) (xy 135.440819 44.655538) (xy 135.439283 44.65383) (xy 135.437989 44.652807) - (xy 135.438163 44.652585) (xy 135.394096 44.603594) (xy 135.382872 44.534632) (xy 135.410713 44.470549) - (xy 135.440817 44.444462) (xy 135.443656 44.442712) (xy 135.567712 44.318656) (xy 135.659814 44.169334) - (xy 135.714999 44.002797) (xy 135.7255 43.900009) (xy 135.725499 43.299992) (xy 135.721175 43.257667) - (xy 135.714999 43.197203) (xy 135.694387 43.135001) (xy 135.680633 43.093496) (xy 135.678232 43.02367) - (xy 135.713963 42.963628) (xy 135.738919 42.945659) (xy 135.742328 42.943796) (xy 135.742331 42.943796) - (xy 135.745885 42.941136) (xy 135.788788 42.909018) (xy 135.857546 42.857546) (xy 135.900734 42.799854) - (xy 135.956667 42.757984) (xy 136.026359 42.753) (xy 136.087682 42.786485) (xy 136.099263 42.79985) - (xy 136.142454 42.857546) (xy 136.159907 42.870611) (xy 136.257664 42.943793) (xy 136.257671 42.943797) - (xy 136.392517 42.994091) (xy 136.392516 42.994091) (xy 136.399444 42.994835) (xy 136.452127 43.0005) - (xy 138.047872 43.000499) (xy 138.107483 42.994091) (xy 138.242331 42.943796) (xy 138.357546 42.857546) - (xy 138.400734 42.799854) (xy 138.456667 42.757984) (xy 138.526359 42.753) (xy 138.587682 42.786485) - (xy 138.599263 42.79985) (xy 138.642454 42.857546) (xy 138.659907 42.870611) (xy 138.757664 42.943793) - (xy 138.757671 42.943797) (xy 138.892517 42.994091) (xy 138.892516 42.994091) (xy 138.899444 42.994835) - (xy 138.952127 43.0005) (xy 140.547872 43.000499) (xy 140.607483 42.994091) (xy 140.742331 42.943796) - (xy 140.857546 42.857546) (xy 140.943796 42.742331) (xy 140.994091 42.607483) (xy 141.0005 42.547873) - (xy 141.000499 40.952128) (xy 140.994091 40.892517) (xy 140.943796 40.757669) (xy 140.899734 40.69881) - (xy 140.875317 40.633348) (xy 140.890168 40.565075) (xy 140.939573 40.515669) (xy 140.999001 40.5005) - (xy 149.3755 40.5005) (xy 149.442539 40.520185) (xy 149.488294 40.572989) (xy 149.4995 40.6245) - (xy 149.4995 41.452966) (xy 149.479815 41.520005) (xy 149.427011 41.56576) (xy 149.357853 41.575704) - (xy 149.294297 41.546679) (xy 149.287819 41.540647) (xy 149.172891 41.425719) (xy 149.172887 41.425716) - (xy 149.029795 41.337455) (xy 149.029789 41.337452) (xy 149.029787 41.337451) (xy 148.870185 41.284564) - (xy 148.870183 41.284563) (xy 148.771681 41.2745) (xy 148.771674 41.2745) (xy 148.238326 41.2745) - (xy 148.238318 41.2745) (xy 148.139816 41.284563) (xy 148.139815 41.284564) (xy 148.060719 41.310773) - (xy 147.980215 41.33745) (xy 147.980204 41.337455) (xy 147.837112 41.425716) (xy 147.837108 41.425719) - (xy 147.805181 41.457647) (xy 147.743858 41.491132) (xy 147.674166 41.486148) (xy 147.629819 41.457647) - (xy 147.597891 41.425719) (xy 147.597887 41.425716) (xy 147.454795 41.337455) (xy 147.454789 41.337452) - (xy 147.454787 41.337451) (xy 147.295185 41.284564) (xy 147.295183 41.284563) (xy 147.196681 41.2745) - (xy 147.196674 41.2745) (xy 146.663326 41.2745) (xy 146.663318 41.2745) (xy 146.564816 41.284563) - (xy 146.564815 41.284564) (xy 146.485719 41.310773) (xy 146.405215 41.33745) (xy 146.405204 41.337455) - (xy 146.262112 41.425716) (xy 146.262108 41.425719) (xy 146.150943 41.536883) (xy 146.08962 41.570367) - (xy 146.019928 41.565382) (xy 146.000143 41.555934) (xy 145.875523 41.482235) (xy 145.866893 41.477131) - (xy 145.866892 41.47713) (xy 145.866891 41.47713) (xy 145.866888 41.477129) (xy 145.712708 41.432335) - (xy 145.712702 41.432334) (xy 145.676681 41.4295) (xy 145.27833 41.4295) (xy 145.278308 41.429501) - (xy 145.242294 41.432335) (xy 145.088111 41.477129) (xy 145.088104 41.477132) (xy 145.030619 41.511128) - (xy 144.962895 41.528309) (xy 144.904381 41.511128) (xy 144.846895 41.477132) (xy 144.846888 41.477129) - (xy 144.692708 41.432335) (xy 144.692702 41.432334) (xy 144.656681 41.4295) (xy 144.25833 41.4295) - (xy 144.258308 41.429501) (xy 144.222294 41.432335) (xy 144.068111 41.477129) (xy 144.068106 41.477131) - (xy 143.929904 41.558863) (xy 143.929896 41.558869) (xy 143.816369 41.672396) (xy 143.816363 41.672404) - (xy 143.734631 41.810606) (xy 143.734629 41.810611) (xy 143.689835 41.964791) (xy 143.689834 41.964797) - (xy 143.687 42.000811) (xy 143.687 42.499169) (xy 143.687001 42.499191) (xy 143.689835 42.535205) - (xy 143.734629 42.689388) (xy 143.734631 42.689393) (xy 143.816363 42.827595) (xy 143.816369 42.827603) - (xy 143.929896 42.94113) (xy 143.9299 42.941133) (xy 143.929902 42.941135) (xy 144.068107 43.022869) - (xy 144.108768 43.034682) (xy 144.222291 43.067664) (xy 144.222294 43.067664) (xy 144.222296 43.067665) - (xy 144.258319 43.0705) (xy 144.65668 43.070499) (xy 144.692704 43.067665) (xy 144.846893 43.022869) - (xy 144.904382 42.988869) (xy 144.972102 42.971688) (xy 145.030617 42.988869) (xy 145.088107 43.022869) - (xy 145.08811 43.022869) (xy 145.088112 43.022871) (xy 145.242291 43.067664) (xy 145.242294 43.067664) - (xy 145.242296 43.067665) (xy 145.278319 43.0705) (xy 145.67668 43.070499) (xy 145.712704 43.067665) - (xy 145.866893 43.022869) (xy 146.000144 42.944064) (xy 146.067865 42.926882) (xy 146.134128 42.949042) - (xy 146.150944 42.963116) (xy 146.262108 43.07428) (xy 146.262112 43.074283) (xy 146.405204 43.162544) - (xy 146.405207 43.162545) (xy 146.405213 43.162549) (xy 146.564815 43.215436) (xy 146.663326 43.2255) - (xy 146.663331 43.2255) (xy 147.196669 43.2255) (xy 147.196674 43.2255) (xy 147.295185 43.215436) - (xy 147.454787 43.162549) (xy 147.597891 43.074281) (xy 147.629819 43.042353) (xy 147.691142 43.008868) - (xy 147.760834 43.013852) (xy 147.805181 43.042353) (xy 147.837108 43.07428) (xy 147.837112 43.074283) - (xy 147.980204 43.162544) (xy 147.980207 43.162545) (xy 147.980213 43.162549) (xy 148.139815 43.215436) - (xy 148.238326 43.2255) (xy 148.238331 43.2255) (xy 148.771669 43.2255) (xy 148.771674 43.2255) - (xy 148.870185 43.215436) (xy 149.029787 43.162549) (xy 149.172891 43.074281) (xy 149.287819 42.959353) - (xy 149.349142 42.925868) (xy 149.418834 42.930852) (xy 149.474767 42.972724) (xy 149.499184 43.038188) - (xy 149.4995 43.047034) (xy 149.4995 54.750796) (xy 149.479815 54.817835) (xy 149.427011 54.86359) - (xy 149.357853 54.873534) (xy 149.310404 54.856335) (xy 149.279793 54.837455) (xy 149.279787 54.837451) - (xy 149.120185 54.784564) (xy 149.120183 54.784563) (xy 149.021681 54.7745) (xy 149.021674 54.7745) - (xy 148.488326 54.7745) (xy 148.488318 54.7745) (xy 148.389816 54.784563) (xy 148.389815 54.784564) - (xy 148.324516 54.806202) (xy 148.230215 54.83745) (xy 148.230204 54.837455) (xy 148.087112 54.925716) - (xy 148.087108 54.925719) (xy 148.055181 54.957647) (xy 147.993858 54.991132) (xy 147.924166 54.986148) - (xy 147.879819 54.957647) (xy 147.847891 54.925719) (xy 147.847887 54.925716) (xy 147.704795 54.837455) - (xy 147.704789 54.837452) (xy 147.704787 54.837451) (xy 147.545185 54.784564) (xy 147.545183 54.784563) - (xy 147.446681 54.7745) (xy 147.446674 54.7745) (xy 146.913326 54.7745) (xy 146.913318 54.7745) - (xy 146.814816 54.784563) (xy 146.814815 54.784564) (xy 146.749516 54.806202) (xy 146.655215 54.83745) - (xy 146.655204 54.837455) (xy 146.512112 54.925716) (xy 146.512107 54.92572) (xy 146.493683 54.944144) - (xy 146.43236 54.977628) (xy 146.371409 54.975537) (xy 146.222708 54.932335) (xy 146.222702 54.932334) - (xy 146.186681 54.9295) (xy 145.78833 54.9295) (xy 145.788308 54.929501) (xy 145.752294 54.932335) - (xy 145.598111 54.977129) (xy 145.598104 54.977132) (xy 145.540619 55.011128) (xy 145.472895 55.028309) - (xy 145.414381 55.011128) (xy 145.356895 54.977132) (xy 145.356888 54.977129) (xy 145.202708 54.932335) - (xy 145.202702 54.932334) (xy 145.166681 54.9295) (xy 144.76833 54.9295) (xy 144.768308 54.929501) - (xy 144.732294 54.932335) (xy 144.578111 54.977129) (xy 144.578106 54.977131) (xy 144.439904 55.058863) - (xy 144.439896 55.058869) (xy 144.326369 55.172396) (xy 144.326363 55.172404) (xy 144.244631 55.310606) - (xy 144.244629 55.310611) (xy 144.199835 55.464791) (xy 144.199834 55.464797) (xy 144.197 55.500811) - (xy 144.197 55.999169) (xy 144.197001 55.999191) (xy 144.199835 56.035205) (xy 144.244629 56.189388) - (xy 144.244631 56.189393) (xy 144.326363 56.327595) (xy 144.326369 56.327603) (xy 144.439896 56.44113) - (xy 144.4399 56.441133) (xy 144.439902 56.441135) (xy 144.578107 56.522869) (xy 144.618768 56.534682) - (xy 144.732291 56.567664) (xy 144.732294 56.567664) (xy 144.732296 56.567665) (xy 144.768319 56.5705) - (xy 145.16668 56.570499) (xy 145.202704 56.567665) (xy 145.356893 56.522869) (xy 145.414382 56.488869) - (xy 145.482102 56.471688) (xy 145.540617 56.488869) (xy 145.598107 56.522869) (xy 145.59811 56.522869) - (xy 145.598112 56.522871) (xy 145.752291 56.567664) (xy 145.752294 56.567664) (xy 145.752296 56.567665) - (xy 145.788319 56.5705) (xy 146.18668 56.570499) (xy 146.222704 56.567665) (xy 146.371409 56.524462) - (xy 146.441278 56.524661) (xy 146.493685 56.555857) (xy 146.512108 56.57428) (xy 146.512112 56.574283) - (xy 146.655204 56.662544) (xy 146.655207 56.662545) (xy 146.655213 56.662549) (xy 146.814815 56.715436) - (xy 146.913326 56.7255) (xy 146.913331 56.7255) (xy 147.446669 56.7255) (xy 147.446674 56.7255) - (xy 147.545185 56.715436) (xy 147.704787 56.662549) (xy 147.847891 56.574281) (xy 147.879819 56.542353) - (xy 147.941142 56.508868) (xy 148.010834 56.513852) (xy 148.055181 56.542353) (xy 148.087108 56.57428) - (xy 148.087112 56.574283) (xy 148.230204 56.662544) (xy 148.230207 56.662545) (xy 148.230213 56.662549) - (xy 148.389815 56.715436) (xy 148.488326 56.7255) (xy 148.488331 56.7255) (xy 149.021669 56.7255) - (xy 149.021674 56.7255) (xy 149.120185 56.715436) (xy 149.279787 56.662549) (xy 149.310403 56.643664) - (xy 149.377795 56.625224) (xy 149.444458 56.646146) (xy 149.489228 56.699788) (xy 149.4995 56.749203) - (xy 149.4995 109.3755) (xy 149.479815 109.442539) (xy 149.427011 109.488294) (xy 149.3755 109.4995) - (xy 147.405215 109.4995) (xy 147.338176 109.479815) (xy 147.292421 109.427011) (xy 147.282477 109.357853) - (xy 147.299986 109.312171) (xy 147.29907 109.311642) (xy 147.37298 109.183624) (xy 147.425664 109.092373) - (xy 147.521002 108.862207) (xy 147.585482 108.621565) (xy 147.618 108.374565) (xy 147.618 108.125435) - (xy 147.585482 107.878435) (xy 147.521002 107.637793) (xy 147.433438 107.426395) (xy 147.425669 107.407638) - (xy 147.425662 107.407623) (xy 147.301099 107.191873) (xy 147.149439 106.994225) (xy 147.149433 106.994218) - (xy 146.973281 106.818066) (xy 146.973274 106.81806) (xy 146.775626 106.6664) (xy 146.559876 106.541837) - (xy 146.559861 106.54183) (xy 146.329707 106.446498) (xy 146.268554 106.430112) (xy 146.089065 106.382018) - (xy 146.089064 106.382017) (xy 146.089061 106.382017) (xy 145.842075 106.349501) (xy 145.84207 106.3495) - (xy 145.842065 106.3495) (xy 145.592935 106.3495) (xy 145.592929 106.3495) (xy 145.592924 106.349501) - (xy 145.345938 106.382017) (xy 145.105292 106.446498) (xy 144.875138 106.54183) (xy 144.875123 106.541837) - (xy 144.659373 106.6664) (xy 144.461725 106.81806) (xy 144.461718 106.818066) (xy 144.285566 106.994218) - (xy 144.28556 106.994225) (xy 144.1339 107.191873) (xy 144.009337 107.407623) (xy 144.00933 107.407638) - (xy 143.913998 107.637792) (xy 143.849517 107.878438) (xy 143.817001 108.125424) (xy 143.817 108.125441) - (xy 143.817 108.374558) (xy 143.817001 108.374575) (xy 143.838148 108.535205) (xy 143.849518 108.621565) - (xy 143.867691 108.689388) (xy 143.913998 108.862207) (xy 144.00933 109.092361) (xy 144.009337 109.092376) - (xy 144.13593 109.311642) (xy 144.134682 109.312362) (xy 144.153765 109.373263) (xy 144.135293 109.440646) - (xy 144.083323 109.487347) (xy 144.029785 109.4995) (xy 140.6215 109.4995) (xy 140.612814 109.496949) - (xy 140.603853 109.498238) (xy 140.579812 109.487259) (xy 140.554461 109.479815) (xy 140.548533 109.472974) - (xy 140.540297 109.469213) (xy 140.526007 109.446978) (xy 140.508706 109.427011) (xy 140.506418 109.416496) - (xy 140.502523 109.410435) (xy 140.4975 109.3755) (xy 140.4975 109.194499) (xy 140.517185 109.12746) - (xy 140.569989 109.081705) (xy 140.621498 109.070499) (xy 140.71668 109.070499) (xy 140.752704 109.067665) - (xy 140.906893 109.022869) (xy 140.912338 109.019648) (xy 140.916366 109.017267) (xy 140.979485 109) - (xy 141.27629 109) (xy 141.274645 108.979089) (xy 141.229531 108.823803) (xy 141.226434 108.816646) - (xy 141.229135 108.815476) (xy 141.215351 108.761173) (xy 141.232536 108.702637) (xy 141.240369 108.689393) - (xy 141.285165 108.535204) (xy 141.288 108.499181) (xy 141.287999 108.00082) (xy 141.285165 107.964796) - (xy 141.240369 107.810607) (xy 141.158635 107.672402) (xy 141.158633 107.6724) (xy 141.15863 107.672396) - (xy 141.045103 107.558869) (xy 141.045094 107.558862) (xy 141.01881 107.543318) (xy 140.971126 107.492249) - (xy 140.958623 107.423507) (xy 140.965748 107.393254) (xy 140.979091 107.357483) (xy 140.9855 107.297873) - (xy 140.985499 105.702128) (xy 140.979091 105.642517) (xy 140.928796 105.507669) (xy 140.928795 105.507668) - (xy 140.928793 105.507664) (xy 140.842547 105.392455) (xy 140.842544 105.392452) (xy 140.727335 105.306206) - (xy 140.727328 105.306202) (xy 140.592482 105.255908) (xy 140.592483 105.255908) (xy 140.532883 105.249501) - (xy 140.532881 105.2495) (xy 140.532873 105.2495) (xy 140.532864 105.2495) (xy 138.937129 105.2495) - (xy 138.937123 105.249501) (xy 138.877516 105.255908) (xy 138.742671 105.306202) (xy 138.742664 105.306206) - (xy 138.627455 105.392452) (xy 138.627452 105.392455) (xy 138.541206 105.507664) (xy 138.541202 105.507671) - (xy 138.490908 105.642517) (xy 138.484501 105.702116) (xy 138.484501 105.702123) (xy 138.4845 105.702135) - (xy 138.4845 107.29787) (xy 138.484501 107.297876) (xy 138.490908 107.357483) (xy 138.541202 107.492328) - (xy 138.541206 107.492335) (xy 138.591009 107.558862) (xy 138.627454 107.607546) (xy 138.728085 107.682878) - (xy 138.769955 107.738811) (xy 138.774939 107.808503) (xy 138.772849 107.816739) (xy 138.729835 107.964791) - (xy 138.729834 107.964797) (xy 138.727 108.000811) (xy 138.727 108.499169) (xy 138.727001 108.499191) - (xy 138.729835 108.535205) (xy 138.774629 108.689388) (xy 138.77463 108.68939) (xy 138.774631 108.689393) - (xy 138.78246 108.702632) (xy 138.793832 108.72186) (xy 138.811015 108.789584) (xy 138.806176 108.819576) - (xy 138.759857 108.979002) (xy 138.759856 108.979008) (xy 138.757 109.015302) (xy 138.757 109.3755) - (xy 138.737315 109.442539) (xy 138.684511 109.488294) (xy 138.633 109.4995) (xy 137.705812 109.4995) - (xy 137.638773 109.479815) (xy 137.593018 109.427011) (xy 137.582873 109.359314) (xy 137.5855 109.339361) - (xy 137.585499 109.06064) (xy 137.570044 108.943238) (xy 137.570042 108.943234) (xy 137.561435 108.922455) - (xy 137.553965 108.852986) (xy 137.561435 108.827545) (xy 137.564736 108.819576) (xy 137.570044 108.806762) - (xy 137.5855 108.689361) (xy 137.585499 108.41064) (xy 137.585499 108.410638) (xy 137.585499 108.410636) - (xy 137.570046 108.293246) (xy 137.570044 108.293239) (xy 137.570044 108.293238) (xy 137.509536 108.147159) - (xy 137.413282 108.021718) (xy 137.287841 107.925464) (xy 137.141762 107.864956) (xy 137.14176 107.864955) - (xy 137.02437 107.849501) (xy 137.024367 107.8495) (xy 137.024361 107.8495) (xy 137.024354 107.8495) - (xy 135.670636 107.8495) (xy 135.553246 107.864953) (xy 135.553237 107.864956) (xy 135.40716 107.925463) - (xy 135.281718 108.021718) (xy 135.185463 108.14716) (xy 135.124956 108.293237) (xy 135.124955 108.293239) - (xy 135.1095 108.410638) (xy 135.1095 108.689363) (xy 135.124953 108.806753) (xy 135.124957 108.806765) - (xy 135.133566 108.82755) (xy 135.141033 108.897019) (xy 135.133566 108.92245) (xy 135.124957 108.943234) - (xy 135.124955 108.943239) (xy 135.1095 109.060638) (xy 135.1095 109.33936) (xy 135.112128 109.359315) - (xy 135.101362 109.42835) (xy 135.054982 109.480606) (xy 134.989189 109.4995) (xy 131.980812 109.4995) - (xy 131.913773 109.479815) (xy 131.868018 109.427011) (xy 131.857873 109.359314) (xy 131.8605 109.339361) - (xy 131.860499 109.06064) (xy 131.845044 108.943238) (xy 131.845042 108.943234) (xy 131.836435 108.922455) - (xy 131.828965 108.852986) (xy 131.836435 108.827545) (xy 131.839736 108.819576) (xy 131.845044 108.806762) - (xy 131.8605 108.689361) (xy 131.860499 108.41064) (xy 131.860499 108.410638) (xy 131.860499 108.410636) - (xy 131.845046 108.293246) (xy 131.845044 108.293239) (xy 131.845044 108.293238) (xy 131.784536 108.147159) - (xy 131.688282 108.021718) (xy 131.562841 107.925464) (xy 131.562839 107.925463) (xy 131.541544 107.916642) - (xy 131.487142 107.8728) (xy 131.465079 107.806505) (xy 131.465043 107.804503) (xy 131.965 107.804503) - (xy 132.111195 107.762031) (xy 132.250374 107.679721) (xy 132.250383 107.679714) (xy 132.364714 107.565383) - (xy 132.364721 107.565374) (xy 132.447031 107.426195) (xy 132.447033 107.42619) (xy 132.492144 107.270918) - (xy 132.492145 107.270912) (xy 132.49379 107.25) (xy 131.965 107.25) (xy 131.965 107.804503) (xy 131.465043 107.804503) - (xy 131.465 107.802082) (xy 131.465 107.498352) (xy 131.482267 107.435233) (xy 131.487494 107.426395) - (xy 131.492944 107.407638) (xy 131.532642 107.270997) (xy 131.532643 107.270991) (xy 131.535499 107.234697) - (xy 131.5355 107.23469) (xy 131.5355 107.124) (xy 131.555185 107.056961) (xy 131.607989 107.011206) - (xy 131.6595 107) (xy 131.715 107) (xy 131.715 106.874) (xy 131.734685 106.806961) (xy 131.787489 106.761206) - (xy 131.839 106.75) (xy 132.504871 106.75) (xy 132.540048 106.72896) (xy 132.571139 106.724999) - (xy 132.784972 106.724999) (xy 132.784986 106.724998) (xy 132.887697 106.714505) (xy 133.054119 106.659358) - (xy 133.054124 106.659356) (xy 133.203345 106.567315) (xy 133.327315 106.443345) (xy 133.419356 106.294124) - (xy 133.419358 106.294119) (xy 133.474505 106.127697) (xy 133.474506 106.12769) (xy 133.484999 106.024986) - (xy 133.485 106.024973) (xy 133.485 105.75) (xy 132.609 105.75) (xy 132.541961 105.730315) (xy 132.496206 105.677511) - (xy 132.485 105.626) (xy 132.485 105.5) (xy 132.359 105.5) (xy 132.291961 105.480315) (xy 132.246206 105.427511) - (xy 132.235 105.376) (xy 132.235 105.25) (xy 132.735 105.25) (xy 133.484999 105.25) (xy 133.484999 104.975028) - (xy 133.484998 104.975013) (xy 133.474505 104.872302) (xy 133.419358 104.70588) (xy 133.419356 104.705875) - (xy 133.327315 104.556654) (xy 133.203345 104.432684) (xy 133.054124 104.340643) (xy 133.054119 104.340641) - (xy 132.887697 104.285494) (xy 132.88769 104.285493) (xy 132.784986 104.275) (xy 132.735 104.275) - (xy 132.735 105.25) (xy 132.235 105.25) (xy 132.235 104.275) (xy 132.234999 104.274999) (xy 132.185029 104.275) - (xy 132.185011 104.275001) (xy 132.082302 104.285494) (xy 131.91588 104.340641) (xy 131.915875 104.340643) - (xy 131.766654 104.432684) (xy 131.642683 104.556655) (xy 131.642679 104.55666) (xy 131.640826 104.559665) - (xy 131.639018 104.56129) (xy 131.638202 104.562323) (xy 131.638025 104.562183) (xy 131.588874 104.606385) - (xy 131.519911 104.617601) (xy 131.455831 104.589752) (xy 131.429753 104.559653) (xy 131.429737 104.559628) - (xy 131.427712 104.556344) (xy 131.303656 104.432288) (xy 131.154334 104.340186) (xy 130.987797 104.285001) - (xy 130.987795 104.285) (xy 130.88501 104.2745) (xy 130.284998 104.2745) (xy 130.28498 104.274501) - (xy 130.182203 104.285) (xy 130.1822 104.285001) (xy 130.015668 104.340185) (xy 130.015663 104.340187) - (xy 129.866342 104.432289) (xy 129.742289 104.556342) (xy 129.650187 104.705663) (xy 129.650185 104.705668) - (xy 129.650115 104.70588) (xy 129.595001 104.872203) (xy 129.595001 104.872204) (xy 129.595 104.872204) - (xy 129.5845 104.974983) (xy 129.5845 106.025001) (xy 129.584501 106.025019) (xy 129.595 106.127796) - (xy 129.595001 106.127799) (xy 129.650185 106.294331) (xy 129.650187 106.294336) (xy 129.684212 106.3495) - (xy 129.742288 106.443656) (xy 129.866344 106.567712) (xy 129.920487 106.601107) (xy 129.96721 106.653054) - (xy 129.978433 106.722017) (xy 129.977374 106.72891) (xy 129.977357 106.729001) (xy 129.9745 106.765302) - (xy 129.9745 107.234697) (xy 129.977356 107.270991) (xy 129.977357 107.270997) (xy 130.022504 107.42639) - (xy 130.022505 107.426393) (xy 130.104881 107.565684) (xy 130.104887 107.565692) (xy 130.177014 107.637819) - (xy 130.210499 107.699142) (xy 130.205515 107.768834) (xy 130.163643 107.824767) (xy 130.098179 107.849184) - (xy 130.089334 107.8495) (xy 129.945637 107.8495) (xy 129.828246 107.864953) (xy 129.828237 107.864956) - (xy 129.68216 107.925463) (xy 129.556718 108.021718) (xy 129.460463 108.14716) (xy 129.399956 108.293237) - (xy 129.399955 108.293239) (xy 129.3845 108.410638) (xy 129.3845 108.689363) (xy 129.399953 108.806753) - (xy 129.399957 108.806765) (xy 129.408566 108.82755) (xy 129.416033 108.897019) (xy 129.408566 108.92245) - (xy 129.399957 108.943234) (xy 129.399955 108.943239) (xy 129.3845 109.060638) (xy 129.3845 109.33936) - (xy 129.387128 109.359315) (xy 129.376362 109.42835) (xy 129.329982 109.480606) (xy 129.264189 109.4995) - (xy 50.6245 109.4995) (xy 50.557461 109.479815) (xy 50.511706 109.427011) (xy 50.5005 109.3755) - (xy 50.5005 105.515302) (xy 110.4695 105.515302) (xy 110.4695 105.984697) (xy 110.472356 106.020991) - (xy 110.472357 106.020997) (xy 110.517504 106.17639) (xy 110.517505 106.176393) (xy 110.599881 106.315684) - (xy 110.599887 106.315692) (xy 110.714307 106.430112) (xy 110.714311 106.430115) (xy 110.714313 106.430117) - (xy 110.853605 106.512494) (xy 110.894587 106.5244) (xy 111.009002 106.557642) (xy 111.009005 106.557642) - (xy 111.009007 106.557643) (xy 111.04531 106.5605) (xy 111.045318 106.5605) (xy 111.454682 106.5605) - (xy 111.45469 106.5605) (xy 111.490993 106.557643) (xy 111.490995 106.557642) (xy 111.490997 106.557642) - (xy 111.545421 106.54183) (xy 111.646395 106.512494) (xy 111.667369 106.500089) (xy 111.735088 106.482906) - (xy 111.793613 106.50009) (xy 111.813803 106.512031) (xy 111.96 106.554504) (xy 111.96 106.554503) - (xy 112.46 106.554503) (xy 112.606195 106.512031) (xy 112.745374 106.429721) (xy 112.745383 106.429714) - (xy 112.859714 106.315383) (xy 112.859721 106.315374) (xy 112.942031 106.176195) (xy 112.942033 106.17619) - (xy 112.987144 106.020918) (xy 112.987145 106.020912) (xy 112.98879 106) (xy 112.46 106) (xy 112.46 106.554503) - (xy 111.96 106.554503) (xy 111.96 106.248352) (xy 111.977267 106.185233) (xy 111.982494 106.176395) - (xy 111.996614 106.127796) (xy 112.027642 106.020997) (xy 112.027643 106.020991) (xy 112.030499 105.984697) - (xy 112.0305 105.98469) (xy 112.0305 105.51531) (xy 112.027643 105.479007) (xy 111.997716 105.376) - (xy 111.982495 105.323608) (xy 111.982492 105.3236) (xy 111.977266 105.314763) (xy 111.96 105.251645) - (xy 111.96 104.945494) (xy 112.46 104.945494) (xy 112.46 105.5) (xy 112.98879 105.5) (xy 112.987145 105.479089) - (xy 112.942031 105.323804) (xy 112.859721 105.184625) (xy 112.859714 105.184616) (xy 112.745383 105.070285) - (xy 112.745374 105.070278) (xy 112.606193 104.987967) (xy 112.60619 104.987965) (xy 112.460001 104.945493) - (xy 112.46 104.945494) (xy 111.96 104.945494) (xy 111.959998 104.945493) (xy 111.813809 104.987965) - (xy 111.813806 104.987967) (xy 111.793608 104.999912) (xy 111.725884 105.017092) (xy 111.66737 104.99991) - (xy 111.646397 104.987507) (xy 111.64639 104.987504) (xy 111.490997 104.942357) (xy 111.490991 104.942356) - (xy 111.454697 104.9395) (xy 111.45469 104.9395) (xy 111.04531 104.9395) (xy 111.045302 104.9395) - (xy 111.009008 104.942356) (xy 111.009002 104.942357) (xy 110.853609 104.987504) (xy 110.853606 104.987505) - (xy 110.714315 105.069881) (xy 110.714307 105.069887) (xy 110.599887 105.184307) (xy 110.599881 105.184315) - (xy 110.517505 105.323606) (xy 110.517504 105.323609) (xy 110.472357 105.479002) (xy 110.472356 105.479008) - (xy 110.4695 105.515302) (xy 50.5005 105.515302) (xy 50.5005 102.802135) (xy 59.8995 102.802135) - (xy 59.8995 104.89787) (xy 59.899501 104.897876) (xy 59.905908 104.957483) (xy 59.956202 105.092328) - (xy 59.956206 105.092335) (xy 60.042452 105.207544) (xy 60.042455 105.207547) (xy 60.157664 105.293793) - (xy 60.157671 105.293797) (xy 60.292517 105.344091) (xy 60.292516 105.344091) (xy 60.299444 105.344835) - (xy 60.352127 105.3505) (xy 63.647872 105.350499) (xy 63.707483 105.344091) (xy 63.842331 105.293796) - (xy 63.957546 105.207546) (xy 64.043796 105.092331) (xy 64.094091 104.957483) (xy 64.1005 104.897873) - (xy 64.100499 102.802128) (xy 64.094091 102.742517) (xy 64.05677 102.642455) (xy 64.043797 102.607671) - (xy 64.043793 102.607664) (xy 63.957547 102.492455) (xy 63.957544 102.492452) (xy 63.842335 102.406206) - (xy 63.842328 102.406202) (xy 63.707482 102.355908) (xy 63.707483 102.355908) (xy 63.647883 102.349501) - (xy 63.647881 102.3495) (xy 63.647873 102.3495) (xy 63.647864 102.3495) (xy 60.352129 102.3495) - (xy 60.352123 102.349501) (xy 60.292516 102.355908) (xy 60.157671 102.406202) (xy 60.157664 102.406206) - (xy 60.042455 102.492452) (xy 60.042452 102.492455) (xy 59.956206 102.607664) (xy 59.956202 102.607671) - (xy 59.905908 102.742517) (xy 59.899561 102.801555) (xy 59.899501 102.802123) (xy 59.8995 102.802135) - (xy 50.5005 102.802135) (xy 50.5005 94.702135) (xy 52.9995 94.702135) (xy 52.9995 96.79787) (xy 52.999501 96.797876) - (xy 53.005908 96.857483) (xy 53.056202 96.992328) (xy 53.056206 96.992335) (xy 53.142452 97.107544) - (xy 53.142453 97.107544) (xy 53.142454 97.107546) (xy 53.161176 97.121561) (xy 53.260599 97.19599) - (xy 53.302469 97.251924) (xy 53.307453 97.321615) (xy 53.286605 97.368141) (xy 53.217087 97.463824) - (xy 53.109897 97.674197) (xy 53.036934 97.898752) (xy 53 98.131947) (xy 53 98.368052) (xy 53.036934 98.601247) - (xy 53.109897 98.825802) (xy 53.217087 99.036174) (xy 53.277338 99.119104) (xy 53.27734 99.119105) - (xy 54.017037 98.379408) (xy 54.034075 98.442993) (xy 54.099901 98.557007) (xy 54.192993 98.650099) - (xy 54.307007 98.715925) (xy 54.37059 98.732962) (xy 53.62428 99.479271) (xy 53.615105 99.522947) - (xy 53.578739 99.564615) (xy 53.52249 99.605482) (xy 53.355485 99.772487) (xy 53.355485 99.772488) - (xy 53.355483 99.77249) (xy 53.31888 99.82287) (xy 53.216657 99.963566) (xy 53.109433 100.174003) - (xy 53.036446 100.398631) (xy 52.9995 100.631902) (xy 52.9995 100.868097) (xy 53.036446 101.101368) - (xy 53.109433 101.325996) (xy 53.194184 101.492328) (xy 53.216657 101.536433) (xy 53.355483 101.72751) - (xy 53.52249 101.894517) (xy 53.713567 102.033343) (xy 53.782394 102.068412) (xy 53.924003 102.140566) - (xy 53.924005 102.140566) (xy 53.924008 102.140568) (xy 54.044412 102.179689) (xy 54.148631 102.213553) - (xy 54.381903 102.2505) (xy 54.381908 102.2505) (xy 54.618097 102.2505) (xy 54.851368 102.213553) - (xy 55.075992 102.140568) (xy 55.286433 102.033343) (xy 55.47751 101.894517) (xy 55.644517 101.72751) - (xy 55.783343 101.536433) (xy 55.890568 101.325992) (xy 55.963553 101.101368) (xy 56.0005 100.868097) - (xy 56.0005 100.631902) (xy 67.4995 100.631902) (xy 67.4995 100.868097) (xy 67.536446 101.101368) - (xy 67.609433 101.325996) (xy 67.694184 101.492328) (xy 67.716657 101.536433) (xy 67.855483 101.72751) - (xy 68.02249 101.894517) (xy 68.213567 102.033343) (xy 68.282394 102.068412) (xy 68.424003 102.140566) - (xy 68.424005 102.140566) (xy 68.424008 102.140568) (xy 68.544412 102.179689) (xy 68.648631 102.213553) - (xy 68.881903 102.2505) (xy 68.881908 102.2505) (xy 69.118097 102.2505) (xy 69.351368 102.213553) - (xy 69.575992 102.140568) (xy 69.786433 102.033343) (xy 69.97751 101.894517) (xy 70.144517 101.72751) - (xy 70.283343 101.536433) (xy 70.390568 101.325992) (xy 70.463553 101.101368) (xy 70.5005 100.868097) - (xy 70.5005 100.631902) (xy 70.463553 100.398631) (xy 70.414291 100.247019) (xy 70.390568 100.174008) - (xy 70.390566 100.174005) (xy 70.390566 100.174003) (xy 70.322343 100.040109) (xy 70.283343 99.963567) - (xy 70.144517 99.77249) (xy 69.97751 99.605483) (xy 69.786433 99.466657) (xy 69.575996 99.359433) - (xy 69.351368 99.286446) (xy 69.118097 99.2495) (xy 69.118092 99.2495) (xy 68.881908 99.2495) (xy 68.881903 99.2495) - (xy 68.648631 99.286446) (xy 68.424003 99.359433) (xy 68.213566 99.466657) (xy 68.129762 99.527545) - (xy 68.02249 99.605483) (xy 68.022488 99.605485) (xy 68.022487 99.605485) (xy 67.855485 99.772487) - (xy 67.855485 99.772488) (xy 67.855483 99.77249) (xy 67.81888 99.82287) (xy 67.716657 99.963566) - (xy 67.609433 100.174003) (xy 67.536446 100.398631) (xy 67.4995 100.631902) (xy 56.0005 100.631902) - (xy 55.963553 100.398631) (xy 55.914291 100.247019) (xy 55.890568 100.174008) (xy 55.890566 100.174005) - (xy 55.890566 100.174003) (xy 55.822343 100.040109) (xy 55.783343 99.963567) (xy 55.644517 99.77249) - (xy 55.47751 99.605483) (xy 55.421259 99.564614) (xy 55.378595 99.509284) (xy 55.373902 99.477455) - (xy 54.629408 98.732962) (xy 54.692993 98.715925) (xy 54.807007 98.650099) (xy 54.900099 98.557007) - (xy 54.965925 98.442993) (xy 54.982962 98.379409) (xy 55.722658 99.119105) (xy 55.722658 99.119104) - (xy 55.782914 99.036169) (xy 55.782918 99.036163) (xy 55.890102 98.825802) (xy 55.963065 98.601247) - (xy 56 98.368052) (xy 56 98.131947) (xy 55.963065 97.898752) (xy 55.890102 97.674197) (xy 55.782914 97.463828) - (xy 55.713394 97.368142) (xy 55.689914 97.302335) (xy 55.705739 97.234281) (xy 55.739401 97.195989) - (xy 55.742329 97.193796) (xy 55.742331 97.193796) (xy 55.857546 97.107546) (xy 55.943796 96.992331) - (xy 55.994091 96.857483) (xy 56.0005 96.797873) (xy 56.000499 95.631947) (xy 67.5 95.631947) (xy 67.5 95.868052) - (xy 67.536934 96.101247) (xy 67.609897 96.325802) (xy 67.717087 96.536174) (xy 67.777338 96.619104) - (xy 67.77734 96.619105) (xy 68.517037 95.879408) (xy 68.534075 95.942993) (xy 68.599901 96.057007) - (xy 68.692993 96.150099) (xy 68.807007 96.215925) (xy 68.87059 96.232962) (xy 68.130893 96.972658) - (xy 68.213828 97.032914) (xy 68.424197 97.140102) (xy 68.648752 97.213065) (xy 68.648751 97.213065) - (xy 68.881948 97.25) (xy 69.118052 97.25) (xy 69.351247 97.213065) (xy 69.575802 97.140102) (xy 69.786163 97.032918) - (xy 69.786169 97.032914) (xy 69.869104 96.972658) (xy 69.869105 96.972658) (xy 69.129408 96.232962) - (xy 69.192993 96.215925) (xy 69.307007 96.150099) (xy 69.400099 96.057007) (xy 69.465925 95.942993) - (xy 69.482962 95.879409) (xy 70.222658 96.619105) (xy 70.222658 96.619104) (xy 70.282914 96.536169) - (xy 70.282918 96.536163) (xy 70.370786 96.363713) (xy 76.7495 96.363713) (xy 76.7495 96.576287) - (xy 76.782754 96.786243) (xy 76.843324 96.972658) (xy 76.848444 96.988414) (xy 76.944951 97.17782) - (xy 77.06989 97.349786) (xy 77.220213 97.500109) (xy 77.392182 97.62505) (xy 77.400946 97.629516) - (xy 77.451742 97.677491) (xy 77.468536 97.745312) (xy 77.445998 97.811447) (xy 77.400946 97.850484) - (xy 77.392182 97.854949) (xy 77.220213 97.97989) (xy 77.06989 98.130213) (xy 76.944951 98.302179) - (xy 76.848444 98.491585) (xy 76.848443 98.491587) (xy 76.848443 98.491588) (xy 76.83899 98.520681) - (xy 76.782753 98.69376) (xy 76.7495 98.903713) (xy 76.7495 99.116286) (xy 76.780675 99.31312) (xy 76.782754 99.326243) - (xy 76.848161 99.527545) (xy 76.848444 99.528414) (xy 76.944951 99.71782) (xy 77.06989 99.889786) - (xy 77.220213 100.040109) (xy 77.392182 100.16505) (xy 77.400946 100.169516) (xy 77.451742 100.217491) - (xy 77.468536 100.285312) (xy 77.445998 100.351447) (xy 77.400946 100.390484) (xy 77.392182 100.394949) - (xy 77.220213 100.51989) (xy 77.06989 100.670213) (xy 76.944951 100.842179) (xy 76.848444 101.031585) - (xy 76.782753 101.23376) (xy 76.756423 101.400001) (xy 76.7495 101.443713) (xy 76.7495 101.656287) - (xy 76.75544 101.693793) (xy 76.773472 101.807643) (xy 76.782754 101.866243) (xy 76.837654 102.035208) - (xy 76.848444 102.068414) (xy 76.944951 102.25782) (xy 77.06989 102.429786) (xy 77.220213 102.580109) - (xy 77.392179 102.705048) (xy 77.392181 102.705049) (xy 77.392184 102.705051) (xy 77.581588 102.801557) - (xy 77.783757 102.867246) (xy 77.993713 102.9005) (xy 77.993714 102.9005) (xy 78.206286 102.9005) - (xy 78.206287 102.9005) (xy 78.416243 102.867246) (xy 78.618412 102.801557) (xy 78.807816 102.705051) - (xy 78.893977 102.642452) (xy 78.979786 102.580109) (xy 78.979788 102.580106) (xy 78.979792 102.580104) - (xy 79.130104 102.429792) (xy 79.130106 102.429788) (xy 79.130109 102.429786) (xy 79.255048 102.25782) - (xy 79.255047 102.25782) (xy 79.255051 102.257816) (xy 79.351557 102.068412) (xy 79.417246 101.866243) - (xy 79.4505 101.656287) (xy 79.4505 101.443713) (xy 79.417246 101.233757) (xy 79.351557 101.031588) - (xy 79.255051 100.842184) (xy 79.255049 100.842181) (xy 79.255048 100.842179) (xy 79.130109 100.670213) - (xy 78.979786 100.51989) (xy 78.80782 100.394951) (xy 78.807115 100.394591) (xy 78.799054 100.390485) - (xy 78.748259 100.342512) (xy 78.731463 100.274692) (xy 78.753999 100.208556) (xy 78.799054 100.169515) - (xy 78.807816 100.165051) (xy 78.861029 100.12639) (xy 78.979786 100.040109) (xy 78.979788 100.040106) - (xy 78.979792 100.040104) (xy 79.130104 99.889792) (xy 79.130106 99.889788) (xy 79.130109 99.889786) - (xy 79.255048 99.71782) (xy 79.255047 99.71782) (xy 79.255051 99.717816) (xy 79.351557 99.528412) - (xy 79.417246 99.326243) (xy 79.4505 99.116287) (xy 79.4505 98.903713) (xy 79.417246 98.693757) - (xy 79.351557 98.491588) (xy 79.255051 98.302184) (xy 79.255049 98.302181) (xy 79.255048 98.302179) - (xy 79.130109 98.130213) (xy 78.979786 97.97989) (xy 78.80782 97.854951) (xy 78.807115 97.854591) - (xy 78.799054 97.850485) (xy 78.748259 97.802512) (xy 78.731463 97.734692) (xy 78.753999 97.668556) - (xy 78.799054 97.629515) (xy 78.807816 97.625051) (xy 78.882901 97.570499) (xy 78.979786 97.500109) - (xy 78.979788 97.500106) (xy 78.979792 97.500104) (xy 79.130104 97.349792) (xy 79.130106 97.349788) - (xy 79.130109 97.349786) (xy 79.246643 97.189389) (xy 79.255051 97.177816) (xy 79.351557 96.988412) + (xy 140.761508 47.668961) (xy 140.826605 47.6505) (xy 144.379205 47.6505) (xy 144.446244 47.670185) + (xy 144.460963 47.681271) (xy 144.461725 47.681939) (xy 144.659373 47.833599) (xy 144.875123 47.958162) + (xy 144.875138 47.958169) (xy 144.934439 47.982732) (xy 145.105293 48.053502) (xy 145.345935 48.117982) + (xy 145.592935 48.1505) (xy 145.592942 48.1505) (xy 145.842058 48.1505) (xy 145.842065 48.1505) + (xy 146.089065 48.117982) (xy 146.329707 48.053502) (xy 146.559873 47.958164) (xy 146.775627 47.833599) + (xy 146.973276 47.681938) (xy 147.149438 47.505776) (xy 147.301099 47.308127) (xy 147.425664 47.092373) + (xy 147.521002 46.862207) (xy 147.585482 46.621565) (xy 147.618 46.374565) (xy 147.618 46.125435) + (xy 147.585482 45.878435) (xy 147.521002 45.637793) (xy 147.464133 45.500499) (xy 147.425669 45.407638) + (xy 147.425662 45.407623) (xy 147.301099 45.191873) (xy 147.149439 44.994225) (xy 147.149433 44.994218) + (xy 146.973281 44.818066) (xy 146.973274 44.81806) (xy 146.775626 44.6664) (xy 146.559876 44.541837) + (xy 146.559861 44.54183) (xy 146.329707 44.446498) (xy 146.160884 44.401262) (xy 146.089065 44.382018) + (xy 146.089064 44.382017) (xy 146.089061 44.382017) (xy 145.842075 44.349501) (xy 145.84207 44.3495) + (xy 145.842065 44.3495) (xy 145.592935 44.3495) (xy 145.592929 44.3495) (xy 145.592924 44.349501) + (xy 145.345938 44.382017) (xy 145.105292 44.446498) (xy 144.875138 44.54183) (xy 144.875123 44.541837) + (xy 144.659373 44.6664) (xy 144.461725 44.81806) (xy 144.461718 44.818066) (xy 144.285566 44.994218) + (xy 144.28556 44.994225) (xy 144.1339 45.191873) (xy 144.009337 45.407623) (xy 144.00933 45.407638) + (xy 143.913998 45.637792) (xy 143.849517 45.878438) (xy 143.841191 45.941685) (xy 143.812925 46.005582) + (xy 143.7546 46.044053) (xy 143.718252 46.0495) (xy 140.826605 46.0495) (xy 140.761508 46.031038) + (xy 140.683416 45.98287) (xy 140.651201 45.962999) (xy 140.651198 45.962997) (xy 140.651197 45.962997) + (xy 140.586881 45.941685) (xy 140.490209 45.909651) (xy 140.390846 45.8995) (xy 139.544162 45.8995) + (xy 139.544144 45.899501) (xy 139.444792 45.90965) (xy 139.444789 45.909651) (xy 139.283805 45.962996) + (xy 139.283794 45.963001) (xy 139.139459 46.052029) (xy 139.139455 46.052032) (xy 139.128307 46.063181) + (xy 139.066984 46.096666) (xy 139.040626 46.0995) (xy 137.049098 46.0995) (xy 137.027855 46.093262) + (xy 137.00577 46.091684) (xy 136.994983 46.08361) (xy 136.982059 46.079815) (xy 136.967562 46.063085) + (xy 136.949835 46.049816) (xy 136.945125 46.037191) (xy 136.936304 46.027011) (xy 136.933153 46.005098) + (xy 136.925414 45.984352) (xy 136.928277 45.971187) (xy 136.92636 45.957853) (xy 136.935557 45.937712) + (xy 136.940263 45.916079) (xy 136.953534 45.898349) (xy 136.955385 45.894297) (xy 136.961398 45.887837) + (xy 136.98052 45.868716) (xy 136.980521 45.868713) (xy 137.608506 45.240728) (xy 137.608511 45.240724) + (xy 137.618714 45.23052) (xy 137.618716 45.23052) (xy 137.73052 45.118716) (xy 137.771419 45.047876) + (xy 137.784744 45.024797) (xy 137.793021 45.010459) (xy 137.809577 44.981785) (xy 137.8505 44.829057) + (xy 137.8505 44.670943) (xy 137.8505 43.124499) (xy 137.870185 43.05746) (xy 137.922989 43.011705) + (xy 137.9745 43.000499) (xy 138.047871 43.000499) (xy 138.047872 43.000499) (xy 138.107483 42.994091) + (xy 138.242331 42.943796) (xy 138.357546 42.857546) (xy 138.443796 42.742331) (xy 138.494091 42.607483) + (xy 138.5005 42.547873) (xy 138.500499 40.952128) (xy 138.494091 40.892517) (xy 138.443796 40.757669) + (xy 138.399734 40.69881) (xy 138.375317 40.633348) (xy 138.390168 40.565075) (xy 138.439573 40.515669) + (xy 138.499001 40.5005) (xy 149.3755 40.5005) (xy 149.442539 40.520185) (xy 149.488294 40.572989) + (xy 149.4995 40.6245) (xy 149.4995 41.452966) (xy 149.479815 41.520005) (xy 149.427011 41.56576) + (xy 149.357853 41.575704) (xy 149.294297 41.546679) (xy 149.287819 41.540647) (xy 149.172891 41.425719) + (xy 149.172887 41.425716) (xy 149.029795 41.337455) (xy 149.029789 41.337452) (xy 149.029787 41.337451) + (xy 148.870185 41.284564) (xy 148.870183 41.284563) (xy 148.771681 41.2745) (xy 148.771674 41.2745) + (xy 148.238326 41.2745) (xy 148.238318 41.2745) (xy 148.139816 41.284563) (xy 148.139815 41.284564) + (xy 148.060719 41.310773) (xy 147.980215 41.33745) (xy 147.980204 41.337455) (xy 147.837112 41.425716) + (xy 147.837108 41.425719) (xy 147.805181 41.457647) (xy 147.743858 41.491132) (xy 147.674166 41.486148) + (xy 147.629819 41.457647) (xy 147.597891 41.425719) (xy 147.597887 41.425716) (xy 147.454795 41.337455) + (xy 147.454789 41.337452) (xy 147.454787 41.337451) (xy 147.295185 41.284564) (xy 147.295183 41.284563) + (xy 147.196681 41.2745) (xy 147.196674 41.2745) (xy 146.663326 41.2745) (xy 146.663318 41.2745) + (xy 146.564816 41.284563) (xy 146.564815 41.284564) (xy 146.485719 41.310773) (xy 146.405215 41.33745) + (xy 146.405204 41.337455) (xy 146.262112 41.425716) (xy 146.262108 41.425719) (xy 146.150943 41.536883) + (xy 146.08962 41.570367) (xy 146.019928 41.565382) (xy 146.000143 41.555934) (xy 145.88214 41.486148) + (xy 145.866893 41.477131) (xy 145.866892 41.47713) (xy 145.866891 41.47713) (xy 145.866888 41.477129) + (xy 145.712708 41.432335) (xy 145.712702 41.432334) (xy 145.676681 41.4295) (xy 145.27833 41.4295) + (xy 145.278308 41.429501) (xy 145.242294 41.432335) (xy 145.088111 41.477129) (xy 145.088104 41.477132) + (xy 145.030619 41.511128) (xy 144.962895 41.528309) (xy 144.904381 41.511128) (xy 144.846895 41.477132) + (xy 144.846888 41.477129) (xy 144.692708 41.432335) (xy 144.692702 41.432334) (xy 144.656681 41.4295) + (xy 144.25833 41.4295) (xy 144.258308 41.429501) (xy 144.222294 41.432335) (xy 144.068111 41.477129) + (xy 144.068106 41.477131) (xy 143.929904 41.558863) (xy 143.929896 41.558869) (xy 143.816369 41.672396) + (xy 143.816363 41.672404) (xy 143.734631 41.810606) (xy 143.734629 41.810611) (xy 143.689835 41.964791) + (xy 143.689834 41.964797) (xy 143.687 42.000811) (xy 143.687 42.499169) (xy 143.687001 42.499191) + (xy 143.689835 42.535205) (xy 143.734629 42.689388) (xy 143.734631 42.689393) (xy 143.816363 42.827595) + (xy 143.816369 42.827603) (xy 143.929896 42.94113) (xy 143.9299 42.941133) (xy 143.929902 42.941135) + (xy 144.068107 43.022869) (xy 144.108768 43.034682) (xy 144.222291 43.067664) (xy 144.222294 43.067664) + (xy 144.222296 43.067665) (xy 144.258319 43.0705) (xy 144.65668 43.070499) (xy 144.692704 43.067665) + (xy 144.846893 43.022869) (xy 144.904382 42.988869) (xy 144.972102 42.971688) (xy 145.030617 42.988869) + (xy 145.088107 43.022869) (xy 145.08811 43.022869) (xy 145.088112 43.022871) (xy 145.242291 43.067664) + (xy 145.242294 43.067664) (xy 145.242296 43.067665) (xy 145.278319 43.0705) (xy 145.67668 43.070499) + (xy 145.712704 43.067665) (xy 145.866893 43.022869) (xy 146.000144 42.944064) (xy 146.067865 42.926882) + (xy 146.134128 42.949042) (xy 146.150944 42.963116) (xy 146.262108 43.07428) (xy 146.262112 43.074283) + (xy 146.405204 43.162544) (xy 146.405207 43.162545) (xy 146.405213 43.162549) (xy 146.564815 43.215436) + (xy 146.663326 43.2255) (xy 146.663331 43.2255) (xy 147.196669 43.2255) (xy 147.196674 43.2255) + (xy 147.295185 43.215436) (xy 147.454787 43.162549) (xy 147.597891 43.074281) (xy 147.629819 43.042353) + (xy 147.691142 43.008868) (xy 147.760834 43.013852) (xy 147.805181 43.042353) (xy 147.837108 43.07428) + (xy 147.837112 43.074283) (xy 147.980204 43.162544) (xy 147.980207 43.162545) (xy 147.980213 43.162549) + (xy 148.139815 43.215436) (xy 148.238326 43.2255) (xy 148.238331 43.2255) (xy 148.771669 43.2255) + (xy 148.771674 43.2255) (xy 148.870185 43.215436) (xy 149.029787 43.162549) (xy 149.172891 43.074281) + (xy 149.287819 42.959353) (xy 149.349142 42.925868) (xy 149.418834 42.930852) (xy 149.474767 42.972724) + (xy 149.499184 43.038188) (xy 149.4995 43.047034) (xy 149.4995 54.750796) (xy 149.479815 54.817835) + (xy 149.427011 54.86359) (xy 149.357853 54.873534) (xy 149.310404 54.856335) (xy 149.279793 54.837455) + (xy 149.279787 54.837451) (xy 149.120185 54.784564) (xy 149.120183 54.784563) (xy 149.021681 54.7745) + (xy 149.021674 54.7745) (xy 148.488326 54.7745) (xy 148.488318 54.7745) (xy 148.389816 54.784563) + (xy 148.389815 54.784564) (xy 148.324516 54.806202) (xy 148.230215 54.83745) (xy 148.230204 54.837455) + (xy 148.087112 54.925716) (xy 148.087108 54.925719) (xy 148.055181 54.957647) (xy 147.993858 54.991132) + (xy 147.924166 54.986148) (xy 147.879819 54.957647) (xy 147.847891 54.925719) (xy 147.847887 54.925716) + (xy 147.704795 54.837455) (xy 147.704789 54.837452) (xy 147.704787 54.837451) (xy 147.545185 54.784564) + (xy 147.545183 54.784563) (xy 147.446681 54.7745) (xy 147.446674 54.7745) (xy 146.913326 54.7745) + (xy 146.913318 54.7745) (xy 146.814816 54.784563) (xy 146.814815 54.784564) (xy 146.749516 54.806202) + (xy 146.655215 54.83745) (xy 146.655204 54.837455) (xy 146.512112 54.925716) (xy 146.512107 54.92572) + (xy 146.493683 54.944144) (xy 146.43236 54.977628) (xy 146.371409 54.975537) (xy 146.222708 54.932335) + (xy 146.222702 54.932334) (xy 146.186681 54.9295) (xy 145.78833 54.9295) (xy 145.788308 54.929501) + (xy 145.752294 54.932335) (xy 145.598111 54.977129) (xy 145.598104 54.977132) (xy 145.540619 55.011128) + (xy 145.472895 55.028309) (xy 145.414381 55.011128) (xy 145.356895 54.977132) (xy 145.356888 54.977129) + (xy 145.202708 54.932335) (xy 145.202702 54.932334) (xy 145.166681 54.9295) (xy 144.76833 54.9295) + (xy 144.768308 54.929501) (xy 144.732294 54.932335) (xy 144.578111 54.977129) (xy 144.578106 54.977131) + (xy 144.439904 55.058863) (xy 144.439896 55.058869) (xy 144.326369 55.172396) (xy 144.326363 55.172404) + (xy 144.244631 55.310606) (xy 144.244629 55.310611) (xy 144.199835 55.464791) (xy 144.199834 55.464797) + (xy 144.197 55.500811) (xy 144.197 55.999169) (xy 144.197001 55.999191) (xy 144.199835 56.035205) + (xy 144.244629 56.189388) (xy 144.244631 56.189393) (xy 144.326363 56.327595) (xy 144.326369 56.327603) + (xy 144.439896 56.44113) (xy 144.4399 56.441133) (xy 144.439902 56.441135) (xy 144.578107 56.522869) + (xy 144.618768 56.534682) (xy 144.732291 56.567664) (xy 144.732294 56.567664) (xy 144.732296 56.567665) + (xy 144.768319 56.5705) (xy 145.16668 56.570499) (xy 145.202704 56.567665) (xy 145.356893 56.522869) + (xy 145.414382 56.488869) (xy 145.482102 56.471688) (xy 145.540617 56.488869) (xy 145.598107 56.522869) + (xy 145.59811 56.522869) (xy 145.598112 56.522871) (xy 145.752291 56.567664) (xy 145.752294 56.567664) + (xy 145.752296 56.567665) (xy 145.788319 56.5705) (xy 146.18668 56.570499) (xy 146.222704 56.567665) + (xy 146.371409 56.524462) (xy 146.441278 56.524661) (xy 146.493685 56.555857) (xy 146.512108 56.57428) + (xy 146.512112 56.574283) (xy 146.655204 56.662544) (xy 146.655207 56.662545) (xy 146.655213 56.662549) + (xy 146.814815 56.715436) (xy 146.913326 56.7255) (xy 146.913331 56.7255) (xy 147.446669 56.7255) + (xy 147.446674 56.7255) (xy 147.545185 56.715436) (xy 147.704787 56.662549) (xy 147.847891 56.574281) + (xy 147.879819 56.542353) (xy 147.941142 56.508868) (xy 148.010834 56.513852) (xy 148.055181 56.542353) + (xy 148.087108 56.57428) (xy 148.087112 56.574283) (xy 148.230204 56.662544) (xy 148.230207 56.662545) + (xy 148.230213 56.662549) (xy 148.389815 56.715436) (xy 148.488326 56.7255) (xy 148.488331 56.7255) + (xy 149.021669 56.7255) (xy 149.021674 56.7255) (xy 149.120185 56.715436) (xy 149.279787 56.662549) + (xy 149.310403 56.643664) (xy 149.377795 56.625224) (xy 149.444458 56.646146) (xy 149.489228 56.699788) + (xy 149.4995 56.749203) (xy 149.4995 109.3755) (xy 149.479815 109.442539) (xy 149.427011 109.488294) + (xy 149.3755 109.4995) (xy 147.378968 109.4995) (xy 147.311929 109.479815) (xy 147.266174 109.427011) + (xy 147.25623 109.357853) (xy 147.280592 109.300014) (xy 147.312875 109.257941) (xy 147.351099 109.208127) + (xy 147.475664 108.992373) (xy 147.571002 108.762207) (xy 147.635482 108.521565) (xy 147.668 108.274565) + (xy 147.668 108.025435) (xy 147.635482 107.778435) (xy 147.571002 107.537793) (xy 147.475664 107.307627) + (xy 147.351099 107.091873) (xy 147.199438 106.894224) (xy 147.199433 106.894218) (xy 147.023281 106.718066) + (xy 147.023274 106.71806) (xy 146.825626 106.5664) (xy 146.609876 106.441837) (xy 146.609861 106.44183) + (xy 146.379707 106.346498) (xy 146.264708 106.315684) (xy 146.139065 106.282018) (xy 146.139064 106.282017) + (xy 146.139061 106.282017) (xy 145.892075 106.249501) (xy 145.89207 106.2495) (xy 145.892065 106.2495) + (xy 145.642935 106.2495) (xy 145.642929 106.2495) (xy 145.642924 106.249501) (xy 145.395938 106.282017) + (xy 145.155292 106.346498) (xy 144.925138 106.44183) (xy 144.925123 106.441837) (xy 144.709373 106.5664) + (xy 144.511725 106.71806) (xy 144.511718 106.718066) (xy 144.335566 106.894218) (xy 144.33556 106.894225) + (xy 144.1839 107.091873) (xy 144.059337 107.307623) (xy 144.05933 107.307638) (xy 143.963998 107.537792) + (xy 143.899517 107.778438) (xy 143.867001 108.025424) (xy 143.867 108.025441) (xy 143.867 108.274558) + (xy 143.867001 108.274575) (xy 143.899517 108.521561) (xy 143.963998 108.762207) (xy 144.05933 108.992361) + (xy 144.059337 108.992376) (xy 144.1839 109.208126) (xy 144.254408 109.300014) (xy 144.279602 109.365183) + (xy 144.265564 109.433628) (xy 144.21675 109.483617) (xy 144.156032 109.4995) (xy 140.708492 109.4995) + (xy 140.693612 109.49513) (xy 140.678117 109.495722) (xy 140.660773 109.485488) (xy 140.641453 109.479815) + (xy 140.631298 109.468096) (xy 140.617942 109.460215) (xy 140.608884 109.442228) (xy 140.595698 109.427011) + (xy 140.593491 109.411662) (xy 140.586516 109.397812) (xy 140.58862 109.377786) (xy 140.585754 109.357853) + (xy 140.592196 109.343745) (xy 140.593817 109.328324) (xy 140.606413 109.312615) (xy 140.614779 109.294297) + (xy 140.628441 109.285144) (xy 140.637526 109.273815) (xy 140.664868 109.260741) (xy 140.669048 109.257941) + (xy 140.671461 109.257131) (xy 140.789393 109.222869) (xy 140.81013 109.210605) (xy 140.822541 109.206441) + (xy 140.841015 109.205736) (xy 140.861985 109.2) (xy 141.12879 109.2) (xy 141.127145 109.179089) + (xy 141.084268 109.031503) (xy 141.084468 108.961634) (xy 141.096612 108.93379) (xy 141.122869 108.889393) + (xy 141.167665 108.735204) (xy 141.1705 108.699181) (xy 141.170499 108.20082) (xy 141.167665 108.164796) + (xy 141.122869 108.010607) (xy 141.06906 107.919621) (xy 141.051878 107.851899) (xy 141.074038 107.785637) + (xy 141.076513 107.782209) (xy 141.143796 107.692331) (xy 141.194091 107.557483) (xy 141.2005 107.497873) + (xy 141.200499 105.902128) (xy 141.194091 105.842517) (xy 141.143796 105.707669) (xy 141.143795 105.707668) + (xy 141.143793 105.707664) (xy 141.057547 105.592455) (xy 141.057544 105.592452) (xy 140.942335 105.506206) + (xy 140.942328 105.506202) (xy 140.807482 105.455908) (xy 140.807483 105.455908) (xy 140.747883 105.449501) + (xy 140.747881 105.4495) (xy 140.747873 105.4495) (xy 140.747864 105.4495) (xy 139.152129 105.4495) + (xy 139.152123 105.449501) (xy 139.092516 105.455908) (xy 138.957671 105.506202) (xy 138.957664 105.506206) + (xy 138.842455 105.592452) (xy 138.842452 105.592455) (xy 138.756206 105.707664) (xy 138.756202 105.707671) + (xy 138.705908 105.842517) (xy 138.699501 105.902116) (xy 138.699501 105.902123) (xy 138.6995 105.902135) + (xy 138.6995 107.49787) (xy 138.699501 107.497876) (xy 138.705908 107.557483) (xy 138.756202 107.692328) + (xy 138.756206 107.692335) (xy 138.76148 107.69938) (xy 138.785897 107.764844) (xy 138.771045 107.833117) + (xy 138.7499 107.861366) (xy 138.738867 107.872399) (xy 138.738861 107.872407) (xy 138.657131 108.010606) + (xy 138.657129 108.010611) (xy 138.612335 108.164791) (xy 138.612334 108.164797) (xy 138.6095 108.200811) + (xy 138.6095 108.699169) (xy 138.609501 108.699191) (xy 138.612335 108.735205) (xy 138.657129 108.889388) + (xy 138.657134 108.889401) (xy 138.659678 108.893702) (xy 138.676856 108.961427) (xy 138.659679 109.019929) + (xy 138.657505 109.023604) (xy 138.657505 109.023605) (xy 138.612357 109.179002) (xy 138.612356 109.179008) + (xy 138.6095 109.215302) (xy 138.6095 109.3755) (xy 138.589815 109.442539) (xy 138.537011 109.488294) + (xy 138.4855 109.4995) (xy 50.6245 109.4995) (xy 50.557461 109.479815) (xy 50.511706 109.427011) + (xy 50.5005 109.3755) (xy 50.5005 105.515302) (xy 110.4695 105.515302) (xy 110.4695 105.984697) + (xy 110.472356 106.020991) (xy 110.472357 106.020997) (xy 110.517504 106.17639) (xy 110.517505 106.176393) + (xy 110.599881 106.315684) (xy 110.599887 106.315692) (xy 110.714307 106.430112) (xy 110.714311 106.430115) + (xy 110.714313 106.430117) (xy 110.853605 106.512494) (xy 110.894587 106.5244) (xy 111.009002 106.557642) + (xy 111.009005 106.557642) (xy 111.009007 106.557643) (xy 111.04531 106.5605) (xy 111.045318 106.5605) + (xy 111.454682 106.5605) (xy 111.45469 106.5605) (xy 111.490993 106.557643) (xy 111.490995 106.557642) + (xy 111.490997 106.557642) (xy 111.531975 106.545736) (xy 111.646395 106.512494) (xy 111.667369 106.500089) + (xy 111.735088 106.482906) (xy 111.793613 106.50009) (xy 111.813803 106.512031) (xy 111.96 106.554504) + (xy 111.96 106.554503) (xy 112.46 106.554503) (xy 112.606195 106.512031) (xy 112.745374 106.429721) + (xy 112.745383 106.429714) (xy 112.859714 106.315383) (xy 112.859721 106.315374) (xy 112.942031 106.176195) + (xy 112.942033 106.17619) (xy 112.987144 106.020918) (xy 112.987145 106.020912) (xy 112.98879 106) + (xy 112.46 106) (xy 112.46 106.554503) (xy 111.96 106.554503) (xy 111.96 106.248352) (xy 111.977267 106.185233) + (xy 111.982494 106.176395) (xy 112.027643 106.020993) (xy 112.0305 105.98469) (xy 112.0305 105.51531) + (xy 112.027643 105.479007) (xy 112.020932 105.455909) (xy 111.982495 105.323608) (xy 111.982492 105.3236) + (xy 111.977266 105.314763) (xy 111.96 105.251645) (xy 111.96 104.945494) (xy 112.46 104.945494) + (xy 112.46 105.5) (xy 112.98879 105.5) (xy 112.987145 105.479089) (xy 112.942031 105.323804) (xy 112.859721 105.184625) + (xy 112.859714 105.184616) (xy 112.745383 105.070285) (xy 112.745374 105.070278) (xy 112.606193 104.987967) + (xy 112.60619 104.987965) (xy 112.460001 104.945493) (xy 112.46 104.945494) (xy 111.96 104.945494) + (xy 111.959998 104.945493) (xy 111.813809 104.987965) (xy 111.813806 104.987967) (xy 111.793608 104.999912) + (xy 111.725884 105.017092) (xy 111.66737 104.99991) (xy 111.646397 104.987507) (xy 111.64639 104.987504) + (xy 111.490997 104.942357) (xy 111.490991 104.942356) (xy 111.454697 104.9395) (xy 111.45469 104.9395) + (xy 111.04531 104.9395) (xy 111.045302 104.9395) (xy 111.009008 104.942356) (xy 111.009002 104.942357) + (xy 110.853609 104.987504) (xy 110.853606 104.987505) (xy 110.714315 105.069881) (xy 110.714307 105.069887) + (xy 110.599887 105.184307) (xy 110.599881 105.184315) (xy 110.517505 105.323606) (xy 110.517504 105.323609) + (xy 110.472357 105.479002) (xy 110.472356 105.479008) (xy 110.4695 105.515302) (xy 50.5005 105.515302) + (xy 50.5005 102.802135) (xy 59.8995 102.802135) (xy 59.8995 104.89787) (xy 59.899501 104.897876) + (xy 59.905908 104.957483) (xy 59.956202 105.092328) (xy 59.956206 105.092335) (xy 60.042452 105.207544) + (xy 60.042455 105.207547) (xy 60.157664 105.293793) (xy 60.157671 105.293797) (xy 60.292517 105.344091) + (xy 60.292516 105.344091) (xy 60.299444 105.344835) (xy 60.352127 105.3505) (xy 63.647872 105.350499) + (xy 63.707483 105.344091) (xy 63.842331 105.293796) (xy 63.957546 105.207546) (xy 64.043796 105.092331) + (xy 64.094091 104.957483) (xy 64.1005 104.897873) (xy 64.100499 102.802128) (xy 64.094091 102.742517) + (xy 64.060378 102.652129) (xy 64.043797 102.607671) (xy 64.043793 102.607664) (xy 63.957547 102.492455) + (xy 63.957544 102.492452) (xy 63.842335 102.406206) (xy 63.842328 102.406202) (xy 63.707482 102.355908) + (xy 63.707483 102.355908) (xy 63.647883 102.349501) (xy 63.647881 102.3495) (xy 63.647873 102.3495) + (xy 63.647864 102.3495) (xy 60.352129 102.3495) (xy 60.352123 102.349501) (xy 60.292516 102.355908) + (xy 60.157671 102.406202) (xy 60.157664 102.406206) (xy 60.042455 102.492452) (xy 60.042452 102.492455) + (xy 59.956206 102.607664) (xy 59.956202 102.607671) (xy 59.905908 102.742517) (xy 59.899561 102.801555) + (xy 59.899501 102.802123) (xy 59.8995 102.802135) (xy 50.5005 102.802135) (xy 50.5005 94.702135) + (xy 52.9995 94.702135) (xy 52.9995 96.79787) (xy 52.999501 96.797876) (xy 53.005908 96.857483) (xy 53.056202 96.992328) + (xy 53.056206 96.992335) (xy 53.142452 97.107544) (xy 53.142453 97.107544) (xy 53.142454 97.107546) + (xy 53.145516 97.109838) (xy 53.260599 97.19599) (xy 53.302469 97.251924) (xy 53.307453 97.321615) + (xy 53.286605 97.368141) (xy 53.217087 97.463824) (xy 53.109897 97.674197) (xy 53.036934 97.898752) + (xy 53 98.131947) (xy 53 98.368052) (xy 53.036934 98.601247) (xy 53.109897 98.825802) (xy 53.217087 99.036174) + (xy 53.277338 99.119104) (xy 53.27734 99.119105) (xy 54.017037 98.379408) (xy 54.034075 98.442993) + (xy 54.099901 98.557007) (xy 54.192993 98.650099) (xy 54.307007 98.715925) (xy 54.37059 98.732962) + (xy 53.62428 99.479271) (xy 53.615105 99.522947) (xy 53.578739 99.564615) (xy 53.52249 99.605482) + (xy 53.355485 99.772487) (xy 53.355485 99.772488) (xy 53.355483 99.77249) (xy 53.302443 99.845493) + (xy 53.216657 99.963566) (xy 53.109433 100.174003) (xy 53.036446 100.398631) (xy 52.9995 100.631902) + (xy 52.9995 100.868097) (xy 53.036446 101.101368) (xy 53.109433 101.325996) (xy 53.197254 101.498352) + (xy 53.216657 101.536433) (xy 53.355483 101.72751) (xy 53.52249 101.894517) (xy 53.713567 102.033343) + (xy 53.782394 102.068412) (xy 53.924003 102.140566) (xy 53.924005 102.140566) (xy 53.924008 102.140568) + (xy 54.044412 102.179689) (xy 54.148631 102.213553) (xy 54.381903 102.2505) (xy 54.381908 102.2505) + (xy 54.618097 102.2505) (xy 54.851368 102.213553) (xy 55.075992 102.140568) (xy 55.286433 102.033343) + (xy 55.47751 101.894517) (xy 55.644517 101.72751) (xy 55.783343 101.536433) (xy 55.890568 101.325992) + (xy 55.963553 101.101368) (xy 56.0005 100.868097) (xy 56.0005 100.631902) (xy 67.4995 100.631902) + (xy 67.4995 100.868097) (xy 67.536446 101.101368) (xy 67.609433 101.325996) (xy 67.697254 101.498352) + (xy 67.716657 101.536433) (xy 67.855483 101.72751) (xy 68.02249 101.894517) (xy 68.213567 102.033343) + (xy 68.282394 102.068412) (xy 68.424003 102.140566) (xy 68.424005 102.140566) (xy 68.424008 102.140568) + (xy 68.544412 102.179689) (xy 68.648631 102.213553) (xy 68.881903 102.2505) (xy 68.881908 102.2505) + (xy 69.118097 102.2505) (xy 69.351368 102.213553) (xy 69.575992 102.140568) (xy 69.786433 102.033343) + (xy 69.97751 101.894517) (xy 70.144517 101.72751) (xy 70.283343 101.536433) (xy 70.390568 101.325992) + (xy 70.463553 101.101368) (xy 70.5005 100.868097) (xy 70.5005 100.631902) (xy 70.463553 100.398631) + (xy 70.422474 100.272203) (xy 70.390568 100.174008) (xy 70.390566 100.174005) (xy 70.390566 100.174003) + (xy 70.322343 100.040109) (xy 70.283343 99.963567) (xy 70.144517 99.77249) (xy 69.97751 99.605483) + (xy 69.786433 99.466657) (xy 69.575996 99.359433) (xy 69.351368 99.286446) (xy 69.118097 99.2495) + (xy 69.118092 99.2495) (xy 68.881908 99.2495) (xy 68.881903 99.2495) (xy 68.648631 99.286446) (xy 68.424003 99.359433) + (xy 68.213566 99.466657) (xy 68.129755 99.52755) (xy 68.02249 99.605483) (xy 68.022488 99.605485) + (xy 68.022487 99.605485) (xy 67.855485 99.772487) (xy 67.855485 99.772488) (xy 67.855483 99.77249) + (xy 67.802443 99.845493) (xy 67.716657 99.963566) (xy 67.609433 100.174003) (xy 67.536446 100.398631) + (xy 67.4995 100.631902) (xy 56.0005 100.631902) (xy 55.963553 100.398631) (xy 55.922474 100.272203) + (xy 55.890568 100.174008) (xy 55.890566 100.174005) (xy 55.890566 100.174003) (xy 55.822343 100.040109) + (xy 55.783343 99.963567) (xy 55.644517 99.77249) (xy 55.47751 99.605483) (xy 55.421259 99.564614) + (xy 55.378595 99.509284) (xy 55.373902 99.477455) (xy 54.629408 98.732962) (xy 54.692993 98.715925) + (xy 54.807007 98.650099) (xy 54.900099 98.557007) (xy 54.965925 98.442993) (xy 54.982962 98.379409) + (xy 55.722658 99.119105) (xy 55.722658 99.119104) (xy 55.782914 99.036169) (xy 55.782918 99.036163) + (xy 55.890102 98.825802) (xy 55.963065 98.601247) (xy 56 98.368052) (xy 56 98.131947) (xy 55.963065 97.898752) + (xy 55.890102 97.674197) (xy 55.782914 97.463828) (xy 55.713394 97.368142) (xy 55.689914 97.302335) + (xy 55.705739 97.234281) (xy 55.739401 97.195989) (xy 55.742329 97.193796) (xy 55.742331 97.193796) + (xy 55.857546 97.107546) (xy 55.943796 96.992331) (xy 55.994091 96.857483) (xy 56.0005 96.797873) + (xy 56.000499 95.631947) (xy 67.5 95.631947) (xy 67.5 95.868052) (xy 67.536934 96.101247) (xy 67.609897 96.325802) + (xy 67.717087 96.536174) (xy 67.777338 96.619104) (xy 67.77734 96.619105) (xy 68.517037 95.879408) + (xy 68.534075 95.942993) (xy 68.599901 96.057007) (xy 68.692993 96.150099) (xy 68.807007 96.215925) + (xy 68.87059 96.232962) (xy 68.130893 96.972658) (xy 68.213828 97.032914) (xy 68.424197 97.140102) + (xy 68.648752 97.213065) (xy 68.648751 97.213065) (xy 68.881948 97.25) (xy 69.118052 97.25) (xy 69.351247 97.213065) + (xy 69.575802 97.140102) (xy 69.786163 97.032918) (xy 69.786169 97.032914) (xy 69.869104 96.972658) + (xy 69.869105 96.972658) (xy 69.129408 96.232962) (xy 69.192993 96.215925) (xy 69.307007 96.150099) + (xy 69.400099 96.057007) (xy 69.465925 95.942993) (xy 69.482962 95.879409) (xy 70.222658 96.619105) + (xy 70.222658 96.619104) (xy 70.282914 96.536169) (xy 70.282918 96.536163) (xy 70.370786 96.363713) + (xy 76.7495 96.363713) (xy 76.7495 96.576287) (xy 76.782754 96.786243) (xy 76.843324 96.972658) + (xy 76.848444 96.988414) (xy 76.944951 97.17782) (xy 77.06989 97.349786) (xy 77.220213 97.500109) + (xy 77.392182 97.62505) (xy 77.400946 97.629516) (xy 77.451742 97.677491) (xy 77.468536 97.745312) + (xy 77.445998 97.811447) (xy 77.400946 97.850484) (xy 77.392182 97.854949) (xy 77.220213 97.97989) + (xy 77.06989 98.130213) (xy 76.944951 98.302179) (xy 76.848444 98.491585) (xy 76.848443 98.491587) + (xy 76.848443 98.491588) (xy 76.83899 98.520681) (xy 76.782753 98.69376) (xy 76.7495 98.903713) + (xy 76.7495 99.116286) (xy 76.778467 99.29918) (xy 76.782754 99.326243) (xy 76.847437 99.525317) + (xy 76.848444 99.528414) (xy 76.944951 99.71782) (xy 77.06989 99.889786) (xy 77.220213 100.040109) + (xy 77.392182 100.16505) (xy 77.400946 100.169516) (xy 77.451742 100.217491) (xy 77.468536 100.285312) + (xy 77.445998 100.351447) (xy 77.400946 100.390484) (xy 77.392182 100.394949) (xy 77.220213 100.51989) + (xy 77.06989 100.670213) (xy 76.944951 100.842179) (xy 76.848444 101.031585) (xy 76.782753 101.23376) + (xy 76.756423 101.400001) (xy 76.7495 101.443713) (xy 76.7495 101.656287) (xy 76.755492 101.694119) + (xy 76.779176 101.843657) (xy 76.782754 101.866243) (xy 76.845649 102.059814) (xy 76.848444 102.068414) + (xy 76.944951 102.25782) (xy 77.06989 102.429786) (xy 77.220213 102.580109) (xy 77.392179 102.705048) + (xy 77.392181 102.705049) (xy 77.392184 102.705051) (xy 77.581588 102.801557) (xy 77.783757 102.867246) + (xy 77.993713 102.9005) (xy 77.993714 102.9005) (xy 78.206286 102.9005) (xy 78.206287 102.9005) + (xy 78.416243 102.867246) (xy 78.618412 102.801557) (xy 78.807816 102.705051) (xy 78.880649 102.652135) + (xy 78.979786 102.580109) (xy 78.979788 102.580106) (xy 78.979792 102.580104) (xy 79.130104 102.429792) + (xy 79.130106 102.429788) (xy 79.130109 102.429786) (xy 79.255048 102.25782) (xy 79.255047 102.25782) + (xy 79.255051 102.257816) (xy 79.351557 102.068412) (xy 79.417246 101.866243) (xy 79.4505 101.656287) + (xy 79.4505 101.443713) (xy 79.417246 101.233757) (xy 79.351557 101.031588) (xy 79.255051 100.842184) + (xy 79.255049 100.842181) (xy 79.255048 100.842179) (xy 79.130109 100.670213) (xy 78.979786 100.51989) + (xy 78.80782 100.394951) (xy 78.807115 100.394591) (xy 78.799054 100.390485) (xy 78.748259 100.342512) + (xy 78.731463 100.274692) (xy 78.753999 100.208556) (xy 78.799054 100.169515) (xy 78.807816 100.165051) + (xy 78.861029 100.12639) (xy 78.979786 100.040109) (xy 78.979788 100.040106) (xy 78.979792 100.040104) + (xy 79.130104 99.889792) (xy 79.130106 99.889788) (xy 79.130109 99.889786) (xy 79.255048 99.71782) + (xy 79.255047 99.71782) (xy 79.255051 99.717816) (xy 79.351557 99.528412) (xy 79.417246 99.326243) + (xy 79.4505 99.116287) (xy 79.4505 98.903713) (xy 79.417246 98.693757) (xy 79.351557 98.491588) + (xy 79.255051 98.302184) (xy 79.255049 98.302181) (xy 79.255048 98.302179) (xy 79.130109 98.130213) + (xy 78.979786 97.97989) (xy 78.80782 97.854951) (xy 78.807115 97.854591) (xy 78.799054 97.850485) + (xy 78.748259 97.802512) (xy 78.731463 97.734692) (xy 78.753999 97.668556) (xy 78.799054 97.629515) + (xy 78.807816 97.625051) (xy 78.871191 97.579007) (xy 78.979786 97.500109) (xy 78.979788 97.500106) + (xy 78.979792 97.500104) (xy 79.130104 97.349792) (xy 79.130106 97.349788) (xy 79.130109 97.349786) + (xy 79.255048 97.17782) (xy 79.255047 97.17782) (xy 79.255051 97.177816) (xy 79.351557 96.988412) (xy 79.409263 96.810811) (xy 81.0595 96.810811) (xy 81.0595 97.309169) (xy 81.059501 97.309191) (xy 81.062335 97.345205) (xy 81.107129 97.499388) (xy 81.107131 97.499393) (xy 81.188863 97.637595) (xy 81.188869 97.637603) (xy 81.302396 97.75113) (xy 81.3024 97.751133) (xy 81.302402 97.751135) @@ -26465,7 +29644,7 @@ (xy 81.062334 98.764797) (xy 81.0595 98.800811) (xy 81.0595 99.299169) (xy 81.059501 99.299191) (xy 81.062335 99.335205) (xy 81.107129 99.489388) (xy 81.107131 99.489393) (xy 81.188863 99.627595) (xy 81.188869 99.627603) (xy 81.302396 99.74113) (xy 81.3024 99.741133) (xy 81.302402 99.741135) - (xy 81.440607 99.822869) (xy 81.440614 99.822871) (xy 81.594791 99.867664) (xy 81.594794 99.867664) + (xy 81.440607 99.822869) (xy 81.481268 99.834682) (xy 81.594791 99.867664) (xy 81.594794 99.867664) (xy 81.594796 99.867665) (xy 81.630819 99.8705) (xy 82.02918 99.870499) (xy 82.065204 99.867665) (xy 82.219393 99.822869) (xy 82.276882 99.788869) (xy 82.344602 99.771688) (xy 82.403117 99.788869) (xy 82.460607 99.822869) (xy 82.46061 99.822869) (xy 82.460612 99.822871) (xy 82.614791 99.867664) @@ -26482,296 +29661,61 @@ (xy 110.393605 101.762494) (xy 110.434587 101.7744) (xy 110.549002 101.807642) (xy 110.549005 101.807642) (xy 110.549007 101.807643) (xy 110.58531 101.8105) (xy 110.585318 101.8105) (xy 110.994682 101.8105) (xy 110.99469 101.8105) (xy 111.030993 101.807643) (xy 111.030995 101.807642) (xy 111.030997 101.807642) - (xy 111.071975 101.795736) (xy 111.186395 101.762494) (xy 111.207369 101.750089) (xy 111.275088 101.732906) + (xy 111.078668 101.793792) (xy 111.186395 101.762494) (xy 111.207369 101.750089) (xy 111.275088 101.732906) (xy 111.333613 101.75009) (xy 111.353803 101.762031) (xy 111.5 101.804504) (xy 111.5 101.804503) (xy 112 101.804503) (xy 112.146195 101.762031) (xy 112.285374 101.679721) (xy 112.285383 101.679714) (xy 112.399714 101.565383) (xy 112.399721 101.565374) (xy 112.482031 101.426195) (xy 112.482033 101.42619) (xy 112.527144 101.270918) (xy 112.527145 101.270912) (xy 112.52879 101.25) (xy 112 101.25) (xy 112 101.804503) (xy 111.5 101.804503) (xy 111.5 101.498352) (xy 111.517267 101.435233) (xy 111.522494 101.426395) - (xy 111.530726 101.398063) (xy 111.567642 101.270997) (xy 111.567643 101.270991) (xy 111.567707 101.270184) + (xy 111.522904 101.424986) (xy 111.567642 101.270997) (xy 111.567643 101.270991) (xy 111.567827 101.268652) (xy 111.5705 101.23469) (xy 111.5705 100.76531) (xy 111.567643 100.729007) (xy 111.556125 100.689363) (xy 111.522495 100.573608) (xy 111.522492 100.5736) (xy 111.517266 100.564763) (xy 111.5 100.501645) (xy 111.5 100.195494) (xy 112 100.195494) (xy 112 100.75) (xy 112.52879 100.75) (xy 112.527145 100.729089) - (xy 112.482031 100.573804) (xy 112.399721 100.434625) (xy 112.399714 100.434616) (xy 112.285383 100.320285) - (xy 112.285374 100.320278) (xy 112.146193 100.237967) (xy 112.14619 100.237965) (xy 112.000001 100.195493) - (xy 112 100.195494) (xy 111.5 100.195494) (xy 111.499998 100.195493) (xy 111.353809 100.237965) - (xy 111.353806 100.237967) (xy 111.333608 100.249912) (xy 111.265884 100.267092) (xy 111.20737 100.24991) - (xy 111.186397 100.237507) (xy 111.18639 100.237504) (xy 111.030997 100.192357) (xy 111.030991 100.192356) - (xy 110.994697 100.1895) (xy 110.99469 100.1895) (xy 110.58531 100.1895) (xy 110.585302 100.1895) - (xy 110.549008 100.192356) (xy 110.549002 100.192357) (xy 110.393609 100.237504) (xy 110.393606 100.237505) - (xy 110.254315 100.319881) (xy 110.254307 100.319887) (xy 110.139887 100.434307) (xy 110.139881 100.434315) - (xy 110.057505 100.573606) (xy 110.057504 100.573609) (xy 110.012357 100.729002) (xy 110.012356 100.729008) - (xy 110.0095 100.765302) (xy 85.78467 100.765302) (xy 85.842331 100.743796) (xy 85.957546 100.657546) - (xy 86.043796 100.542331) (xy 86.094091 100.407483) (xy 86.1005 100.347873) (xy 86.100499 99.702135) - (xy 124.4845 99.702135) (xy 124.4845 101.29787) (xy 124.484501 101.297876) (xy 124.490908 101.357483) - (xy 124.541202 101.492328) (xy 124.541206 101.492335) (xy 124.627452 101.607544) (xy 124.627455 101.607547) - (xy 124.742664 101.693793) (xy 124.742671 101.693797) (xy 124.877517 101.744091) (xy 124.877516 101.744091) - (xy 124.884444 101.744835) (xy 124.937127 101.7505) (xy 126.532872 101.750499) (xy 126.592483 101.744091) - (xy 126.727331 101.693796) (xy 126.842546 101.607546) (xy 126.928796 101.492331) (xy 126.979091 101.357483) - (xy 126.9855 101.297873) (xy 126.985499 99.702128) (xy 126.979091 99.642517) (xy 126.973528 99.627603) - (xy 126.928797 99.507671) (xy 126.928793 99.507664) (xy 126.842547 99.392455) (xy 126.842544 99.392452) - (xy 126.727335 99.306206) (xy 126.727328 99.306202) (xy 126.592482 99.255908) (xy 126.592483 99.255908) - (xy 126.532883 99.249501) (xy 126.532881 99.2495) (xy 126.532873 99.2495) (xy 126.532864 99.2495) - (xy 124.937129 99.2495) (xy 124.937123 99.249501) (xy 124.877516 99.255908) (xy 124.742671 99.306202) - (xy 124.742664 99.306206) (xy 124.627455 99.392452) (xy 124.627452 99.392455) (xy 124.541206 99.507664) - (xy 124.541202 99.507671) (xy 124.490908 99.642517) (xy 124.485005 99.69743) (xy 124.484501 99.702123) - (xy 124.4845 99.702135) (xy 86.100499 99.702135) (xy 86.100499 99.528414) (xy 86.100499 98.752129) - (xy 86.100498 98.752123) (xy 86.099126 98.739363) (xy 86.094091 98.692517) (xy 86.066291 98.617982) - (xy 86.043797 98.557671) (xy 86.043793 98.557664) (xy 85.979967 98.472405) (xy 85.957546 98.442454) - (xy 85.899854 98.399265) (xy 85.857984 98.343333) (xy 85.853 98.273641) (xy 85.886485 98.212318) - (xy 85.899854 98.200734) (xy 85.957546 98.157546) (xy 86.043796 98.042331) (xy 86.094091 97.907483) - (xy 86.1005 97.847873) (xy 86.100499 97.160638) (xy 129.1345 97.160638) (xy 129.1345 97.439363) - (xy 129.149953 97.556753) (xy 129.149957 97.556765) (xy 129.158566 97.57755) (xy 129.166033 97.647019) - (xy 129.158566 97.67245) (xy 129.149957 97.693234) (xy 129.149955 97.693239) (xy 129.1345 97.810638) - (xy 129.1345 98.089363) (xy 129.149953 98.206753) (xy 129.149957 98.206765) (xy 129.158566 98.22755) - (xy 129.166033 98.297019) (xy 129.158566 98.32245) (xy 129.149957 98.343234) (xy 129.149955 98.343239) - (xy 129.1345 98.460638) (xy 129.1345 98.739363) (xy 129.149953 98.856753) (xy 129.149957 98.856765) - (xy 129.158566 98.87755) (xy 129.166033 98.947019) (xy 129.158566 98.97245) (xy 129.149957 98.993234) - (xy 129.149955 98.993239) (xy 129.1345 99.110638) (xy 129.1345 99.389363) (xy 129.149953 99.506753) - (xy 129.149957 99.506765) (xy 129.158566 99.52755) (xy 129.166033 99.597019) (xy 129.158566 99.62245) - (xy 129.149957 99.643234) (xy 129.149955 99.643239) (xy 129.1345 99.760638) (xy 129.1345 100.039363) - (xy 129.149953 100.156753) (xy 129.149957 100.156765) (xy 129.158566 100.17755) (xy 129.166033 100.247019) - (xy 129.158566 100.27245) (xy 129.149957 100.293234) (xy 129.149955 100.293239) (xy 129.1345 100.410638) - (xy 129.1345 100.689363) (xy 129.149953 100.806753) (xy 129.149956 100.806762) (xy 129.158837 100.828203) - (xy 129.166304 100.897673) (xy 129.158838 100.923103) (xy 129.150443 100.94337) (xy 129.142987 101) - (xy 129.1855 101) (xy 129.252539 101.019685) (xy 129.266761 101.030338) (xy 129.276239 101.038561) - (xy 129.306718 101.078282) (xy 129.432159 101.174536) (xy 129.433701 101.175175) (xy 129.441958 101.182338) - (xy 129.458892 101.208724) (xy 129.477386 101.234052) (xy 129.477615 101.237896) (xy 129.479696 101.241139) - (xy 129.479676 101.272496) (xy 129.481541 101.303798) (xy 129.479654 101.307157) (xy 129.479652 101.311009) - (xy 129.462689 101.337367) (xy 129.447329 101.364719) (xy 129.443924 101.366525) (xy 129.441841 101.369763) - (xy 129.413313 101.38277) (xy 129.385611 101.397471) (xy 129.37977 101.398063) (xy 129.378268 101.398749) - (xy 129.376102 101.398436) (xy 129.360697 101.4) (xy 129.14299 101.4) (xy 129.142988 101.400001) - (xy 129.150442 101.456627) (xy 129.150444 101.456633) (xy 129.210899 101.602585) (xy 129.307075 101.727924) - (xy 129.432413 101.8241) (xy 129.578365 101.884554) (xy 129.578369 101.884555) (xy 129.695676 101.899999) - (xy 130.172499 101.899999) (xy 130.1725 101.899998) (xy 130.1725 101.374499) (xy 130.17505 101.365813) - (xy 130.173762 101.356852) (xy 130.18474 101.332811) (xy 130.192185 101.30746) (xy 130.199025 101.301532) - (xy 130.202787 101.293296) (xy 130.225021 101.279006) (xy 130.244989 101.261705) (xy 130.255503 101.259417) - (xy 130.261565 101.255522) (xy 130.296496 101.250499) (xy 130.448501 101.250499) (xy 130.515539 101.270184) - (xy 130.561294 101.322988) (xy 130.5725 101.374499) (xy 130.5725 101.899999) (xy 131.049324 101.899999) - (xy 131.166628 101.884557) (xy 131.166633 101.884555) (xy 131.312585 101.8241) (xy 131.437924 101.727924) - (xy 131.5341 101.602586) (xy 131.594555 101.456631) (xy 131.602012 101.4) (xy 131.384303 101.4) - (xy 131.358983 101.392565) (xy 131.332862 101.388826) (xy 131.325987 101.382876) (xy 131.317264 101.380315) - (xy 131.299985 101.360374) (xy 131.280029 101.343104) (xy 131.277461 101.33438) (xy 131.271509 101.327511) - (xy 131.267753 101.301393) (xy 131.260303 101.276077) (xy 131.262858 101.267352) (xy 131.261565 101.258353) - (xy 131.272527 101.234348) (xy 131.279946 101.209025) (xy 131.288184 101.200064) (xy 131.29059 101.194797) - (xy 131.303042 101.182338) (xy 131.311298 101.175175) (xy 131.312841 101.174536) (xy 131.438282 101.078282) - (xy 131.46876 101.038561) (xy 131.478239 101.030338) (xy 131.499059 101.020813) (xy 131.517553 101.00731) - (xy 131.535365 101.004205) (xy 131.541777 101.001273) (xy 131.547496 101.002091) (xy 131.5595 101) - (xy 131.60201 101) (xy 131.602011 100.999998) (xy 131.594558 100.943377) (xy 131.594554 100.943365) - (xy 131.586163 100.923106) (xy 131.578694 100.853637) (xy 131.586164 100.828199) (xy 131.595044 100.806762) - (xy 131.6105 100.689361) (xy 131.610499 100.41064) (xy 131.610083 100.407483) (xy 131.607277 100.38617) - (xy 131.595044 100.293238) (xy 131.595042 100.293234) (xy 131.586435 100.272455) (xy 131.578965 100.202986) - (xy 131.586435 100.177545) (xy 131.587902 100.174003) (xy 131.595044 100.156762) (xy 131.6105 100.039361) - (xy 131.610499 99.76064) (xy 131.608345 99.744281) (xy 131.604862 99.71782) (xy 131.595044 99.643238) - (xy 131.595042 99.643234) (xy 131.586435 99.622455) (xy 131.578965 99.552986) (xy 131.586435 99.527545) - (xy 131.587364 99.525302) (xy 131.595044 99.506762) (xy 131.6105 99.389361) (xy 131.610499 99.11064) - (xy 131.595044 98.993238) (xy 131.595042 98.993234) (xy 131.586435 98.972455) (xy 131.578965 98.902986) - (xy 131.586435 98.877545) (xy 131.595044 98.856762) (xy 131.6105 98.739361) (xy 131.610499 98.46064) - (xy 131.595044 98.343238) (xy 131.595042 98.343234) (xy 131.586435 98.322455) (xy 131.578965 98.252986) - (xy 131.586435 98.227545) (xy 131.591509 98.215295) (xy 131.595044 98.206762) (xy 131.6105 98.089361) - (xy 131.610499 97.81064) (xy 131.595044 97.693238) (xy 131.595042 97.693234) (xy 131.586435 97.672455) - (xy 131.578965 97.602986) (xy 131.586435 97.577545) (xy 131.589353 97.5705) (xy 131.595044 97.556762) - (xy 131.6105 97.439361) (xy 131.610499 97.16064) (xy 131.610499 97.160638) (xy 134.8595 97.160638) - (xy 134.8595 97.439363) (xy 134.874953 97.556753) (xy 134.874957 97.556765) (xy 134.883566 97.57755) - (xy 134.891033 97.647019) (xy 134.883566 97.67245) (xy 134.874957 97.693234) (xy 134.874955 97.693239) - (xy 134.8595 97.810638) (xy 134.8595 98.089363) (xy 134.874953 98.206753) (xy 134.874957 98.206765) - (xy 134.883566 98.22755) (xy 134.891033 98.297019) (xy 134.883566 98.32245) (xy 134.874957 98.343234) - (xy 134.874955 98.343239) (xy 134.8595 98.460638) (xy 134.8595 98.739363) (xy 134.874953 98.856753) - (xy 134.874957 98.856765) (xy 134.883566 98.87755) (xy 134.891033 98.947019) (xy 134.883566 98.97245) - (xy 134.874957 98.993234) (xy 134.874955 98.993239) (xy 134.8595 99.110638) (xy 134.8595 99.389363) - (xy 134.874953 99.506753) (xy 134.874957 99.506765) (xy 134.883566 99.52755) (xy 134.891033 99.597019) - (xy 134.883566 99.62245) (xy 134.874957 99.643234) (xy 134.874955 99.643239) (xy 134.8595 99.760638) - (xy 134.8595 100.039363) (xy 134.874953 100.156753) (xy 134.874957 100.156765) (xy 134.883566 100.17755) - (xy 134.891033 100.247019) (xy 134.883566 100.27245) (xy 134.874957 100.293234) (xy 134.874955 100.293239) - (xy 134.8595 100.410638) (xy 134.8595 100.689363) (xy 134.874953 100.806753) (xy 134.874956 100.806762) - (xy 134.883837 100.828203) (xy 134.891304 100.897673) (xy 134.883838 100.923103) (xy 134.875443 100.94337) - (xy 134.867987 101) (xy 134.9105 101) (xy 134.977539 101.019685) (xy 134.991761 101.030338) (xy 135.001239 101.038561) - (xy 135.031718 101.078282) (xy 135.157159 101.174536) (xy 135.158701 101.175175) (xy 135.166958 101.182338) - (xy 135.183892 101.208724) (xy 135.202386 101.234052) (xy 135.202615 101.237896) (xy 135.204696 101.241139) - (xy 135.204676 101.272496) (xy 135.206541 101.303798) (xy 135.204654 101.307157) (xy 135.204652 101.311009) - (xy 135.187689 101.337367) (xy 135.172329 101.364719) (xy 135.168924 101.366525) (xy 135.166841 101.369763) - (xy 135.138313 101.38277) (xy 135.110611 101.397471) (xy 135.10477 101.398063) (xy 135.103268 101.398749) - (xy 135.101102 101.398436) (xy 135.085697 101.4) (xy 134.86799 101.4) (xy 134.867988 101.400001) - (xy 134.875442 101.456627) (xy 134.875444 101.456633) (xy 134.935899 101.602585) (xy 135.032075 101.727924) - (xy 135.157413 101.8241) (xy 135.303365 101.884554) (xy 135.303369 101.884555) (xy 135.420676 101.899999) - (xy 135.897499 101.899999) (xy 135.8975 101.899998) (xy 135.8975 101.374499) (xy 135.90005 101.365813) - (xy 135.898762 101.356852) (xy 135.90974 101.332811) (xy 135.917185 101.30746) (xy 135.924025 101.301532) - (xy 135.927787 101.293296) (xy 135.950021 101.279006) (xy 135.969989 101.261705) (xy 135.980503 101.259417) - (xy 135.986565 101.255522) (xy 136.021496 101.250499) (xy 136.173501 101.250499) (xy 136.240539 101.270184) - (xy 136.286294 101.322988) (xy 136.2975 101.374499) (xy 136.2975 101.899999) (xy 136.774324 101.899999) - (xy 136.891628 101.884557) (xy 136.891633 101.884555) (xy 137.037585 101.8241) (xy 137.162924 101.727924) - (xy 137.2591 101.602586) (xy 137.319555 101.456631) (xy 137.327012 101.4) (xy 137.109303 101.4) - (xy 137.083983 101.392565) (xy 137.057862 101.388826) (xy 137.050987 101.382876) (xy 137.042264 101.380315) - (xy 137.024985 101.360374) (xy 137.005029 101.343104) (xy 137.002461 101.33438) (xy 136.996509 101.327511) - (xy 136.992753 101.301393) (xy 136.985303 101.276077) (xy 136.987858 101.267352) (xy 136.986565 101.258353) - (xy 136.997527 101.234348) (xy 137.004946 101.209025) (xy 137.013184 101.200064) (xy 137.01559 101.194797) - (xy 137.028042 101.182338) (xy 137.036298 101.175175) (xy 137.037841 101.174536) (xy 137.163282 101.078282) - (xy 137.19376 101.038561) (xy 137.203239 101.030338) (xy 137.224059 101.020813) (xy 137.242553 101.00731) - (xy 137.260365 101.004205) (xy 137.266777 101.001273) (xy 137.272496 101.002091) (xy 137.2845 101) - (xy 137.32701 101) (xy 137.327011 100.999998) (xy 137.319558 100.943377) (xy 137.319554 100.943365) - (xy 137.311163 100.923106) (xy 137.303694 100.853637) (xy 137.311164 100.828199) (xy 137.320044 100.806762) - (xy 137.3355 100.689361) (xy 137.335499 100.41064) (xy 137.335083 100.407483) (xy 137.332277 100.38617) - (xy 137.320044 100.293238) (xy 137.320042 100.293234) (xy 137.311435 100.272455) (xy 137.303965 100.202986) - (xy 137.311435 100.177545) (xy 137.312902 100.174003) (xy 137.320044 100.156762) (xy 137.3355 100.039361) - (xy 137.335499 99.76064) (xy 137.333345 99.744281) (xy 137.329862 99.71782) (xy 137.320044 99.643238) - (xy 137.320042 99.643234) (xy 137.311435 99.622455) (xy 137.303965 99.552986) (xy 137.311435 99.527545) - (xy 137.312364 99.525302) (xy 137.320044 99.506762) (xy 137.3355 99.389361) (xy 137.335499 99.11064) - (xy 137.320044 98.993238) (xy 137.320042 98.993234) (xy 137.311435 98.972455) (xy 137.303965 98.902986) - (xy 137.311435 98.877545) (xy 137.320044 98.856762) (xy 137.3355 98.739361) (xy 137.335499 98.565302) - (xy 138.657 98.565302) (xy 138.657 98.974697) (xy 138.659856 99.010991) (xy 138.659857 99.010997) - (xy 138.705004 99.166391) (xy 138.705006 99.166397) (xy 138.71712 99.18688) (xy 138.734301 99.254604) - (xy 138.71712 99.31312) (xy 138.705006 99.333602) (xy 138.705004 99.333608) (xy 138.659857 99.489002) - (xy 138.659856 99.489008) (xy 138.657 99.525302) (xy 138.657 99.934697) (xy 138.659856 99.970991) - (xy 138.659857 99.970997) (xy 138.705004 100.12639) (xy 138.705005 100.126392) (xy 138.705006 100.126395) - (xy 138.707935 100.131348) (xy 138.750997 100.204162) (xy 138.76818 100.271886) (xy 138.758071 100.316519) - (xy 138.755006 100.323602) (xy 138.709857 100.479002) (xy 138.709856 100.479008) (xy 138.707 100.515302) - (xy 138.707 100.984697) (xy 138.709856 101.020991) (xy 138.709857 101.020997) (xy 138.757182 101.183887) - (xy 138.755861 101.18427) (xy 138.7634 101.245366) (xy 138.747774 101.28838) (xy 138.734634 101.310599) - (xy 138.734629 101.310611) (xy 138.689835 101.464791) (xy 138.689834 101.464797) (xy 138.687 101.500811) - (xy 138.687 101.999169) (xy 138.687001 101.999191) (xy 138.689835 102.035205) (xy 138.734629 102.189388) - (xy 138.734631 102.189393) (xy 138.816363 102.327595) (xy 138.816369 102.327603) (xy 138.92139 102.432624) - (xy 138.954875 102.493947) (xy 138.949891 102.563639) (xy 138.908022 102.61957) (xy 138.877453 102.642454) - (xy 138.877452 102.642455) (xy 138.791206 102.757664) (xy 138.791202 102.757671) (xy 138.740908 102.892517) - (xy 138.734728 102.950002) (xy 138.734501 102.952123) (xy 138.7345 102.952135) (xy 138.7345 104.54787) - (xy 138.734501 104.547876) (xy 138.740908 104.607483) (xy 138.791202 104.742328) (xy 138.791206 104.742335) - (xy 138.877452 104.857544) (xy 138.877455 104.857547) (xy 138.992664 104.943793) (xy 138.992671 104.943797) - (xy 139.127517 104.994091) (xy 139.127516 104.994091) (xy 139.134444 104.994835) (xy 139.187127 105.0005) - (xy 140.782872 105.000499) (xy 140.842483 104.994091) (xy 140.977331 104.943796) (xy 141.092546 104.857546) - (xy 141.178796 104.742331) (xy 141.229091 104.607483) (xy 141.2355 104.547873) (xy 141.235499 102.952128) - (xy 141.229091 102.892517) (xy 141.195378 102.802129) (xy 141.178797 102.757671) (xy 141.178793 102.757664) - (xy 141.092547 102.642455) (xy 141.092544 102.642452) (xy 141.041963 102.604587) (xy 141.000092 102.548654) - (xy 140.995108 102.478962) (xy 141.028591 102.417641) (xy 141.118635 102.327598) (xy 141.200369 102.189393) - (xy 141.245165 102.035204) (xy 141.248 101.999181) (xy 141.247999 101.50082) (xy 141.245165 101.464796) - (xy 141.200369 101.310607) (xy 141.186909 101.287848) (xy 141.169727 101.220126) (xy 141.177944 101.183858) - (xy 141.177355 101.183687) (xy 141.224645 101.02091) (xy 141.22629 101) (xy 140.939485 101) (xy 140.876366 100.982733) - (xy 140.866893 100.977131) (xy 140.866888 100.977129) (xy 140.712708 100.932335) (xy 140.712702 100.932334) - (xy 140.676688 100.9295) (xy 140.5715 100.9295) (xy 140.504461 100.909815) (xy 140.458706 100.857011) - (xy 140.4475 100.8055) (xy 140.4475 100.75) (xy 140.392 100.75) (xy 140.324961 100.730315) (xy 140.279206 100.677511) - (xy 140.268 100.626) (xy 140.268 100.549984) (xy 143.8345 100.549984) (xy 143.8345 102.950015) (xy 143.845 103.052795) - (xy 143.845001 103.052796) (xy 143.900186 103.219335) (xy 143.900187 103.219337) (xy 143.992286 103.368651) - (xy 143.992289 103.368655) (xy 144.116344 103.49271) (xy 144.116348 103.492713) (xy 144.265662 103.584812) - (xy 144.265664 103.584813) (xy 144.265666 103.584814) (xy 144.432203 103.639999) (xy 144.534992 103.6505) - (xy 144.534997 103.6505) (xy 146.935003 103.6505) (xy 146.935008 103.6505) (xy 147.037797 103.639999) - (xy 147.204334 103.584814) (xy 147.353655 103.492711) (xy 147.477711 103.368655) (xy 147.569814 103.219334) - (xy 147.624999 103.052797) (xy 147.6355 102.950008) (xy 147.6355 100.549992) (xy 147.624999 100.447203) - (xy 147.569814 100.280666) (xy 147.569403 100.28) (xy 147.477713 100.131348) (xy 147.47771 100.131344) - (xy 147.353655 100.007289) (xy 147.353651 100.007286) (xy 147.204337 99.915187) (xy 147.204335 99.915186) - (xy 147.121065 99.887593) (xy 147.037797 99.860001) (xy 147.037795 99.86) (xy 146.935015 99.8495) - (xy 146.935008 99.8495) (xy 144.534992 99.8495) (xy 144.534984 99.8495) (xy 144.432204 99.86) (xy 144.432203 99.860001) - (xy 144.265664 99.915186) (xy 144.265662 99.915187) (xy 144.116348 100.007286) (xy 144.116344 100.007289) - (xy 143.992289 100.131344) (xy 143.992286 100.131348) (xy 143.900187 100.280662) (xy 143.900186 100.280664) - (xy 143.845001 100.447203) (xy 143.845 100.447204) (xy 143.8345 100.549984) (xy 140.268 100.549984) - (xy 140.268 100.515317) (xy 140.267999 100.515302) (xy 140.266924 100.501645) (xy 140.265143 100.479007) - (xy 140.255903 100.447204) (xy 140.219995 100.323608) (xy 140.219992 100.3236) (xy 140.214766 100.314763) - (xy 140.210416 100.298862) (xy 140.202523 100.28658) (xy 140.1975 100.251645) (xy 140.1975 100.21526) - (xy 140.214768 100.152139) (xy 140.229994 100.126395) (xy 140.275143 99.970993) (xy 140.27715 99.945494) - (xy 140.6975 99.945494) (xy 140.6975 100.5) (xy 141.22629 100.5) (xy 141.224645 100.479089) (xy 141.179531 100.323804) - (xy 141.097221 100.184625) (xy 141.097214 100.184616) (xy 140.982883 100.070285) (xy 140.982874 100.070278) - (xy 140.843693 99.987967) (xy 140.84369 99.987965) (xy 140.697501 99.945493) (xy 140.6975 99.945494) - (xy 140.27715 99.945494) (xy 140.278 99.93469) (xy 140.278 99.52531) (xy 140.275143 99.489007) (xy 140.272314 99.479271) - (xy 140.237498 99.359433) (xy 140.229994 99.333605) (xy 140.217879 99.31312) (xy 140.200696 99.245399) - (xy 140.217879 99.18688) (xy 140.229994 99.166395) (xy 140.275143 99.010993) (xy 140.278 98.97469) - (xy 140.278 98.56531) (xy 140.27715 98.554503) (xy 140.6975 98.554503) (xy 140.843695 98.512031) - (xy 140.982874 98.429721) (xy 140.982883 98.429714) (xy 141.097214 98.315383) (xy 141.097221 98.315374) - (xy 141.179531 98.176195) (xy 141.179533 98.17619) (xy 141.224644 98.020918) (xy 141.224645 98.020912) - (xy 141.22629 98) (xy 140.6975 98) (xy 140.6975 98.554503) (xy 140.27715 98.554503) (xy 140.275143 98.529007) - (xy 140.258698 98.472405) (xy 140.23745 98.399267) (xy 140.229994 98.373605) (xy 140.214766 98.347857) - (xy 140.210416 98.331956) (xy 140.202523 98.319673) (xy 140.1975 98.284738) (xy 140.1975 98.248352) - (xy 140.214769 98.185229) (xy 140.219994 98.176395) (xy 140.265143 98.020993) (xy 140.268 97.98469) - (xy 140.268 97.874) (xy 140.287685 97.806961) (xy 140.340489 97.761206) (xy 140.392 97.75) (xy 140.4475 97.75) - (xy 140.4475 97.694499) (xy 140.467185 97.62746) (xy 140.519989 97.581705) (xy 140.571498 97.570499) - (xy 140.66668 97.570499) (xy 140.702704 97.567665) (xy 140.856893 97.522869) (xy 140.862338 97.519648) - (xy 140.866366 97.517267) (xy 140.929485 97.5) (xy 141.22629 97.5) (xy 141.224645 97.479089) (xy 141.179531 97.323803) - (xy 141.176434 97.316646) (xy 141.179135 97.315476) (xy 141.165351 97.261173) (xy 141.182536 97.202637) - (xy 141.190369 97.189393) (xy 141.235165 97.035204) (xy 141.238 96.999181) (xy 141.237999 96.625441) - (xy 143.8345 96.625441) (xy 143.8345 96.874558) (xy 143.834501 96.874575) (xy 143.855648 97.035205) - (xy 143.867018 97.121565) (xy 143.882092 97.17782) (xy 143.931498 97.362207) (xy 144.02683 97.592361) - (xy 144.026837 97.592376) (xy 144.1514 97.808126) (xy 144.30306 98.005774) (xy 144.303066 98.005781) - (xy 144.479218 98.181933) (xy 144.479225 98.181939) (xy 144.676873 98.333599) (xy 144.892623 98.458162) - (xy 144.892638 98.458169) (xy 144.978754 98.493839) (xy 145.122793 98.553502) (xy 145.363435 98.617982) - (xy 145.610435 98.6505) (xy 145.610442 98.6505) (xy 145.859558 98.6505) (xy 145.859565 98.6505) - (xy 146.106565 98.617982) (xy 146.347207 98.553502) (xy 146.577373 98.458164) (xy 146.793127 98.333599) - (xy 146.990776 98.181938) (xy 147.166938 98.005776) (xy 147.318599 97.808127) (xy 147.443164 97.592373) - (xy 147.538502 97.362207) (xy 147.602982 97.121565) (xy 147.6355 96.874565) (xy 147.6355 96.625435) - (xy 147.602982 96.378435) (xy 147.538502 96.137793) (xy 147.464008 95.957949) (xy 147.443169 95.907638) - (xy 147.443162 95.907623) (xy 147.318599 95.691873) (xy 147.166939 95.494225) (xy 147.166933 95.494218) - (xy 146.990781 95.318066) (xy 146.990774 95.31806) (xy 146.793126 95.1664) (xy 146.577376 95.041837) - (xy 146.577361 95.04183) (xy 146.347207 94.946498) (xy 146.106561 94.882017) (xy 145.859575 94.849501) - (xy 145.85957 94.8495) (xy 145.859565 94.8495) (xy 145.610435 94.8495) (xy 145.610429 94.8495) (xy 145.610424 94.849501) - (xy 145.363438 94.882017) (xy 145.122792 94.946498) (xy 144.892638 95.04183) (xy 144.892623 95.041837) - (xy 144.676873 95.1664) (xy 144.479225 95.31806) (xy 144.479218 95.318066) (xy 144.303066 95.494218) - (xy 144.30306 95.494225) (xy 144.1514 95.691873) (xy 144.026837 95.907623) (xy 144.02683 95.907638) - (xy 143.931498 96.137792) (xy 143.867017 96.378438) (xy 143.834501 96.625424) (xy 143.8345 96.625441) - (xy 141.237999 96.625441) (xy 141.237999 96.50082) (xy 141.235165 96.464796) (xy 141.190369 96.310607) - (xy 141.108635 96.172402) (xy 141.108633 96.1724) (xy 141.10863 96.172396) (xy 140.995103 96.058869) - (xy 140.995095 96.058863) (xy 140.856893 95.977131) (xy 140.849731 95.974032) (xy 140.850248 95.972835) - (xy 140.798155 95.939561) (xy 140.768954 95.876086) (xy 140.778706 95.8069) (xy 140.824315 95.75397) - (xy 140.848308 95.741918) (xy 140.977331 95.693796) (xy 141.092546 95.607546) (xy 141.178796 95.492331) - (xy 141.229091 95.357483) (xy 141.2355 95.297873) (xy 141.235499 93.702128) (xy 141.229091 93.642517) - (xy 141.199128 93.562183) (xy 141.178797 93.507671) (xy 141.178793 93.507664) (xy 141.092547 93.392455) - (xy 141.092544 93.392452) (xy 140.977335 93.306206) (xy 140.977328 93.306202) (xy 140.842482 93.255908) - (xy 140.842483 93.255908) (xy 140.782883 93.249501) (xy 140.782881 93.2495) (xy 140.782873 93.2495) - (xy 140.782864 93.2495) (xy 139.187129 93.2495) (xy 139.187123 93.249501) (xy 139.127516 93.255908) - (xy 138.992671 93.306202) (xy 138.992664 93.306206) (xy 138.877455 93.392452) (xy 138.877452 93.392455) - (xy 138.791206 93.507664) (xy 138.791202 93.507671) (xy 138.740908 93.642517) (xy 138.734957 93.697872) - (xy 138.734501 93.702123) (xy 138.7345 93.702135) (xy 138.7345 95.29787) (xy 138.734501 95.297876) - (xy 138.740908 95.357483) (xy 138.791202 95.492328) (xy 138.791206 95.492335) (xy 138.877452 95.607544) - (xy 138.877455 95.607547) (xy 138.992664 95.693793) (xy 138.992671 95.693797) (xy 139.097606 95.732935) - (xy 139.15354 95.774806) (xy 139.177957 95.84027) (xy 139.163106 95.908543) (xy 139.113701 95.957949) - (xy 139.08887 95.968193) (xy 139.058108 95.97713) (xy 139.058106 95.977131) (xy 138.919904 96.058863) - (xy 138.919896 96.058869) (xy 138.806369 96.172396) (xy 138.806363 96.172404) (xy 138.724631 96.310606) - (xy 138.724629 96.310611) (xy 138.679835 96.464791) (xy 138.679834 96.464797) (xy 138.677 96.500811) - (xy 138.677 96.999169) (xy 138.677001 96.999191) (xy 138.679835 97.035205) (xy 138.724629 97.189388) - (xy 138.72463 97.18939) (xy 138.724631 97.189393) (xy 138.73863 97.213065) (xy 138.743832 97.22186) - (xy 138.761015 97.289584) (xy 138.756176 97.319576) (xy 138.709857 97.479002) (xy 138.709856 97.479008) - (xy 138.707 97.515302) (xy 138.707 97.984697) (xy 138.709856 98.020991) (xy 138.709857 98.020997) - (xy 138.755005 98.176394) (xy 138.758067 98.18347) (xy 138.766625 98.252813) (xy 138.750998 98.295835) - (xy 138.705004 98.373608) (xy 138.705004 98.373609) (xy 138.659857 98.529002) (xy 138.659856 98.529008) - (xy 138.657 98.565302) (xy 137.335499 98.565302) (xy 137.335499 98.46064) (xy 137.320044 98.343238) - (xy 137.320042 98.343234) (xy 137.311435 98.322455) (xy 137.303965 98.252986) (xy 137.311435 98.227545) - (xy 137.316509 98.215295) (xy 137.320044 98.206762) (xy 137.3355 98.089361) (xy 137.335499 97.81064) - (xy 137.320044 97.693238) (xy 137.320042 97.693234) (xy 137.311435 97.672455) (xy 137.303965 97.602986) - (xy 137.311435 97.577545) (xy 137.314353 97.5705) (xy 137.320044 97.556762) (xy 137.3355 97.439361) - (xy 137.335499 97.16064) (xy 137.335499 97.160638) (xy 137.335499 97.160636) (xy 137.320046 97.043246) - (xy 137.320044 97.043239) (xy 137.320044 97.043238) (xy 137.259536 96.897159) (xy 137.163282 96.771718) - (xy 137.037841 96.675464) (xy 136.891762 96.614956) (xy 136.89176 96.614955) (xy 136.77437 96.599501) - (xy 136.774367 96.5995) (xy 136.774361 96.5995) (xy 136.774354 96.5995) (xy 135.420636 96.5995) - (xy 135.303246 96.614953) (xy 135.303237 96.614956) (xy 135.15716 96.675463) (xy 135.031718 96.771718) - (xy 134.935463 96.89716) (xy 134.874956 97.043237) (xy 134.874955 97.043239) (xy 134.8595 97.160638) - (xy 131.610499 97.160638) (xy 131.610499 97.160636) (xy 131.595046 97.043246) (xy 131.595044 97.043239) - (xy 131.595044 97.043238) (xy 131.556531 96.950261) (xy 131.549063 96.880792) (xy 131.580338 96.818313) - (xy 131.636499 96.783732) (xy 131.711195 96.762031) (xy 131.850374 96.679721) (xy 131.850383 96.679714) - (xy 131.964714 96.565383) (xy 131.964721 96.565374) (xy 132.047031 96.426195) (xy 132.047033 96.42619) - (xy 132.092144 96.270918) (xy 132.092145 96.270912) (xy 132.09379 96.25) (xy 131.439 96.25) (xy 131.371961 96.230315) - (xy 131.326206 96.177511) (xy 131.315 96.126) (xy 131.315 95.874) (xy 131.334685 95.806961) (xy 131.387489 95.761206) - (xy 131.439 95.75) (xy 131.985 95.75) (xy 131.985 95.724999) (xy 132.485 95.724999) (xy 132.534972 95.724999) - (xy 132.534986 95.724998) (xy 132.637697 95.714505) (xy 132.804119 95.659358) (xy 132.804124 95.659356) - (xy 132.953345 95.567315) (xy 133.077315 95.443345) (xy 133.169356 95.294124) (xy 133.169358 95.294119) - (xy 133.224505 95.127697) (xy 133.224506 95.12769) (xy 133.234999 95.024986) (xy 133.235 95.024973) - (xy 133.235 94.75) (xy 132.485 94.75) (xy 132.485 95.724999) (xy 131.985 95.724999) (xy 131.985 94.25) - (xy 132.485 94.25) (xy 133.234999 94.25) (xy 133.234999 93.975028) (xy 133.234998 93.975013) (xy 133.224505 93.872302) - (xy 133.169358 93.70588) (xy 133.169356 93.705875) (xy 133.077315 93.556654) (xy 132.953345 93.432684) - (xy 132.804124 93.340643) (xy 132.804119 93.340641) (xy 132.637697 93.285494) (xy 132.63769 93.285493) - (xy 132.534986 93.275) (xy 132.485 93.275) (xy 132.485 94.25) (xy 131.985 94.25) (xy 131.985 93.275) - (xy 131.984999 93.274999) (xy 131.935029 93.275) (xy 131.935011 93.275001) (xy 131.832302 93.285494) - (xy 131.66588 93.340641) (xy 131.665875 93.340643) (xy 131.516654 93.432684) (xy 131.392683 93.556655) - (xy 131.392679 93.55666) (xy 131.390826 93.559665) (xy 131.389018 93.56129) (xy 131.388202 93.562323) - (xy 131.388025 93.562183) (xy 131.338874 93.606385) (xy 131.269911 93.617601) (xy 131.205831 93.589752) - (xy 131.179753 93.559653) (xy 131.179737 93.559628) (xy 131.177712 93.556344) (xy 131.053656 93.432288) - (xy 130.904334 93.340186) (xy 130.737797 93.285001) (xy 130.737795 93.285) (xy 130.63501 93.2745) - (xy 130.034998 93.2745) (xy 130.03498 93.274501) (xy 129.932203 93.285) (xy 129.9322 93.285001) - (xy 129.765668 93.340185) (xy 129.765663 93.340187) (xy 129.616342 93.432289) (xy 129.492289 93.556342) - (xy 129.400187 93.705663) (xy 129.400185 93.705668) (xy 129.372349 93.78967) (xy 129.345001 93.872203) - (xy 129.345001 93.872204) (xy 129.345 93.872204) (xy 129.3345 93.974983) (xy 129.3345 95.025001) - (xy 129.334501 95.025019) (xy 129.345 95.127796) (xy 129.345001 95.127799) (xy 129.400185 95.294331) - (xy 129.400187 95.294336) (xy 129.402375 95.297883) (xy 129.492096 95.443345) (xy 129.492289 95.443657) - (xy 129.57059 95.521958) (xy 129.604075 95.583281) (xy 129.601986 95.644233) (xy 129.577356 95.729008) - (xy 129.5745 95.765302) (xy 129.5745 96.234697) (xy 129.577356 96.270991) (xy 129.577357 96.270997) - (xy 129.622504 96.42639) (xy 129.622504 96.426391) (xy 129.630628 96.440128) (xy 129.647809 96.507852) - (xy 129.625649 96.574115) (xy 129.571348 96.617809) (xy 129.43216 96.675463) (xy 129.306718 96.771718) - (xy 129.210463 96.89716) (xy 129.149956 97.043237) (xy 129.149955 97.043239) (xy 129.1345 97.160638) - (xy 86.100499 97.160638) (xy 86.100499 97.043246) (xy 86.100499 96.252129) (xy 86.100498 96.252123) - (xy 86.100497 96.252116) (xy 86.094091 96.192517) (xy 86.086589 96.172404) (xy 86.043797 96.057671) + (xy 112.482031 100.573804) (xy 112.399916 100.434955) (xy 112.399915 100.434953) (xy 112.399721 100.434625) + (xy 112.399714 100.434616) (xy 112.340081 100.374983) (xy 116.4995 100.374983) (xy 116.4995 101.425001) + (xy 116.499501 101.425019) (xy 116.51 101.527796) (xy 116.510001 101.527799) (xy 116.552578 101.656286) + (xy 116.565186 101.694334) (xy 116.657288 101.843656) (xy 116.781344 101.967712) (xy 116.930666 102.059814) + (xy 117.097203 102.114999) (xy 117.199991 102.1255) (xy 117.800008 102.125499) (xy 117.800016 102.125498) + (xy 117.800019 102.125498) (xy 117.856302 102.119748) (xy 117.902797 102.114999) (xy 118.069334 102.059814) + (xy 118.218656 101.967712) (xy 118.342712 101.843656) (xy 118.344752 101.840347) (xy 118.346745 101.838555) + (xy 118.347193 101.837989) (xy 118.347289 101.838065) (xy 118.396694 101.793623) (xy 118.465656 101.782395) + (xy 118.52974 101.810234) (xy 118.555829 101.840339) (xy 118.557681 101.843341) (xy 118.557683 101.843344) + (xy 118.681654 101.967315) (xy 118.830875 102.059356) (xy 118.83088 102.059358) (xy 118.997302 102.114505) + (xy 118.997309 102.114506) (xy 119.100019 102.124999) (xy 119.65 102.124999) (xy 119.699972 102.124999) + (xy 119.699986 102.124998) (xy 119.802697 102.114505) (xy 119.969119 102.059358) (xy 119.969124 102.059356) + (xy 120.118345 101.967315) (xy 120.242315 101.843345) (xy 120.334356 101.694124) (xy 120.334358 101.694119) + (xy 120.389505 101.527697) (xy 120.389506 101.52769) (xy 120.399999 101.424986) (xy 120.4 101.424973) + (xy 120.4 101.15) (xy 119.65 101.15) (xy 119.65 102.124999) (xy 119.100019 102.124999) (xy 119.149999 102.124998) + (xy 119.15 102.124998) (xy 119.15 100.65) (xy 119.65 100.65) (xy 120.399999 100.65) (xy 120.399999 100.375028) + (xy 120.399998 100.375013) (xy 120.389505 100.272302) (xy 120.334358 100.10588) (xy 120.334356 100.105875) + (xy 120.242315 99.956654) (xy 120.118345 99.832684) (xy 119.969124 99.740643) (xy 119.969119 99.740641) + (xy 119.802697 99.685494) (xy 119.80269 99.685493) (xy 119.699986 99.675) (xy 119.65 99.675) (xy 119.65 100.65) + (xy 119.15 100.65) (xy 119.15 99.675) (xy 119.149999 99.674999) (xy 119.100029 99.675) (xy 119.100011 99.675001) + (xy 118.997302 99.685494) (xy 118.83088 99.740641) (xy 118.830875 99.740643) (xy 118.681654 99.832684) + (xy 118.557683 99.956655) (xy 118.557679 99.95666) (xy 118.555826 99.959665) (xy 118.554018 99.96129) + (xy 118.553202 99.962323) (xy 118.553025 99.962183) (xy 118.503874 100.006385) (xy 118.434911 100.017601) + (xy 118.370831 99.989752) (xy 118.344753 99.959653) (xy 118.342994 99.956802) (xy 118.342712 99.956344) + (xy 118.218656 99.832288) (xy 118.075973 99.744281) (xy 118.069336 99.740187) (xy 118.069331 99.740185) + (xy 118.041362 99.730917) (xy 117.902797 99.685001) (xy 117.902795 99.685) (xy 117.80001 99.6745) + (xy 117.199998 99.6745) (xy 117.19998 99.674501) (xy 117.097203 99.685) (xy 117.0972 99.685001) + (xy 116.930668 99.740185) (xy 116.930663 99.740187) (xy 116.781342 99.832289) (xy 116.657289 99.956342) + (xy 116.565187 100.105663) (xy 116.565185 100.105668) (xy 116.558317 100.126395) (xy 116.510001 100.272203) + (xy 116.510001 100.272204) (xy 116.51 100.272204) (xy 116.4995 100.374983) (xy 112.340081 100.374983) + (xy 112.285383 100.320285) (xy 112.285374 100.320278) (xy 112.146193 100.237967) (xy 112.14619 100.237965) + (xy 112.000001 100.195493) (xy 112 100.195494) (xy 111.5 100.195494) (xy 111.499998 100.195493) + (xy 111.353809 100.237965) (xy 111.353806 100.237967) (xy 111.333608 100.249912) (xy 111.265884 100.267092) + (xy 111.20737 100.24991) (xy 111.186397 100.237507) (xy 111.18639 100.237504) (xy 111.030997 100.192357) + (xy 111.030991 100.192356) (xy 110.994697 100.1895) (xy 110.99469 100.1895) (xy 110.58531 100.1895) + (xy 110.585302 100.1895) (xy 110.549008 100.192356) (xy 110.549002 100.192357) (xy 110.393609 100.237504) + (xy 110.393606 100.237505) (xy 110.254315 100.319881) (xy 110.254307 100.319887) (xy 110.139887 100.434307) + (xy 110.139881 100.434315) (xy 110.057505 100.573606) (xy 110.057504 100.573609) (xy 110.012357 100.729002) + (xy 110.012356 100.729008) (xy 110.0095 100.765302) (xy 85.78467 100.765302) (xy 85.842331 100.743796) + (xy 85.957546 100.657546) (xy 86.043796 100.542331) (xy 86.094091 100.407483) (xy 86.1005 100.347873) + (xy 86.100499 98.752128) (xy 86.094091 98.692517) (xy 86.077409 98.647791) (xy 86.043797 98.557671) + (xy 86.043793 98.557664) (xy 85.979967 98.472405) (xy 85.957546 98.442454) (xy 85.899854 98.399265) + (xy 85.857984 98.343333) (xy 85.853 98.273641) (xy 85.886485 98.212318) (xy 85.899854 98.200734) + (xy 85.957546 98.157546) (xy 86.043796 98.042331) (xy 86.094091 97.907483) (xy 86.1005 97.847873) + (xy 86.100499 96.252128) (xy 86.094091 96.192517) (xy 86.079634 96.153757) (xy 86.043797 96.057671) (xy 86.043793 96.057664) (xy 85.957547 95.942455) (xy 85.957544 95.942452) (xy 85.842335 95.856206) (xy 85.842328 95.856202) (xy 85.707482 95.805908) (xy 85.707483 95.805908) (xy 85.647883 95.799501) (xy 85.647881 95.7995) (xy 85.647873 95.7995) (xy 85.647864 95.7995) (xy 84.052129 95.7995) (xy 84.052123 95.799501) @@ -26825,1015 +29769,1044 @@ (xy 55.547883 94.249501) (xy 55.547881 94.2495) (xy 55.547873 94.2495) (xy 55.547864 94.2495) (xy 53.452129 94.2495) (xy 53.452123 94.249501) (xy 53.392516 94.255908) (xy 53.257671 94.306202) (xy 53.257664 94.306206) (xy 53.142455 94.392452) (xy 53.142452 94.392455) (xy 53.056206 94.507664) (xy 53.056202 94.507671) - (xy 53.005908 94.642517) (xy 52.999501 94.702116) (xy 52.999501 94.702123) (xy 52.9995 94.702135) + (xy 53.005908 94.642517) (xy 53.00198 94.679057) (xy 52.999501 94.702123) (xy 52.9995 94.702135) (xy 50.5005 94.702135) (xy 50.5005 91.602135) (xy 59.8995 91.602135) (xy 59.8995 93.69787) (xy 59.899501 93.697876) (xy 59.905908 93.757483) (xy 59.956202 93.892328) (xy 59.956206 93.892335) (xy 60.042452 94.007544) (xy 60.042455 94.007547) (xy 60.157664 94.093793) (xy 60.157671 94.093797) (xy 60.292517 94.144091) (xy 60.292516 94.144091) (xy 60.299444 94.144835) (xy 60.352127 94.1505) (xy 63.647872 94.150499) (xy 63.707483 94.144091) (xy 63.842331 94.093796) (xy 63.957546 94.007546) (xy 64.043796 93.892331) - (xy 64.094091 93.757483) (xy 64.1005 93.697873) (xy 64.100499 92.636649) (xy 64.100499 91.602129) - (xy 64.100498 91.602123) (xy 64.100497 91.602116) (xy 64.094091 91.542517) (xy 64.043796 91.407669) - (xy 64.043795 91.407668) (xy 64.043793 91.407664) (xy 63.957547 91.292455) (xy 63.957544 91.292452) + (xy 64.094091 93.757483) (xy 64.1005 93.697873) (xy 64.100499 92.639393) (xy 64.100499 91.602129) + (xy 64.100498 91.602123) (xy 64.100497 91.602116) (xy 64.094091 91.542517) (xy 64.079276 91.502797) + (xy 64.043797 91.407671) (xy 64.043793 91.407664) (xy 63.957547 91.292455) (xy 63.957544 91.292452) (xy 63.842335 91.206206) (xy 63.842328 91.206202) (xy 63.707482 91.155908) (xy 63.707483 91.155908) (xy 63.647883 91.149501) (xy 63.647881 91.1495) (xy 63.647873 91.1495) (xy 63.647864 91.1495) (xy 60.352129 91.1495) (xy 60.352123 91.149501) (xy 60.292516 91.155908) (xy 60.157671 91.206202) (xy 60.157664 91.206206) (xy 60.042455 91.292452) (xy 60.042452 91.292455) (xy 59.956206 91.407664) (xy 59.956202 91.407671) - (xy 59.905908 91.542517) (xy 59.899501 91.602116) (xy 59.899501 91.602123) (xy 59.8995 91.602135) - (xy 50.5005 91.602135) (xy 50.5005 89.050811) (xy 52.5595 89.050811) (xy 52.5595 89.549169) (xy 52.559501 89.549191) - (xy 52.562335 89.585205) (xy 52.60713 89.739391) (xy 52.60713 89.739392) (xy 52.611033 89.745991) - (xy 52.628216 89.813715) (xy 52.619293 89.853112) (xy 52.619307 89.853116) (xy 52.619242 89.853339) - (xy 52.618108 89.858347) (xy 52.617131 89.860604) (xy 52.572335 90.014791) (xy 52.572334 90.014797) - (xy 52.5695 90.050811) (xy 52.5695 90.549169) (xy 52.569501 90.549191) (xy 52.572335 90.585205) - (xy 52.617129 90.739388) (xy 52.617131 90.739393) (xy 52.698863 90.877595) (xy 52.698869 90.877603) - (xy 52.812396 90.99113) (xy 52.8124 90.991133) (xy 52.812402 90.991135) (xy 52.950607 91.072869) - (xy 52.950614 91.072871) (xy 53.104791 91.117664) (xy 53.104794 91.117664) (xy 53.104796 91.117665) - (xy 53.140819 91.1205) (xy 53.53918 91.120499) (xy 53.575204 91.117665) (xy 53.729393 91.072869) - (xy 53.786882 91.038869) (xy 53.854602 91.021688) (xy 53.913117 91.038869) (xy 53.970607 91.072869) - (xy 53.97061 91.072869) (xy 53.970612 91.072871) (xy 54.124791 91.117664) (xy 54.124794 91.117664) - (xy 54.124796 91.117665) (xy 54.160819 91.1205) (xy 54.55918 91.120499) (xy 54.595204 91.117665) - (xy 54.749393 91.072869) (xy 54.887598 90.991135) (xy 55.001135 90.877598) (xy 55.082869 90.739393) - (xy 55.127665 90.585204) (xy 55.1305 90.549181) (xy 55.130499 90.284298) (xy 110.762 90.284298) - (xy 110.762 90.715701) (xy 110.764901 90.752567) (xy 110.764902 90.752573) (xy 110.810754 90.910393) - (xy 110.810755 90.910396) (xy 110.894417 91.051862) (xy 110.894423 91.05187) (xy 111.010629 91.168076) - (xy 111.010633 91.168079) (xy 111.010635 91.168081) (xy 111.152102 91.251744) (xy 111.193724 91.263836) - (xy 111.309926 91.297597) (xy 111.309929 91.297597) (xy 111.309931 91.297598) (xy 111.346806 91.3005) - (xy 111.346814 91.3005) (xy 112.653186 91.3005) (xy 112.653194 91.3005) (xy 112.690069 91.297598) - (xy 112.690071 91.297597) (xy 112.690073 91.297597) (xy 112.731691 91.285505) (xy 112.847898 91.251744) - (xy 112.989365 91.168081) (xy 113.105581 91.051865) (xy 113.189244 90.910398) (xy 113.235098 90.752569) - (xy 113.238 90.715694) (xy 113.238 90.4745) (xy 113.257685 90.407461) (xy 113.310489 90.361706) - (xy 113.362 90.3505) (xy 114.528186 90.3505) (xy 114.528194 90.3505) (xy 114.565069 90.347598) (xy 114.565071 90.347597) - (xy 114.565073 90.347597) (xy 114.606691 90.335505) (xy 114.722898 90.301744) (xy 114.864365 90.218081) - (xy 114.902732 90.179714) (xy 114.986098 90.096349) (xy 114.987255 90.097506) (xy 115.036405 90.062009) - (xy 115.106172 90.058216) (xy 115.165428 90.091233) (xy 115.254307 90.180112) (xy 115.254311 90.180115) - (xy 115.254313 90.180117) (xy 115.393605 90.262494) (xy 115.434587 90.2744) (xy 115.549002 90.307642) - (xy 115.549005 90.307642) (xy 115.549007 90.307643) (xy 115.58531 90.3105) (xy 115.585318 90.3105) - (xy 115.994682 90.3105) (xy 115.99469 90.3105) (xy 116.030993 90.307643) (xy 116.030995 90.307642) - (xy 116.030997 90.307642) (xy 116.071975 90.295736) (xy 116.186395 90.262494) (xy 116.207369 90.250089) - (xy 116.275088 90.232906) (xy 116.333613 90.25009) (xy 116.353803 90.262031) (xy 116.5 90.304504) - (xy 116.5 90.304503) (xy 117 90.304503) (xy 117.146195 90.262031) (xy 117.285374 90.179721) (xy 117.285383 90.179714) - (xy 117.399714 90.065383) (xy 117.399721 90.065374) (xy 117.482031 89.926195) (xy 117.482033 89.92619) - (xy 117.527144 89.770918) (xy 117.527145 89.770912) (xy 117.52879 89.75) (xy 117 89.75) (xy 117 90.304503) - (xy 116.5 90.304503) (xy 116.5 89.998352) (xy 116.517267 89.935233) (xy 116.522494 89.926395) (xy 116.541608 89.860607) - (xy 116.567642 89.770997) (xy 116.567643 89.770991) (xy 116.569432 89.748255) (xy 116.5705 89.73469) - (xy 116.5705 89.26531) (xy 116.567643 89.229007) (xy 116.522494 89.073605) (xy 116.522493 89.073604) - (xy 116.522492 89.0736) (xy 116.517266 89.064763) (xy 116.5 89.001645) (xy 116.5 88.695494) (xy 117 88.695494) - (xy 117 89.25) (xy 117.52879 89.25) (xy 117.527145 89.229089) (xy 117.482031 89.073804) (xy 117.399721 88.934625) - (xy 117.399714 88.934616) (xy 117.285383 88.820285) (xy 117.285374 88.820278) (xy 117.146193 88.737967) - (xy 117.14619 88.737965) (xy 117.000001 88.695493) (xy 117 88.695494) (xy 116.5 88.695494) (xy 116.499998 88.695493) - (xy 116.353809 88.737965) (xy 116.353806 88.737967) (xy 116.333608 88.749912) (xy 116.265884 88.767092) - (xy 116.20737 88.74991) (xy 116.186397 88.737507) (xy 116.18639 88.737504) (xy 116.030997 88.692357) - (xy 116.030991 88.692356) (xy 115.994697 88.6895) (xy 115.99469 88.6895) (xy 115.58531 88.6895) - (xy 115.585302 88.6895) (xy 115.549008 88.692356) (xy 115.549002 88.692357) (xy 115.393609 88.737504) - (xy 115.393606 88.737505) (xy 115.254315 88.819881) (xy 115.254307 88.819887) (xy 115.139887 88.934307) - (xy 115.139876 88.934321) (xy 115.138335 88.936928) (xy 115.136595 88.938552) (xy 115.135103 88.940476) - (xy 115.134792 88.940235) (xy 115.087262 88.984608) (xy 115.018519 88.997106) (xy 114.953932 88.970455) - (xy 114.943927 88.96148) (xy 114.86437 88.881923) (xy 114.864362 88.881917) (xy 114.759464 88.819881) - (xy 114.722898 88.798256) (xy 114.722897 88.798255) (xy 114.722896 88.798255) (xy 114.722893 88.798254) - (xy 114.565073 88.752402) (xy 114.565067 88.752401) (xy 114.528201 88.7495) (xy 114.528194 88.7495) - (xy 113.221806 88.7495) (xy 113.221798 88.7495) (xy 113.184932 88.752401) (xy 113.184926 88.752402) - (xy 113.027106 88.798254) (xy 113.027103 88.798255) (xy 112.968806 88.832732) (xy 112.905685 88.85) - (xy 112.25 88.85) (xy 112.25 89.4) (xy 112.513 89.4) (xy 112.521685 89.40255) (xy 112.530647 89.401262) - (xy 112.554687 89.41224) (xy 112.580039 89.419685) (xy 112.585966 89.426525) (xy 112.594203 89.430287) - (xy 112.608492 89.452521) (xy 112.625794 89.472489) (xy 112.628081 89.483003) (xy 112.631977 89.489065) - (xy 112.637 89.524) (xy 112.637 89.5755) (xy 112.617315 89.642539) (xy 112.564511 89.688294) (xy 112.513 89.6995) - (xy 111.346798 89.6995) (xy 111.309932 89.702401) (xy 111.309926 89.702402) (xy 111.152106 89.748254) - (xy 111.152103 89.748255) (xy 111.010637 89.831917) (xy 111.010629 89.831923) (xy 110.894423 89.948129) - (xy 110.894417 89.948137) (xy 110.810755 90.089603) (xy 110.810754 90.089606) (xy 110.764902 90.247426) - (xy 110.764901 90.247432) (xy 110.762 90.284298) (xy 55.130499 90.284298) (xy 55.130499 90.05082) - (xy 55.127665 90.014796) (xy 55.082869 89.860607) (xy 55.078963 89.854003) (xy 55.061784 89.78628) - (xy 55.070708 89.746889) (xy 55.070693 89.746885) (xy 55.070766 89.746632) (xy 55.071899 89.741633) - (xy 55.072863 89.739402) (xy 55.072869 89.739393) (xy 55.117665 89.585204) (xy 55.1205 89.549181) - (xy 55.120499 89.05082) (xy 55.117665 89.014796) (xy 55.072869 88.860607) (xy 55.070813 88.853529) - (xy 55.070823 88.850001) (xy 110.765204 88.850001) (xy 110.765399 88.852486) (xy 110.811218 89.010198) - (xy 110.894814 89.151552) (xy 110.894821 89.151561) (xy 111.010938 89.267678) (xy 111.010947 89.267685) - (xy 111.152303 89.351282) (xy 111.152306 89.351283) (xy 111.310004 89.397099) (xy 111.31001 89.3971) - (xy 111.34685 89.399999) (xy 111.346866 89.4) (xy 111.75 89.4) (xy 111.75 88.85) (xy 110.765205 88.85) - (xy 110.765204 88.850001) (xy 55.070823 88.850001) (xy 55.070905 88.820969) (xy 55.069698 88.788437) - (xy 55.071007 88.785262) (xy 55.071012 88.783659) (xy 55.083152 88.755822) (xy 55.092869 88.739393) - (xy 55.137665 88.585204) (xy 55.1405 88.549181) (xy 55.140499 88.349998) (xy 110.765204 88.349998) - (xy 110.765205 88.35) (xy 111.75 88.35) (xy 112.25 88.35) (xy 113.234795 88.35) (xy 113.234795 88.349998) - (xy 113.2346 88.347511) (xy 113.229928 88.331429) (xy 113.229928 88.331426) (xy 113.220793 88.299984) - (xy 143.802 88.299984) (xy 143.802 90.700015) (xy 143.8125 90.802795) (xy 143.812501 90.802796) - (xy 143.867686 90.969335) (xy 143.867687 90.969337) (xy 143.959786 91.118651) (xy 143.959789 91.118655) - (xy 144.083844 91.24271) (xy 144.083848 91.242713) (xy 144.233162 91.334812) (xy 144.233164 91.334813) - (xy 144.233166 91.334814) (xy 144.399703 91.389999) (xy 144.502492 91.4005) (xy 144.502497 91.4005) - (xy 146.902503 91.4005) (xy 146.902508 91.4005) (xy 147.005297 91.389999) (xy 147.171834 91.334814) - (xy 147.321155 91.242711) (xy 147.445211 91.118655) (xy 147.537314 90.969334) (xy 147.592499 90.802797) - (xy 147.603 90.700008) (xy 147.603 88.299992) (xy 147.592499 88.197203) (xy 147.537314 88.030666) - (xy 147.527525 88.014796) (xy 147.445213 87.881348) (xy 147.44521 87.881344) (xy 147.321155 87.757289) - (xy 147.321151 87.757286) (xy 147.171837 87.665187) (xy 147.171835 87.665186) (xy 147.088565 87.637593) - (xy 147.005297 87.610001) (xy 147.005295 87.61) (xy 146.902515 87.5995) (xy 146.902508 87.5995) - (xy 144.502492 87.5995) (xy 144.502484 87.5995) (xy 144.399704 87.61) (xy 144.399703 87.610001) - (xy 144.233164 87.665186) (xy 144.233162 87.665187) (xy 144.083848 87.757286) (xy 144.083844 87.757289) - (xy 143.959789 87.881344) (xy 143.959786 87.881348) (xy 143.867687 88.030662) (xy 143.867686 88.030664) - (xy 143.812501 88.197203) (xy 143.8125 88.197204) (xy 143.802 88.299984) (xy 113.220793 88.299984) - (xy 113.188783 88.189806) (xy 113.188782 88.189803) (xy 113.105185 88.048447) (xy 113.105178 88.048438) - (xy 112.989061 87.932321) (xy 112.989052 87.932314) (xy 112.847696 87.848717) (xy 112.847693 87.848716) - (xy 112.689995 87.8029) (xy 112.689989 87.802899) (xy 112.653149 87.8) (xy 112.25 87.8) (xy 112.25 88.35) - (xy 111.75 88.35) (xy 111.75 87.8) (xy 111.34685 87.8) (xy 111.31001 87.802899) (xy 111.310004 87.8029) - (xy 111.152306 87.848716) (xy 111.152303 87.848717) (xy 111.010947 87.932314) (xy 111.010938 87.932321) - (xy 110.894821 88.048438) (xy 110.894814 88.048447) (xy 110.811218 88.189801) (xy 110.765399 88.347513) - (xy 110.765204 88.349998) (xy 55.140499 88.349998) (xy 55.140499 88.299997) (xy 55.140499 88.05083) - (xy 55.140498 88.050808) (xy 55.138913 88.030662) (xy 55.137665 88.014796) (xy 55.092869 87.860607) - (xy 55.011135 87.722402) (xy 55.011133 87.7224) (xy 55.01113 87.722396) (xy 54.897603 87.608869) - (xy 54.897595 87.608863) (xy 54.759393 87.527131) (xy 54.759388 87.527129) (xy 54.605208 87.482335) - (xy 54.605202 87.482334) (xy 54.569181 87.4795) (xy 54.17083 87.4795) (xy 54.170808 87.479501) (xy 54.134794 87.482335) - (xy 53.980611 87.527129) (xy 53.980604 87.527132) (xy 53.923119 87.561128) (xy 53.855395 87.578309) - (xy 53.796881 87.561128) (xy 53.739395 87.527132) (xy 53.739388 87.527129) (xy 53.585208 87.482335) - (xy 53.585202 87.482334) (xy 53.549181 87.4795) (xy 53.15083 87.4795) (xy 53.150808 87.479501) (xy 53.114794 87.482335) - (xy 52.960611 87.527129) (xy 52.960606 87.527131) (xy 52.822404 87.608863) (xy 52.822396 87.608869) - (xy 52.708869 87.722396) (xy 52.708863 87.722404) (xy 52.627131 87.860606) (xy 52.627129 87.860611) - (xy 52.582335 88.014791) (xy 52.582334 88.014797) (xy 52.5795 88.050811) (xy 52.5795 88.549169) - (xy 52.579501 88.549191) (xy 52.582335 88.585205) (xy 52.629186 88.746468) (xy 52.628987 88.816338) - (xy 52.616845 88.844179) (xy 52.607133 88.860601) (xy 52.607129 88.860611) (xy 52.562335 89.014791) - (xy 52.562334 89.014797) (xy 52.5595 89.050811) (xy 50.5005 89.050811) (xy 50.5005 85.002135) (xy 53.0995 85.002135) - (xy 53.0995 86.59787) (xy 53.099501 86.597876) (xy 53.105908 86.657483) (xy 53.156202 86.792328) - (xy 53.156206 86.792335) (xy 53.242452 86.907544) (xy 53.242455 86.907547) (xy 53.357664 86.993793) - (xy 53.357671 86.993797) (xy 53.492517 87.044091) (xy 53.492516 87.044091) (xy 53.499444 87.044835) - (xy 53.552127 87.0505) (xy 55.147872 87.050499) (xy 55.207483 87.044091) (xy 55.342331 86.993796) - (xy 55.457546 86.907546) (xy 55.543796 86.792331) (xy 55.594091 86.657483) (xy 55.6005 86.597873) - (xy 55.600499 85.002135) (xy 57.5995 85.002135) (xy 57.5995 86.59787) (xy 57.599501 86.597876) (xy 57.605908 86.657483) - (xy 57.656202 86.792328) (xy 57.656206 86.792335) (xy 57.742452 86.907544) (xy 57.742455 86.907547) - (xy 57.857664 86.993793) (xy 57.857671 86.993797) (xy 57.992517 87.044091) (xy 57.992516 87.044091) - (xy 57.999444 87.044835) (xy 58.052127 87.0505) (xy 59.647872 87.050499) (xy 59.707483 87.044091) - (xy 59.842331 86.993796) (xy 59.957546 86.907546) (xy 60.043796 86.792331) (xy 60.094091 86.657483) - (xy 60.1005 86.597873) (xy 60.100499 85.002128) (xy 60.094091 84.942517) (xy 60.043796 84.807669) - (xy 60.043795 84.807668) (xy 60.043793 84.807664) (xy 59.957547 84.692455) (xy 59.957544 84.692452) - (xy 59.842335 84.606206) (xy 59.842328 84.606202) (xy 59.707482 84.555908) (xy 59.707483 84.555908) - (xy 59.647883 84.549501) (xy 59.647881 84.5495) (xy 59.647873 84.5495) (xy 59.647864 84.5495) (xy 58.052129 84.5495) - (xy 58.052123 84.549501) (xy 57.992516 84.555908) (xy 57.857671 84.606202) (xy 57.857664 84.606206) - (xy 57.742455 84.692452) (xy 57.742452 84.692455) (xy 57.656206 84.807664) (xy 57.656202 84.807671) - (xy 57.605908 84.942517) (xy 57.599501 85.002116) (xy 57.599501 85.002123) (xy 57.5995 85.002135) - (xy 55.600499 85.002135) (xy 55.600499 85.002128) (xy 55.594091 84.942517) (xy 55.543796 84.807669) - (xy 55.543795 84.807668) (xy 55.543793 84.807664) (xy 55.457547 84.692455) (xy 55.457544 84.692452) - (xy 55.342335 84.606206) (xy 55.342328 84.606202) (xy 55.207482 84.555908) (xy 55.207483 84.555908) - (xy 55.147883 84.549501) (xy 55.147881 84.5495) (xy 55.147873 84.5495) (xy 55.147864 84.5495) (xy 53.552129 84.5495) - (xy 53.552123 84.549501) (xy 53.492516 84.555908) (xy 53.357671 84.606202) (xy 53.357664 84.606206) - (xy 53.242455 84.692452) (xy 53.242452 84.692455) (xy 53.156206 84.807664) (xy 53.156202 84.807671) - (xy 53.105908 84.942517) (xy 53.099501 85.002116) (xy 53.099501 85.002123) (xy 53.0995 85.002135) - (xy 50.5005 85.002135) (xy 50.5005 84.375441) (xy 143.802 84.375441) (xy 143.802 84.624558) (xy 143.802001 84.624575) - (xy 143.834517 84.871561) (xy 143.898998 85.112207) (xy 143.99433 85.342361) (xy 143.994337 85.342376) - (xy 144.1189 85.558126) (xy 144.27056 85.755774) (xy 144.270566 85.755781) (xy 144.446718 85.931933) - (xy 144.446725 85.931939) (xy 144.644373 86.083599) (xy 144.860123 86.208162) (xy 144.860138 86.208169) - (xy 144.959325 86.249253) (xy 145.090293 86.303502) (xy 145.330935 86.367982) (xy 145.577935 86.4005) - (xy 145.577942 86.4005) (xy 145.827058 86.4005) (xy 145.827065 86.4005) (xy 146.074065 86.367982) - (xy 146.314707 86.303502) (xy 146.544873 86.208164) (xy 146.760627 86.083599) (xy 146.958276 85.931938) - (xy 147.134438 85.755776) (xy 147.286099 85.558127) (xy 147.410664 85.342373) (xy 147.506002 85.112207) - (xy 147.570482 84.871565) (xy 147.603 84.624565) (xy 147.603 84.375435) (xy 147.570482 84.128435) - (xy 147.506002 83.887793) (xy 147.410664 83.657627) (xy 147.286099 83.441873) (xy 147.134438 83.244224) - (xy 147.134433 83.244218) (xy 146.958281 83.068066) (xy 146.958274 83.06806) (xy 146.760626 82.9164) - (xy 146.544876 82.791837) (xy 146.544861 82.79183) (xy 146.314707 82.696498) (xy 146.074061 82.632017) - (xy 145.827075 82.599501) (xy 145.82707 82.5995) (xy 145.827065 82.5995) (xy 145.577935 82.5995) - (xy 145.577929 82.5995) (xy 145.577924 82.599501) (xy 145.330938 82.632017) (xy 145.090292 82.696498) - (xy 144.860138 82.79183) (xy 144.860123 82.791837) (xy 144.644373 82.9164) (xy 144.446725 83.06806) - (xy 144.446718 83.068066) (xy 144.270566 83.244218) (xy 144.27056 83.244225) (xy 144.1189 83.441873) - (xy 143.994337 83.657623) (xy 143.99433 83.657638) (xy 143.898998 83.887792) (xy 143.834517 84.128438) - (xy 143.802001 84.375424) (xy 143.802 84.375441) (xy 50.5005 84.375441) (xy 50.5005 81.002135) (xy 53.0995 81.002135) - (xy 53.0995 82.59787) (xy 53.099501 82.597876) (xy 53.105908 82.657483) (xy 53.156202 82.792328) - (xy 53.156206 82.792335) (xy 53.242452 82.907544) (xy 53.242455 82.907547) (xy 53.357664 82.993793) - (xy 53.357671 82.993797) (xy 53.492517 83.044091) (xy 53.492516 83.044091) (xy 53.499444 83.044835) - (xy 53.552127 83.0505) (xy 55.147872 83.050499) (xy 55.207483 83.044091) (xy 55.342331 82.993796) - (xy 55.457546 82.907546) (xy 55.543796 82.792331) (xy 55.594091 82.657483) (xy 55.6005 82.597873) - (xy 55.6005 82.202135) (xy 106.4995 82.202135) (xy 106.4995 83.79787) (xy 106.499501 83.797876) - (xy 106.505908 83.857483) (xy 106.556202 83.992328) (xy 106.556206 83.992335) (xy 106.642452 84.107544) - (xy 106.642455 84.107547) (xy 106.757664 84.193793) (xy 106.757671 84.193797) (xy 106.892517 84.244091) - (xy 106.892516 84.244091) (xy 106.899444 84.244835) (xy 106.952127 84.2505) (xy 108.547872 84.250499) - (xy 108.607483 84.244091) (xy 108.742331 84.193796) (xy 108.857546 84.107546) (xy 108.943796 83.992331) - (xy 108.994091 83.857483) (xy 109.0005 83.797873) (xy 109.000499 82.202135) (xy 116.4995 82.202135) + (xy 59.905908 91.542517) (xy 59.901319 91.585204) (xy 59.899501 91.602123) (xy 59.8995 91.602135) + (xy 50.5005 91.602135) (xy 50.5005 88.550811) (xy 52.5595 88.550811) (xy 52.5595 89.049169) (xy 52.559501 89.049191) + (xy 52.562335 89.085205) (xy 52.60713 89.239391) (xy 52.60713 89.239392) (xy 52.611033 89.245991) + (xy 52.628216 89.313715) (xy 52.619293 89.353112) (xy 52.619307 89.353116) (xy 52.619242 89.353339) + (xy 52.618108 89.358347) (xy 52.617131 89.360604) (xy 52.572335 89.514791) (xy 52.572334 89.514797) + (xy 52.5695 89.550811) (xy 52.5695 90.049169) (xy 52.569501 90.049191) (xy 52.572335 90.085205) + (xy 52.617129 90.239388) (xy 52.617131 90.239393) (xy 52.698863 90.377595) (xy 52.698869 90.377603) + (xy 52.812396 90.49113) (xy 52.8124 90.491133) (xy 52.812402 90.491135) (xy 52.950607 90.572869) + (xy 52.950614 90.572871) (xy 53.104791 90.617664) (xy 53.104794 90.617664) (xy 53.104796 90.617665) + (xy 53.140819 90.6205) (xy 53.53918 90.620499) (xy 53.575204 90.617665) (xy 53.729393 90.572869) + (xy 53.786882 90.538869) (xy 53.854602 90.521688) (xy 53.913117 90.538869) (xy 53.970607 90.572869) + (xy 53.97061 90.572869) (xy 53.970612 90.572871) (xy 54.124791 90.617664) (xy 54.124794 90.617664) + (xy 54.124796 90.617665) (xy 54.160819 90.6205) (xy 54.55918 90.620499) (xy 54.595204 90.617665) + (xy 54.749393 90.572869) (xy 54.887598 90.491135) (xy 55.001135 90.377598) (xy 55.082869 90.239393) + (xy 55.124427 90.096349) (xy 55.127664 90.085208) (xy 55.127664 90.085206) (xy 55.127665 90.085204) + (xy 55.1305 90.049181) (xy 55.130499 89.55082) (xy 55.127665 89.514796) (xy 55.082869 89.360607) + (xy 55.078963 89.354003) (xy 55.071389 89.324145) (xy 55.061762 89.294875) (xy 55.062706 89.289915) + (xy 55.061784 89.28628) (xy 55.065532 89.275072) (xy 55.070888 89.246941) (xy 55.070693 89.246885) + (xy 55.07129 89.244827) (xy 55.071899 89.241633) (xy 55.072863 89.239402) (xy 55.072869 89.239393) + (xy 55.109542 89.113163) (xy 55.117664 89.085208) (xy 55.117664 89.085206) (xy 55.117665 89.085204) + (xy 55.1205 89.049181) (xy 55.120499 88.55082) (xy 55.117705 88.515302) (xy 55.4695 88.515302) (xy 55.4695 88.984697) + (xy 55.472356 89.020991) (xy 55.472357 89.020997) (xy 55.517505 89.176394) (xy 55.523708 89.186884) + (xy 55.531281 89.216741) (xy 55.540909 89.246011) (xy 55.539796 89.250307) (xy 55.540887 89.254608) + (xy 55.523708 89.313116) (xy 55.517505 89.323605) (xy 55.472357 89.479002) (xy 55.472356 89.479008) + (xy 55.4695 89.515302) (xy 55.4695 89.984697) (xy 55.472356 90.020991) (xy 55.472357 90.020997) + (xy 55.517504 90.17639) (xy 55.517505 90.176393) (xy 55.517506 90.176395) (xy 55.554357 90.238707) + (xy 55.599881 90.315684) (xy 55.599887 90.315692) (xy 55.714307 90.430112) (xy 55.714311 90.430115) + (xy 55.714313 90.430117) (xy 55.853605 90.512494) (xy 55.885251 90.521688) (xy 56.009002 90.557642) + (xy 56.009005 90.557642) (xy 56.009007 90.557643) (xy 56.04531 90.5605) (xy 56.045318 90.5605) (xy 56.454682 90.5605) + (xy 56.45469 90.5605) (xy 56.490993 90.557643) (xy 56.490995 90.557642) (xy 56.490997 90.557642) + (xy 56.555606 90.538871) (xy 56.646395 90.512494) (xy 56.667369 90.500089) (xy 56.735088 90.482906) + (xy 56.793613 90.50009) (xy 56.813803 90.512031) (xy 56.96 90.554504) (xy 56.96 90.554503) (xy 57.46 90.554503) + (xy 57.606195 90.512031) (xy 57.745374 90.429721) (xy 57.745383 90.429714) (xy 57.859714 90.315383) + (xy 57.859721 90.315374) (xy 57.8781 90.284298) (xy 110.762 90.284298) (xy 110.762 90.715701) (xy 110.764901 90.752567) + (xy 110.764902 90.752573) (xy 110.810754 90.910393) (xy 110.810755 90.910396) (xy 110.894417 91.051862) + (xy 110.894423 91.05187) (xy 111.010629 91.168076) (xy 111.010633 91.168079) (xy 111.010635 91.168081) + (xy 111.152102 91.251744) (xy 111.175394 91.258511) (xy 111.309926 91.297597) (xy 111.309929 91.297597) + (xy 111.309931 91.297598) (xy 111.346806 91.3005) (xy 111.346814 91.3005) (xy 112.653186 91.3005) + (xy 112.653194 91.3005) (xy 112.690069 91.297598) (xy 112.690071 91.297597) (xy 112.690073 91.297597) + (xy 112.731691 91.285505) (xy 112.847898 91.251744) (xy 112.989365 91.168081) (xy 113.105581 91.051865) + (xy 113.189244 90.910398) (xy 113.235098 90.752569) (xy 113.238 90.715694) (xy 113.238 90.4745) + (xy 113.257685 90.407461) (xy 113.310489 90.361706) (xy 113.362 90.3505) (xy 114.528186 90.3505) + (xy 114.528194 90.3505) (xy 114.565069 90.347598) (xy 114.565071 90.347597) (xy 114.565073 90.347597) + (xy 114.606691 90.335505) (xy 114.722898 90.301744) (xy 114.864365 90.218081) (xy 114.906256 90.17619) + (xy 114.986098 90.096349) (xy 114.987255 90.097506) (xy 115.036405 90.062009) (xy 115.106172 90.058216) + (xy 115.165428 90.091233) (xy 115.254307 90.180112) (xy 115.254311 90.180115) (xy 115.254313 90.180117) + (xy 115.393605 90.262494) (xy 115.434587 90.2744) (xy 115.549002 90.307642) (xy 115.549005 90.307642) + (xy 115.549007 90.307643) (xy 115.58531 90.3105) (xy 115.585318 90.3105) (xy 115.994682 90.3105) + (xy 115.99469 90.3105) (xy 116.030993 90.307643) (xy 116.030995 90.307642) (xy 116.030997 90.307642) + (xy 116.071975 90.295736) (xy 116.186395 90.262494) (xy 116.207369 90.250089) (xy 116.275088 90.232906) + (xy 116.333613 90.25009) (xy 116.353803 90.262031) (xy 116.5 90.304504) (xy 116.5 90.304503) (xy 117 90.304503) + (xy 117.146195 90.262031) (xy 117.285374 90.179721) (xy 117.285383 90.179714) (xy 117.399714 90.065383) + (xy 117.399721 90.065374) (xy 117.482031 89.926195) (xy 117.482033 89.92619) (xy 117.527144 89.770918) + (xy 117.527145 89.770912) (xy 117.52879 89.75) (xy 117 89.75) (xy 117 90.304503) (xy 116.5 90.304503) + (xy 116.5 89.998352) (xy 116.517267 89.935233) (xy 116.522494 89.926395) (xy 116.567643 89.770993) + (xy 116.5705 89.73469) (xy 116.5705 89.26531) (xy 116.567643 89.229007) (xy 116.564079 89.216741) + (xy 116.522495 89.073608) (xy 116.522492 89.0736) (xy 116.517266 89.064763) (xy 116.5 89.001645) + (xy 116.5 88.695494) (xy 117 88.695494) (xy 117 89.25) (xy 117.52879 89.25) (xy 117.527145 89.229089) + (xy 117.482031 89.073804) (xy 117.399721 88.934625) (xy 117.399714 88.934616) (xy 117.285383 88.820285) + (xy 117.285374 88.820278) (xy 117.146193 88.737967) (xy 117.14619 88.737965) (xy 117.000001 88.695493) + (xy 117 88.695494) (xy 116.5 88.695494) (xy 116.499998 88.695493) (xy 116.353809 88.737965) (xy 116.353806 88.737967) + (xy 116.333608 88.749912) (xy 116.265884 88.767092) (xy 116.20737 88.74991) (xy 116.186397 88.737507) + (xy 116.18639 88.737504) (xy 116.030997 88.692357) (xy 116.030991 88.692356) (xy 115.994697 88.6895) + (xy 115.99469 88.6895) (xy 115.58531 88.6895) (xy 115.585302 88.6895) (xy 115.549008 88.692356) + (xy 115.549002 88.692357) (xy 115.393609 88.737504) (xy 115.393606 88.737505) (xy 115.254315 88.819881) + (xy 115.254307 88.819887) (xy 115.139887 88.934307) (xy 115.139876 88.934321) (xy 115.138335 88.936928) + (xy 115.136595 88.938552) (xy 115.135103 88.940476) (xy 115.134792 88.940235) (xy 115.087262 88.984608) + (xy 115.018519 88.997106) (xy 114.953932 88.970455) (xy 114.943927 88.96148) (xy 114.86437 88.881923) + (xy 114.864362 88.881917) (xy 114.722896 88.798255) (xy 114.722893 88.798254) (xy 114.565073 88.752402) + (xy 114.565067 88.752401) (xy 114.528201 88.7495) (xy 114.528194 88.7495) (xy 113.221806 88.7495) + (xy 113.221798 88.7495) (xy 113.184932 88.752401) (xy 113.184926 88.752402) (xy 113.027106 88.798254) + (xy 113.027103 88.798255) (xy 112.968806 88.832732) (xy 112.905685 88.85) (xy 112.25 88.85) (xy 112.25 89.4) + (xy 112.513 89.4) (xy 112.521685 89.40255) (xy 112.530647 89.401262) (xy 112.554687 89.41224) (xy 112.580039 89.419685) + (xy 112.585966 89.426525) (xy 112.594203 89.430287) (xy 112.608492 89.452521) (xy 112.625794 89.472489) + (xy 112.628081 89.483003) (xy 112.631977 89.489065) (xy 112.637 89.524) (xy 112.637 89.5755) (xy 112.617315 89.642539) + (xy 112.564511 89.688294) (xy 112.513 89.6995) (xy 111.346798 89.6995) (xy 111.309932 89.702401) + (xy 111.309926 89.702402) (xy 111.152106 89.748254) (xy 111.152103 89.748255) (xy 111.010637 89.831917) + (xy 111.010629 89.831923) (xy 110.894423 89.948129) (xy 110.894417 89.948137) (xy 110.810755 90.089603) + (xy 110.810754 90.089606) (xy 110.764902 90.247426) (xy 110.764901 90.247432) (xy 110.762 90.284298) + (xy 57.8781 90.284298) (xy 57.916865 90.21875) (xy 57.942031 90.176195) (xy 57.942033 90.17619) + (xy 57.987144 90.020918) (xy 57.987145 90.020912) (xy 57.98879 90) (xy 57.46 90) (xy 57.46 90.554503) + (xy 56.96 90.554503) (xy 56.96 90.248352) (xy 56.977267 90.185233) (xy 56.982494 90.176395) (xy 57.008988 90.085205) + (xy 57.027642 90.020997) (xy 57.027643 90.020991) (xy 57.028318 90.012416) (xy 57.0305 89.98469) + (xy 57.0305 89.51531) (xy 57.029295 89.5) (xy 57.46 89.5) (xy 57.98879 89.5) (xy 57.987145 89.479089) + (xy 57.942032 89.323805) (xy 57.935715 89.313125) (xy 57.91853 89.245402) (xy 57.935715 89.186875) + (xy 57.942031 89.176195) (xy 57.987145 89.02091) (xy 57.98879 89) (xy 57.46 89) (xy 57.46 89.5) + (xy 57.029295 89.5) (xy 57.027643 89.479007) (xy 57.025749 89.472489) (xy 56.982495 89.323608) (xy 56.982492 89.3236) + (xy 56.977266 89.314763) (xy 56.972916 89.298862) (xy 56.965023 89.28658) (xy 56.96 89.251645) (xy 56.96 89.248352) + (xy 56.977267 89.185233) (xy 56.982494 89.176395) (xy 56.990562 89.148627) (xy 57.027642 89.020997) + (xy 57.027643 89.020991) (xy 57.0305 88.98469) (xy 57.0305 88.850001) (xy 110.765204 88.850001) + (xy 110.765399 88.852486) (xy 110.811218 89.010198) (xy 110.894814 89.151552) (xy 110.894821 89.151561) + (xy 111.010938 89.267678) (xy 111.010947 89.267685) (xy 111.152303 89.351282) (xy 111.152306 89.351283) + (xy 111.310004 89.397099) (xy 111.31001 89.3971) (xy 111.34685 89.399999) (xy 111.346866 89.4) (xy 111.75 89.4) + (xy 111.75 88.85) (xy 110.765205 88.85) (xy 110.765204 88.850001) (xy 57.0305 88.850001) (xy 57.0305 88.51531) + (xy 57.029295 88.5) (xy 57.48 88.5) (xy 57.98879 88.5) (xy 57.987145 88.479091) (xy 57.972841 88.429855) + (xy 57.948272 88.349998) (xy 110.765204 88.349998) (xy 110.765205 88.35) (xy 111.75 88.35) (xy 112.25 88.35) + (xy 113.234795 88.35) (xy 113.234795 88.349998) (xy 113.2346 88.347513) (xy 113.188781 88.189801) + (xy 113.105185 88.048447) (xy 113.105178 88.048438) (xy 112.989061 87.932321) (xy 112.989052 87.932314) + (xy 112.847696 87.848717) (xy 112.847693 87.848716) (xy 112.689995 87.8029) (xy 112.689989 87.802899) + (xy 112.653149 87.8) (xy 112.25 87.8) (xy 112.25 88.35) (xy 111.75 88.35) (xy 111.75 87.8) (xy 111.34685 87.8) + (xy 111.31001 87.802899) (xy 111.310004 87.8029) (xy 111.152306 87.848716) (xy 111.152303 87.848717) + (xy 111.010947 87.932314) (xy 111.010938 87.932321) (xy 110.894821 88.048438) (xy 110.894814 88.048447) + (xy 110.811218 88.189801) (xy 110.765399 88.347513) (xy 110.765204 88.349998) (xy 57.948272 88.349998) + (xy 57.933927 88.303371) (xy 57.933658 88.282483) (xy 57.928533 88.262235) (xy 57.933193 88.246379) + (xy 57.933028 88.233507) (xy 57.940488 88.221563) (xy 57.945715 88.203783) (xy 57.962031 88.176195) + (xy 58.007145 88.02091) (xy 58.00879 88) (xy 57.48 88) (xy 57.48 88.5) (xy 57.029295 88.5) (xy 57.027643 88.479007) + (xy 57.021333 88.457289) (xy 56.982495 88.323608) (xy 56.979395 88.316443) (xy 56.9825 88.315099) + (xy 56.969113 88.262275) (xy 56.986293 88.203789) (xy 57.002494 88.176395) (xy 57.028988 88.085205) + (xy 57.047642 88.020997) (xy 57.047643 88.020991) (xy 57.0505 87.98469) (xy 57.0505 87.51531) (xy 57.047643 87.479007) + (xy 57.045006 87.469931) (xy 57.002495 87.323608) (xy 57.002492 87.3236) (xy 56.997266 87.314763) + (xy 56.98 87.251645) (xy 56.98 86.978254) (xy 57.48 86.978254) (xy 57.48 87.5) (xy 58.00879 87.5) + (xy 58.007145 87.479089) (xy 57.962031 87.323804) (xy 57.909182 87.234441) (xy 57.891999 87.166717) + (xy 57.914159 87.100455) (xy 57.968625 87.056691) (xy 58.029168 87.048031) (xy 58.052127 87.0505) + (xy 59.647872 87.050499) (xy 59.707483 87.044091) (xy 59.842331 86.993796) (xy 59.957546 86.907546) + (xy 60.043796 86.792331) (xy 60.094091 86.657483) (xy 60.1005 86.597873) (xy 60.100499 85.002128) + (xy 60.094091 84.942517) (xy 60.085387 84.919181) (xy 60.043797 84.807671) (xy 60.043793 84.807664) + (xy 59.957547 84.692455) (xy 59.957544 84.692452) (xy 59.842335 84.606206) (xy 59.842328 84.606202) + (xy 59.707482 84.555908) (xy 59.707483 84.555908) (xy 59.647883 84.549501) (xy 59.647881 84.5495) + (xy 59.647873 84.5495) (xy 59.647864 84.5495) (xy 58.052129 84.5495) (xy 58.052123 84.549501) (xy 57.992516 84.555908) + (xy 57.857671 84.606202) (xy 57.857664 84.606206) (xy 57.742455 84.692452) (xy 57.742452 84.692455) + (xy 57.656206 84.807664) (xy 57.656202 84.807671) (xy 57.605908 84.942517) (xy 57.60247 84.9745) + (xy 57.599501 85.002123) (xy 57.5995 85.002135) (xy 57.5995 86.59787) (xy 57.599501 86.597876) (xy 57.605909 86.657484) + (xy 57.655425 86.790246) (xy 57.65647 86.804867) (xy 57.662301 86.81832) (xy 57.658913 86.839018) + (xy 57.660409 86.859937) (xy 57.653383 86.872803) (xy 57.651015 86.887272) (xy 57.636973 86.902853) + (xy 57.626923 86.92126) (xy 57.614056 86.928285) (xy 57.604242 86.939177) (xy 57.571858 86.953212) + (xy 57.48 86.978254) (xy 56.98 86.978254) (xy 56.98 86.945494) (xy 56.979998 86.945493) (xy 56.833809 86.987965) + (xy 56.833806 86.987967) (xy 56.813608 86.999912) (xy 56.745884 87.017092) (xy 56.68737 86.99991) + (xy 56.666397 86.987507) (xy 56.66639 86.987504) (xy 56.510997 86.942357) (xy 56.510991 86.942356) + (xy 56.474697 86.9395) (xy 56.47469 86.9395) (xy 56.06531 86.9395) (xy 56.065302 86.9395) (xy 56.029008 86.942356) + (xy 56.029002 86.942357) (xy 55.873609 86.987504) (xy 55.873606 86.987505) (xy 55.734315 87.069881) + (xy 55.734307 87.069887) (xy 55.619887 87.184307) (xy 55.619881 87.184315) (xy 55.537505 87.323606) + (xy 55.537504 87.323609) (xy 55.492357 87.479002) (xy 55.492356 87.479008) (xy 55.4895 87.515302) + (xy 55.4895 87.984697) (xy 55.492356 88.020991) (xy 55.492357 88.020997) (xy 55.537504 88.17639) + (xy 55.540603 88.183551) (xy 55.537535 88.184878) (xy 55.550876 88.237984) (xy 55.533707 88.296207) + (xy 55.517509 88.323597) (xy 55.517504 88.32361) (xy 55.472357 88.479002) (xy 55.472356 88.479008) + (xy 55.4695 88.515302) (xy 55.117705 88.515302) (xy 55.117665 88.514796) (xy 55.0742 88.365187) + (xy 55.070813 88.353529) (xy 55.071012 88.283659) (xy 55.083154 88.255819) (xy 55.092869 88.239393) + (xy 55.093279 88.237984) (xy 55.137664 88.085208) (xy 55.137664 88.085206) (xy 55.137665 88.085204) + (xy 55.1405 88.049181) (xy 55.140499 87.55082) (xy 55.137665 87.514796) (xy 55.092869 87.360607) + (xy 55.020456 87.238163) (xy 55.020135 87.23762) (xy 55.002952 87.169896) (xy 55.025112 87.103633) + (xy 55.079578 87.05987) (xy 55.126867 87.050499) (xy 55.147871 87.050499) (xy 55.147872 87.050499) + (xy 55.207483 87.044091) (xy 55.342331 86.993796) (xy 55.457546 86.907546) (xy 55.543796 86.792331) + (xy 55.594091 86.657483) (xy 55.6005 86.597873) (xy 55.600499 85.002128) (xy 55.594091 84.942517) + (xy 55.585387 84.919181) (xy 55.543797 84.807671) (xy 55.543793 84.807664) (xy 55.457547 84.692455) + (xy 55.457544 84.692452) (xy 55.342335 84.606206) (xy 55.342328 84.606202) (xy 55.207482 84.555908) + (xy 55.207483 84.555908) (xy 55.147883 84.549501) (xy 55.147881 84.5495) (xy 55.147873 84.5495) + (xy 55.147864 84.5495) (xy 53.552129 84.5495) (xy 53.552123 84.549501) (xy 53.492516 84.555908) + (xy 53.357671 84.606202) (xy 53.357664 84.606206) (xy 53.242455 84.692452) (xy 53.242452 84.692455) + (xy 53.156206 84.807664) (xy 53.156202 84.807671) (xy 53.105908 84.942517) (xy 53.10247 84.9745) + (xy 53.099501 85.002123) (xy 53.0995 85.002135) (xy 53.0995 86.59787) (xy 53.099501 86.597876) (xy 53.105908 86.657483) + (xy 53.156202 86.792328) (xy 53.156203 86.79233) (xy 53.15828 86.795104) (xy 53.15949 86.798349) + (xy 53.160454 86.800114) (xy 53.1602 86.800252) (xy 53.182696 86.860569) (xy 53.167844 86.928841) + (xy 53.118438 86.978247) (xy 53.093607 86.98849) (xy 52.960612 87.027129) (xy 52.960606 87.027131) + (xy 52.822404 87.108863) (xy 52.822396 87.108869) (xy 52.708869 87.222396) (xy 52.708863 87.222404) + (xy 52.627131 87.360606) (xy 52.627129 87.360611) (xy 52.582335 87.514791) (xy 52.582334 87.514797) + (xy 52.5795 87.550811) (xy 52.5795 88.049169) (xy 52.579501 88.049191) (xy 52.582335 88.085205) + (xy 52.629186 88.246468) (xy 52.628987 88.316338) (xy 52.616845 88.344179) (xy 52.607133 88.360601) + (xy 52.607129 88.360611) (xy 52.562335 88.514791) (xy 52.562334 88.514797) (xy 52.5595 88.550811) + (xy 50.5005 88.550811) (xy 50.5005 81.002135) (xy 53.0995 81.002135) (xy 53.0995 82.59787) (xy 53.099501 82.597876) + (xy 53.105908 82.657483) (xy 53.156202 82.792328) (xy 53.156206 82.792335) (xy 53.242452 82.907544) + (xy 53.242455 82.907547) (xy 53.357664 82.993793) (xy 53.357671 82.993797) (xy 53.492517 83.044091) + (xy 53.492516 83.044091) (xy 53.499444 83.044835) (xy 53.552127 83.0505) (xy 55.147872 83.050499) + (xy 55.207483 83.044091) (xy 55.342331 82.993796) (xy 55.457546 82.907546) (xy 55.543796 82.792331) + (xy 55.594091 82.657483) (xy 55.6005 82.597873) (xy 55.600499 81.952135) (xy 95.7495 81.952135) + (xy 95.7495 83.54787) (xy 95.749501 83.547876) (xy 95.755908 83.607483) (xy 95.806202 83.742328) + (xy 95.806206 83.742335) (xy 95.892452 83.857544) (xy 95.892453 83.857544) (xy 95.892454 83.857546) + (xy 95.921615 83.879376) (xy 95.950145 83.900734) (xy 95.992015 83.956668) (xy 95.996999 84.02636) + (xy 95.963513 84.087683) (xy 95.950145 84.099266) (xy 95.892452 84.142455) (xy 95.806206 84.257664) + (xy 95.806202 84.257671) (xy 95.755908 84.392517) (xy 95.749501 84.452116) (xy 95.7495 84.452135) + (xy 95.7495 86.04787) (xy 95.749501 86.047876) (xy 95.755908 86.107483) (xy 95.806202 86.242328) + (xy 95.806206 86.242335) (xy 95.892452 86.357544) (xy 95.892455 86.357547) (xy 96.007664 86.443793) + (xy 96.007671 86.443797) (xy 96.142517 86.494091) (xy 96.142516 86.494091) (xy 96.149444 86.494835) + (xy 96.202127 86.5005) (xy 97.797872 86.500499) (xy 97.857483 86.494091) (xy 97.992331 86.443796) + (xy 98.107546 86.357546) (xy 98.193796 86.242331) (xy 98.244091 86.107483) (xy 98.2505 86.047873) + (xy 98.250499 85.644805) (xy 98.270183 85.577769) (xy 98.322987 85.532014) (xy 98.392146 85.52207) + (xy 98.455702 85.551095) (xy 98.46218 85.557127) (xy 98.573129 85.668076) (xy 98.573133 85.668079) + (xy 98.573135 85.668081) (xy 98.714602 85.751744) (xy 98.756224 85.763836) (xy 98.872426 85.797597) + (xy 98.872429 85.797597) (xy 98.872431 85.797598) (xy 98.909306 85.8005) (xy 98.909314 85.8005) + (xy 100.215686 85.8005) (xy 100.215694 85.8005) (xy 100.252569 85.797598) (xy 100.252571 85.797597) + (xy 100.252573 85.797597) (xy 100.294191 85.785505) (xy 100.410398 85.751744) (xy 100.551865 85.668081) + (xy 100.668081 85.551865) (xy 100.751744 85.410398) (xy 100.797598 85.252569) (xy 100.7978 85.25) + (xy 122.695496 85.25) (xy 123.25 85.25) (xy 123.25 84.75) (xy 122.695496 84.75) (xy 122.737968 84.896194) + (xy 122.762029 84.93688) (xy 122.77921 85.004604) (xy 122.762029 85.06312) (xy 122.737968 85.103805) + (xy 122.695496 85.25) (xy 100.7978 85.25) (xy 100.8005 85.215694) (xy 100.8005 84.9745) (xy 100.820185 84.907461) + (xy 100.872989 84.861706) (xy 100.9245 84.8505) (xy 102.090686 84.8505) (xy 102.090694 84.8505) + (xy 102.127569 84.847598) (xy 102.127571 84.847597) (xy 102.127573 84.847597) (xy 102.169191 84.835505) + (xy 102.285398 84.801744) (xy 102.426865 84.718081) (xy 102.452494 84.692452) (xy 102.507533 84.637414) + (xy 102.543076 84.60187) (xy 102.543081 84.601865) (xy 102.626744 84.460398) (xy 102.672598 84.302569) + (xy 102.6755 84.265694) (xy 102.6755 83.834306) (xy 102.672598 83.797431) (xy 102.667823 83.780997) + (xy 102.626745 83.639606) (xy 102.626744 83.639603) (xy 102.626744 83.639602) (xy 102.543081 83.498135) + (xy 102.543079 83.498133) (xy 102.543076 83.498129) (xy 102.42687 83.381923) (xy 102.426862 83.381917) + (xy 102.287501 83.2995) (xy 102.285398 83.298256) (xy 102.285397 83.298255) (xy 102.285396 83.298255) + (xy 102.285393 83.298254) (xy 102.127573 83.252402) (xy 102.127567 83.252401) (xy 102.090701 83.2495) + (xy 102.090694 83.2495) (xy 100.9245 83.2495) (xy 100.857461 83.229815) (xy 100.811706 83.177011) + (xy 100.8005 83.1255) (xy 100.8005 82.884313) (xy 100.800499 82.884298) (xy 100.798732 82.861849) + (xy 100.797598 82.847431) (xy 100.786421 82.808961) (xy 100.751745 82.689606) (xy 100.751744 82.689603) + (xy 100.751744 82.689602) (xy 100.668081 82.548135) (xy 100.668079 82.548133) (xy 100.668076 82.548129) + (xy 100.55187 82.431923) (xy 100.551862 82.431917) (xy 100.410396 82.348255) (xy 100.410393 82.348254) + (xy 100.305853 82.317882) (xy 100.252573 82.302402) (xy 100.252567 82.302401) (xy 100.215701 82.2995) + (xy 100.215694 82.2995) (xy 98.909306 82.2995) (xy 98.909298 82.2995) (xy 98.872432 82.302401) (xy 98.872426 82.302402) + (xy 98.714606 82.348254) (xy 98.714603 82.348255) (xy 98.573137 82.431917) (xy 98.573133 82.43192) + (xy 98.46218 82.542873) (xy 98.400857 82.576357) (xy 98.331165 82.571373) (xy 98.275232 82.529501) + (xy 98.250815 82.464037) (xy 98.250499 82.455191) (xy 98.250499 82.202135) (xy 116.4995 82.202135) (xy 116.4995 83.79787) (xy 116.499501 83.797876) (xy 116.505908 83.857483) (xy 116.556202 83.992328) (xy 116.556206 83.992335) (xy 116.642452 84.107544) (xy 116.642455 84.107547) (xy 116.757664 84.193793) (xy 116.757671 84.193797) (xy 116.892517 84.244091) (xy 116.892516 84.244091) (xy 116.899444 84.244835) (xy 116.952127 84.2505) (xy 118.547872 84.250499) (xy 118.607483 84.244091) (xy 118.742331 84.193796) (xy 118.857546 84.107546) (xy 118.943796 83.992331) (xy 118.994091 83.857483) (xy 119.0005 83.797873) - (xy 119.000499 82.202128) (xy 118.994091 82.142517) (xy 118.943796 82.007669) (xy 118.943795 82.007668) - (xy 118.943793 82.007664) (xy 118.857547 81.892455) (xy 118.857544 81.892452) (xy 118.742335 81.806206) - (xy 118.742328 81.806202) (xy 118.607482 81.755908) (xy 118.607483 81.755908) (xy 118.547883 81.749501) - (xy 118.547881 81.7495) (xy 118.547873 81.7495) (xy 118.547864 81.7495) (xy 116.952129 81.7495) - (xy 116.952123 81.749501) (xy 116.892516 81.755908) (xy 116.757671 81.806202) (xy 116.757664 81.806206) - (xy 116.642455 81.892452) (xy 116.642452 81.892455) (xy 116.556206 82.007664) (xy 116.556202 82.007671) - (xy 116.505908 82.142517) (xy 116.499857 82.198805) (xy 116.499501 82.202123) (xy 116.4995 82.202135) - (xy 109.000499 82.202135) (xy 109.000499 82.202128) (xy 108.994091 82.142517) (xy 108.943796 82.007669) - (xy 108.943795 82.007668) (xy 108.943793 82.007664) (xy 108.857547 81.892455) (xy 108.857544 81.892452) - (xy 108.742335 81.806206) (xy 108.742328 81.806202) (xy 108.607482 81.755908) (xy 108.607483 81.755908) - (xy 108.547883 81.749501) (xy 108.547881 81.7495) (xy 108.547873 81.7495) (xy 108.547864 81.7495) - (xy 106.952129 81.7495) (xy 106.952123 81.749501) (xy 106.892516 81.755908) (xy 106.757671 81.806202) - (xy 106.757664 81.806206) (xy 106.642455 81.892452) (xy 106.642452 81.892455) (xy 106.556206 82.007664) - (xy 106.556202 82.007671) (xy 106.505908 82.142517) (xy 106.499857 82.198805) (xy 106.499501 82.202123) - (xy 106.4995 82.202135) (xy 55.6005 82.202135) (xy 55.600499 81.755909) (xy 55.600499 81.002129) - (xy 55.600498 81.002123) (xy 55.600497 81.002116) (xy 55.594091 80.942517) (xy 55.543796 80.807669) - (xy 55.543795 80.807668) (xy 55.543793 80.807664) (xy 55.457547 80.692455) (xy 55.457544 80.692452) - (xy 55.342335 80.606206) (xy 55.342328 80.606202) (xy 55.207482 80.555908) (xy 55.207483 80.555908) - (xy 55.147883 80.549501) (xy 55.147881 80.5495) (xy 55.147873 80.5495) (xy 55.147864 80.5495) (xy 53.552129 80.5495) - (xy 53.552123 80.549501) (xy 53.492516 80.555908) (xy 53.357671 80.606202) (xy 53.357664 80.606206) - (xy 53.242455 80.692452) (xy 53.242452 80.692455) (xy 53.156206 80.807664) (xy 53.156202 80.807671) - (xy 53.105908 80.942517) (xy 53.099501 81.002116) (xy 53.099501 81.002123) (xy 53.0995 81.002135) - (xy 50.5005 81.002135) (xy 50.5005 78.881902) (xy 99.7495 78.881902) (xy 99.7495 79.118097) (xy 99.786446 79.351368) - (xy 99.859433 79.575996) (xy 99.947676 79.749181) (xy 99.966657 79.786433) (xy 100.105483 79.97751) - (xy 100.27249 80.144517) (xy 100.463567 80.283343) (xy 100.530926 80.317664) (xy 100.674003 80.390566) - (xy 100.674005 80.390566) (xy 100.674008 80.390568) (xy 100.794412 80.429689) (xy 100.898631 80.463553) - (xy 101.131903 80.5005) (xy 101.131908 80.5005) (xy 101.368097 80.5005) (xy 101.601368 80.463553) - (xy 101.825992 80.390568) (xy 102.036433 80.283343) (xy 102.22751 80.144517) (xy 102.394517 79.97751) - (xy 102.533343 79.786433) (xy 102.640568 79.575992) (xy 102.713553 79.351368) (xy 102.729478 79.25082) - (xy 102.7505 79.118097) (xy 102.7505 78.881902) (xy 106.2495 78.881902) (xy 106.2495 79.118097) - (xy 106.286446 79.351368) (xy 106.359433 79.575996) (xy 106.447676 79.749181) (xy 106.466657 79.786433) - (xy 106.605483 79.97751) (xy 106.77249 80.144517) (xy 106.963567 80.283343) (xy 107.030926 80.317664) + (xy 119.0005 83.335302) (xy 122.6895 83.335302) (xy 122.6895 83.744697) (xy 122.692356 83.780991) + (xy 122.692357 83.780997) (xy 122.737504 83.93639) (xy 122.737507 83.936397) (xy 122.74991 83.95737) + (xy 122.767093 84.025094) (xy 122.749912 84.083608) (xy 122.737968 84.103804) (xy 122.695496 84.25) + (xy 123.001648 84.25) (xy 123.064766 84.267267) (xy 123.073605 84.272494) (xy 123.073608 84.272494) + (xy 123.07361 84.272496) (xy 123.229002 84.317642) (xy 123.229005 84.317642) (xy 123.229007 84.317643) + (xy 123.26531 84.3205) (xy 123.265318 84.3205) (xy 123.734682 84.3205) (xy 123.73469 84.3205) (xy 123.770993 84.317643) + (xy 123.770995 84.317642) (xy 123.770997 84.317642) (xy 123.926389 84.272496) (xy 123.926389 84.272495) + (xy 123.926395 84.272494) (xy 123.935233 84.267267) (xy 123.951132 84.262917) (xy 123.963417 84.255023) + (xy 123.998352 84.25) (xy 124.065208 84.25) (xy 124.132247 84.269685) (xy 124.17194 84.310879) (xy 124.201827 84.361416) + (xy 124.201834 84.361425) (xy 124.313574 84.473165) (xy 124.313583 84.473172) (xy 124.432109 84.543268) + (xy 124.455883 84.568729) (xy 124.47965 84.594054) (xy 124.479679 84.594215) (xy 124.479793 84.594337) + (xy 124.486032 84.628642) (xy 124.492329 84.662764) (xy 124.492266 84.662916) (xy 124.492296 84.663079) + (xy 124.479031 84.695233) (xy 124.465849 84.727421) (xy 124.465699 84.727551) (xy 124.465651 84.727668) + (xy 124.440113 84.751574) (xy 124.436212 84.754305) (xy 124.31358 84.82683) (xy 124.269056 84.871353) + (xy 124.260173 84.877574) (xy 124.236933 84.885411) (xy 124.215408 84.897166) (xy 124.195843 84.899269) + (xy 124.193968 84.899902) (xy 124.192765 84.8996) (xy 124.189048 84.9) (xy 124.069 84.9) (xy 124.001961 84.880315) + (xy 123.956206 84.827511) (xy 123.945 84.776) (xy 123.945 84.75) (xy 123.75 84.75) (xy 123.75 85.376) + (xy 123.730315 85.443039) (xy 123.677511 85.488794) (xy 123.626 85.5) (xy 123.5 85.5) (xy 123.5 85.5555) + (xy 123.480315 85.622539) (xy 123.427511 85.668294) (xy 123.376 85.6795) (xy 123.265302 85.6795) + (xy 123.229008 85.682356) (xy 123.229002 85.682357) (xy 123.07361 85.727503) (xy 123.073605 85.727506) + (xy 123.064766 85.732732) (xy 123.001648 85.75) (xy 122.695496 85.75) (xy 122.737968 85.896194) + (xy 122.749911 85.916389) (xy 122.767092 85.984113) (xy 122.749911 86.042628) (xy 122.737506 86.063604) + (xy 122.737504 86.063609) (xy 122.692357 86.219002) (xy 122.692356 86.219008) (xy 122.6895 86.255302) + (xy 122.6895 86.664697) (xy 122.692356 86.700991) (xy 122.692357 86.700997) (xy 122.737504 86.85639) + (xy 122.737505 86.856393) (xy 122.737506 86.856395) (xy 122.74721 86.872803) (xy 122.819881 86.995684) + (xy 122.819887 86.995692) (xy 122.934307 87.110112) (xy 122.934311 87.110115) (xy 122.934313 87.110117) + (xy 123.073605 87.192494) (xy 123.114587 87.2044) (xy 123.229002 87.237642) (xy 123.229005 87.237642) + (xy 123.229007 87.237643) (xy 123.26531 87.2405) (xy 123.265318 87.2405) (xy 123.734682 87.2405) + (xy 123.73469 87.2405) (xy 123.770993 87.237643) (xy 123.924732 87.192977) (xy 123.994601 87.193176) + (xy 124.053271 87.231118) (xy 124.078403 87.277458) (xy 124.12138 87.425384) (xy 124.121382 87.42539) + (xy 124.201827 87.561416) (xy 124.201834 87.561425) (xy 124.313574 87.673165) (xy 124.313578 87.673168) + (xy 124.31358 87.67317) (xy 124.44961 87.753618) (xy 124.601373 87.797709) (xy 124.636837 87.8005) + (xy 125.8255 87.800499) (xy 125.892539 87.820184) (xy 125.938294 87.872987) (xy 125.9495 87.924499) + (xy 125.9495 89.11315) (xy 125.949501 89.113175) (xy 125.952291 89.148627) (xy 125.99638 89.300385) + (xy 125.996382 89.30039) (xy 126.080801 89.443135) (xy 126.078371 89.444571) (xy 126.081942 89.45366) + (xy 126.094477 89.473165) (xy 126.097289 89.492723) (xy 126.099012 89.497109) (xy 126.0995 89.5081) + (xy 126.0995 89.570404) (xy 126.079815 89.637443) (xy 126.063181 89.658085) (xy 126.008869 89.712396) + (xy 126.008863 89.712404) (xy 125.927131 89.850606) (xy 125.927129 89.850611) (xy 125.882335 90.004791) + (xy 125.882334 90.004797) (xy 125.8795 90.040811) (xy 125.8795 90.3555) (xy 125.859815 90.422539) + (xy 125.807011 90.468294) (xy 125.7555 90.4795) (xy 125.50083 90.4795) (xy 125.500808 90.479501) + (xy 125.464794 90.482335) (xy 125.310611 90.527129) (xy 125.310604 90.527132) (xy 125.253119 90.561128) + (xy 125.185395 90.578309) (xy 125.126881 90.561128) (xy 125.069395 90.527132) (xy 125.069388 90.527129) + (xy 124.915208 90.482335) (xy 124.915202 90.482334) (xy 124.879181 90.4795) (xy 124.48083 90.4795) + (xy 124.480808 90.479501) (xy 124.444794 90.482335) (xy 124.290611 90.527129) (xy 124.290606 90.527131) + (xy 124.152404 90.608863) (xy 124.152396 90.608869) (xy 124.038869 90.722396) (xy 124.038863 90.722404) + (xy 123.957131 90.860606) (xy 123.957129 90.860611) (xy 123.912335 91.014791) (xy 123.912334 91.014797) + (xy 123.9095 91.050811) (xy 123.9095 91.549169) (xy 123.909501 91.549191) (xy 123.912335 91.585205) + (xy 123.957129 91.739388) (xy 123.957131 91.739393) (xy 124.038863 91.877595) (xy 124.038869 91.877603) + (xy 124.152396 91.99113) (xy 124.1524 91.991133) (xy 124.152402 91.991135) (xy 124.290607 92.072869) + (xy 124.331268 92.084682) (xy 124.444791 92.117664) (xy 124.444794 92.117664) (xy 124.444796 92.117665) + (xy 124.480819 92.1205) (xy 124.87918 92.120499) (xy 124.915204 92.117665) (xy 125.069393 92.072869) + (xy 125.126882 92.038869) (xy 125.194602 92.021688) (xy 125.235978 92.030442) (xy 125.244869 92.033992) + (xy 125.310607 92.072869) (xy 125.426792 92.106623) (xy 125.432388 92.108858) (xy 125.455322 92.126858) + (xy 125.479891 92.142549) (xy 125.482479 92.148174) (xy 125.48735 92.151997) (xy 125.49691 92.179537) + (xy 125.509097 92.206021) (xy 125.508396 92.212623) (xy 125.510264 92.218002) (xy 125.505918 92.235988) + (xy 125.502592 92.267352) (xy 125.455908 92.392517) (xy 125.449501 92.452116) (xy 125.4495 92.452135) + (xy 125.4495 94.04787) (xy 125.449501 94.047876) (xy 125.455909 94.107484) (xy 125.465378 94.132873) + (xy 125.466649 94.150653) (xy 125.47288 94.167358) (xy 125.46909 94.184779) (xy 125.470362 94.202565) + (xy 125.461816 94.218214) (xy 125.458028 94.235631) (xy 125.436878 94.263886) (xy 125.431284 94.269479) + (xy 125.431284 94.26948) (xy 125.31948 94.381284) (xy 125.319479 94.381284) (xy 125.319478 94.381285) + (xy 125.169479 94.531284) (xy 125.141797 94.579232) (xy 125.130096 94.5995) (xy 125.090423 94.668215) + (xy 125.049499 94.820943) (xy 125.049499 94.820945) (xy 125.049499 94.989046) (xy 125.0495 94.989059) + (xy 125.0495 104.66333) (xy 125.049499 104.663348) (xy 125.049499 104.829054) (xy 125.049498 104.829054) + (xy 125.049499 104.829057) (xy 125.090423 104.981785) (xy 125.100888 104.99991) (xy 125.106068 105.008882) + (xy 125.106068 105.008885) (xy 125.10607 105.008885) (xy 125.16948 105.118716) (xy 125.21948 105.168716) + (xy 125.25831 105.207546) (xy 125.331284 105.28052) (xy 125.387499 105.312975) (xy 125.435715 105.363542) + (xy 125.4495 105.420363) (xy 125.4495 106.69787) (xy 125.449501 106.697876) (xy 125.455908 106.757483) + (xy 125.506202 106.892328) (xy 125.506206 106.892335) (xy 125.592452 107.007544) (xy 125.592455 107.007547) + (xy 125.707664 107.093793) (xy 125.707671 107.093797) (xy 125.842517 107.144091) (xy 125.842516 107.144091) + (xy 125.849444 107.144835) (xy 125.902127 107.1505) (xy 127.497872 107.150499) (xy 127.557483 107.144091) + (xy 127.692331 107.093796) (xy 127.807546 107.007546) (xy 127.893796 106.892331) (xy 127.944091 106.757483) + (xy 127.9505 106.697873) (xy 127.950499 105.550095) (xy 127.959143 105.520655) (xy 127.965667 105.490669) + (xy 127.969421 105.485653) (xy 127.970184 105.483057) (xy 127.986813 105.46242) (xy 128.118713 105.330521) + (xy 128.118716 105.33052) (xy 128.23052 105.218716) (xy 128.280639 105.131904) (xy 128.309577 105.081785) + (xy 128.3505 104.929058) (xy 128.3505 104.770943) (xy 128.3505 104.720943) (xy 128.3505 102.735097) + (xy 128.370185 102.668058) (xy 128.386814 102.647421) (xy 129.22975 101.804485) (xy 129.29107 101.771002) + (xy 129.360761 101.775986) (xy 129.392914 101.793792) (xy 129.43241 101.824098) (xy 129.432412 101.824099) + (xy 129.578365 101.884554) (xy 129.578369 101.884555) (xy 129.695676 101.899999) (xy 130.172499 101.899999) + (xy 130.1725 101.899998) (xy 130.1725 101.374499) (xy 130.17505 101.365813) (xy 130.173762 101.356852) + (xy 130.18474 101.332811) (xy 130.192185 101.30746) (xy 130.199025 101.301532) (xy 130.202787 101.293296) + (xy 130.225021 101.279006) (xy 130.244989 101.261705) (xy 130.255503 101.259417) (xy 130.261565 101.255522) + (xy 130.2965 101.250499) (xy 130.4485 101.250499) (xy 130.515539 101.270184) (xy 130.561294 101.322988) + (xy 130.5725 101.374499) (xy 130.5725 101.899999) (xy 131.049324 101.899999) (xy 131.166628 101.884557) + (xy 131.166633 101.884555) (xy 131.312585 101.8241) (xy 131.437924 101.727924) (xy 131.5341 101.602586) + (xy 131.594555 101.456631) (xy 131.602012 101.4) (xy 131.384303 101.4) (xy 131.358983 101.392565) + (xy 131.332862 101.388826) (xy 131.325987 101.382876) (xy 131.317264 101.380315) (xy 131.299985 101.360374) + (xy 131.280029 101.343104) (xy 131.277461 101.33438) (xy 131.271509 101.327511) (xy 131.267753 101.301393) + (xy 131.260303 101.276077) (xy 131.262858 101.267352) (xy 131.261565 101.258353) (xy 131.272527 101.234348) + (xy 131.279946 101.209025) (xy 131.288184 101.200064) (xy 131.29059 101.194797) (xy 131.303042 101.182338) + (xy 131.311298 101.175175) (xy 131.312841 101.174536) (xy 131.438282 101.078282) (xy 131.46876 101.038561) + (xy 131.478239 101.030338) (xy 131.499059 101.020813) (xy 131.517553 101.00731) (xy 131.535365 101.004205) + (xy 131.541777 101.001273) (xy 131.547496 101.002091) (xy 131.5595 101) (xy 131.60201 101) (xy 131.602011 100.999998) + (xy 131.594558 100.943377) (xy 131.594554 100.943365) (xy 131.586163 100.923106) (xy 131.578694 100.853637) + (xy 131.586164 100.828199) (xy 131.595044 100.806762) (xy 131.6105 100.689361) (xy 131.610499 100.41064) + (xy 131.610083 100.407483) (xy 131.607277 100.38617) (xy 131.595044 100.293238) (xy 131.595042 100.293232) + (xy 131.594359 100.291583) (xy 131.594197 100.290078) (xy 131.592939 100.285382) (xy 131.593671 100.285185) + (xy 131.58689 100.222114) (xy 131.618165 100.159635) (xy 131.621209 100.15648) (xy 133.13052 98.647172) + (xy 133.209577 98.51024) (xy 133.250501 98.357513) (xy 133.250501 98.199398) (xy 133.250501 98.191803) + (xy 133.2505 98.191785) (xy 133.2505 97.160638) (xy 134.8595 97.160638) (xy 134.8595 97.439363) + (xy 134.874953 97.556753) (xy 134.874957 97.556765) (xy 134.883566 97.57755) (xy 134.891033 97.647019) + (xy 134.883566 97.67245) (xy 134.874957 97.693234) (xy 134.874955 97.693239) (xy 134.8595 97.810638) + (xy 134.8595 98.089363) (xy 134.874953 98.206753) (xy 134.874957 98.206765) (xy 134.883566 98.22755) + (xy 134.891033 98.297019) (xy 134.883566 98.32245) (xy 134.874957 98.343234) (xy 134.874955 98.343239) + (xy 134.8595 98.460638) (xy 134.8595 98.739363) (xy 134.874953 98.856753) (xy 134.874957 98.856765) + (xy 134.883566 98.87755) (xy 134.891033 98.947019) (xy 134.883566 98.97245) (xy 134.874957 98.993234) + (xy 134.874955 98.993239) (xy 134.8595 99.110638) (xy 134.8595 99.389363) (xy 134.874953 99.506753) + (xy 134.874957 99.506765) (xy 134.883566 99.52755) (xy 134.891033 99.597019) (xy 134.883566 99.62245) + (xy 134.874957 99.643234) (xy 134.874955 99.643239) (xy 134.8595 99.760638) (xy 134.8595 100.039363) + (xy 134.874953 100.156753) (xy 134.874957 100.156765) (xy 134.883566 100.17755) (xy 134.891033 100.247019) + (xy 134.883566 100.27245) (xy 134.874957 100.293234) (xy 134.874955 100.293239) (xy 134.8595 100.410638) + (xy 134.8595 100.689363) (xy 134.874953 100.806753) (xy 134.874956 100.806762) (xy 134.883837 100.828203) + (xy 134.891304 100.897673) (xy 134.883838 100.923103) (xy 134.875443 100.94337) (xy 134.867987 101) + (xy 134.9105 101) (xy 134.977539 101.019685) (xy 134.991761 101.030338) (xy 135.001239 101.038561) + (xy 135.031718 101.078282) (xy 135.157159 101.174536) (xy 135.158701 101.175175) (xy 135.166958 101.182338) + (xy 135.183892 101.208724) (xy 135.202386 101.234052) (xy 135.202615 101.237896) (xy 135.204696 101.241139) + (xy 135.204676 101.272496) (xy 135.206541 101.303798) (xy 135.204654 101.307157) (xy 135.204652 101.311009) + (xy 135.187689 101.337367) (xy 135.172329 101.364719) (xy 135.168924 101.366525) (xy 135.166841 101.369763) + (xy 135.138313 101.38277) (xy 135.110611 101.397471) (xy 135.10477 101.398063) (xy 135.103268 101.398749) + (xy 135.101102 101.398436) (xy 135.085697 101.4) (xy 134.86799 101.4) (xy 134.867988 101.400001) + (xy 134.875442 101.456627) (xy 134.875444 101.456633) (xy 134.935899 101.602585) (xy 135.032075 101.727924) + (xy 135.157413 101.8241) (xy 135.303365 101.884554) (xy 135.303369 101.884555) (xy 135.420676 101.899999) + (xy 135.897499 101.899999) (xy 135.8975 101.899998) (xy 135.8975 101.374499) (xy 135.90005 101.365813) + (xy 135.898762 101.356852) (xy 135.90974 101.332811) (xy 135.917185 101.30746) (xy 135.924025 101.301532) + (xy 135.927787 101.293296) (xy 135.950021 101.279006) (xy 135.969989 101.261705) (xy 135.980503 101.259417) + (xy 135.986565 101.255522) (xy 136.021496 101.250499) (xy 136.173501 101.250499) (xy 136.240539 101.270184) + (xy 136.286294 101.322988) (xy 136.2975 101.374499) (xy 136.2975 101.899999) (xy 136.774324 101.899999) + (xy 136.891628 101.884557) (xy 136.891633 101.884555) (xy 137.037585 101.8241) (xy 137.162924 101.727924) + (xy 137.2591 101.602586) (xy 137.319555 101.456631) (xy 137.327012 101.4) (xy 137.109303 101.4) + (xy 137.080557 101.391559) (xy 137.051198 101.385544) (xy 137.047379 101.381817) (xy 137.042264 101.380315) + (xy 137.022647 101.357676) (xy 137.001198 101.33674) (xy 137 101.33154) (xy 136.996509 101.327511) + (xy 136.992244 101.297854) (xy 136.985521 101.268652) (xy 136.987324 101.263632) (xy 136.986565 101.258353) + (xy 136.999014 101.231091) (xy 137.009144 101.202897) (xy 137.014306 101.197608) (xy 137.01559 101.194797) + (xy 137.033796 101.17764) (xy 137.03575 101.17614) (xy 137.100914 101.150932) (xy 137.111257 101.1505) + (xy 138.519441 101.1505) (xy 138.58648 101.170185) (xy 138.632235 101.222989) (xy 138.642179 101.292147) + (xy 138.638519 101.309089) (xy 138.631172 101.33438) (xy 138.622334 101.364799) (xy 138.6195 101.400811) + (xy 138.6195 101.899169) (xy 138.619501 101.899191) (xy 138.622335 101.935205) (xy 138.667129 102.089388) + (xy 138.667131 102.089393) (xy 138.741871 102.215772) (xy 138.759054 102.283496) (xy 138.736894 102.349759) + (xy 138.734406 102.353204) (xy 138.656204 102.457668) (xy 138.656202 102.457671) (xy 138.605908 102.592517) + (xy 138.599501 102.652116) (xy 138.599501 102.652123) (xy 138.5995 102.652135) (xy 138.5995 104.24787) + (xy 138.599501 104.247876) (xy 138.605908 104.307483) (xy 138.656202 104.442328) (xy 138.656206 104.442335) + (xy 138.742452 104.557544) (xy 138.742455 104.557547) (xy 138.857664 104.643793) (xy 138.857671 104.643797) + (xy 138.992517 104.694091) (xy 138.992516 104.694091) (xy 138.999444 104.694835) (xy 139.052127 104.7005) + (xy 140.647872 104.700499) (xy 140.707483 104.694091) (xy 140.842331 104.643796) (xy 140.957546 104.557546) + (xy 141.043796 104.442331) (xy 141.094091 104.307483) (xy 141.1005 104.247873) (xy 141.100499 102.652128) + (xy 141.094091 102.592517) (xy 141.089461 102.580104) (xy 141.043797 102.457671) (xy 141.043793 102.457665) + (xy 141.037165 102.44881) (xy 141.012748 102.383346) (xy 141.0276 102.315073) (xy 141.077005 102.265668) + (xy 141.136432 102.2505) (xy 143.7105 102.2505) (xy 143.777539 102.270185) (xy 143.823294 102.322989) + (xy 143.8345 102.3745) (xy 143.8345 102.950015) (xy 143.845 103.052795) (xy 143.845001 103.052796) + (xy 143.900186 103.219335) (xy 143.900187 103.219337) (xy 143.992286 103.368651) (xy 143.992289 103.368655) + (xy 144.116344 103.49271) (xy 144.116348 103.492713) (xy 144.265662 103.584812) (xy 144.265664 103.584813) + (xy 144.265666 103.584814) (xy 144.432203 103.639999) (xy 144.534992 103.6505) (xy 144.534997 103.6505) + (xy 146.935003 103.6505) (xy 146.935008 103.6505) (xy 147.037797 103.639999) (xy 147.204334 103.584814) + (xy 147.353655 103.492711) (xy 147.477711 103.368655) (xy 147.569814 103.219334) (xy 147.624999 103.052797) + (xy 147.6355 102.950008) (xy 147.6355 100.549992) (xy 147.624999 100.447203) (xy 147.569814 100.280666) + (xy 147.569403 100.28) (xy 147.477713 100.131348) (xy 147.47771 100.131344) (xy 147.353655 100.007289) + (xy 147.353651 100.007286) (xy 147.204337 99.915187) (xy 147.204335 99.915186) (xy 147.110082 99.883954) + (xy 147.037797 99.860001) (xy 147.037795 99.86) (xy 146.935015 99.8495) (xy 146.935008 99.8495) + (xy 144.534992 99.8495) (xy 144.534984 99.8495) (xy 144.432204 99.86) (xy 144.432203 99.860001) + (xy 144.265664 99.915186) (xy 144.265662 99.915187) (xy 144.116348 100.007286) (xy 144.116344 100.007289) + (xy 143.992289 100.131344) (xy 143.992286 100.131348) (xy 143.900187 100.280662) (xy 143.900186 100.280664) + (xy 143.845001 100.447203) (xy 143.845 100.447204) (xy 143.8345 100.549984) (xy 143.8345 100.9255) + (xy 143.814815 100.992539) (xy 143.762011 101.038294) (xy 143.7105 101.0495) (xy 141.261168 101.0495) + (xy 141.194129 101.029815) (xy 141.148374 100.977011) (xy 141.13755 100.915772) (xy 141.138791 100.900001) + (xy 141.13879 100.9) (xy 140.871985 100.9) (xy 140.808866 100.882733) (xy 140.799393 100.877131) + (xy 140.799388 100.877129) (xy 140.645208 100.832335) (xy 140.645202 100.832334) (xy 140.609188 100.8295) + (xy 140.484 100.8295) (xy 140.416961 100.809815) (xy 140.371206 100.757011) (xy 140.36 100.7055) + (xy 140.36 100.65) (xy 140.3045 100.65) (xy 140.302036 100.649276) (xy 140.299546 100.649901) (xy 140.268691 100.639485) + (xy 140.237461 100.630315) (xy 140.23578 100.628375) (xy 140.233347 100.627554) (xy 140.21302 100.602109) + (xy 140.191706 100.577511) (xy 140.190846 100.574351) (xy 140.189738 100.572964) (xy 140.18783 100.563265) + (xy 140.181155 100.53873) (xy 140.1805 100.532383) (xy 140.1805 100.41531) (xy 140.177643 100.379007) + (xy 140.157523 100.309757) (xy 140.156376 100.298635) (xy 140.160775 100.274832) (xy 140.160844 100.250631) + (xy 140.168486 100.233107) (xy 140.169074 100.229929) (xy 140.170565 100.22834) (xy 140.172986 100.222788) + (xy 140.229994 100.126395) (xy 140.275143 99.970993) (xy 140.278 99.93469) (xy 140.278 99.845494) + (xy 140.61 99.845494) (xy 140.61 100.4) (xy 141.13879 100.4) (xy 141.137145 100.379089) (xy 141.092031 100.223804) + (xy 141.009721 100.084625) (xy 141.009714 100.084616) (xy 140.895383 99.970285) (xy 140.895374 99.970278) + (xy 140.756193 99.887967) (xy 140.75619 99.887965) (xy 140.610001 99.845493) (xy 140.61 99.845494) + (xy 140.278 99.845494) (xy 140.278 99.52531) (xy 140.275143 99.489007) (xy 140.274652 99.487318) + (xy 140.237498 99.359433) (xy 140.229994 99.333605) (xy 140.217879 99.31312) (xy 140.200696 99.245399) + (xy 140.217879 99.18688) (xy 140.229994 99.166395) (xy 140.275143 99.010993) (xy 140.278 98.97469) + (xy 140.278 98.654503) (xy 140.63 98.654503) (xy 140.776195 98.612031) (xy 140.915374 98.529721) + (xy 140.915383 98.529714) (xy 141.029714 98.415383) (xy 141.029721 98.415374) (xy 141.112031 98.276195) + (xy 141.112033 98.27619) (xy 141.157144 98.120918) (xy 141.157145 98.120912) (xy 141.15879 98.1) + (xy 140.63 98.1) (xy 140.63 98.654503) (xy 140.278 98.654503) (xy 140.278 98.56531) (xy 140.275143 98.529007) + (xy 140.274124 98.5255) (xy 140.23745 98.399267) (xy 140.229994 98.373605) (xy 140.186399 98.299891) + (xy 140.180117 98.275132) (xy 140.170029 98.251663) (xy 140.171032 98.239325) (xy 140.169217 98.232168) + (xy 140.17082 98.216378) (xy 140.172018 98.209188) (xy 140.197643 98.120993) (xy 140.2005 98.08469) + (xy 140.2005 97.974) (xy 140.220185 97.906961) (xy 140.272989 97.861206) (xy 140.3245 97.85) (xy 140.38 97.85) + (xy 140.38 97.794499) (xy 140.399685 97.72746) (xy 140.452489 97.681705) (xy 140.503998 97.670499) + (xy 140.60918 97.670499) (xy 140.645204 97.667665) (xy 140.799393 97.622869) (xy 140.804838 97.619648) + (xy 140.808866 97.617267) (xy 140.871985 97.6) (xy 141.158789 97.6) (xy 141.157549 97.584224) (xy 141.171916 97.515847) + (xy 141.220969 97.466092) (xy 141.281167 97.4505) (xy 143.885216 97.4505) (xy 143.952255 97.470185) + (xy 143.99801 97.522989) (xy 143.999777 97.527048) (xy 144.02683 97.592361) (xy 144.026837 97.592376) + (xy 144.1514 97.808126) (xy 144.30306 98.005774) (xy 144.303066 98.005781) (xy 144.479218 98.181933) + (xy 144.479225 98.181939) (xy 144.676873 98.333599) (xy 144.892623 98.458162) (xy 144.892638 98.458169) + (xy 144.978754 98.493839) (xy 145.122793 98.553502) (xy 145.363435 98.617982) (xy 145.610435 98.6505) + (xy 145.610442 98.6505) (xy 145.859558 98.6505) (xy 145.859565 98.6505) (xy 146.106565 98.617982) + (xy 146.347207 98.553502) (xy 146.577373 98.458164) (xy 146.793127 98.333599) (xy 146.990776 98.181938) + (xy 147.166938 98.005776) (xy 147.318599 97.808127) (xy 147.443164 97.592373) (xy 147.538502 97.362207) + (xy 147.602982 97.121565) (xy 147.6355 96.874565) (xy 147.6355 96.625435) (xy 147.602982 96.378435) + (xy 147.538502 96.137793) (xy 147.478248 95.992328) (xy 147.443169 95.907638) (xy 147.443162 95.907623) + (xy 147.318599 95.691873) (xy 147.166939 95.494225) (xy 147.166933 95.494218) (xy 146.990781 95.318066) + (xy 146.990774 95.31806) (xy 146.793126 95.1664) (xy 146.577376 95.041837) (xy 146.577361 95.04183) + (xy 146.347207 94.946498) (xy 146.126546 94.887372) (xy 146.106565 94.882018) (xy 146.106564 94.882017) + (xy 146.106561 94.882017) (xy 145.859575 94.849501) (xy 145.85957 94.8495) (xy 145.859565 94.8495) + (xy 145.610435 94.8495) (xy 145.610429 94.8495) (xy 145.610424 94.849501) (xy 145.363438 94.882017) + (xy 145.122792 94.946498) (xy 144.892638 95.04183) (xy 144.892623 95.041837) (xy 144.676873 95.1664) + (xy 144.479225 95.31806) (xy 144.479218 95.318066) (xy 144.303066 95.494218) (xy 144.30306 95.494225) + (xy 144.1514 95.691873) (xy 144.026837 95.907623) (xy 144.02683 95.907638) (xy 143.931497 96.137795) + (xy 143.926193 96.157592) (xy 143.889829 96.217253) (xy 143.826982 96.247783) (xy 143.806418 96.2495) + (xy 141.099002 96.2495) (xy 141.031963 96.229815) (xy 140.986208 96.177011) (xy 140.976264 96.107853) + (xy 140.999735 96.051189) (xy 141.004625 96.044656) (xy 141.043796 95.992331) (xy 141.094091 95.857483) + (xy 141.1005 95.797873) (xy 141.100499 94.202128) (xy 141.094091 94.142517) (xy 141.081024 94.107483) + (xy 141.043797 94.007671) (xy 141.043793 94.007664) (xy 140.957547 93.892455) (xy 140.957544 93.892452) + (xy 140.842335 93.806206) (xy 140.842328 93.806202) (xy 140.707482 93.755908) (xy 140.707483 93.755908) + (xy 140.647883 93.749501) (xy 140.647881 93.7495) (xy 140.647873 93.7495) (xy 140.647864 93.7495) + (xy 139.052129 93.7495) (xy 139.052123 93.749501) (xy 138.992516 93.755908) (xy 138.857671 93.806202) + (xy 138.857664 93.806206) (xy 138.742455 93.892452) (xy 138.742452 93.892455) (xy 138.656206 94.007664) + (xy 138.656202 94.007671) (xy 138.605908 94.142517) (xy 138.603238 94.167358) (xy 138.599501 94.202123) + (xy 138.5995 94.202135) (xy 138.5995 95.79787) (xy 138.599501 95.797876) (xy 138.605908 95.857483) + (xy 138.656202 95.992328) (xy 138.656203 95.992329) (xy 138.656204 95.992331) (xy 138.705116 96.057669) + (xy 138.747769 96.114646) (xy 138.746207 96.115815) (xy 138.774262 96.167193) (xy 138.769278 96.236885) + (xy 138.751079 96.269546) (xy 138.748867 96.272397) (xy 138.667131 96.410606) (xy 138.667129 96.410611) + (xy 138.622335 96.564791) (xy 138.622334 96.564797) (xy 138.6195 96.600811) (xy 138.6195 97.099169) + (xy 138.619501 97.099191) (xy 138.622335 97.135205) (xy 138.66713 97.289391) (xy 138.667134 97.2894) + (xy 138.680272 97.311616) (xy 138.697455 97.37934) (xy 138.689161 97.415962) (xy 138.689682 97.416114) + (xy 138.642357 97.579002) (xy 138.642356 97.579008) (xy 138.6395 97.615302) (xy 138.6395 98.084697) + (xy 138.642356 98.120991) (xy 138.642357 98.120997) (xy 138.687504 98.276391) (xy 138.687508 98.276401) + (xy 138.690863 98.282073) (xy 138.698568 98.312438) (xy 138.708098 98.342289) (xy 138.707434 98.34738) + (xy 138.708047 98.349796) (xy 138.703895 98.377332) (xy 138.703554 98.378602) (xy 138.659857 98.529007) + (xy 138.658471 98.546606) (xy 138.655512 98.557637) (xy 138.643024 98.578107) (xy 138.634482 98.600519) + (xy 138.625157 98.607395) (xy 138.619125 98.617284) (xy 138.597552 98.627753) (xy 138.57825 98.641989) + (xy 138.562478 98.644776) (xy 138.556267 98.647791) (xy 138.549805 98.647015) (xy 138.535749 98.6495) + (xy 137.459499 98.6495) (xy 137.39246 98.629815) (xy 137.346705 98.577011) (xy 137.335499 98.5255) + (xy 137.335499 98.460638) (xy 137.32954 98.415374) (xy 137.320044 98.343238) (xy 137.320042 98.343234) + (xy 137.311435 98.322455) (xy 137.303965 98.252986) (xy 137.311435 98.227545) (xy 137.311959 98.226281) + (xy 137.320044 98.206762) (xy 137.3355 98.089361) (xy 137.335499 97.81064) (xy 137.320044 97.693238) + (xy 137.320042 97.693234) (xy 137.311435 97.672455) (xy 137.303965 97.602986) (xy 137.311435 97.577545) + (xy 137.320044 97.556762) (xy 137.3355 97.439361) (xy 137.335499 97.16064) (xy 137.335499 97.160638) + (xy 137.335499 97.160636) (xy 137.320046 97.043246) (xy 137.320044 97.043239) (xy 137.320044 97.043238) + (xy 137.259536 96.897159) (xy 137.163282 96.771718) (xy 137.037841 96.675464) (xy 136.891762 96.614956) + (xy 136.89176 96.614955) (xy 136.77437 96.599501) (xy 136.774367 96.5995) (xy 136.774361 96.5995) + (xy 136.774354 96.5995) (xy 135.420636 96.5995) (xy 135.303246 96.614953) (xy 135.303237 96.614956) + (xy 135.15716 96.675463) (xy 135.031718 96.771718) (xy 134.935463 96.89716) (xy 134.874956 97.043237) + (xy 134.874955 97.043239) (xy 134.8595 97.160638) (xy 133.2505 97.160638) (xy 133.2505 95.120941) + (xy 133.250121 95.119525) (xy 133.250121 95.119526) (xy 133.247167 95.108502) (xy 133.209577 94.968215) + (xy 133.159811 94.882018) (xy 133.145165 94.856651) (xy 133.130521 94.831285) (xy 133.014385 94.715149) + (xy 133.014374 94.715139) (xy 130.836819 92.537584) (xy 130.803334 92.476261) (xy 130.8005 92.449903) + (xy 130.8005 91.950811) (xy 138.5095 91.950811) (xy 138.5095 92.449169) (xy 138.509501 92.449191) + (xy 138.512335 92.485205) (xy 138.557129 92.639388) (xy 138.557131 92.639393) (xy 138.638863 92.777595) + (xy 138.638869 92.777603) (xy 138.752396 92.89113) (xy 138.7524 92.891133) (xy 138.752402 92.891135) + (xy 138.890607 92.972869) (xy 138.890614 92.972871) (xy 139.044791 93.017664) (xy 139.044794 93.017664) + (xy 139.044796 93.017665) (xy 139.080819 93.0205) (xy 139.47918 93.020499) (xy 139.515204 93.017665) + (xy 139.669393 92.972869) (xy 139.726882 92.938869) (xy 139.794602 92.921688) (xy 139.853117 92.938869) + (xy 139.910607 92.972869) (xy 139.91061 92.972869) (xy 139.910612 92.972871) (xy 140.064791 93.017664) + (xy 140.064794 93.017664) (xy 140.064796 93.017665) (xy 140.100819 93.0205) (xy 140.49918 93.020499) + (xy 140.535204 93.017665) (xy 140.689393 92.972869) (xy 140.827598 92.891135) (xy 140.941135 92.777598) + (xy 141.022869 92.639393) (xy 141.067665 92.485204) (xy 141.0705 92.449181) (xy 141.070499 91.95082) + (xy 141.067665 91.914796) (xy 141.022869 91.760607) (xy 140.941135 91.622402) (xy 140.941133 91.6224) + (xy 140.94113 91.622396) (xy 140.938557 91.619823) (xy 140.937184 91.617308) (xy 140.936352 91.616236) + (xy 140.936525 91.616101) (xy 140.905072 91.5585) (xy 140.910056 91.488808) (xy 140.951928 91.432875) + (xy 140.982906 91.41596) (xy 141.042326 91.393798) (xy 141.042326 91.393797) (xy 141.042331 91.393796) + (xy 141.157546 91.307546) (xy 141.243796 91.192331) (xy 141.294091 91.057483) (xy 141.3005 90.997873) + (xy 141.300499 89.402128) (xy 141.294091 89.342517) (xy 141.291028 89.334306) (xy 141.243797 89.207671) + (xy 141.243793 89.207664) (xy 141.157547 89.092455) (xy 141.157545 89.092453) (xy 141.042335 89.006206) + (xy 141.042328 89.006202) (xy 141.025657 88.999984) (xy 143.8995 88.999984) (xy 143.8995 91.400015) + (xy 143.91 91.502795) (xy 143.910001 91.502797) (xy 143.928459 91.5585) (xy 143.965186 91.669335) + (xy 143.965187 91.669337) (xy 144.057286 91.818651) (xy 144.057289 91.818655) (xy 144.181344 91.94271) + (xy 144.181348 91.942713) (xy 144.330662 92.034812) (xy 144.330664 92.034813) (xy 144.330666 92.034814) + (xy 144.497203 92.089999) (xy 144.599992 92.1005) (xy 144.599997 92.1005) (xy 147.000003 92.1005) + (xy 147.000008 92.1005) (xy 147.102797 92.089999) (xy 147.269334 92.034814) (xy 147.418655 91.942711) + (xy 147.542711 91.818655) (xy 147.634814 91.669334) (xy 147.689999 91.502797) (xy 147.7005 91.400008) + (xy 147.7005 88.999992) (xy 147.689999 88.897203) (xy 147.634814 88.730666) (xy 147.613119 88.695494) + (xy 147.542713 88.581348) (xy 147.54271 88.581344) (xy 147.418655 88.457289) (xy 147.418651 88.457286) + (xy 147.269337 88.365187) (xy 147.269335 88.365186) (xy 147.143851 88.323605) (xy 147.102797 88.310001) + (xy 147.102795 88.31) (xy 147.000015 88.2995) (xy 147.000008 88.2995) (xy 144.599992 88.2995) (xy 144.599984 88.2995) + (xy 144.497204 88.31) (xy 144.497203 88.310001) (xy 144.330664 88.365186) (xy 144.330662 88.365187) + (xy 144.181348 88.457286) (xy 144.181344 88.457289) (xy 144.057289 88.581344) (xy 144.057286 88.581348) + (xy 143.965187 88.730662) (xy 143.965186 88.730664) (xy 143.910001 88.897203) (xy 143.91 88.897204) + (xy 143.8995 88.999984) (xy 141.025657 88.999984) (xy 140.907482 88.955908) (xy 140.907483 88.955908) + (xy 140.847883 88.949501) (xy 140.847881 88.9495) (xy 140.847873 88.9495) (xy 140.847864 88.9495) + (xy 139.252129 88.9495) (xy 139.252123 88.949501) (xy 139.192516 88.955908) (xy 139.057671 89.006202) + (xy 139.057664 89.006206) (xy 138.942455 89.092452) (xy 138.942452 89.092455) (xy 138.856206 89.207664) + (xy 138.856202 89.207671) (xy 138.805908 89.342517) (xy 138.799593 89.401262) (xy 138.799501 89.402123) + (xy 138.7995 89.402135) (xy 138.7995 90.99787) (xy 138.799501 90.997876) (xy 138.805908 91.057483) + (xy 138.856202 91.192328) (xy 138.856204 91.192331) (xy 138.905746 91.258511) (xy 138.930163 91.323976) + (xy 138.915311 91.392249) (xy 138.8696 91.439554) (xy 138.752405 91.508862) (xy 138.752396 91.508869) + (xy 138.638869 91.622396) (xy 138.638863 91.622404) (xy 138.557131 91.760606) (xy 138.557129 91.760611) + (xy 138.512335 91.914791) (xy 138.512334 91.914797) (xy 138.5095 91.950811) (xy 130.8005 91.950811) + (xy 130.8005 90.100097) (xy 130.820185 90.033058) (xy 130.836819 90.012416) (xy 131.14715 89.702086) + (xy 131.208473 89.668601) (xy 131.269427 89.670691) (xy 131.276373 89.672709) (xy 131.311837 89.6755) + (xy 131.688162 89.675499) (xy 131.723627 89.672709) (xy 131.865405 89.631519) (xy 131.934595 89.631519) + (xy 132.062233 89.668601) (xy 132.076373 89.672709) (xy 132.111837 89.6755) (xy 132.488162 89.675499) + (xy 132.523627 89.672709) (xy 132.67539 89.628618) (xy 132.81142 89.54817) (xy 132.92317 89.43642) + (xy 133.003618 89.30039) (xy 133.047709 89.148627) (xy 133.0505 89.113163) (xy 133.050499 87.924498) + (xy 133.070184 87.85746) (xy 133.122987 87.811705) (xy 133.174499 87.800499) (xy 134.36315 87.800499) + (xy 134.363162 87.800499) (xy 134.398627 87.797709) (xy 134.55039 87.753618) (xy 134.68642 87.67317) + (xy 134.79817 87.56142) (xy 134.878618 87.42539) (xy 134.922709 87.273627) (xy 134.9255 87.238163) + (xy 134.925499 86.95) (xy 138.737156 86.95) (xy 138.777595 87.089194) (xy 138.859261 87.227285) + (xy 138.859268 87.227294) (xy 138.972705 87.340731) (xy 138.972714 87.340738) (xy 139.110808 87.422406) + (xy 139.110811 87.422407) (xy 139.264871 87.467166) (xy 139.264877 87.467167) (xy 139.3 87.469931) + (xy 139.3 87.46993) (xy 139.8 87.46993) (xy 139.835122 87.467167) (xy 139.835128 87.467166) (xy 139.989188 87.422407) + (xy 139.989191 87.422406) (xy 140.127285 87.340738) (xy 140.127294 87.340731) (xy 140.240731 87.227294) + (xy 140.240738 87.227285) (xy 140.322404 87.089194) (xy 140.362844 86.95) (xy 139.8 86.95) (xy 139.8 87.46993) + (xy 139.3 87.46993) (xy 139.3 86.95) (xy 138.737156 86.95) (xy 134.925499 86.95) (xy 134.925499 86.861838) + (xy 134.922709 86.826373) (xy 134.881519 86.684594) (xy 134.881319 86.667798) (xy 134.876639 86.653295) + (xy 134.880767 86.621239) (xy 134.880732 86.618239) (xy 134.88111 86.616812) (xy 134.922709 86.473627) + (xy 134.9255 86.438163) (xy 134.925499 86.061838) (xy 134.922709 86.026373) (xy 134.881519 85.884594) + (xy 134.881519 85.815405) (xy 134.907057 85.727503) (xy 134.922709 85.673627) (xy 134.9255 85.638163) + (xy 134.925499 85.261838) (xy 134.922709 85.226373) (xy 134.881519 85.084594) (xy 134.881519 85.015405) + (xy 134.899008 84.955208) (xy 134.922709 84.873627) (xy 134.9255 84.838163) (xy 134.925499 84.461838) + (xy 134.922709 84.426373) (xy 134.88674 84.302567) (xy 134.881519 84.284595) (xy 134.881519 84.215405) + (xy 134.912854 84.107547) (xy 134.922709 84.073627) (xy 134.9255 84.038163) (xy 134.925499 83.661838) + (xy 134.922709 83.626373) (xy 134.88623 83.500811) (xy 138.7295 83.500811) (xy 138.7295 83.899169) + (xy 138.729501 83.899191) (xy 138.732335 83.935205) (xy 138.777129 84.089388) (xy 138.777132 84.089395) + (xy 138.811128 84.146881) (xy 138.828309 84.214605) (xy 138.811128 84.273119) (xy 138.777132 84.330604) + (xy 138.777129 84.330611) (xy 138.732335 84.484791) (xy 138.732334 84.484797) (xy 138.7295 84.520811) + (xy 138.7295 84.919169) (xy 138.729501 84.919191) (xy 138.732335 84.955205) (xy 138.77713 85.109391) + (xy 138.777131 85.109394) (xy 138.793386 85.13688) (xy 138.810568 85.204604) (xy 138.793386 85.26312) + (xy 138.777131 85.290605) (xy 138.77713 85.290608) (xy 138.732335 85.444791) (xy 138.732334 85.444797) + (xy 138.7295 85.480811) (xy 138.7295 85.879169) (xy 138.729501 85.879191) (xy 138.732335 85.915205) + (xy 138.777129 86.069388) (xy 138.77713 86.069391) (xy 138.811419 86.127371) (xy 138.828601 86.195095) + (xy 138.811419 86.253611) (xy 138.777594 86.310806) (xy 138.737156 86.45) (xy 139.289591 86.45) + (xy 139.299318 86.450382) (xy 139.299516 86.450397) (xy 139.300819 86.4505) (xy 139.79918 86.450499) + (xy 139.799193 86.450498) (xy 139.800668 86.450382) (xy 139.810393 86.45) (xy 140.362844 86.45) + (xy 140.322404 86.310805) (xy 140.288581 86.253612) (xy 140.271398 86.185888) (xy 140.288582 86.127369) + (xy 140.322867 86.069396) (xy 140.322869 86.069393) (xy 140.367665 85.915204) (xy 140.3705 85.879181) + (xy 140.370499 85.48082) (xy 140.367665 85.444796) (xy 140.322869 85.290607) (xy 140.306613 85.26312) + (xy 140.28943 85.195399) (xy 140.297678 85.15531) (xy 140.301379 85.145729) (xy 140.322869 85.109393) + (xy 140.332733 85.075441) (xy 143.8995 85.075441) (xy 143.8995 85.324558) (xy 143.899501 85.324575) + (xy 143.925501 85.52207) (xy 143.932018 85.571565) (xy 143.957878 85.668076) (xy 143.996498 85.812207) + (xy 144.09183 86.042361) (xy 144.091837 86.042376) (xy 144.2164 86.258126) (xy 144.36806 86.455774) + (xy 144.368066 86.455781) (xy 144.544218 86.631933) (xy 144.544225 86.631939) (xy 144.741873 86.783599) + (xy 144.957623 86.908162) (xy 144.957638 86.908169) (xy 145.040174 86.942356) (xy 145.187793 87.003502) + (xy 145.428435 87.067982) (xy 145.675435 87.1005) (xy 145.675442 87.1005) (xy 145.924558 87.1005) + (xy 145.924565 87.1005) (xy 146.171565 87.067982) (xy 146.412207 87.003502) (xy 146.642373 86.908164) + (xy 146.858127 86.783599) (xy 147.055776 86.631938) (xy 147.231938 86.455776) (xy 147.383599 86.258127) + (xy 147.508164 86.042373) (xy 147.603502 85.812207) (xy 147.667982 85.571565) (xy 147.7005 85.324565) + (xy 147.7005 85.075435) (xy 147.667982 84.828435) (xy 147.603502 84.587793) (xy 147.536639 84.426372) + (xy 147.508169 84.357638) (xy 147.508162 84.357623) (xy 147.383599 84.141873) (xy 147.231939 83.944225) + (xy 147.231933 83.944218) (xy 147.055781 83.768066) (xy 147.055774 83.76806) (xy 146.858126 83.6164) + (xy 146.642376 83.491837) (xy 146.642361 83.49183) (xy 146.412207 83.396498) (xy 146.171565 83.332018) + (xy 146.171564 83.332017) (xy 146.171561 83.332017) (xy 145.924575 83.299501) (xy 145.92457 83.2995) + (xy 145.924565 83.2995) (xy 145.675435 83.2995) (xy 145.675429 83.2995) (xy 145.675424 83.299501) + (xy 145.428438 83.332017) (xy 145.187792 83.396498) (xy 144.957638 83.49183) (xy 144.957623 83.491837) + (xy 144.741873 83.6164) (xy 144.544225 83.76806) (xy 144.544218 83.768066) (xy 144.368066 83.944218) + (xy 144.36806 83.944225) (xy 144.2164 84.141873) (xy 144.091837 84.357623) (xy 144.09183 84.357638) + (xy 143.996498 84.587792) (xy 143.932017 84.828438) (xy 143.899501 85.075424) (xy 143.8995 85.075441) + (xy 140.332733 85.075441) (xy 140.367665 84.955204) (xy 140.3705 84.919181) (xy 140.370499 84.52082) + (xy 140.367665 84.484796) (xy 140.322869 84.330607) (xy 140.288869 84.273117) (xy 140.271688 84.205398) + (xy 140.288869 84.146882) (xy 140.322869 84.089393) (xy 140.326906 84.0755) (xy 140.367664 83.935208) + (xy 140.367664 83.935206) (xy 140.367665 83.935204) (xy 140.3705 83.899181) (xy 140.370499 83.50082) + (xy 140.367665 83.464796) (xy 140.322869 83.310607) (xy 140.241135 83.172402) (xy 140.241133 83.1724) + (xy 140.24113 83.172396) (xy 140.127603 83.058869) (xy 140.127595 83.058863) (xy 139.989393 82.977131) + (xy 139.989388 82.977129) (xy 139.835208 82.932335) (xy 139.835202 82.932334) (xy 139.799181 82.9295) + (xy 139.30083 82.9295) (xy 139.300808 82.929501) (xy 139.264794 82.932335) (xy 139.110611 82.977129) + (xy 139.110606 82.977131) (xy 138.972404 83.058863) (xy 138.972396 83.058869) (xy 138.858869 83.172396) + (xy 138.858863 83.172404) (xy 138.777131 83.310606) (xy 138.777129 83.310611) (xy 138.732335 83.464791) + (xy 138.732334 83.464797) (xy 138.7295 83.500811) (xy 134.88623 83.500811) (xy 134.881519 83.484594) + (xy 134.881519 83.415405) (xy 134.899774 83.352569) (xy 134.922709 83.273627) (xy 134.9255 83.238163) + (xy 134.925499 82.861838) (xy 134.922709 82.826373) (xy 134.881519 82.684594) (xy 134.881519 82.615405) + (xy 134.901062 82.548137) (xy 134.922709 82.473627) (xy 134.9255 82.438163) (xy 134.925499 82.061838) + (xy 134.922709 82.026373) (xy 134.881519 81.884594) (xy 134.881519 81.815405) (xy 134.922707 81.673633) + (xy 134.922709 81.673627) (xy 134.9255 81.638163) (xy 134.925499 81.261838) (xy 134.922709 81.226373) + (xy 134.878618 81.07461) (xy 134.826804 80.986998) (xy 134.798172 80.938583) (xy 134.798165 80.938574) + (xy 134.686425 80.826834) (xy 134.686417 80.826828) (xy 134.661377 80.812019) (xy 134.613695 80.760949) + (xy 134.6005 80.705288) (xy 134.6005 77.465452) (xy 134.620185 77.398413) (xy 134.636814 77.377775) + (xy 134.694571 77.320019) (xy 134.79243 77.173563) (xy 134.859837 77.010829) (xy 134.87786 76.920218) + (xy 134.910244 76.858309) (xy 134.97096 76.823735) (xy 135.040729 76.827474) (xy 135.046922 76.829847) + (xy 135.052458 76.83214) (xy 135.184022 76.858309) (xy 135.19654 76.860799) (xy 135.196544 76.8608) + (xy 135.196545 76.8608) (xy 135.343456 76.8608) (xy 135.343457 76.860799) (xy 135.487542 76.83214) + (xy 135.623269 76.77592) (xy 135.74542 76.694301) (xy 135.849301 76.59042) (xy 135.93092 76.468269) + (xy 135.98714 76.332542) (xy 136.0158 76.188455) (xy 136.0158 76.041545) (xy 135.98714 75.897458) + (xy 135.984118 75.890163) (xy 135.967475 75.849984) (xy 143.8995 75.849984) (xy 143.8995 78.250015) + (xy 143.91 78.352795) (xy 143.910001 78.352796) (xy 143.965186 78.519335) (xy 143.965187 78.519337) + (xy 144.057286 78.668651) (xy 144.057289 78.668655) (xy 144.181344 78.79271) (xy 144.181348 78.792713) + (xy 144.330662 78.884812) (xy 144.330664 78.884813) (xy 144.330666 78.884814) (xy 144.497203 78.939999) + (xy 144.599992 78.9505) (xy 144.599997 78.9505) (xy 147.000003 78.9505) (xy 147.000008 78.9505) + (xy 147.102797 78.939999) (xy 147.269334 78.884814) (xy 147.418655 78.792711) (xy 147.542711 78.668655) + (xy 147.634814 78.519334) (xy 147.689999 78.352797) (xy 147.7005 78.250008) (xy 147.7005 75.849992) + (xy 147.689999 75.747203) (xy 147.634814 75.580666) (xy 147.630963 75.574423) (xy 147.542713 75.431348) + (xy 147.54271 75.431344) (xy 147.418655 75.307289) (xy 147.418651 75.307286) (xy 147.269337 75.215187) + (xy 147.269335 75.215186) (xy 147.186065 75.187593) (xy 147.102797 75.160001) (xy 147.102795 75.16) + (xy 147.000015 75.1495) (xy 147.000008 75.1495) (xy 144.599992 75.1495) (xy 144.599984 75.1495) + (xy 144.497204 75.16) (xy 144.497203 75.160001) (xy 144.330664 75.215186) (xy 144.330662 75.215187) + (xy 144.181348 75.307286) (xy 144.181344 75.307289) (xy 144.057289 75.431344) (xy 144.057286 75.431348) + (xy 143.965187 75.580662) (xy 143.965186 75.580664) (xy 143.910001 75.747203) (xy 143.91 75.747204) + (xy 143.8995 75.849984) (xy 135.967475 75.849984) (xy 135.930921 75.761733) (xy 135.930916 75.761724) + (xy 135.849301 75.63958) (xy 135.849298 75.639576) (xy 135.745423 75.535701) (xy 135.745419 75.535698) + (xy 135.623275 75.454083) (xy 135.623266 75.454078) (xy 135.511095 75.407616) (xy 135.487542 75.39786) + (xy 135.487538 75.397859) (xy 135.487534 75.397858) (xy 135.343459 75.3692) (xy 135.343455 75.3692) + (xy 135.196545 75.3692) (xy 135.19654 75.3692) (xy 135.052465 75.397858) (xy 135.052453 75.397861) + (xy 135.046921 75.400153) (xy 134.977451 75.407616) (xy 134.914974 75.376337) (xy 134.879327 75.316245) + (xy 134.877864 75.309803) (xy 134.859837 75.219171) (xy 134.79243 75.056437) (xy 134.792429 75.056436) + (xy 134.792426 75.05643) (xy 134.694571 74.909981) (xy 134.694568 74.909977) (xy 134.570022 74.785431) + (xy 134.570018 74.785428) (xy 134.423569 74.687573) (xy 134.42356 74.687568) (xy 134.260829 74.620163) + (xy 134.260821 74.620161) (xy 134.088075 74.5858) (xy 134.088071 74.5858) (xy 133.911929 74.5858) + (xy 133.911924 74.5858) (xy 133.739178 74.620161) (xy 133.73917 74.620163) (xy 133.576439 74.687568) + (xy 133.57643 74.687573) (xy 133.433891 74.782816) (xy 133.367214 74.803694) (xy 133.299833 74.78521) + (xy 133.296109 74.782816) (xy 133.153569 74.687573) (xy 133.15356 74.687568) (xy 132.990829 74.620163) + (xy 132.990821 74.620161) (xy 132.818075 74.5858) (xy 132.818071 74.5858) (xy 132.641929 74.5858) + (xy 132.641924 74.5858) (xy 132.469178 74.620161) (xy 132.46917 74.620163) (xy 132.306439 74.687568) + (xy 132.30643 74.687573) (xy 132.159981 74.785428) (xy 132.159977 74.785431) (xy 132.035431 74.909977) + (xy 132.035428 74.909981) (xy 131.937573 75.05643) (xy 131.937568 75.056439) (xy 131.870163 75.21917) + (xy 131.870161 75.219178) (xy 131.838134 75.380191) (xy 131.805749 75.442102) (xy 131.745034 75.476676) + (xy 131.716517 75.48) (xy 131.46 75.48) (xy 131.46 75.736517) (xy 131.440315 75.803556) (xy 131.387511 75.849311) + (xy 131.360191 75.858134) (xy 131.199178 75.890161) (xy 131.19917 75.890163) (xy 131.036439 75.957568) + (xy 131.03643 75.957573) (xy 130.889981 76.055428) (xy 130.889977 76.055431) (xy 130.765431 76.179977) + (xy 130.765428 76.179981) (xy 130.667573 76.32643) (xy 130.66757 76.326437) (xy 130.646033 76.378431) + (xy 130.602191 76.432834) (xy 130.535897 76.454898) (xy 130.484019 76.445538) (xy 130.407544 76.413861) + (xy 130.407545 76.413861) (xy 130.407542 76.41386) (xy 130.407538 76.413859) (xy 130.407534 76.413858) + (xy 130.263459 76.3852) (xy 130.263455 76.3852) (xy 130.116545 76.3852) (xy 130.11654 76.3852) (xy 129.972465 76.413858) + (xy 129.972455 76.413861) (xy 129.836733 76.470078) (xy 129.836724 76.470083) (xy 129.71458 76.551698) + (xy 129.714576 76.551701) (xy 129.610701 76.655576) (xy 129.610698 76.65558) (xy 129.529083 76.777724) + (xy 129.529078 76.777733) (xy 129.472861 76.913455) (xy 129.472858 76.913465) (xy 129.4442 77.05754) + (xy 129.4442 77.204459) (xy 129.472858 77.348534) (xy 129.472861 77.348544) (xy 129.529078 77.484266) + (xy 129.529083 77.484275) (xy 129.610698 77.606419) (xy 129.610701 77.606423) (xy 129.714576 77.710298) + (xy 129.71458 77.710301) (xy 129.836724 77.791916) (xy 129.83673 77.791919) (xy 129.836731 77.79192) + (xy 129.972458 77.84814) (xy 130.11654 77.876799) (xy 130.116544 77.8768) (xy 130.116545 77.8768) + (xy 130.263456 77.8768) (xy 130.263457 77.876799) (xy 130.407542 77.84814) (xy 130.543269 77.79192) + (xy 130.66542 77.710301) (xy 130.769301 77.60642) (xy 130.812423 77.541882) (xy 130.866034 77.497078) + (xy 130.935358 77.488369) (xy 130.984416 77.507671) (xy 131.03643 77.542426) (xy 131.036436 77.542429) + (xy 131.036437 77.54243) (xy 131.199171 77.609837) (xy 131.371924 77.644199) (xy 131.371928 77.6442) + (xy 131.371929 77.6442) (xy 131.548072 77.6442) (xy 131.548073 77.644199) (xy 131.720829 77.609837) + (xy 131.883563 77.54243) (xy 131.920514 77.517739) (xy 131.936609 77.506986) (xy 132.003286 77.486108) + (xy 132.070666 77.504592) (xy 132.117357 77.556571) (xy 132.1295 77.610088) (xy 132.1295 78.219902) + (xy 132.109815 78.286941) (xy 132.093181 78.307583) (xy 131.819481 78.581282) (xy 131.819479 78.581285) + (xy 131.782569 78.645216) (xy 131.780597 78.648632) (xy 131.740423 78.718215) (xy 131.733379 78.744501) + (xy 131.727906 78.755549) (xy 131.712229 78.772525) (xy 131.700203 78.792256) (xy 131.688974 78.79771) + (xy 131.680506 78.806881) (xy 131.658141 78.812687) (xy 131.637355 78.822784) (xy 131.616795 78.8245) + (xy 131.311849 78.8245) (xy 131.311824 78.824501) (xy 131.276375 78.82729) (xy 131.134594 78.868481) + (xy 131.065406 78.868481) (xy 130.983728 78.844751) (xy 130.923627 78.827291) (xy 130.923625 78.82729) + (xy 130.92362 78.82729) (xy 130.888163 78.8245) (xy 130.511849 78.8245) (xy 130.511824 78.824501) + (xy 130.476375 78.82729) (xy 130.334594 78.868481) (xy 130.265406 78.868481) (xy 130.183728 78.844751) + (xy 130.123627 78.827291) (xy 130.123625 78.82729) (xy 130.12362 78.82729) (xy 130.088163 78.8245) + (xy 129.711849 78.8245) (xy 129.711824 78.824501) (xy 129.676375 78.82729) (xy 129.534594 78.868481) + (xy 129.465406 78.868481) (xy 129.383728 78.844751) (xy 129.323627 78.827291) (xy 129.323625 78.82729) + (xy 129.32362 78.82729) (xy 129.288163 78.8245) (xy 128.911849 78.8245) (xy 128.911824 78.824501) + (xy 128.876375 78.82729) (xy 128.734594 78.868481) (xy 128.665406 78.868481) (xy 128.583728 78.844751) + (xy 128.523627 78.827291) (xy 128.523625 78.82729) (xy 128.52362 78.82729) (xy 128.488163 78.8245) + (xy 128.111849 78.8245) (xy 128.111824 78.824501) (xy 128.076375 78.82729) (xy 127.934594 78.868481) + (xy 127.865406 78.868481) (xy 127.783728 78.844751) (xy 127.723627 78.827291) (xy 127.723625 78.82729) + (xy 127.72362 78.82729) (xy 127.688163 78.8245) (xy 127.311849 78.8245) (xy 127.311824 78.824501) + (xy 127.276375 78.82729) (xy 127.134594 78.868481) (xy 127.065406 78.868481) (xy 126.983728 78.844751) + (xy 126.923627 78.827291) (xy 126.923625 78.82729) (xy 126.92362 78.82729) (xy 126.888163 78.8245) + (xy 126.511849 78.8245) (xy 126.511824 78.824501) (xy 126.476372 78.827291) (xy 126.324614 78.87138) + (xy 126.324609 78.871382) (xy 126.188583 78.951827) (xy 126.188574 78.951834) (xy 126.076834 79.063574) + (xy 126.076827 79.063583) (xy 125.996382 79.199609) (xy 125.99638 79.199614) (xy 125.952292 79.351366) + (xy 125.95229 79.351379) (xy 125.9495 79.386829) (xy 125.9495 80.5755) (xy 125.929815 80.642539) + (xy 125.877011 80.688294) (xy 125.8255 80.6995) (xy 124.636849 80.6995) (xy 124.636824 80.699501) + (xy 124.601372 80.702291) (xy 124.449614 80.74638) (xy 124.449609 80.746382) (xy 124.313583 80.826827) + (xy 124.313574 80.826834) (xy 124.201834 80.938574) (xy 124.201827 80.938583) (xy 124.121382 81.074609) + (xy 124.12138 81.074614) (xy 124.077292 81.226366) (xy 124.07729 81.226379) (xy 124.0745 81.261829) + (xy 124.0745 81.63815) (xy 124.074501 81.638175) (xy 124.07729 81.673624) (xy 124.118481 81.815406) + (xy 124.118481 81.884594) (xy 124.077291 82.026373) (xy 124.07729 82.026379) (xy 124.0745 82.061829) + (xy 124.0745 82.43815) (xy 124.074501 82.438175) (xy 124.07729 82.473624) (xy 124.118481 82.615406) + (xy 124.118481 82.633057) (xy 124.123403 82.649645) (xy 124.118481 82.684594) (xy 124.104443 82.732914) + (xy 124.066837 82.7918) (xy 124.003364 82.821007) (xy 123.934177 82.811261) (xy 123.929757 82.808961) + (xy 123.92639 82.807504) (xy 123.770997 82.762357) (xy 123.770991 82.762356) (xy 123.734697 82.7595) + (xy 123.73469 82.7595) (xy 123.26531 82.7595) (xy 123.265302 82.7595) (xy 123.229008 82.762356) + (xy 123.229002 82.762357) (xy 123.073609 82.807504) (xy 123.073606 82.807505) (xy 122.934315 82.889881) + (xy 122.934307 82.889887) (xy 122.819887 83.004307) (xy 122.819881 83.004315) (xy 122.737505 83.143606) + (xy 122.737504 83.143609) (xy 122.692357 83.299002) (xy 122.692356 83.299008) (xy 122.6895 83.335302) + (xy 119.0005 83.335302) (xy 119.000499 82.202128) (xy 118.994091 82.142517) (xy 118.963999 82.061837) + (xy 118.943797 82.007671) (xy 118.943793 82.007664) (xy 118.857547 81.892455) (xy 118.857544 81.892452) + (xy 118.742335 81.806206) (xy 118.742328 81.806202) (xy 118.607482 81.755908) (xy 118.607483 81.755908) + (xy 118.547883 81.749501) (xy 118.547881 81.7495) (xy 118.547873 81.7495) (xy 118.547864 81.7495) + (xy 116.952129 81.7495) (xy 116.952123 81.749501) (xy 116.892516 81.755908) (xy 116.757671 81.806202) + (xy 116.757664 81.806206) (xy 116.642455 81.892452) (xy 116.642452 81.892455) (xy 116.556206 82.007664) + (xy 116.556202 82.007671) (xy 116.505908 82.142517) (xy 116.499501 82.202116) (xy 116.499501 82.202123) + (xy 116.4995 82.202135) (xy 98.250499 82.202135) (xy 98.250499 81.952129) (xy 98.250498 81.952123) + (xy 98.250497 81.952116) (xy 98.244091 81.892517) (xy 98.241136 81.884595) (xy 98.193797 81.757671) + (xy 98.193793 81.757664) (xy 98.107547 81.642455) (xy 98.107544 81.642452) (xy 97.992335 81.556206) + (xy 97.992328 81.556202) (xy 97.857482 81.505908) (xy 97.857483 81.505908) (xy 97.797883 81.499501) + (xy 97.797881 81.4995) (xy 97.797873 81.4995) (xy 97.797864 81.4995) (xy 96.202129 81.4995) (xy 96.202123 81.499501) + (xy 96.142516 81.505908) (xy 96.007671 81.556202) (xy 96.007664 81.556206) (xy 95.892455 81.642452) + (xy 95.892452 81.642455) (xy 95.806206 81.757664) (xy 95.806202 81.757671) (xy 95.755908 81.892517) + (xy 95.749857 81.948805) (xy 95.749501 81.952123) (xy 95.7495 81.952135) (xy 55.600499 81.952135) + (xy 55.600499 81.757671) (xy 55.600499 81.002129) (xy 55.600498 81.002123) (xy 55.600497 81.002116) + (xy 55.594091 80.942517) (xy 55.59262 80.938574) (xy 55.543797 80.807671) (xy 55.543793 80.807664) + (xy 55.457547 80.692455) (xy 55.457544 80.692452) (xy 55.342335 80.606206) (xy 55.342328 80.606202) + (xy 55.207482 80.555908) (xy 55.207483 80.555908) (xy 55.147883 80.549501) (xy 55.147881 80.5495) + (xy 55.147873 80.5495) (xy 55.147864 80.5495) (xy 53.552129 80.5495) (xy 53.552123 80.549501) (xy 53.492516 80.555908) + (xy 53.357671 80.606202) (xy 53.357664 80.606206) (xy 53.242455 80.692452) (xy 53.242452 80.692455) + (xy 53.156206 80.807664) (xy 53.156202 80.807671) (xy 53.105908 80.942517) (xy 53.099501 81.002116) + (xy 53.099501 81.002123) (xy 53.0995 81.002135) (xy 50.5005 81.002135) (xy 50.5005 78.881902) (xy 99.7495 78.881902) + (xy 99.7495 79.118097) (xy 99.786446 79.351368) (xy 99.859433 79.575996) (xy 99.966657 79.786433) + (xy 100.105483 79.97751) (xy 100.27249 80.144517) (xy 100.463567 80.283343) (xy 100.562991 80.334002) + (xy 100.674003 80.390566) (xy 100.674005 80.390566) (xy 100.674008 80.390568) (xy 100.794412 80.429689) + (xy 100.898631 80.463553) (xy 101.131903 80.5005) (xy 101.131908 80.5005) (xy 101.368097 80.5005) + (xy 101.601368 80.463553) (xy 101.825992 80.390568) (xy 102.036433 80.283343) (xy 102.22751 80.144517) + (xy 102.394517 79.97751) (xy 102.533343 79.786433) (xy 102.640568 79.575992) (xy 102.713553 79.351368) + (xy 102.713553 79.351366) (xy 102.7505 79.118097) (xy 102.7505 78.881902) (xy 106.2495 78.881902) + (xy 106.2495 79.118097) (xy 106.286446 79.351368) (xy 106.359433 79.575996) (xy 106.466657 79.786433) + (xy 106.605483 79.97751) (xy 106.77249 80.144517) (xy 106.963567 80.283343) (xy 107.062991 80.334002) (xy 107.174003 80.390566) (xy 107.174005 80.390566) (xy 107.174008 80.390568) (xy 107.294412 80.429689) (xy 107.398631 80.463553) (xy 107.631903 80.5005) (xy 107.631908 80.5005) (xy 107.868097 80.5005) (xy 108.101368 80.463553) (xy 108.325992 80.390568) (xy 108.536433 80.283343) (xy 108.72751 80.144517) (xy 108.894517 79.97751) (xy 109.033343 79.786433) (xy 109.140568 79.575992) (xy 109.213553 79.351368) - (xy 109.229478 79.25082) (xy 109.2505 79.118097) (xy 109.2505 78.881902) (xy 109.9995 78.881902) - (xy 109.9995 79.118097) (xy 110.036446 79.351368) (xy 110.109433 79.575996) (xy 110.197676 79.749181) - (xy 110.216657 79.786433) (xy 110.355483 79.97751) (xy 110.52249 80.144517) (xy 110.713567 80.283343) - (xy 110.780926 80.317664) (xy 110.924003 80.390566) (xy 110.924005 80.390566) (xy 110.924008 80.390568) - (xy 111.044412 80.429689) (xy 111.148631 80.463553) (xy 111.381903 80.5005) (xy 111.381908 80.5005) - (xy 111.618097 80.5005) (xy 111.851368 80.463553) (xy 112.075992 80.390568) (xy 112.286433 80.283343) - (xy 112.47751 80.144517) (xy 112.644517 79.97751) (xy 112.783343 79.786433) (xy 112.890568 79.575992) - (xy 112.963553 79.351368) (xy 112.979478 79.25082) (xy 113.0005 79.118097) (xy 113.0005 78.881902) - (xy 116.4995 78.881902) (xy 116.4995 79.118097) (xy 116.536446 79.351368) (xy 116.609433 79.575996) - (xy 116.697676 79.749181) (xy 116.716657 79.786433) (xy 116.855483 79.97751) (xy 117.02249 80.144517) - (xy 117.213567 80.283343) (xy 117.280926 80.317664) (xy 117.424003 80.390566) (xy 117.424005 80.390566) - (xy 117.424008 80.390568) (xy 117.544412 80.429689) (xy 117.648631 80.463553) (xy 117.881903 80.5005) - (xy 117.881908 80.5005) (xy 118.118097 80.5005) (xy 118.351368 80.463553) (xy 118.575992 80.390568) - (xy 118.786433 80.283343) (xy 118.97751 80.144517) (xy 119.144517 79.97751) (xy 119.283343 79.786433) - (xy 119.390568 79.575992) (xy 119.463553 79.351368) (xy 119.479477 79.25083) (xy 119.47948 79.250811) - (xy 138.4445 79.250811) (xy 138.4445 79.749169) (xy 138.444501 79.749191) (xy 138.447335 79.785205) - (xy 138.492129 79.939388) (xy 138.492131 79.939393) (xy 138.573863 80.077595) (xy 138.573869 80.077603) - (xy 138.687396 80.19113) (xy 138.6874 80.191133) (xy 138.687402 80.191135) (xy 138.825607 80.272869) - (xy 138.825614 80.272871) (xy 138.979791 80.317664) (xy 138.979794 80.317664) (xy 138.979796 80.317665) - (xy 139.015819 80.3205) (xy 139.41418 80.320499) (xy 139.450204 80.317665) (xy 139.604393 80.272869) - (xy 139.661882 80.238869) (xy 139.729602 80.221688) (xy 139.788117 80.238869) (xy 139.845607 80.272869) - (xy 139.84561 80.272869) (xy 139.845612 80.272871) (xy 139.999791 80.317664) (xy 139.999794 80.317664) - (xy 139.999796 80.317665) (xy 140.035819 80.3205) (xy 140.43418 80.320499) (xy 140.470204 80.317665) - (xy 140.624393 80.272869) (xy 140.762598 80.191135) (xy 140.876135 80.077598) (xy 140.957869 79.939393) - (xy 141.002665 79.785204) (xy 141.0055 79.749181) (xy 141.005499 79.25082) (xy 141.002665 79.214796) - (xy 140.957869 79.060607) (xy 140.876135 78.922402) (xy 140.876133 78.9224) (xy 140.87613 78.922396) - (xy 140.873557 78.919823) (xy 140.872184 78.917308) (xy 140.871352 78.916236) (xy 140.871525 78.916101) - (xy 140.840072 78.8585) (xy 140.845056 78.788808) (xy 140.886928 78.732875) (xy 140.917906 78.71596) - (xy 140.977326 78.693798) (xy 140.977326 78.693797) (xy 140.977331 78.693796) (xy 141.092546 78.607546) - (xy 141.178796 78.492331) (xy 141.229091 78.357483) (xy 141.2355 78.297873) (xy 141.235499 76.702128) - (xy 141.229091 76.642517) (xy 141.178796 76.507669) (xy 141.178795 76.507668) (xy 141.178793 76.507664) - (xy 141.092547 76.392455) (xy 141.092545 76.392453) (xy 140.977335 76.306206) (xy 140.977328 76.306202) - (xy 140.960657 76.299984) (xy 143.8345 76.299984) (xy 143.8345 78.700015) (xy 143.845 78.802795) - (xy 143.845001 78.802796) (xy 143.900186 78.969335) (xy 143.900187 78.969337) (xy 143.992286 79.118651) - (xy 143.992289 79.118655) (xy 144.116344 79.24271) (xy 144.116348 79.242713) (xy 144.265662 79.334812) - (xy 144.265664 79.334813) (xy 144.265666 79.334814) (xy 144.432203 79.389999) (xy 144.534992 79.4005) - (xy 144.534997 79.4005) (xy 146.935003 79.4005) (xy 146.935008 79.4005) (xy 147.037797 79.389999) - (xy 147.204334 79.334814) (xy 147.353655 79.242711) (xy 147.477711 79.118655) (xy 147.569814 78.969334) - (xy 147.624999 78.802797) (xy 147.6355 78.700008) (xy 147.6355 76.299992) (xy 147.624999 76.197203) - (xy 147.569814 76.030666) (xy 147.483112 75.890102) (xy 147.477713 75.881348) (xy 147.47771 75.881344) - (xy 147.353655 75.757289) (xy 147.353651 75.757286) (xy 147.204337 75.665187) (xy 147.204335 75.665186) - (xy 147.121065 75.637593) (xy 147.037797 75.610001) (xy 147.037795 75.61) (xy 146.935015 75.5995) - (xy 146.935008 75.5995) (xy 144.534992 75.5995) (xy 144.534984 75.5995) (xy 144.432204 75.61) (xy 144.432203 75.610001) - (xy 144.265664 75.665186) (xy 144.265662 75.665187) (xy 144.116348 75.757286) (xy 144.116344 75.757289) - (xy 143.992289 75.881344) (xy 143.992286 75.881348) (xy 143.900187 76.030662) (xy 143.900186 76.030664) - (xy 143.845001 76.197203) (xy 143.845 76.197204) (xy 143.8345 76.299984) (xy 140.960657 76.299984) - (xy 140.842482 76.255908) (xy 140.842483 76.255908) (xy 140.782883 76.249501) (xy 140.782881 76.2495) - (xy 140.782873 76.2495) (xy 140.782864 76.2495) (xy 139.187129 76.2495) (xy 139.187123 76.249501) - (xy 139.127516 76.255908) (xy 138.992671 76.306202) (xy 138.992664 76.306206) (xy 138.877455 76.392452) - (xy 138.877452 76.392455) (xy 138.791206 76.507664) (xy 138.791202 76.507671) (xy 138.740908 76.642517) - (xy 138.734501 76.702116) (xy 138.734501 76.702123) (xy 138.7345 76.702135) (xy 138.7345 78.29787) - (xy 138.734501 78.297876) (xy 138.740908 78.357483) (xy 138.791202 78.492328) (xy 138.791204 78.492331) - (xy 138.840746 78.558511) (xy 138.865163 78.623976) (xy 138.850311 78.692249) (xy 138.8046 78.739554) - (xy 138.687405 78.808862) (xy 138.687396 78.808869) (xy 138.573869 78.922396) (xy 138.573863 78.922404) - (xy 138.492131 79.060606) (xy 138.492129 79.060611) (xy 138.447335 79.214791) (xy 138.447334 79.214797) - (xy 138.4445 79.250811) (xy 119.47948 79.250811) (xy 119.482937 79.228986) (xy 119.5005 79.118097) - (xy 119.5005 78.881902) (xy 119.463553 78.648631) (xy 119.412769 78.492335) (xy 119.390568 78.424008) - (xy 119.390566 78.424005) (xy 119.390566 78.424003) (xy 119.326304 78.297883) (xy 119.283343 78.213567) - (xy 119.144517 78.02249) (xy 118.97751 77.855483) (xy 118.786433 77.716657) (xy 118.575996 77.609433) - (xy 118.351368 77.536446) (xy 118.118097 77.4995) (xy 118.118092 77.4995) (xy 117.881908 77.4995) - (xy 117.881903 77.4995) (xy 117.648631 77.536446) (xy 117.424003 77.609433) (xy 117.213566 77.716657) - (xy 117.10455 77.795862) (xy 117.02249 77.855483) (xy 117.022488 77.855485) (xy 117.022487 77.855485) - (xy 116.855485 78.022487) (xy 116.855485 78.022488) (xy 116.855483 78.02249) (xy 116.795862 78.10455) - (xy 116.716657 78.213566) (xy 116.609433 78.424003) (xy 116.536446 78.648631) (xy 116.4995 78.881902) - (xy 113.0005 78.881902) (xy 112.963553 78.648631) (xy 112.912769 78.492335) (xy 112.890568 78.424008) - (xy 112.890566 78.424005) (xy 112.890566 78.424003) (xy 112.826304 78.297883) (xy 112.783343 78.213567) - (xy 112.644517 78.02249) (xy 112.47751 77.855483) (xy 112.286433 77.716657) (xy 112.075996 77.609433) + (xy 109.213553 79.351366) (xy 109.2505 79.118097) (xy 109.2505 78.881902) (xy 109.9995 78.881902) + (xy 109.9995 79.118097) (xy 110.036446 79.351368) (xy 110.109433 79.575996) (xy 110.216657 79.786433) + (xy 110.355483 79.97751) (xy 110.52249 80.144517) (xy 110.713567 80.283343) (xy 110.812991 80.334002) + (xy 110.924003 80.390566) (xy 110.924005 80.390566) (xy 110.924008 80.390568) (xy 111.044412 80.429689) + (xy 111.148631 80.463553) (xy 111.381903 80.5005) (xy 111.381908 80.5005) (xy 111.618097 80.5005) + (xy 111.851368 80.463553) (xy 112.075992 80.390568) (xy 112.286433 80.283343) (xy 112.47751 80.144517) + (xy 112.644517 79.97751) (xy 112.783343 79.786433) (xy 112.890568 79.575992) (xy 112.963553 79.351368) + (xy 112.963553 79.351366) (xy 113.0005 79.118097) (xy 113.0005 78.881902) (xy 116.4995 78.881902) + (xy 116.4995 79.118097) (xy 116.536446 79.351368) (xy 116.609433 79.575996) (xy 116.716657 79.786433) + (xy 116.855483 79.97751) (xy 117.02249 80.144517) (xy 117.213567 80.283343) (xy 117.312991 80.334002) + (xy 117.424003 80.390566) (xy 117.424005 80.390566) (xy 117.424008 80.390568) (xy 117.544412 80.429689) + (xy 117.648631 80.463553) (xy 117.881903 80.5005) (xy 117.881908 80.5005) (xy 118.118097 80.5005) + (xy 118.351368 80.463553) (xy 118.575992 80.390568) (xy 118.786433 80.283343) (xy 118.97751 80.144517) + (xy 119.144517 79.97751) (xy 119.283343 79.786433) (xy 119.390568 79.575992) (xy 119.463553 79.351368) + (xy 119.463553 79.351366) (xy 119.5005 79.118097) (xy 119.5005 78.881902) (xy 119.463553 78.648631) + (xy 119.405342 78.469478) (xy 119.390568 78.424008) (xy 119.390566 78.424005) (xy 119.390566 78.424003) + (xy 119.334002 78.312991) (xy 119.283343 78.213567) (xy 119.144517 78.02249) (xy 118.97751 77.855483) + (xy 118.786433 77.716657) (xy 118.773953 77.710298) (xy 118.575996 77.609433) (xy 118.351368 77.536446) + (xy 118.118097 77.4995) (xy 118.118092 77.4995) (xy 117.881908 77.4995) (xy 117.881903 77.4995) + (xy 117.648631 77.536446) (xy 117.424003 77.609433) (xy 117.213566 77.716657) (xy 117.109982 77.791916) + (xy 117.02249 77.855483) (xy 117.022488 77.855485) (xy 117.022487 77.855485) (xy 116.855485 78.022487) + (xy 116.855485 78.022488) (xy 116.855483 78.02249) (xy 116.848223 78.032483) (xy 116.716657 78.213566) + (xy 116.609433 78.424003) (xy 116.536446 78.648631) (xy 116.4995 78.881902) (xy 113.0005 78.881902) + (xy 112.963553 78.648631) (xy 112.905342 78.469478) (xy 112.890568 78.424008) (xy 112.890566 78.424005) + (xy 112.890566 78.424003) (xy 112.834002 78.312991) (xy 112.783343 78.213567) (xy 112.644517 78.02249) + (xy 112.47751 77.855483) (xy 112.286433 77.716657) (xy 112.273953 77.710298) (xy 112.075996 77.609433) (xy 111.851368 77.536446) (xy 111.618097 77.4995) (xy 111.618092 77.4995) (xy 111.381908 77.4995) (xy 111.381903 77.4995) (xy 111.148631 77.536446) (xy 110.924003 77.609433) (xy 110.713566 77.716657) - (xy 110.60455 77.795862) (xy 110.52249 77.855483) (xy 110.522488 77.855485) (xy 110.522487 77.855485) - (xy 110.355485 78.022487) (xy 110.355485 78.022488) (xy 110.355483 78.02249) (xy 110.295862 78.10455) + (xy 110.609982 77.791916) (xy 110.52249 77.855483) (xy 110.522488 77.855485) (xy 110.522487 77.855485) + (xy 110.355485 78.022487) (xy 110.355485 78.022488) (xy 110.355483 78.02249) (xy 110.348223 78.032483) (xy 110.216657 78.213566) (xy 110.109433 78.424003) (xy 110.036446 78.648631) (xy 109.9995 78.881902) - (xy 109.2505 78.881902) (xy 109.213553 78.648631) (xy 109.162769 78.492335) (xy 109.140568 78.424008) - (xy 109.140566 78.424005) (xy 109.140566 78.424003) (xy 109.076304 78.297883) (xy 109.033343 78.213567) - (xy 108.894517 78.02249) (xy 108.72751 77.855483) (xy 108.536433 77.716657) (xy 108.325996 77.609433) - (xy 108.101368 77.536446) (xy 107.868097 77.4995) (xy 107.868092 77.4995) (xy 107.631908 77.4995) - (xy 107.631903 77.4995) (xy 107.398631 77.536446) (xy 107.174003 77.609433) (xy 106.963566 77.716657) - (xy 106.85455 77.795862) (xy 106.77249 77.855483) (xy 106.772488 77.855485) (xy 106.772487 77.855485) - (xy 106.605485 78.022487) (xy 106.605485 78.022488) (xy 106.605483 78.02249) (xy 106.545862 78.10455) - (xy 106.466657 78.213566) (xy 106.359433 78.424003) (xy 106.286446 78.648631) (xy 106.2495 78.881902) - (xy 102.7505 78.881902) (xy 102.713553 78.648631) (xy 102.662769 78.492335) (xy 102.640568 78.424008) - (xy 102.640566 78.424005) (xy 102.640566 78.424003) (xy 102.576304 78.297883) (xy 102.533343 78.213567) - (xy 102.394517 78.02249) (xy 102.22751 77.855483) (xy 102.036433 77.716657) (xy 101.825996 77.609433) - (xy 101.601368 77.536446) (xy 101.368097 77.4995) (xy 101.368092 77.4995) (xy 101.131908 77.4995) - (xy 101.131903 77.4995) (xy 100.898631 77.536446) (xy 100.674003 77.609433) (xy 100.463566 77.716657) - (xy 100.35455 77.795862) (xy 100.27249 77.855483) (xy 100.272488 77.855485) (xy 100.272487 77.855485) - (xy 100.105485 78.022487) (xy 100.105485 78.022488) (xy 100.105483 78.02249) (xy 100.045862 78.10455) - (xy 99.966657 78.213566) (xy 99.859433 78.424003) (xy 99.786446 78.648631) (xy 99.7495 78.881902) - (xy 50.5005 78.881902) (xy 50.5005 74.381947) (xy 99.75 74.381947) (xy 99.75 74.618052) (xy 99.786934 74.851247) - (xy 99.859897 75.075802) (xy 99.967087 75.286174) (xy 100.027338 75.369104) (xy 100.02734 75.369105) - (xy 100.726212 74.670233) (xy 100.737482 74.712292) (xy 100.80989 74.837708) (xy 100.912292 74.94011) - (xy 101.037708 75.012518) (xy 101.079765 75.023787) (xy 100.380893 75.722658) (xy 100.463828 75.782914) - (xy 100.674197 75.890102) (xy 100.898752 75.963065) (xy 100.898751 75.963065) (xy 101.131948 76) - (xy 101.368052 76) (xy 101.601247 75.963065) (xy 101.825802 75.890102) (xy 102.036163 75.782918) - (xy 102.036169 75.782914) (xy 102.119104 75.722658) (xy 102.119105 75.722658) (xy 101.420233 75.023787) - (xy 101.462292 75.012518) (xy 101.587708 74.94011) (xy 101.69011 74.837708) (xy 101.762518 74.712292) - (xy 101.773787 74.670233) (xy 102.472658 75.369105) (xy 102.472658 75.369104) (xy 102.532914 75.286169) - (xy 102.532918 75.286163) (xy 102.640102 75.075802) (xy 102.713065 74.851247) (xy 102.75 74.618052) - (xy 102.75 74.381947) (xy 106.25 74.381947) (xy 106.25 74.618052) (xy 106.286934 74.851247) (xy 106.359897 75.075802) - (xy 106.467087 75.286174) (xy 106.527338 75.369104) (xy 106.52734 75.369105) (xy 107.226212 74.670233) - (xy 107.237482 74.712292) (xy 107.30989 74.837708) (xy 107.412292 74.94011) (xy 107.537708 75.012518) - (xy 107.579765 75.023787) (xy 106.880893 75.722658) (xy 106.963828 75.782914) (xy 107.174197 75.890102) - (xy 107.398752 75.963065) (xy 107.398751 75.963065) (xy 107.631948 76) (xy 107.868052 76) (xy 108.101247 75.963065) - (xy 108.325802 75.890102) (xy 108.536163 75.782918) (xy 108.536169 75.782914) (xy 108.619104 75.722658) - (xy 108.619105 75.722658) (xy 107.920233 75.023787) (xy 107.962292 75.012518) (xy 108.087708 74.94011) - (xy 108.19011 74.837708) (xy 108.262518 74.712292) (xy 108.273787 74.670233) (xy 108.972658 75.369105) - (xy 108.972658 75.369104) (xy 109.032914 75.286169) (xy 109.032918 75.286163) (xy 109.140102 75.075802) - (xy 109.213065 74.851247) (xy 109.25 74.618052) (xy 109.25 74.381947) (xy 110 74.381947) (xy 110 74.618052) - (xy 110.036934 74.851247) (xy 110.109897 75.075802) (xy 110.217087 75.286174) (xy 110.277338 75.369104) - (xy 110.27734 75.369105) (xy 110.976212 74.670233) (xy 110.987482 74.712292) (xy 111.05989 74.837708) - (xy 111.162292 74.94011) (xy 111.287708 75.012518) (xy 111.329765 75.023787) (xy 110.630893 75.722658) - (xy 110.713828 75.782914) (xy 110.924197 75.890102) (xy 111.148752 75.963065) (xy 111.148751 75.963065) - (xy 111.381948 76) (xy 111.618052 76) (xy 111.851247 75.963065) (xy 112.075802 75.890102) (xy 112.286163 75.782918) - (xy 112.286169 75.782914) (xy 112.369104 75.722658) (xy 112.369105 75.722658) (xy 111.670233 75.023787) - (xy 111.712292 75.012518) (xy 111.837708 74.94011) (xy 111.94011 74.837708) (xy 112.012518 74.712292) - (xy 112.023787 74.670233) (xy 112.722658 75.369105) (xy 112.722658 75.369104) (xy 112.782914 75.286169) - (xy 112.782918 75.286163) (xy 112.890102 75.075802) (xy 112.963065 74.851247) (xy 113 74.618052) - (xy 113 74.381947) (xy 116.5 74.381947) (xy 116.5 74.618052) (xy 116.536934 74.851247) (xy 116.609897 75.075802) - (xy 116.717087 75.286174) (xy 116.777338 75.369104) (xy 116.77734 75.369105) (xy 117.476212 74.670233) - (xy 117.487482 74.712292) (xy 117.55989 74.837708) (xy 117.662292 74.94011) (xy 117.787708 75.012518) - (xy 117.829765 75.023787) (xy 117.130893 75.722658) (xy 117.213828 75.782914) (xy 117.424197 75.890102) - (xy 117.648752 75.963065) (xy 117.648751 75.963065) (xy 117.881948 76) (xy 118.118052 76) (xy 118.351247 75.963065) - (xy 118.575802 75.890102) (xy 118.786163 75.782918) (xy 118.786169 75.782914) (xy 118.869104 75.722658) - (xy 118.869105 75.722658) (xy 118.170233 75.023787) (xy 118.212292 75.012518) (xy 118.337708 74.94011) - (xy 118.44011 74.837708) (xy 118.512518 74.712292) (xy 118.523787 74.670233) (xy 119.222658 75.369105) - (xy 119.222658 75.369104) (xy 119.282914 75.286169) (xy 119.282918 75.286163) (xy 119.390102 75.075802) - (xy 119.463065 74.851247) (xy 119.5 74.618052) (xy 119.5 74.381946) (xy 119.479102 74.25) (xy 138.672156 74.25) - (xy 138.712595 74.389194) (xy 138.794261 74.527285) (xy 138.794268 74.527294) (xy 138.907705 74.640731) - (xy 138.907714 74.640738) (xy 139.045808 74.722406) (xy 139.045811 74.722407) (xy 139.199871 74.767166) - (xy 139.199877 74.767167) (xy 139.235 74.769931) (xy 139.235 74.76993) (xy 139.735 74.76993) (xy 139.770122 74.767167) - (xy 139.770128 74.767166) (xy 139.924188 74.722407) (xy 139.924191 74.722406) (xy 140.062285 74.640738) - (xy 140.062294 74.640731) (xy 140.175731 74.527294) (xy 140.175738 74.527285) (xy 140.257404 74.389194) - (xy 140.297844 74.25) (xy 139.735 74.25) (xy 139.735 74.76993) (xy 139.235 74.76993) (xy 139.235 74.25) - (xy 138.672156 74.25) (xy 119.479102 74.25) (xy 119.47823 74.244493) (xy 119.463065 74.148752) (xy 119.390102 73.924197) - (xy 119.342718 73.831199) (xy 119.282914 73.713828) (xy 119.222658 73.630894) (xy 119.222658 73.630893) - (xy 118.523787 74.329765) (xy 118.512518 74.287708) (xy 118.44011 74.162292) (xy 118.337708 74.05989) - (xy 118.212292 73.987482) (xy 118.170234 73.976212) (xy 118.869105 73.27734) (xy 118.869104 73.277338) - (xy 118.786174 73.217087) (xy 118.575802 73.109897) (xy 118.351247 73.036934) (xy 118.351248 73.036934) - (xy 118.118052 73) (xy 117.881948 73) (xy 117.648752 73.036934) (xy 117.424197 73.109897) (xy 117.21383 73.217084) - (xy 117.130894 73.27734) (xy 117.829766 73.976212) (xy 117.787708 73.987482) (xy 117.662292 74.05989) - (xy 117.55989 74.162292) (xy 117.487482 74.287708) (xy 117.476212 74.329766) (xy 116.77734 73.630894) - (xy 116.717084 73.71383) (xy 116.609897 73.924197) (xy 116.536934 74.148752) (xy 116.5 74.381947) - (xy 113 74.381947) (xy 112.963065 74.148752) (xy 112.890102 73.924197) (xy 112.782914 73.713828) - (xy 112.722658 73.630894) (xy 112.722658 73.630893) (xy 112.023787 74.329765) (xy 112.012518 74.287708) - (xy 111.94011 74.162292) (xy 111.837708 74.05989) (xy 111.712292 73.987482) (xy 111.670234 73.976212) - (xy 112.369105 73.27734) (xy 112.369104 73.277339) (xy 112.286174 73.217087) (xy 112.075802 73.109897) - (xy 111.851247 73.036934) (xy 111.851248 73.036934) (xy 111.618052 73) (xy 111.381948 73) (xy 111.148752 73.036934) - (xy 110.924197 73.109897) (xy 110.71383 73.217084) (xy 110.630894 73.27734) (xy 111.329766 73.976212) - (xy 111.287708 73.987482) (xy 111.162292 74.05989) (xy 111.05989 74.162292) (xy 110.987482 74.287708) - (xy 110.976212 74.329766) (xy 110.27734 73.630894) (xy 110.217084 73.71383) (xy 110.109897 73.924197) - (xy 110.036934 74.148752) (xy 110 74.381947) (xy 109.25 74.381947) (xy 109.213065 74.148752) (xy 109.140102 73.924197) - (xy 109.032914 73.713828) (xy 108.972658 73.630894) (xy 108.972658 73.630893) (xy 108.273787 74.329765) - (xy 108.262518 74.287708) (xy 108.19011 74.162292) (xy 108.087708 74.05989) (xy 107.962292 73.987482) - (xy 107.920234 73.976212) (xy 108.619105 73.27734) (xy 108.619104 73.277339) (xy 108.536174 73.217087) - (xy 108.325802 73.109897) (xy 108.101247 73.036934) (xy 108.101248 73.036934) (xy 107.868052 73) - (xy 107.631948 73) (xy 107.398752 73.036934) (xy 107.174197 73.109897) (xy 106.96383 73.217084) - (xy 106.880894 73.27734) (xy 107.579766 73.976212) (xy 107.537708 73.987482) (xy 107.412292 74.05989) - (xy 107.30989 74.162292) (xy 107.237482 74.287708) (xy 107.226212 74.329766) (xy 106.52734 73.630894) - (xy 106.467084 73.71383) (xy 106.359897 73.924197) (xy 106.286934 74.148752) (xy 106.25 74.381947) - (xy 102.75 74.381947) (xy 102.713065 74.148752) (xy 102.640102 73.924197) (xy 102.532914 73.713828) - (xy 102.472658 73.630894) (xy 102.472658 73.630893) (xy 101.773787 74.329765) (xy 101.762518 74.287708) - (xy 101.69011 74.162292) (xy 101.587708 74.05989) (xy 101.462292 73.987482) (xy 101.420234 73.976212) - (xy 102.119105 73.27734) (xy 102.119104 73.277339) (xy 102.036174 73.217087) (xy 101.825802 73.109897) - (xy 101.601247 73.036934) (xy 101.601248 73.036934) (xy 101.368052 73) (xy 101.131948 73) (xy 100.898752 73.036934) - (xy 100.674197 73.109897) (xy 100.46383 73.217084) (xy 100.380894 73.27734) (xy 101.079766 73.976212) - (xy 101.037708 73.987482) (xy 100.912292 74.05989) (xy 100.80989 74.162292) (xy 100.737482 74.287708) - (xy 100.726212 74.329765) (xy 100.02734 73.630894) (xy 99.967084 73.71383) (xy 99.859897 73.924197) - (xy 99.786934 74.148752) (xy 99.75 74.381947) (xy 50.5005 74.381947) (xy 50.5005 70.202135) (xy 77.7495 70.202135) - (xy 77.7495 71.79787) (xy 77.749501 71.797876) (xy 77.755908 71.857483) (xy 77.806202 71.992328) - (xy 77.806206 71.992335) (xy 77.892452 72.107544) (xy 77.892455 72.107547) (xy 78.007664 72.193793) - (xy 78.007671 72.193797) (xy 78.142517 72.244091) (xy 78.142516 72.244091) (xy 78.149444 72.244835) - (xy 78.202127 72.2505) (xy 79.797872 72.250499) (xy 79.857483 72.244091) (xy 79.992331 72.193796) - (xy 80.107546 72.107546) (xy 80.150734 72.049854) (xy 80.206667 72.007984) (xy 80.276359 72.003) - (xy 80.337682 72.036485) (xy 80.349263 72.04985) (xy 80.392454 72.107546) (xy 80.420358 72.128435) - (xy 80.507664 72.193793) (xy 80.507671 72.193797) (xy 80.642517 72.244091) (xy 80.642516 72.244091) - (xy 80.649444 72.244835) (xy 80.702127 72.2505) (xy 82.297872 72.250499) (xy 82.357483 72.244091) - (xy 82.492331 72.193796) (xy 82.607546 72.107546) (xy 82.650734 72.049854) (xy 82.706667 72.007984) - (xy 82.776359 72.003) (xy 82.837682 72.036485) (xy 82.849263 72.04985) (xy 82.892454 72.107546) - (xy 82.920358 72.128435) (xy 83.007664 72.193793) (xy 83.007671 72.193797) (xy 83.142517 72.244091) - (xy 83.142516 72.244091) (xy 83.149444 72.244835) (xy 83.202127 72.2505) (xy 84.797872 72.250499) - (xy 84.857483 72.244091) (xy 84.992331 72.193796) (xy 85.107546 72.107546) (xy 85.150734 72.049854) - (xy 85.206667 72.007984) (xy 85.276359 72.003) (xy 85.337682 72.036485) (xy 85.349263 72.04985) - (xy 85.392454 72.107546) (xy 85.420358 72.128435) (xy 85.507664 72.193793) (xy 85.507671 72.193797) - (xy 85.642517 72.244091) (xy 85.642516 72.244091) (xy 85.649444 72.244835) (xy 85.702127 72.2505) - (xy 87.297872 72.250499) (xy 87.357483 72.244091) (xy 87.492331 72.193796) (xy 87.607546 72.107546) - (xy 87.650734 72.049854) (xy 87.706667 72.007984) (xy 87.776359 72.003) (xy 87.837682 72.036485) - (xy 87.849263 72.04985) (xy 87.892454 72.107546) (xy 87.920358 72.128435) (xy 88.007664 72.193793) - (xy 88.007671 72.193797) (xy 88.142517 72.244091) (xy 88.142516 72.244091) (xy 88.149444 72.244835) - (xy 88.202127 72.2505) (xy 89.797872 72.250499) (xy 89.857483 72.244091) (xy 89.992331 72.193796) - (xy 90.107546 72.107546) (xy 90.150734 72.049854) (xy 90.206667 72.007984) (xy 90.276359 72.003) - (xy 90.337682 72.036485) (xy 90.349263 72.04985) (xy 90.392454 72.107546) (xy 90.420358 72.128435) - (xy 90.507664 72.193793) (xy 90.507671 72.193797) (xy 90.642517 72.244091) (xy 90.642516 72.244091) - (xy 90.649444 72.244835) (xy 90.702127 72.2505) (xy 92.297872 72.250499) (xy 92.357483 72.244091) - (xy 92.492331 72.193796) (xy 92.607546 72.107546) (xy 92.650734 72.049854) (xy 92.706667 72.007984) - (xy 92.776359 72.003) (xy 92.837682 72.036485) (xy 92.849263 72.04985) (xy 92.892454 72.107546) - (xy 92.920358 72.128435) (xy 93.007664 72.193793) (xy 93.007671 72.193797) (xy 93.142517 72.244091) - (xy 93.142516 72.244091) (xy 93.149444 72.244835) (xy 93.202127 72.2505) (xy 94.797872 72.250499) - (xy 94.857483 72.244091) (xy 94.992331 72.193796) (xy 95.107546 72.107546) (xy 95.193796 71.992331) - (xy 95.244091 71.857483) (xy 95.2505 71.797873) (xy 95.250499 70.800811) (xy 138.6645 70.800811) - (xy 138.6645 71.199169) (xy 138.664501 71.199191) (xy 138.667335 71.235205) (xy 138.712129 71.389388) - (xy 138.712132 71.389395) (xy 138.746128 71.446881) (xy 138.763309 71.514605) (xy 138.746128 71.573119) - (xy 138.712132 71.630604) (xy 138.712129 71.630611) (xy 138.667335 71.784791) (xy 138.667334 71.784797) - (xy 138.6645 71.820811) (xy 138.6645 72.219169) (xy 138.664501 72.219191) (xy 138.667335 72.255205) - (xy 138.71213 72.409391) (xy 138.712131 72.409394) (xy 138.728386 72.43688) (xy 138.745568 72.504604) - (xy 138.728386 72.56312) (xy 138.712131 72.590605) (xy 138.71213 72.590608) (xy 138.667335 72.744791) - (xy 138.667334 72.744797) (xy 138.6645 72.780811) (xy 138.6645 73.179169) (xy 138.664501 73.179191) - (xy 138.667335 73.215205) (xy 138.712129 73.369388) (xy 138.71213 73.369391) (xy 138.746419 73.427371) - (xy 138.763601 73.495095) (xy 138.746419 73.553611) (xy 138.712594 73.610806) (xy 138.672156 73.75) - (xy 139.224591 73.75) (xy 139.234318 73.750382) (xy 139.234516 73.750397) (xy 139.235819 73.7505) - (xy 139.73418 73.750499) (xy 139.734193 73.750498) (xy 139.735668 73.750382) (xy 139.745393 73.75) - (xy 140.297844 73.75) (xy 140.257404 73.610805) (xy 140.223581 73.553612) (xy 140.206398 73.485888) - (xy 140.223582 73.427369) (xy 140.257867 73.369396) (xy 140.257869 73.369393) (xy 140.302665 73.215204) - (xy 140.3055 73.179181) (xy 140.305499 72.78082) (xy 140.302665 72.744796) (xy 140.257869 72.590607) - (xy 140.241613 72.56312) (xy 140.22443 72.495399) (xy 140.232678 72.45531) (xy 140.236379 72.445729) - (xy 140.257869 72.409393) (xy 140.267733 72.375441) (xy 143.8345 72.375441) (xy 143.8345 72.624558) - (xy 143.834501 72.624575) (xy 143.867017 72.871561) (xy 143.931498 73.112207) (xy 144.02683 73.342361) - (xy 144.026837 73.342376) (xy 144.1514 73.558126) (xy 144.30306 73.755774) (xy 144.303066 73.755781) - (xy 144.479218 73.931933) (xy 144.479225 73.931939) (xy 144.676873 74.083599) (xy 144.892623 74.208162) - (xy 144.892638 74.208169) (xy 144.980333 74.244493) (xy 145.122793 74.303502) (xy 145.363435 74.367982) - (xy 145.610435 74.4005) (xy 145.610442 74.4005) (xy 145.859558 74.4005) (xy 145.859565 74.4005) - (xy 146.106565 74.367982) (xy 146.347207 74.303502) (xy 146.577373 74.208164) (xy 146.793127 74.083599) - (xy 146.990776 73.931938) (xy 147.166938 73.755776) (xy 147.318599 73.558127) (xy 147.443164 73.342373) - (xy 147.538502 73.112207) (xy 147.602982 72.871565) (xy 147.6355 72.624565) (xy 147.6355 72.375435) - (xy 147.602982 72.128435) (xy 147.538502 71.887793) (xy 147.443164 71.657627) (xy 147.427566 71.630611) - (xy 147.318599 71.441873) (xy 147.166939 71.244225) (xy 147.166933 71.244218) (xy 146.990781 71.068066) - (xy 146.990774 71.06806) (xy 146.793126 70.9164) (xy 146.577376 70.791837) (xy 146.577361 70.79183) - (xy 146.347207 70.696498) (xy 146.106561 70.632017) (xy 145.859575 70.599501) (xy 145.85957 70.5995) - (xy 145.859565 70.5995) (xy 145.610435 70.5995) (xy 145.610429 70.5995) (xy 145.610424 70.599501) - (xy 145.363438 70.632017) (xy 145.122792 70.696498) (xy 144.892638 70.79183) (xy 144.892623 70.791837) - (xy 144.676873 70.9164) (xy 144.479225 71.06806) (xy 144.479218 71.068066) (xy 144.303066 71.244218) - (xy 144.30306 71.244225) (xy 144.1514 71.441873) (xy 144.026837 71.657623) (xy 144.02683 71.657638) - (xy 143.931498 71.887792) (xy 143.867017 72.128438) (xy 143.834501 72.375424) (xy 143.8345 72.375441) - (xy 140.267733 72.375441) (xy 140.302665 72.255204) (xy 140.3055 72.219181) (xy 140.305499 71.82082) - (xy 140.302665 71.784796) (xy 140.257869 71.630607) (xy 140.223869 71.573117) (xy 140.206688 71.505398) - (xy 140.223869 71.446882) (xy 140.257869 71.389393) (xy 140.300045 71.244224) (xy 140.302664 71.235208) - (xy 140.302664 71.235206) (xy 140.302665 71.235204) (xy 140.3055 71.199181) (xy 140.305499 70.80082) - (xy 140.302665 70.764796) (xy 140.257869 70.610607) (xy 140.176135 70.472402) (xy 140.176133 70.4724) - (xy 140.17613 70.472396) (xy 140.062603 70.358869) (xy 140.062595 70.358863) (xy 139.924393 70.277131) - (xy 139.924388 70.277129) (xy 139.770208 70.232335) (xy 139.770202 70.232334) (xy 139.734181 70.2295) - (xy 139.23583 70.2295) (xy 139.235808 70.229501) (xy 139.199794 70.232335) (xy 139.045611 70.277129) - (xy 139.045606 70.277131) (xy 138.907404 70.358863) (xy 138.907396 70.358869) (xy 138.793869 70.472396) - (xy 138.793863 70.472404) (xy 138.712131 70.610606) (xy 138.712129 70.610611) (xy 138.667335 70.764791) - (xy 138.667334 70.764797) (xy 138.6645 70.800811) (xy 95.250499 70.800811) (xy 95.250499 70.202128) - (xy 95.244091 70.142517) (xy 95.193796 70.007669) (xy 95.193795 70.007668) (xy 95.193793 70.007664) - (xy 95.107547 69.892455) (xy 95.107544 69.892452) (xy 94.992335 69.806206) (xy 94.992328 69.806202) - (xy 94.857482 69.755908) (xy 94.857483 69.755908) (xy 94.797883 69.749501) (xy 94.797881 69.7495) - (xy 94.797873 69.7495) (xy 94.797864 69.7495) (xy 93.202129 69.7495) (xy 93.202123 69.749501) (xy 93.142516 69.755908) - (xy 93.007671 69.806202) (xy 93.007664 69.806206) (xy 92.892455 69.892452) (xy 92.849266 69.950145) - (xy 92.793332 69.992015) (xy 92.72364 69.996999) (xy 92.662317 69.963513) (xy 92.650734 69.950145) - (xy 92.629376 69.921615) (xy 92.607546 69.892454) (xy 92.607544 69.892453) (xy 92.607544 69.892452) - (xy 92.492335 69.806206) (xy 92.492328 69.806202) (xy 92.357482 69.755908) (xy 92.357483 69.755908) - (xy 92.297883 69.749501) (xy 92.297881 69.7495) (xy 92.297873 69.7495) (xy 92.297864 69.7495) (xy 90.702129 69.7495) - (xy 90.702123 69.749501) (xy 90.642516 69.755908) (xy 90.507671 69.806202) (xy 90.507664 69.806206) - (xy 90.392455 69.892452) (xy 90.349266 69.950145) (xy 90.293332 69.992015) (xy 90.22364 69.996999) - (xy 90.162317 69.963513) (xy 90.150734 69.950145) (xy 90.129376 69.921615) (xy 90.107546 69.892454) - (xy 90.107544 69.892453) (xy 90.107544 69.892452) (xy 89.992335 69.806206) (xy 89.992328 69.806202) - (xy 89.857482 69.755908) (xy 89.857483 69.755908) (xy 89.797883 69.749501) (xy 89.797881 69.7495) - (xy 89.797873 69.7495) (xy 89.797864 69.7495) (xy 88.202129 69.7495) (xy 88.202123 69.749501) (xy 88.142516 69.755908) - (xy 88.007671 69.806202) (xy 88.007664 69.806206) (xy 87.892455 69.892452) (xy 87.849266 69.950145) - (xy 87.793332 69.992015) (xy 87.72364 69.996999) (xy 87.662317 69.963513) (xy 87.650734 69.950145) - (xy 87.629376 69.921615) (xy 87.607546 69.892454) (xy 87.607544 69.892453) (xy 87.607544 69.892452) - (xy 87.492335 69.806206) (xy 87.492328 69.806202) (xy 87.357482 69.755908) (xy 87.357483 69.755908) - (xy 87.297883 69.749501) (xy 87.297881 69.7495) (xy 87.297873 69.7495) (xy 87.297864 69.7495) (xy 85.702129 69.7495) - (xy 85.702123 69.749501) (xy 85.642516 69.755908) (xy 85.507671 69.806202) (xy 85.507664 69.806206) - (xy 85.392455 69.892452) (xy 85.349266 69.950145) (xy 85.293332 69.992015) (xy 85.22364 69.996999) - (xy 85.162317 69.963513) (xy 85.150734 69.950145) (xy 85.129376 69.921615) (xy 85.107546 69.892454) - (xy 85.107544 69.892453) (xy 85.107544 69.892452) (xy 84.992335 69.806206) (xy 84.992328 69.806202) - (xy 84.857482 69.755908) (xy 84.857483 69.755908) (xy 84.797883 69.749501) (xy 84.797881 69.7495) - (xy 84.797873 69.7495) (xy 84.797864 69.7495) (xy 83.202129 69.7495) (xy 83.202123 69.749501) (xy 83.142516 69.755908) - (xy 83.007671 69.806202) (xy 83.007664 69.806206) (xy 82.892455 69.892452) (xy 82.849266 69.950145) - (xy 82.793332 69.992015) (xy 82.72364 69.996999) (xy 82.662317 69.963513) (xy 82.650734 69.950145) - (xy 82.629376 69.921615) (xy 82.607546 69.892454) (xy 82.607544 69.892453) (xy 82.607544 69.892452) - (xy 82.492335 69.806206) (xy 82.492328 69.806202) (xy 82.357482 69.755908) (xy 82.357483 69.755908) - (xy 82.297883 69.749501) (xy 82.297881 69.7495) (xy 82.297873 69.7495) (xy 82.297864 69.7495) (xy 80.702129 69.7495) - (xy 80.702123 69.749501) (xy 80.642516 69.755908) (xy 80.507671 69.806202) (xy 80.507664 69.806206) - (xy 80.392455 69.892452) (xy 80.349266 69.950145) (xy 80.293332 69.992015) (xy 80.22364 69.996999) - (xy 80.162317 69.963513) (xy 80.150734 69.950145) (xy 80.129376 69.921615) (xy 80.107546 69.892454) - (xy 80.107544 69.892453) (xy 80.107544 69.892452) (xy 79.992335 69.806206) (xy 79.992328 69.806202) - (xy 79.857482 69.755908) (xy 79.857483 69.755908) (xy 79.797883 69.749501) (xy 79.797881 69.7495) - (xy 79.797873 69.7495) (xy 79.797864 69.7495) (xy 78.202129 69.7495) (xy 78.202123 69.749501) (xy 78.142516 69.755908) - (xy 78.007671 69.806202) (xy 78.007664 69.806206) (xy 77.892455 69.892452) (xy 77.892452 69.892455) - (xy 77.806206 70.007664) (xy 77.806202 70.007671) (xy 77.755908 70.142517) (xy 77.749501 70.202116) - (xy 77.749501 70.202123) (xy 77.7495 70.202135) (xy 50.5005 70.202135) (xy 50.5005 68.047844) (xy 68.5 68.047844) - (xy 68.506401 68.107372) (xy 68.506403 68.107379) (xy 68.556645 68.242086) (xy 68.556649 68.242093) - (xy 68.642809 68.357187) (xy 68.642812 68.35719) (xy 68.757906 68.44335) (xy 68.757913 68.443354) - (xy 68.89262 68.493596) (xy 68.892627 68.493598) (xy 68.952155 68.499999) (xy 68.952172 68.5) (xy 69.5 68.5) - (xy 70 68.5) (xy 70.547828 68.5) (xy 70.547844 68.499999) (xy 70.607372 68.493598) (xy 70.607379 68.493596) - (xy 70.742086 68.443354) (xy 70.742093 68.44335) (xy 70.857187 68.35719) (xy 70.85719 68.357187) - (xy 70.94335 68.242093) (xy 70.943354 68.242086) (xy 70.993596 68.107379) (xy 70.993598 68.107372) - (xy 70.999999 68.047844) (xy 71 68.047827) (xy 71 67.5) (xy 70 67.5) (xy 70 68.5) (xy 69.5 68.5) - (xy 69.5 67.5) (xy 68.5 67.5) (xy 68.5 68.047844) (xy 50.5005 68.047844) (xy 50.5005 66.64) (xy 51.780138 66.64) - (xy 52.583012 66.64) (xy 52.565795 66.64994) (xy 52.50994 66.705795) (xy 52.470444 66.774204) (xy 52.45 66.850504) - (xy 52.45 66.929496) (xy 52.470444 67.005796) (xy 52.50994 67.074205) (xy 52.565795 67.13006) (xy 52.583012 67.14) - (xy 51.780138 67.14) (xy 51.78843 67.18169) (xy 51.78843 67.181692) (xy 51.863807 67.363671) (xy 51.863814 67.363684) - (xy 51.973248 67.527462) (xy 51.973251 67.527466) (xy 52.112533 67.666748) (xy 52.112537 67.666751) - (xy 52.276315 67.776185) (xy 52.276328 67.776192) (xy 52.458306 67.851569) (xy 52.458318 67.851572) - (xy 52.651504 67.889999) (xy 52.651508 67.89) (xy 52.8 67.89) (xy 52.8 67.19) (xy 53.3 67.19) (xy 53.3 67.89) - (xy 53.448492 67.89) (xy 53.448495 67.889999) (xy 53.641681 67.851572) (xy 53.641693 67.851569) - (xy 53.823671 67.776192) (xy 53.823684 67.776185) (xy 53.987462 67.666751) (xy 53.987466 67.666748) - (xy 54.126748 67.527466) (xy 54.126751 67.527462) (xy 54.236185 67.363684) (xy 54.236192 67.363671) - (xy 54.311569 67.181692) (xy 54.311569 67.18169) (xy 54.319862 67.14) (xy 53.516988 67.14) (xy 53.534205 67.13006) - (xy 53.59006 67.074205) (xy 53.629556 67.005796) (xy 53.65 66.929496) (xy 53.65 66.850504) (xy 53.629556 66.774204) - (xy 53.59006 66.705795) (xy 53.534205 66.64994) (xy 53.516988 66.64) (xy 54.319862 66.64) (xy 54.311569 66.598309) - (xy 54.311569 66.598307) (xy 54.236192 66.416328) (xy 54.236185 66.416315) (xy 54.126751 66.252537) - (xy 54.126748 66.252533) (xy 53.987466 66.113251) (xy 53.987462 66.113248) (xy 53.823684 66.003814) - (xy 53.823671 66.003807) (xy 53.641693 65.92843) (xy 53.641681 65.928427) (xy 53.448495 65.89) (xy 53.3 65.89) - (xy 53.3 66.59) (xy 52.8 66.59) (xy 52.8 65.89) (xy 52.651504 65.89) (xy 52.458318 65.928427) (xy 52.458306 65.92843) - (xy 52.276328 66.003807) (xy 52.276315 66.003814) (xy 52.112537 66.113248) (xy 52.112533 66.113251) - (xy 51.973251 66.252533) (xy 51.973248 66.252537) (xy 51.863814 66.416315) (xy 51.863807 66.416328) - (xy 51.78843 66.598307) (xy 51.78843 66.598309) (xy 51.780138 66.64) (xy 50.5005 66.64) (xy 50.5005 58) - (xy 51.780138 58) (xy 52.583012 58) (xy 52.565795 58.00994) (xy 52.50994 58.065795) (xy 52.470444 58.134204) - (xy 52.45 58.210504) (xy 52.45 58.289496) (xy 52.470444 58.365796) (xy 52.50994 58.434205) (xy 52.565795 58.49006) - (xy 52.583012 58.5) (xy 51.780138 58.5) (xy 51.78843 58.54169) (xy 51.78843 58.541692) (xy 51.863807 58.723671) - (xy 51.863814 58.723684) (xy 51.973248 58.887462) (xy 51.973251 58.887466) (xy 52.112533 59.026748) - (xy 52.112537 59.026751) (xy 52.276315 59.136185) (xy 52.276328 59.136192) (xy 52.458306 59.211569) - (xy 52.458318 59.211572) (xy 52.651504 59.249999) (xy 52.651508 59.25) (xy 52.8 59.25) (xy 52.8 58.55) - (xy 53.3 58.55) (xy 53.3 59.25) (xy 53.448492 59.25) (xy 53.448495 59.249999) (xy 53.641681 59.211572) - (xy 53.641693 59.211569) (xy 53.823671 59.136192) (xy 53.823684 59.136185) (xy 53.987462 59.026751) - (xy 53.987466 59.026748) (xy 54.126748 58.887466) (xy 54.126751 58.887462) (xy 54.236185 58.723684) - (xy 54.236192 58.723671) (xy 54.311569 58.541692) (xy 54.311569 58.54169) (xy 54.319862 58.5) (xy 53.516988 58.5) - (xy 53.534205 58.49006) (xy 53.59006 58.434205) (xy 53.629556 58.365796) (xy 53.65 58.289496) (xy 53.65 58.210504) - (xy 53.629556 58.134204) (xy 53.59006 58.065795) (xy 53.534205 58.00994) (xy 53.516988 58) (xy 54.319862 58) - (xy 55.710138 58) (xy 56.513012 58) (xy 56.495795 58.00994) (xy 56.43994 58.065795) (xy 56.400444 58.134204) - (xy 56.38 58.210504) (xy 56.38 58.289496) (xy 56.400444 58.365796) (xy 56.43994 58.434205) (xy 56.495795 58.49006) - (xy 56.513012 58.5) (xy 55.710138 58.5) (xy 55.71843 58.54169) (xy 55.71843 58.541692) (xy 55.793807 58.723671) - (xy 55.793814 58.723684) (xy 55.903248 58.887462) (xy 55.903251 58.887466) (xy 56.042533 59.026748) - (xy 56.042537 59.026751) (xy 56.211387 59.139574) (xy 56.21043 59.141005) (xy 56.254425 59.184211) - (xy 56.269895 59.252346) (xy 56.246072 59.318029) (xy 56.244309 59.320094) (xy 56.244432 59.320189) - (xy 56.239485 59.326635) (xy 56.163719 59.457863) (xy 56.1245 59.604234) (xy 56.1245 59.755765) - (xy 56.163719 59.902136) (xy 56.190881 59.949181) (xy 56.239485 60.033365) (xy 56.346635 60.140515) - (xy 56.477865 60.216281) (xy 56.624234 60.2555) (xy 56.624236 60.2555) (xy 56.775761 60.2555) (xy 56.775766 60.2555) - (xy 56.77577 60.255498) (xy 56.782224 60.254649) (xy 56.85126 60.265413) (xy 56.903517 60.311792) - (xy 56.918325 60.346012) (xy 56.921158 60.356774) (xy 56.922402 60.372569) (xy 56.953543 60.479759) - (xy 56.953941 60.481267) (xy 56.953001 60.514686) (xy 56.952906 60.548117) (xy 56.951988 60.550706) - (xy 56.951977 60.551109) (xy 56.951703 60.551508) (xy 56.94859 60.560295) (xy 56.934314 60.59476) - (xy 56.934313 60.594764) (xy 56.9195 60.707272) (xy 56.9195 60.932727) (xy 56.935374 61.053292) - (xy 56.932399 61.053683) (xy 56.932399 61.086316) (xy 56.935374 61.086708) (xy 56.9195 61.207272) - (xy 56.9195 61.432727) (xy 56.929596 61.509404) (xy 56.933614 61.53993) (xy 56.935374 61.553292) - (xy 56.932399 61.553683) (xy 56.932399 61.586316) (xy 56.935374 61.586708) (xy 56.9195 61.707272) - (xy 56.9195 61.932727) (xy 56.924592 61.971398) (xy 56.932321 62.030109) (xy 56.935374 62.053292) - (xy 56.932399 62.053683) (xy 56.932399 62.086316) (xy 56.935374 62.086708) (xy 56.9195 62.207272) - (xy 56.9195 62.432727) (xy 56.935374 62.553292) (xy 56.932399 62.553683) (xy 56.932399 62.586316) - (xy 56.935374 62.586708) (xy 56.9195 62.707272) (xy 56.9195 62.932727) (xy 56.935374 63.053292) - (xy 56.932399 63.053683) (xy 56.932399 63.086316) (xy 56.935374 63.086708) (xy 56.9195 63.207272) - (xy 56.9195 63.432727) (xy 56.935374 63.553292) (xy 56.932399 63.553683) (xy 56.932399 63.586316) - (xy 56.935374 63.586708) (xy 56.934313 63.594762) (xy 56.934313 63.594764) (xy 56.933343 63.602135) - (xy 56.9195 63.707272) (xy 56.9195 63.932727) (xy 56.930499 64.016271) (xy 56.931318 64.02249) (xy 56.935374 64.053292) - (xy 56.932399 64.053683) (xy 56.932399 64.086316) (xy 56.935374 64.086708) (xy 56.934313 64.094762) - (xy 56.934313 64.094764) (xy 56.933454 64.101287) (xy 56.9195 64.207272) (xy 56.9195 64.432727) - (xy 56.932461 64.531171) (xy 56.932981 64.535122) (xy 56.934313 64.545235) (xy 56.94859 64.579704) - (xy 56.951005 64.602172) (xy 56.957979 64.623667) (xy 56.955444 64.643468) (xy 56.956058 64.649173) - (xy 56.953941 64.65873) (xy 56.953537 64.660261) (xy 56.922402 64.767431) (xy 56.921158 64.783229) - (xy 56.918326 64.793987) (xy 56.905786 64.81476) (xy 56.897145 64.837431) (xy 56.888056 64.844133) - (xy 56.882219 64.853804) (xy 56.860439 64.8645) (xy 56.840913 64.878901) (xy 56.828295 64.880287) - (xy 56.819505 64.884605) (xy 56.804615 64.88289) (xy 56.782224 64.885351) (xy 56.77577 64.884501) - (xy 56.775766 64.8845) (xy 56.624234 64.8845) (xy 56.477863 64.923719) (xy 56.346635 64.999485) - (xy 56.346632 64.999487) (xy 56.239487 65.106632) (xy 56.239485 65.106635) (xy 56.163719 65.237863) - (xy 56.15442 65.272569) (xy 56.1245 65.384234) (xy 56.1245 65.535766) (xy 56.135892 65.578283) (xy 56.163719 65.682136) - (xy 56.172419 65.697204) (xy 56.239485 65.813365) (xy 56.239488 65.813368) (xy 56.244432 65.819811) - (xy 56.241612 65.821974) (xy 56.267302 65.86902) (xy 56.262318 65.938712) (xy 56.220446 65.994645) - (xy 56.211379 66.000416) (xy 56.211387 66.000427) (xy 56.042536 66.113248) (xy 55.903251 66.252533) - (xy 55.903248 66.252537) (xy 55.793814 66.416315) (xy 55.793807 66.416328) (xy 55.71843 66.598307) - (xy 55.71843 66.598309) (xy 55.710138 66.64) (xy 56.513012 66.64) (xy 56.495795 66.64994) (xy 56.43994 66.705795) - (xy 56.400444 66.774204) (xy 56.38 66.850504) (xy 56.38 66.929496) (xy 56.400444 67.005796) (xy 56.43994 67.074205) - (xy 56.495795 67.13006) (xy 56.513012 67.14) (xy 55.710138 67.14) (xy 55.71843 67.18169) (xy 55.71843 67.181692) - (xy 55.793807 67.363671) (xy 55.793814 67.363684) (xy 55.903248 67.527462) (xy 55.903251 67.527466) - (xy 56.042533 67.666748) (xy 56.042537 67.666751) (xy 56.206315 67.776185) (xy 56.206328 67.776192) - (xy 56.388306 67.851569) (xy 56.388318 67.851572) (xy 56.581504 67.889999) (xy 56.581508 67.89) - (xy 56.98 67.89) (xy 56.98 67.19) (xy 57.48 67.19) (xy 57.48 67.89) (xy 57.878492 67.89) (xy 57.878495 67.889999) - (xy 58.071681 67.851572) (xy 58.071693 67.851569) (xy 58.253671 67.776192) (xy 58.253684 67.776185) - (xy 58.417462 67.666751) (xy 58.417466 67.666748) (xy 58.556748 67.527466) (xy 58.556751 67.527462) - (xy 58.666185 67.363684) (xy 58.666192 67.363671) (xy 58.741569 67.181692) (xy 58.741569 67.18169) - (xy 58.749862 67.14) (xy 57.946988 67.14) (xy 57.964205 67.13006) (xy 58.02006 67.074205) (xy 58.059556 67.005796) - (xy 58.08 66.929496) (xy 58.08 66.850504) (xy 58.059556 66.774204) (xy 58.02006 66.705795) (xy 57.964205 66.64994) - (xy 57.946988 66.64) (xy 58.764389 66.64) (xy 58.78919 66.623106) (xy 58.817574 66.617487) (xy 58.822488 66.6171) - (xy 58.822495 66.617099) (xy 58.980193 66.571283) (xy 58.980196 66.571282) (xy 59.121552 66.487685) - (xy 59.121561 66.487678) (xy 59.237678 66.371561) (xy 59.237682 66.371555) (xy 59.268767 66.318994) - (xy 59.319836 66.27131) (xy 59.388578 66.258806) (xy 59.453167 66.285451) (xy 59.493098 66.342786) - (xy 59.4995 66.382114) (xy 59.4995 67.200001) (xy 59.499501 67.200018) (xy 59.51 67.302796) (xy 59.510001 67.302799) - (xy 59.530177 67.363684) (xy 59.565186 67.469334) (xy 59.657288 67.618656) (xy 59.781344 67.742712) - (xy 59.930666 67.834814) (xy 60.097203 67.889999) (xy 60.199991 67.9005) (xy 62.300008 67.900499) - (xy 62.402797 67.889999) (xy 62.569334 67.834814) (xy 62.718656 67.742712) (xy 62.842712 67.618656) - (xy 62.934814 67.469334) (xy 62.989999 67.302797) (xy 63.0005 67.200009) (xy 63.000499 65.799992) - (xy 63.000498 65.799983) (xy 63.4995 65.799983) (xy 63.4995 67.200001) (xy 63.499501 67.200018) - (xy 63.51 67.302796) (xy 63.510001 67.302799) (xy 63.530177 67.363684) (xy 63.565186 67.469334) - (xy 63.657288 67.618656) (xy 63.781344 67.742712) (xy 63.930666 67.834814) (xy 64.097203 67.889999) - (xy 64.199991 67.9005) (xy 66.300008 67.900499) (xy 66.402797 67.889999) (xy 66.569334 67.834814) - (xy 66.718656 67.742712) (xy 66.842712 67.618656) (xy 66.934814 67.469334) (xy 66.989999 67.302797) - (xy 67.0005 67.200009) (xy 67.000499 65.799992) (xy 66.997613 65.771744) (xy 66.989999 65.697203) - (xy 66.989998 65.6972) (xy 66.985006 65.682135) (xy 66.934814 65.530666) (xy 66.842712 65.381344) - (xy 66.718656 65.257288) (xy 66.569334 65.165186) (xy 66.402797 65.110001) (xy 66.402795 65.11) - (xy 66.30001 65.0995) (xy 64.199998 65.0995) (xy 64.199981 65.099501) (xy 64.097203 65.11) (xy 64.0972 65.110001) - (xy 63.930668 65.165185) (xy 63.930663 65.165187) (xy 63.781342 65.257289) (xy 63.657289 65.381342) - (xy 63.565187 65.530663) (xy 63.565185 65.530668) (xy 63.557754 65.553095) (xy 63.510001 65.697203) - (xy 63.510001 65.697204) (xy 63.51 65.697204) (xy 63.4995 65.799983) (xy 63.000498 65.799983) (xy 62.997613 65.771744) - (xy 62.989999 65.697203) (xy 62.989998 65.6972) (xy 62.985006 65.682135) (xy 62.934814 65.530666) - (xy 62.842712 65.381344) (xy 62.718656 65.257288) (xy 62.569334 65.165186) (xy 62.402797 65.110001) - (xy 62.402795 65.11) (xy 62.300016 65.0995) (xy 61.917887 65.0995) (xy 61.850848 65.079815) (xy 61.805093 65.027011) - (xy 61.795149 64.957853) (xy 61.824174 64.894297) (xy 61.830206 64.887818) (xy 61.890734 64.82729) - (xy 61.890738 64.827285) (xy 61.972406 64.689191) (xy 61.972407 64.689188) (xy 62.017166 64.535128) - (xy 62.017167 64.535122) (xy 62.019931 64.5) (xy 61.374 64.5) (xy 61.306961 64.480315) (xy 61.261206 64.427511) - (xy 61.25 64.376) (xy 61.25 64.25) (xy 61.124499 64.25) (xy 61.116032 64.247513) (xy 61.107301 64.248802) - (xy 61.083021 64.23782) (xy 61.05746 64.230315) (xy 61.051681 64.223645) (xy 61.04364 64.220009) - (xy 61.029151 64.197644) (xy 61.011705 64.177511) (xy 61.009449 64.167235) (xy 61.00565 64.16137) - (xy 61.000693 64.127335) (xy 61.0005 64.126454) (xy 61.000499 64.126249) (xy 61.000499 64.00082) - (xy 61.000017 63.994705) (xy 61.000001 63.990061) (xy 61.000015 63.990009) (xy 61 63.989607) (xy 61 63.437154) - (xy 61.5 63.437154) (xy 61.5 64) (xy 62.019931 64) (xy 62.017167 63.964882) (xy 62.017164 63.964866) - (xy 62.013465 63.952135) (xy 68.4995 63.952135) (xy 68.4995 65.54787) (xy 68.499501 65.547876) (xy 68.505908 65.607483) - (xy 68.556202 65.742328) (xy 68.556206 65.742335) (xy 68.642452 65.857544) (xy 68.642453 65.857544) - (xy 68.642454 65.857546) (xy 68.677727 65.883951) (xy 68.700562 65.901046) (xy 68.742432 65.95698) - (xy 68.747416 66.026672) (xy 68.71393 66.087994) (xy 68.700562 66.099578) (xy 68.642809 66.142812) - (xy 68.556649 66.257906) (xy 68.556645 66.257913) (xy 68.506403 66.39262) (xy 68.506401 66.392627) - (xy 68.5 66.452155) (xy 68.5 67) (xy 71 67) (xy 71 66.452172) (xy 70.999999 66.452155) (xy 70.993598 66.392627) - (xy 70.993596 66.39262) (xy 70.943354 66.257913) (xy 70.94335 66.257906) (xy 70.85719 66.142812) - (xy 70.857187 66.142809) (xy 70.799438 66.099578) (xy 70.757567 66.043645) (xy 70.752583 65.973953) - (xy 70.786069 65.91263) (xy 70.799432 65.901049) (xy 70.857546 65.857546) (xy 70.943796 65.742331) - (xy 70.994091 65.607483) (xy 71.0005 65.547873) (xy 71.000499 63.952128) (xy 70.994091 63.892517) - (xy 70.980278 63.855483) (xy 70.943797 63.757671) (xy 70.943793 63.757664) (xy 70.857547 63.642455) - (xy 70.857544 63.642452) (xy 70.742335 63.556206) (xy 70.742328 63.556202) (xy 70.607482 63.505908) - (xy 70.607483 63.505908) (xy 70.547883 63.499501) (xy 70.547881 63.4995) (xy 70.547873 63.4995) - (xy 70.547864 63.4995) (xy 68.952129 63.4995) (xy 68.952123 63.499501) (xy 68.892516 63.505908) - (xy 68.757671 63.556202) (xy 68.757664 63.556206) (xy 68.642455 63.642452) (xy 68.642452 63.642455) - (xy 68.556206 63.757664) (xy 68.556202 63.757671) (xy 68.505908 63.892517) (xy 68.499501 63.952116) - (xy 68.499501 63.952123) (xy 68.4995 63.952135) (xy 62.013465 63.952135) (xy 61.972407 63.810811) - (xy 61.972406 63.810808) (xy 61.890738 63.672714) (xy 61.890731 63.672705) (xy 61.777294 63.559268) - (xy 61.777285 63.559261) (xy 61.639191 63.477593) (xy 61.639188 63.477591) (xy 61.500001 63.437153) - (xy 61.5 63.437154) (xy 61 63.437154) (xy 60.999998 63.437153) (xy 60.860811 63.477591) (xy 60.86081 63.477592) - (xy 60.803611 63.511419) (xy 60.735886 63.5286) (xy 60.677371 63.511419) (xy 60.620174 63.477593) - (xy 60.619393 63.477131) (xy 60.619392 63.47713) (xy 60.619391 63.47713) (xy 60.619388 63.477129) - (xy 60.465208 63.432335) (xy 60.465202 63.432334) (xy 60.429181 63.4295) (xy 60.03083 63.4295) (xy 60.030808 63.429501) - (xy 59.994794 63.432335) (xy 59.840611 63.477129) (xy 59.840606 63.477131) (xy 59.702404 63.558863) - (xy 59.702396 63.558869) (xy 59.588869 63.672396) (xy 59.584085 63.678565) (xy 59.582898 63.677644) - (xy 59.567924 63.691621) (xy 59.548554 63.713526) (xy 59.54268 63.715186) (xy 59.538219 63.719351) - (xy 59.509454 63.724579) (xy 59.481319 63.732534) (xy 59.47548 63.730755) (xy 59.469476 63.731847) - (xy 59.44245 63.720693) (xy 59.414482 63.712174) (xy 59.410531 63.707521) (xy 59.40489 63.705193) - (xy 59.388183 63.681197) (xy 59.369262 63.658911) (xy 59.366948 63.650699) (xy 59.364967 63.647853) - (xy 59.359661 63.624955) (xy 59.355687 63.594764) (xy 59.355603 63.594562) (xy 59.354515 63.586408) - (xy 59.357689 63.56581) (xy 59.357689 63.553698) (xy 59.354626 63.553295) (xy 59.360545 63.508334) - (xy 59.3705 63.43272) (xy 59.3705 63.20728) (xy 59.355687 63.094764) (xy 59.355686 63.094763) (xy 59.354626 63.086705) - (xy 59.357689 63.086301) (xy 59.357689 63.053698) (xy 59.354626 63.053295) (xy 59.355687 63.045236) - (xy 59.3705 62.93272) (xy 59.3705 62.70728) (xy 59.355687 62.594764) (xy 59.355686 62.594763) (xy 59.354626 62.586705) - (xy 59.357689 62.586301) (xy 59.357689 62.553698) (xy 59.354626 62.553295) (xy 59.355687 62.545236) - (xy 59.3705 62.43272) (xy 59.3705 62.20728) (xy 59.355687 62.094764) (xy 59.355686 62.094763) (xy 59.354626 62.086705) - (xy 59.356441 62.086465) (xy 59.35411 62.056982) (xy 59.355234 62.046327) (xy 59.355687 62.045236) - (xy 59.3705 61.93272) (xy 59.3705 61.901728) (xy 59.371185 61.89524) (xy 59.382108 61.868724) (xy 59.390185 61.841219) - (xy 59.395246 61.836833) (xy 59.397799 61.830637) (xy 59.421326 61.814234) (xy 59.442989 61.795464) - (xy 59.449618 61.79451) (xy 59.455115 61.790679) (xy 59.483768 61.7896) (xy 59.512147 61.78552) - (xy 59.51824 61.788302) (xy 59.524935 61.788051) (xy 59.549621 61.802633) (xy 59.575703 61.814545) - (xy 59.583087 61.822342) (xy 59.583348 61.822082) (xy 59.584509 61.823243) (xy 59.585093 61.823588) - (xy 59.585334 61.824068) (xy 59.702396 61.94113) (xy 59.7024 61.941133) (xy 59.702402 61.941135) - (xy 59.840607 62.022869) (xy 59.841213 62.023045) (xy 59.994791 62.067664) (xy 59.994794 62.067664) - (xy 59.994796 62.067665) (xy 60.030819 62.0705) (xy 60.42918 62.070499) (xy 60.465204 62.067665) - (xy 60.619393 62.022869) (xy 60.677369 61.988581) (xy 60.745093 61.971398) (xy 60.803612 61.988581) - (xy 60.860805 62.022404) (xy 61 62.062844) (xy 61 62.062843) (xy 61.5 62.062843) (xy 61.639194 62.022404) - (xy 61.777285 61.940738) (xy 61.777294 61.940731) (xy 61.890731 61.827294) (xy 61.890738 61.827285) - (xy 61.972406 61.689191) (xy 61.972407 61.689188) (xy 62.017166 61.535128) (xy 62.017167 61.535122) - (xy 62.019931 61.5) (xy 61.5 61.5) (xy 61.5 62.062843) (xy 61 62.062843) (xy 61 61.510408) (xy 61.000004 61.509404) - (xy 61.000039 61.505034) (xy 61.0005 61.499181) (xy 61.000499 61.00082) (xy 61.000434 61) (xy 61.000382 60.999332) - (xy 61 60.989607) (xy 61 60.437154) (xy 61.5 60.437154) (xy 61.5 61) (xy 62.019931 61) (xy 62.017167 60.964877) - (xy 62.017166 60.964871) (xy 61.972407 60.810811) (xy 61.972406 60.810808) (xy 61.890738 60.672714) - (xy 61.890731 60.672705) (xy 61.809992 60.591966) (xy 65.6495 60.591966) (xy 65.6495 61.708028) - (xy 65.649501 61.708034) (xy 65.660113 61.827415) (xy 65.716089 62.023045) (xy 65.71609 62.023048) - (xy 65.716091 62.023049) (xy 65.810302 62.203407) (xy 65.81346 62.20728) (xy 65.93889 62.361109) - (xy 66.026706 62.432713) (xy 66.096593 62.489698) (xy 66.276951 62.583909) (xy 66.276953 62.583909) - (xy 66.276954 62.58391) (xy 66.286733 62.586708) (xy 66.472582 62.639886) (xy 66.591963 62.6505) - (xy 69.508036 62.650499) (xy 69.627418 62.639886) (xy 69.823049 62.583909) (xy 70.003407 62.489698) - (xy 70.161109 62.361109) (xy 70.289698 62.203407) (xy 70.383909 62.023049) (xy 70.439886 61.827418) - (xy 70.4505 61.708037) (xy 70.450499 60.591964) (xy 70.439886 60.472582) (xy 70.383909 60.276951) - (xy 70.289698 60.096593) (xy 70.221124 60.012494) (xy 70.161109 59.93889) (xy 70.024512 59.827511) - (xy 70.003407 59.810302) (xy 69.823049 59.716091) (xy 69.823048 59.71609) (xy 69.823045 59.716089) - (xy 69.701673 59.681361) (xy 69.627418 59.660114) (xy 69.627415 59.660113) (xy 69.627413 59.660113) - (xy 69.561102 59.654217) (xy 69.508037 59.6495) (xy 69.508032 59.6495) (xy 66.591971 59.6495) (xy 66.591965 59.6495) - (xy 66.591964 59.649501) (xy 66.580316 59.650536) (xy 66.472584 59.660113) (xy 66.276954 59.716089) - (xy 66.245503 59.732518) (xy 66.096593 59.810302) (xy 66.096591 59.810303) (xy 66.09659 59.810304) - (xy 65.93889 59.93889) (xy 65.810304 60.09659) (xy 65.716089 60.276954) (xy 65.688731 60.372569) - (xy 65.670252 60.437153) (xy 65.660114 60.472583) (xy 65.660113 60.472586) (xy 65.653186 60.5505) - (xy 65.652408 60.559261) (xy 65.6495 60.591966) (xy 61.809992 60.591966) (xy 61.777294 60.559268) - (xy 61.777285 60.559261) (xy 61.639191 60.477593) (xy 61.639188 60.477591) (xy 61.500001 60.437153) - (xy 61.5 60.437154) (xy 61 60.437154) (xy 60.999998 60.437153) (xy 60.860811 60.477591) (xy 60.86081 60.477592) - (xy 60.803611 60.511419) (xy 60.735886 60.5286) (xy 60.677371 60.511419) (xy 60.626921 60.481583) - (xy 60.619393 60.477131) (xy 60.619392 60.47713) (xy 60.619391 60.47713) (xy 60.619388 60.477129) - (xy 60.465208 60.432335) (xy 60.465202 60.432334) (xy 60.429181 60.4295) (xy 60.03083 60.4295) (xy 60.030808 60.429501) - (xy 59.994794 60.432335) (xy 59.840611 60.477129) (xy 59.840606 60.477131) (xy 59.702404 60.558863) - (xy 59.702396 60.558869) (xy 59.588869 60.672396) (xy 59.584085 60.678565) (xy 59.582898 60.677644) - (xy 59.573985 60.685964) (xy 59.562407 60.703419) (xy 59.548956 60.709327) (xy 59.538219 60.719351) - (xy 59.517614 60.723096) (xy 59.498437 60.731521) (xy 59.483928 60.729219) (xy 59.469476 60.731847) - (xy 59.450114 60.723856) (xy 59.42943 60.720576) (xy 59.418469 60.710797) (xy 59.40489 60.705193) - (xy 59.392922 60.688004) (xy 59.377294 60.674061) (xy 59.371027 60.656557) (xy 59.364967 60.647853) - (xy 59.363099 60.641748) (xy 59.360768 60.633365) (xy 59.355687 60.594764) (xy 59.338519 60.553318) - (xy 59.336499 60.54605) (xy 59.3369 60.518358) (xy 59.33394 60.490827) (xy 59.336888 60.478267) - (xy 59.367598 60.372569) (xy 59.3705 60.335694) (xy 59.3705 59.904306) (xy 59.367598 59.867431) - (xy 59.334555 59.753697) (xy 59.334555 59.684507) (xy 59.3671 59.57249) (xy 59.367295 59.570001) - (xy 59.367295 59.57) (xy 59.291308 59.57) (xy 59.224269 59.550315) (xy 59.203631 59.533685) (xy 59.121865 59.451919) - (xy 58.980398 59.368256) (xy 58.980397 59.368255) (xy 58.980396 59.368255) (xy 58.980393 59.368254) - (xy 58.822573 59.322402) (xy 58.822567 59.322401) (xy 58.785701 59.3195) (xy 58.785694 59.3195) - (xy 58.269 59.3195) (xy 58.260314 59.316949) (xy 58.251353 59.318238) (xy 58.227312 59.307259) (xy 58.201961 59.299815) - (xy 58.196033 59.292974) (xy 58.187797 59.289213) (xy 58.173507 59.266978) (xy 58.156206 59.247011) - (xy 58.153918 59.236496) (xy 58.150023 59.230435) (xy 58.145 59.1955) (xy 58.145 59.194) (xy 58.164685 59.126961) - (xy 58.217489 59.081206) (xy 58.269 59.07) (xy 59.367295 59.07) (xy 59.367295 59.069998) (xy 59.3671 59.067513) - (xy 59.351931 59.015302) (xy 74.7395 59.015302) (xy 74.7395 59.484697) (xy 74.742356 59.520991) - (xy 74.742357 59.520997) (xy 74.787504 59.67639) (xy 74.787505 59.676393) (xy 74.787506 59.676395) - (xy 74.792731 59.68523) (xy 74.869881 59.815684) (xy 74.869887 59.815692) (xy 74.984307 59.930112) - (xy 74.984311 59.930115) (xy 74.984313 59.930117) (xy 75.123605 60.012494) (xy 75.164587 60.0244) - (xy 75.279002 60.057642) (xy 75.279005 60.057642) (xy 75.279007 60.057643) (xy 75.31531 60.0605) - (xy 75.315318 60.0605) (xy 75.724682 60.0605) (xy 75.72469 60.0605) (xy 75.760993 60.057643) (xy 75.760995 60.057642) - (xy 75.760997 60.057642) (xy 75.801975 60.045736) (xy 75.916395 60.012494) (xy 75.937369 60.000089) - (xy 76.005088 59.982906) (xy 76.063613 60.00009) (xy 76.083803 60.012031) (xy 76.23 60.054504) (xy 76.23 59.748352) - (xy 76.247267 59.685233) (xy 76.252494 59.676395) (xy 76.257225 59.660113) (xy 76.297642 59.520997) - (xy 76.297643 59.520991) (xy 76.297888 59.517876) (xy 76.3005 59.48469) (xy 76.3005 59.01531) (xy 76.297643 58.979007) - (xy 76.29747 58.978412) (xy 76.252495 58.823608) (xy 76.252492 58.8236) (xy 76.247266 58.814763) - (xy 76.23 58.751645) (xy 76.23 58.445494) (xy 76.229998 58.445493) (xy 76.083809 58.487965) (xy 76.083806 58.487967) - (xy 76.063608 58.499912) (xy 75.995884 58.517092) (xy 75.93737 58.49991) (xy 75.916397 58.487507) - (xy 75.91639 58.487504) (xy 75.760997 58.442357) (xy 75.760991 58.442356) (xy 75.724697 58.4395) - (xy 75.72469 58.4395) (xy 75.31531 58.4395) (xy 75.315302 58.4395) (xy 75.279008 58.442356) (xy 75.279002 58.442357) - (xy 75.123609 58.487504) (xy 75.123606 58.487505) (xy 74.984315 58.569881) (xy 74.984307 58.569887) - (xy 74.869887 58.684307) (xy 74.869881 58.684315) (xy 74.787505 58.823606) (xy 74.787504 58.823609) - (xy 74.742357 58.979002) (xy 74.742356 58.979008) (xy 74.7395 59.015302) (xy 59.351931 59.015302) - (xy 59.321281 58.909801) (xy 59.237685 58.768447) (xy 59.237678 58.768438) (xy 59.121561 58.652321) - (xy 59.121552 58.652314) (xy 58.980196 58.568717) (xy 58.980193 58.568716) (xy 58.822495 58.5229) - (xy 58.822482 58.522898) (xy 58.817563 58.522511) (xy 58.758509 58.5) (xy 57.946988 58.5) (xy 57.964205 58.49006) - (xy 58.02006 58.434205) (xy 58.059556 58.365796) (xy 58.08 58.289496) (xy 58.08 58.210504) (xy 58.059556 58.134204) - (xy 58.02006 58.065795) (xy 57.964205 58.00994) (xy 57.946988 58) (xy 58.749862 58) (xy 58.741569 57.958309) - (xy 58.741569 57.958307) (xy 58.666192 57.776328) (xy 58.666183 57.776312) (xy 58.664628 57.773984) - (xy 58.635238 57.73) (xy 60.445496 57.73) (xy 60.487968 57.876195) (xy 60.570278 58.015374) (xy 60.570285 58.015383) - (xy 60.684616 58.129714) (xy 60.684625 58.129721) (xy 60.823804 58.212031) (xy 60.979089 58.257145) - (xy 61 58.258789) (xy 61 57.73) (xy 60.445496 57.73) (xy 58.635238 57.73) (xy 58.556751 57.612537) - (xy 58.556748 57.612533) (xy 58.417463 57.473248) (xy 58.413933 57.470351) (xy 58.374599 57.412604) - (xy 58.37273 57.34276) (xy 58.408918 57.282992) (xy 58.471675 57.252277) (xy 58.492587 57.250499) - (xy 60.047872 57.250499) (xy 60.107483 57.244091) (xy 60.242328 57.193797) (xy 60.242329 57.193797) - (xy 60.242329 57.193796) (xy 60.242331 57.193796) (xy 60.255863 57.183665) (xy 60.321324 57.159247) - (xy 60.389597 57.174096) (xy 60.429335 57.208478) (xy 60.445494 57.23) (xy 60.751648 57.23) (xy 60.814766 57.247267) - (xy 60.823605 57.252494) (xy 60.823608 57.252494) (xy 60.82361 57.252496) (xy 60.979002 57.297642) - (xy 60.979005 57.297642) (xy 60.979007 57.297643) (xy 61.01531 57.3005) (xy 61.015318 57.3005) (xy 61.126 57.3005) - (xy 61.193039 57.320185) (xy 61.238794 57.372989) (xy 61.25 57.4245) (xy 61.25 57.48) (xy 61.376 57.48) - (xy 61.443039 57.499685) (xy 61.488794 57.552489) (xy 61.5 57.604) (xy 61.5 58.258789) (xy 61.520913 58.257145) - (xy 61.62059 58.228186) (xy 61.690459 58.228385) (xy 61.749129 58.266327) (xy 61.777973 58.329965) - (xy 61.778543 58.334659) (xy 61.785494 58.402697) (xy 61.840641 58.569119) (xy 61.840643 58.569124) - (xy 61.932684 58.718345) (xy 62.056654 58.842315) (xy 62.205875 58.934356) (xy 62.20588 58.934358) - (xy 62.372302 58.989505) (xy 62.372309 58.989506) (xy 62.475019 58.999999) (xy 62.749999 58.999999) - (xy 63.25 58.999999) (xy 63.524972 58.999999) (xy 63.524986 58.999998) (xy 63.627697 58.989505) - (xy 63.794119 58.934358) (xy 63.794124 58.934356) (xy 63.837931 58.907336) (xy 63.943345 58.842315) - (xy 64.067315 58.718345) (xy 64.159356 58.569124) (xy 64.159358 58.569119) (xy 64.214505 58.402697) - (xy 64.214506 58.40269) (xy 64.224999 58.299986) (xy 64.225 58.299973) (xy 64.225 58.25) (xy 63.25 58.25) - (xy 63.25 58.999999) (xy 62.749999 58.999999) (xy 62.75 58.999998) (xy 62.75 58.124) (xy 62.769685 58.056961) - (xy 62.822489 58.011206) (xy 62.874 58) (xy 63 58) (xy 63 57.874) (xy 63.019685 57.806961) (xy 63.072489 57.761206) - (xy 63.124 57.75) (xy 64.224999 57.75) (xy 64.224999 57.700028) (xy 64.224998 57.700013) (xy 64.214505 57.597302) - (xy 64.159358 57.43088) (xy 64.159356 57.430875) (xy 64.067315 57.281654) (xy 63.943344 57.157683) - (xy 63.943341 57.157681) (xy 63.940339 57.155829) (xy 63.938713 57.154021) (xy 63.937677 57.153202) - (xy 63.937817 57.153024) (xy 63.893617 57.10388) (xy 63.882397 57.034917) (xy 63.910243 56.970836) - (xy 63.940344 56.944754) (xy 63.943656 56.942712) (xy 64.067712 56.818656) (xy 64.159814 56.669334) - (xy 64.214999 56.502797) (xy 64.2255 56.400009) (xy 64.225499 55.799992) (xy 64.225292 55.79797) - (xy 64.214999 55.697203) (xy 64.214998 55.6972) (xy 64.180763 55.593886) (xy 64.159814 55.530666) - (xy 64.067712 55.381344) (xy 63.943656 55.257288) (xy 63.850888 55.200069) (xy 63.794336 55.165187) - (xy 63.794331 55.165185) (xy 63.792862 55.164698) (xy 63.627797 55.110001) (xy 63.627795 55.11) - (xy 63.52501 55.0995) (xy 62.474998 55.0995) (xy 62.47498 55.099501) (xy 62.372203 55.11) (xy 62.3722 55.110001) - (xy 62.205668 55.165185) (xy 62.205663 55.165187) (xy 62.056342 55.257289) (xy 61.932289 55.381342) - (xy 61.840187 55.530663) (xy 61.840185 55.530668) (xy 61.785746 55.694955) (xy 61.745973 55.7524) - (xy 61.681457 55.779223) (xy 61.633445 55.775027) (xy 61.520997 55.742357) (xy 61.520991 55.742356) - (xy 61.484697 55.7395) (xy 61.48469 55.7395) (xy 61.01531 55.7395) (xy 61.015302 55.7395) (xy 60.979008 55.742356) - (xy 60.979002 55.742357) (xy 60.823609 55.787504) (xy 60.823606 55.787505) (xy 60.68762 55.867927) - (xy 60.619896 55.88511) (xy 60.553633 55.86295) (xy 60.50987 55.808484) (xy 60.500499 55.761195) - (xy 60.500499 55.202129) (xy 60.500498 55.202123) (xy 60.500497 55.202116) (xy 60.494091 55.142517) - (xy 60.481963 55.110001) (xy 60.443797 55.007671) (xy 60.443793 55.007664) (xy 60.357547 54.892455) - (xy 60.357544 54.892452) (xy 60.242335 54.806206) (xy 60.242328 54.806202) (xy 60.107482 54.755908) - (xy 60.107483 54.755908) (xy 60.047883 54.749501) (xy 60.047881 54.7495) (xy 60.047873 54.7495) - (xy 60.047864 54.7495) (xy 58.452129 54.7495) (xy 58.452123 54.749501) (xy 58.392516 54.755908) - (xy 58.257671 54.806202) (xy 58.257664 54.806206) (xy 58.142455 54.892452) (xy 58.142452 54.892455) - (xy 58.056206 55.007664) (xy 58.056202 55.007671) (xy 58.005908 55.142517) (xy 57.999501 55.202116) - (xy 57.999501 55.202123) (xy 57.9995 55.202135) (xy 57.9995 56.79787) (xy 57.999501 56.797876) (xy 58.005908 56.857483) - (xy 58.056202 56.992328) (xy 58.056204 56.992331) (xy 58.120001 57.077553) (xy 58.144419 57.143017) - (xy 58.129568 57.21129) (xy 58.080163 57.260696) (xy 58.01189 57.275548) (xy 57.996544 57.273482) - (xy 57.878489 57.25) (xy 57.48 57.25) (xy 57.48 57.95) (xy 56.98 57.95) (xy 56.98 57.25) (xy 56.581504 57.25) - (xy 56.388318 57.288427) (xy 56.388306 57.28843) (xy 56.206328 57.363807) (xy 56.206315 57.363814) - (xy 56.042537 57.473248) (xy 56.042533 57.473251) (xy 55.903251 57.612533) (xy 55.903248 57.612537) - (xy 55.793814 57.776315) (xy 55.793807 57.776328) (xy 55.71843 57.958307) (xy 55.71843 57.958309) - (xy 55.710138 58) (xy 54.319862 58) (xy 54.311569 57.958309) (xy 54.311569 57.958307) (xy 54.236192 57.776328) - (xy 54.236185 57.776315) (xy 54.126751 57.612537) (xy 54.126748 57.612533) (xy 53.987466 57.473251) - (xy 53.987462 57.473248) (xy 53.823684 57.363814) (xy 53.823671 57.363807) (xy 53.641693 57.28843) - (xy 53.641681 57.288427) (xy 53.448495 57.25) (xy 53.3 57.25) (xy 53.3 57.95) (xy 52.8 57.95) (xy 52.8 57.25) - (xy 52.651504 57.25) (xy 52.458318 57.288427) (xy 52.458306 57.28843) (xy 52.276328 57.363807) (xy 52.276315 57.363814) - (xy 52.112537 57.473248) (xy 52.112533 57.473251) (xy 51.973251 57.612533) (xy 51.973248 57.612537) - (xy 51.863814 57.776315) (xy 51.863807 57.776328) (xy 51.78843 57.958307) (xy 51.78843 57.958309) - (xy 51.780138 58) (xy 50.5005 58) (xy 50.5005 54.024986) (xy 60.550001 54.024986) (xy 60.560494 54.127697) - (xy 60.615641 54.294119) (xy 60.615643 54.294124) (xy 60.707684 54.443345) (xy 60.831654 54.567315) - (xy 60.980875 54.659356) (xy 60.98088 54.659358) (xy 61.147302 54.714505) (xy 61.147309 54.714506) - (xy 61.250019 54.724999) (xy 61.299999 54.724998) (xy 61.3 54.724998) (xy 61.3 53.75) (xy 60.550001 53.75) - (xy 60.550001 54.024986) (xy 50.5005 54.024986) (xy 50.5005 49.899984) (xy 52.3495 49.899984) (xy 52.3495 52.300015) - (xy 52.36 52.402795) (xy 52.360001 52.402797) (xy 52.375643 52.450002) (xy 52.415186 52.569335) - (xy 52.415187 52.569337) (xy 52.507286 52.718651) (xy 52.507289 52.718655) (xy 52.631344 52.84271) - (xy 52.631348 52.842713) (xy 52.780662 52.934812) (xy 52.780664 52.934813) (xy 52.780666 52.934814) - (xy 52.947203 52.989999) (xy 53.049992 53.0005) (xy 53.049997 53.0005) (xy 55.450003 53.0005) (xy 55.450008 53.0005) - (xy 55.552797 52.989999) (xy 55.719334 52.934814) (xy 55.868655 52.842711) (xy 55.992711 52.718655) - (xy 56.084814 52.569334) (xy 56.139999 52.402797) (xy 56.1505 52.300008) (xy 56.1505 49.899992) - (xy 56.139999 49.797203) (xy 56.107783 49.699983) (xy 59.3495 49.699983) (xy 59.3495 51.800001) - (xy 59.349501 51.800018) (xy 59.36 51.902796) (xy 59.360001 51.902799) (xy 59.415185 52.069331) - (xy 59.415187 52.069336) (xy 59.417268 52.07271) (xy 59.507288 52.218656) (xy 59.631344 52.342712) - (xy 59.780666 52.434814) (xy 59.947203 52.489999) (xy 60.049991 52.5005) (xy 60.520148 52.500499) - (xy 60.587185 52.520183) (xy 60.63294 52.572987) (xy 60.642884 52.642146) (xy 60.625685 52.689595) - (xy 60.615646 52.705871) (xy 60.615641 52.70588) (xy 60.560494 52.872302) (xy 60.560493 52.872309) - (xy 60.55 52.975013) (xy 60.55 53.25) (xy 61.426 53.25) (xy 61.493039 53.269685) (xy 61.538794 53.322489) - (xy 61.55 53.374) (xy 61.55 53.5) (xy 61.676 53.5) (xy 61.743039 53.519685) (xy 61.788794 53.572489) - (xy 61.8 53.624) (xy 61.8 54.724999) (xy 61.849972 54.724999) (xy 61.849986 54.724998) (xy 61.952697 54.714505) - (xy 62.119119 54.659358) (xy 62.119124 54.659356) (xy 62.268345 54.567315) (xy 62.392318 54.443342) - (xy 62.394165 54.440348) (xy 62.395969 54.438724) (xy 62.396798 54.437677) (xy 62.396976 54.437818) - (xy 62.44611 54.393621) (xy 62.515073 54.382396) (xy 62.579156 54.410236) (xy 62.605243 54.440341) - (xy 62.607288 54.443656) (xy 62.731344 54.567712) (xy 62.880666 54.659814) (xy 63.047203 54.714999) - (xy 63.149991 54.7255) (xy 63.750008 54.725499) (xy 63.750016 54.725498) (xy 63.750019 54.725498) - (xy 63.806302 54.719748) (xy 63.852797 54.714999) (xy 64.019334 54.659814) (xy 64.168656 54.567712) - (xy 64.287822 54.448545) (xy 64.349141 54.415063) (xy 64.418833 54.420047) (xy 64.474767 54.461918) - (xy 64.499184 54.527382) (xy 64.4995 54.536229) (xy 64.4995 55.551122) (xy 64.499501 55.551125) - (xy 64.502399 55.593886) (xy 64.502399 55.593887) (xy 64.530746 55.70787) (xy 64.547447 55.775027) - (xy 64.54836 55.778696) (xy 64.632967 55.949292) (xy 64.632969 55.949295) (xy 64.752277 56.097721) - (xy 64.752278 56.097722) (xy 64.900704 56.21703) (xy 64.900707 56.217032) (xy 65.071302 56.301639) - (xy 65.071303 56.301639) (xy 65.071307 56.301641) (xy 65.256111 56.3476) (xy 65.298877 56.3505) - (xy 66.201122 56.350499) (xy 66.243889 56.3476) (xy 66.428693 56.301641) (xy 66.599296 56.21703) - (xy 66.747722 56.097722) (xy 66.803353 56.028514) (xy 66.860696 55.988595) (xy 66.930518 55.986015) - (xy 66.990651 56.021594) (xy 66.996647 56.028514) (xy 67.052277 56.097721) (xy 67.052278 56.097722) - (xy 67.200704 56.21703) (xy 67.200707 56.217032) (xy 67.371302 56.301639) (xy 67.371303 56.301639) - (xy 67.371307 56.301641) (xy 67.556111 56.3476) (xy 67.598877 56.3505) (xy 68.501122 56.350499) - (xy 68.543889 56.3476) (xy 68.728693 56.301641) (xy 68.899296 56.21703) (xy 69.047722 56.097722) - (xy 69.103675 56.028112) (xy 69.161015 55.988196) (xy 69.230837 55.985616) (xy 69.29097 56.021194) - (xy 69.296967 56.028115) (xy 69.352632 56.097366) (xy 69.352633 56.097367) (xy 69.500974 56.216607) - (xy 69.500977 56.216609) (xy 69.671476 56.301168) (xy 69.856175 56.347102) (xy 69.898903 56.35) - (xy 70.1 56.35) (xy 70.6 56.35) (xy 70.801097 56.35) (xy 70.843824 56.347102) (xy 71.028523 56.301168) - (xy 71.199022 56.216609) (xy 71.199025 56.216607) (xy 71.347366 56.097367) (xy 71.347367 56.097366) - (xy 71.466607 55.949025) (xy 71.466609 55.949022) (xy 71.551168 55.778523) (xy 71.597102 55.593824) - (xy 71.6 55.551096) (xy 71.6 55.1) (xy 70.6 55.1) (xy 70.6 56.35) (xy 70.1 56.35) (xy 70.1 54.6) - (xy 70.6 54.6) (xy 71.6 54.6) (xy 71.6 54.148903) (xy 71.597102 54.106175) (xy 71.551168 53.921476) - (xy 71.466609 53.750977) (xy 71.466607 53.750974) (xy 71.347367 53.602633) (xy 71.347366 53.602632) - (xy 71.199025 53.483392) (xy 71.199022 53.48339) (xy 71.028523 53.398831) (xy 70.843824 53.352897) - (xy 70.801097 53.35) (xy 70.6 53.35) (xy 70.6 54.6) (xy 70.1 54.6) (xy 70.1 53.35) (xy 69.898903 53.35) - (xy 69.856175 53.352897) (xy 69.671476 53.398831) (xy 69.500977 53.48339) (xy 69.500974 53.483392) - (xy 69.352635 53.602631) (xy 69.296967 53.671885) (xy 69.239624 53.711803) (xy 69.169801 53.714383) - (xy 69.109669 53.678804) (xy 69.103673 53.671884) (xy 69.047722 53.602278) (xy 69.047721 53.602277) - (xy 68.899295 53.482969) (xy 68.899292 53.482967) (xy 68.728697 53.39836) (xy 68.543892 53.3524) - (xy 68.522506 53.35095) (xy 68.501123 53.3495) (xy 68.50112 53.3495) (xy 67.598877 53.3495) (xy 67.598874 53.349501) - (xy 67.556113 53.352399) (xy 67.556112 53.352399) (xy 67.371303 53.39836) (xy 67.200707 53.482967) - (xy 67.200704 53.482969) (xy 67.052278 53.602277) (xy 67.052277 53.602278) (xy 66.996647 53.671486) - (xy 66.939304 53.711405) (xy 66.869482 53.713985) (xy 66.809349 53.678406) (xy 66.803353 53.671486) - (xy 66.747722 53.602278) (xy 66.747721 53.602277) (xy 66.599295 53.482969) (xy 66.599292 53.482967) - (xy 66.428697 53.39836) (xy 66.243892 53.3524) (xy 66.222506 53.35095) (xy 66.201123 53.3495) (xy 66.20112 53.3495) - (xy 65.298877 53.3495) (xy 65.298874 53.349501) (xy 65.256113 53.352399) (xy 65.256112 53.352399) - (xy 65.071303 53.39836) (xy 64.900707 53.482967) (xy 64.900704 53.482969) (xy 64.789337 53.572489) - (xy 64.752278 53.602278) (xy 64.691085 53.678406) (xy 64.671146 53.703211) (xy 64.613803 53.743129) - (xy 64.543981 53.745709) (xy 64.483848 53.71013) (xy 64.452496 53.647689) (xy 64.450499 53.625529) - (xy 64.450499 52.974992) (xy 64.439999 52.872203) (xy 64.384814 52.705666) (xy 64.292712 52.556344) - (xy 64.168656 52.432288) (xy 64.035067 52.34989) (xy 64.019336 52.340187) (xy 64.019331 52.340185) - (xy 64.017862 52.339698) (xy 63.852797 52.285001) (xy 63.852795 52.285) (xy 63.75001 52.2745) (xy 63.149998 52.2745) - (xy 63.14998 52.274501) (xy 63.047203 52.285) (xy 63.0472 52.285001) (xy 62.880668 52.340185) (xy 62.880663 52.340187) - (xy 62.731342 52.432289) (xy 62.607288 52.556343) (xy 62.607283 52.556349) (xy 62.605241 52.559661) - (xy 62.603247 52.561453) (xy 62.602807 52.562011) (xy 62.602711 52.561935) (xy 62.553291 52.606383) - (xy 62.484328 52.617602) (xy 62.420247 52.589755) (xy 62.394168 52.559656) (xy 62.392319 52.556659) - (xy 62.392316 52.556655) (xy 62.268345 52.432684) (xy 62.119124 52.340643) (xy 62.119121 52.340642) - (xy 62.100552 52.334489) (xy 62.043107 52.294715) (xy 62.016285 52.230199) (xy 62.028601 52.161424) - (xy 62.034019 52.151686) (xy 62.039675 52.142517) (xy 62.084814 52.069334) (xy 62.139999 51.902797) - (xy 62.1505 51.800009) (xy 62.150499 49.699992) (xy 62.146454 49.660398) (xy 62.139999 49.597203) - (xy 62.139998 49.5972) (xy 62.124358 49.550001) (xy 62.084814 49.430666) (xy 61.992712 49.281344) - (xy 61.868656 49.157288) (xy 61.856813 49.149983) (xy 62.7995 49.149983) (xy 62.7995 50.350001) - (xy 62.799501 50.350018) (xy 62.81 50.452796) (xy 62.810001 50.452799) (xy 62.865185 50.619331) - (xy 62.865187 50.619336) (xy 62.890312 50.66007) (xy 62.957288 50.768656) (xy 63.081344 50.892712) - (xy 63.230666 50.984814) (xy 63.397203 51.039999) (xy 63.499991 51.0505) (xy 66.600008 51.050499) - (xy 66.702797 51.039999) (xy 66.869334 50.984814) (xy 67.018656 50.892712) (xy 67.142712 50.768656) - (xy 67.234814 50.619334) (xy 67.289999 50.452797) (xy 67.3005 50.350009) (xy 67.3005 50.349986) - (xy 68.200001 50.349986) (xy 68.210494 50.452697) (xy 68.265641 50.619119) (xy 68.265643 50.619124) - (xy 68.357684 50.768345) (xy 68.481654 50.892315) (xy 68.630875 50.984356) (xy 68.63088 50.984358) - (xy 68.797302 51.039505) (xy 68.797309 51.039506) (xy 68.900019 51.049999) (xy 70.199999 51.049999) - (xy 70.7 51.049999) (xy 71.999972 51.049999) (xy 71.999986 51.049998) (xy 72.102697 51.039505) (xy 72.269119 50.984358) - (xy 72.269124 50.984356) (xy 72.418345 50.892315) (xy 72.542315 50.768345) (xy 72.634356 50.619124) - (xy 72.634358 50.619119) (xy 72.689505 50.452697) (xy 72.689506 50.45269) (xy 72.699999 50.349986) - (xy 72.7 50.349973) (xy 72.7 50) (xy 70.7 50) (xy 70.7 51.049999) (xy 70.199999 51.049999) (xy 70.2 51.049998) - (xy 70.2 50) (xy 68.200001 50) (xy 68.200001 50.349986) (xy 67.3005 50.349986) (xy 67.300499 49.75) - (xy 67.300499 49.150013) (xy 68.2 49.150013) (xy 68.2 49.5) (xy 70.2 49.5) (xy 70.7 49.5) (xy 72.699999 49.5) - (xy 72.699999 49.150028) (xy 72.699998 49.150013) (xy 72.689506 49.047304) (xy 72.669138 48.985839) - (xy 72.669137 48.985837) (xy 72.657256 48.949983) (xy 73.5245 48.949983) (xy 73.5245 49.550001) - (xy 73.524501 49.550019) (xy 73.535 49.652796) (xy 73.535001 49.652799) (xy 73.584396 49.801862) - (xy 73.590186 49.819334) (xy 73.682288 49.968656) (xy 73.806344 50.092712) (xy 73.955666 50.184814) - (xy 74.122203 50.239999) (xy 74.224991 50.2505) (xy 74.3455 50.250499) (xy 74.412539 50.270183) - (xy 74.458294 50.322987) (xy 74.4695 50.374499) (xy 74.4695 50.749169) (xy 74.4695 50.749178) (xy 74.469501 50.74918) - (xy 74.47005 50.756153) (xy 74.472335 50.785205) (xy 74.517127 50.939382) (xy 74.517131 50.939393) - (xy 74.598863 51.077595) (xy 74.598869 51.077603) (xy 74.712396 51.19113) (xy 74.712407 51.191139) - (xy 74.843673 51.268768) (xy 74.891357 51.319836) (xy 74.903861 51.388578) (xy 74.877216 51.453168) - (xy 74.819881 51.493098) (xy 74.780555 51.4995) (xy 74.70213 51.4995) (xy 74.702123 51.499501) (xy 74.642516 51.505908) - (xy 74.507671 51.556202) (xy 74.507664 51.556206) (xy 74.392455 51.642452) (xy 74.392452 51.642455) - (xy 74.306206 51.757664) (xy 74.306202 51.757671) (xy 74.255908 51.892517) (xy 74.249501 51.952116) - (xy 74.249501 51.952123) (xy 74.2495 51.952135) (xy 74.2495 53.54787) (xy 74.249501 53.547876) (xy 74.255908 53.607483) - (xy 74.306202 53.742328) (xy 74.306206 53.742335) (xy 74.392452 53.857544) (xy 74.392455 53.857547) - (xy 74.507664 53.943793) (xy 74.507671 53.943797) (xy 74.642517 53.994091) (xy 74.642516 53.994091) - (xy 74.649444 53.994835) (xy 74.702127 54.0005) (xy 76.297872 54.000499) (xy 76.357483 53.994091) - (xy 76.492331 53.943796) (xy 76.607546 53.857546) (xy 76.693796 53.742331) (xy 76.744091 53.607483) - (xy 76.7505 53.547873) (xy 76.750499 51.952128) (xy 76.744091 51.892517) (xy 76.735733 51.870109) - (xy 76.693797 51.757671) (xy 76.693793 51.757664) (xy 76.607547 51.642455) (xy 76.607544 51.642452) - (xy 76.492335 51.556206) (xy 76.492327 51.556202) (xy 76.484815 51.5534) (xy 76.428883 51.511528) - (xy 76.404467 51.446063) (xy 76.41932 51.37779) (xy 76.468726 51.328386) (xy 76.493557 51.318142) - (xy 76.495196 51.317665) (xy 76.495204 51.317665) (xy 76.649393 51.272869) (xy 76.787598 51.191135) - (xy 76.822818 51.155915) (xy 76.88414 51.122429) (xy 76.953832 51.127413) (xy 77.009766 51.169283) - (xy 77.034184 51.234747) (xy 77.0345 51.243595) (xy 77.0345 51.89787) (xy 77.034501 51.897876) (xy 77.040908 51.957481) - (xy 77.053659 51.991669) (xy 77.058642 52.061361) (xy 77.053659 52.078331) (xy 77.040908 52.112518) - (xy 77.035368 52.164054) (xy 77.034501 52.172123) (xy 77.0345 52.172135) (xy 77.0345 53.16787) (xy 77.034501 53.167876) - (xy 77.040908 53.227481) (xy 77.053659 53.261669) (xy 77.058642 53.331361) (xy 77.053659 53.348331) - (xy 77.040908 53.382518) (xy 77.034501 53.442116) (xy 77.034501 53.442123) (xy 77.0345 53.442135) - (xy 77.0345 54.43787) (xy 77.034501 54.437876) (xy 77.040908 54.497481) (xy 77.053659 54.531669) - (xy 77.058642 54.601361) (xy 77.053659 54.618331) (xy 77.040908 54.652518) (xy 77.035342 54.704294) - (xy 77.034501 54.712123) (xy 77.0345 54.712135) (xy 77.0345 55.70787) (xy 77.034501 55.707876) (xy 77.040908 55.767481) - (xy 77.053659 55.801669) (xy 77.058642 55.871361) (xy 77.053659 55.888331) (xy 77.040908 55.922518) - (xy 77.034501 55.982116) (xy 77.034501 55.982123) (xy 77.0345 55.982135) (xy 77.0345 56.97787) (xy 77.034501 56.977876) - (xy 77.040908 57.037481) (xy 77.053659 57.071669) (xy 77.058642 57.141361) (xy 77.053659 57.158331) - (xy 77.040908 57.192518) (xy 77.034675 57.250498) (xy 77.034501 57.252123) (xy 77.0345 57.252135) - (xy 77.0345 58.24787) (xy 77.034501 58.247876) (xy 77.040908 58.307482) (xy 77.051337 58.335442) - (xy 77.056321 58.405134) (xy 77.022835 58.466457) (xy 76.961512 58.499941) (xy 76.89182 58.494956) - (xy 76.883405 58.490938) (xy 76.883351 58.491065) (xy 76.87619 58.487965) (xy 76.730001 58.445493) - (xy 76.73 58.445494) (xy 76.73 60.054503) (xy 76.875905 60.012115) (xy 76.945775 60.012315) (xy 77.004445 60.050258) - (xy 77.033288 60.113896) (xy 77.0345 60.131192) (xy 77.0345 60.78787) (xy 77.034501 60.787876) (xy 77.040908 60.847481) - (xy 77.053659 60.881669) (xy 77.058642 60.951361) (xy 77.053659 60.968331) (xy 77.040908 61.002518) - (xy 77.039029 61.02) (xy 77.034501 61.062123) (xy 77.0345 61.062135) (xy 77.0345 62.05787) (xy 77.034501 62.057876) - (xy 77.040908 62.117481) (xy 77.053659 62.151669) (xy 77.058642 62.221361) (xy 77.053659 62.238331) - (xy 77.040908 62.272518) (xy 77.0361 62.317246) (xy 77.034501 62.332123) (xy 77.0345 62.332135) - (xy 77.0345 63.32787) (xy 77.034501 63.327876) (xy 77.040908 63.387481) (xy 77.053659 63.421669) - (xy 77.058642 63.491361) (xy 77.053659 63.508331) (xy 77.040908 63.542518) (xy 77.034501 63.602116) - (xy 77.034501 63.602123) (xy 77.0345 63.602135) (xy 77.0345 64.59787) (xy 77.034501 64.597876) (xy 77.040908 64.657483) - (xy 77.091202 64.792328) (xy 77.091206 64.792335) (xy 77.177452 64.907544) (xy 77.177455 64.907547) - (xy 77.292664 64.993793) (xy 77.292671 64.993797) (xy 77.427517 65.044091) (xy 77.427516 65.044091) - (xy 77.434444 65.044835) (xy 77.487127 65.0505) (xy 78.9755 65.050499) (xy 79.042539 65.070184) - (xy 79.088294 65.122987) (xy 79.0995 65.174499) (xy 79.0995 66.14787) (xy 79.099501 66.147876) (xy 79.105908 66.207483) - (xy 79.156202 66.342328) (xy 79.156206 66.342335) (xy 79.242452 66.457544) (xy 79.242455 66.457547) - (xy 79.357664 66.543793) (xy 79.357671 66.543797) (xy 79.492517 66.594091) (xy 79.492516 66.594091) - (xy 79.499444 66.594835) (xy 79.552127 66.6005) (xy 80.547872 66.600499) (xy 80.607483 66.594091) - (xy 80.641667 66.58134) (xy 80.711358 66.576357) (xy 80.728327 66.581338) (xy 80.762517 66.594091) - (xy 80.822127 66.6005) (xy 81.817872 66.600499) (xy 81.877483 66.594091) (xy 81.911667 66.58134) - (xy 81.981358 66.576357) (xy 81.998327 66.581338) (xy 82.032517 66.594091) (xy 82.092127 66.6005) - (xy 83.087872 66.600499) (xy 83.147483 66.594091) (xy 83.181667 66.58134) (xy 83.251358 66.576357) - (xy 83.268327 66.581338) (xy 83.302517 66.594091) (xy 83.362127 66.6005) (xy 84.357872 66.600499) - (xy 84.417483 66.594091) (xy 84.451667 66.58134) (xy 84.521358 66.576357) (xy 84.538327 66.581338) - (xy 84.572517 66.594091) (xy 84.632127 66.6005) (xy 85.627872 66.600499) (xy 85.687483 66.594091) - (xy 85.721667 66.58134) (xy 85.791358 66.576357) (xy 85.808327 66.581338) (xy 85.842517 66.594091) - (xy 85.902127 66.6005) (xy 86.897872 66.600499) (xy 86.957483 66.594091) (xy 86.991667 66.58134) - (xy 87.061358 66.576357) (xy 87.078327 66.581338) (xy 87.112517 66.594091) (xy 87.172127 66.6005) - (xy 88.167872 66.600499) (xy 88.227483 66.594091) (xy 88.261667 66.58134) (xy 88.331358 66.576357) - (xy 88.348327 66.581338) (xy 88.382517 66.594091) (xy 88.442127 66.6005) (xy 89.437872 66.600499) - (xy 89.497483 66.594091) (xy 89.531667 66.58134) (xy 89.601358 66.576357) (xy 89.618327 66.581338) - (xy 89.652517 66.594091) (xy 89.712127 66.6005) (xy 90.707872 66.600499) (xy 90.767483 66.594091) - (xy 90.801667 66.58134) (xy 90.871358 66.576357) (xy 90.888327 66.581338) (xy 90.922517 66.594091) - (xy 90.982127 66.6005) (xy 91.977872 66.600499) (xy 92.037483 66.594091) (xy 92.071667 66.58134) - (xy 92.141358 66.576357) (xy 92.158327 66.581338) (xy 92.192517 66.594091) (xy 92.252127 66.6005) - (xy 93.247872 66.600499) (xy 93.307483 66.594091) (xy 93.341667 66.58134) (xy 93.411358 66.576357) - (xy 93.428327 66.581338) (xy 93.462517 66.594091) (xy 93.522127 66.6005) (xy 94.517872 66.600499) - (xy 94.577483 66.594091) (xy 94.712331 66.543796) (xy 94.827546 66.457546) (xy 94.913796 66.342331) - (xy 94.964091 66.207483) (xy 94.9705 66.147873) (xy 94.970499 65.174498) (xy 94.990183 65.10746) - (xy 95.042987 65.061705) (xy 95.094494 65.050499) (xy 96.582872 65.050499) (xy 96.642483 65.044091) - (xy 96.777331 64.993796) (xy 96.892546 64.907546) (xy 96.911743 64.881902) (xy 105.4995 64.881902) - (xy 105.4995 65.118097) (xy 105.536446 65.351368) (xy 105.609433 65.575996) (xy 105.68108 65.71661) - (xy 105.716657 65.786433) (xy 105.855483 65.97751) (xy 106.02249 66.144517) (xy 106.213567 66.283343) - (xy 106.283536 66.318994) (xy 106.424003 66.390566) (xy 106.424005 66.390566) (xy 106.424008 66.390568) - (xy 106.503249 66.416315) (xy 106.648631 66.463553) (xy 106.881903 66.5005) (xy 106.881908 66.5005) - (xy 107.118097 66.5005) (xy 107.351368 66.463553) (xy 107.575992 66.390568) (xy 107.786433 66.283343) - (xy 107.97751 66.144517) (xy 108.144517 65.97751) (xy 108.283343 65.786433) (xy 108.390568 65.575992) - (xy 108.463553 65.351368) (xy 108.5005 65.118097) (xy 108.5005 64.881902) (xy 108.463553 64.648631) - (xy 108.393401 64.432727) (xy 108.390568 64.424008) (xy 108.390566 64.424005) (xy 108.390566 64.424003) - (xy 108.334002 64.312991) (xy 108.283343 64.213567) (xy 108.144517 64.02249) (xy 108.074162 63.952135) - (xy 113.0995 63.952135) (xy 113.0995 66.04787) (xy 113.099501 66.047876) (xy 113.105908 66.107483) - (xy 113.156202 66.242328) (xy 113.156206 66.242335) (xy 113.242452 66.357544) (xy 113.242455 66.357547) - (xy 113.357664 66.443793) (xy 113.357671 66.443797) (xy 113.492517 66.494091) (xy 113.492516 66.494091) - (xy 113.499444 66.494835) (xy 113.552127 66.5005) (xy 115.647872 66.500499) (xy 115.707483 66.494091) - (xy 115.842331 66.443796) (xy 115.957546 66.357546) (xy 116.043796 66.242331) (xy 116.094091 66.107483) - (xy 116.1005 66.047873) (xy 116.100499 63.952128) (xy 116.094091 63.892517) (xy 116.080278 63.855483) - (xy 116.043797 63.757671) (xy 116.043793 63.757664) (xy 115.957547 63.642455) (xy 115.957545 63.642453) - (xy 115.842335 63.556206) (xy 115.842328 63.556202) (xy 115.825657 63.549984) (xy 143.817 63.549984) - (xy 143.817 65.950015) (xy 143.8275 66.052795) (xy 143.827501 66.052796) (xy 143.882686 66.219335) - (xy 143.882687 66.219337) (xy 143.974786 66.368651) (xy 143.974789 66.368655) (xy 144.098844 66.49271) - (xy 144.098848 66.492713) (xy 144.248162 66.584812) (xy 144.248164 66.584813) (xy 144.248166 66.584814) - (xy 144.414703 66.639999) (xy 144.517492 66.6505) (xy 144.517497 66.6505) (xy 146.917503 66.6505) - (xy 146.917508 66.6505) (xy 147.020297 66.639999) (xy 147.186834 66.584814) (xy 147.336155 66.492711) - (xy 147.460211 66.368655) (xy 147.552314 66.219334) (xy 147.607499 66.052797) (xy 147.618 65.950008) - (xy 147.618 63.549992) (xy 147.607499 63.447203) (xy 147.552314 63.280666) (xy 147.507052 63.207286) - (xy 147.460213 63.131348) (xy 147.46021 63.131344) (xy 147.336155 63.007289) (xy 147.336151 63.007286) - (xy 147.186837 62.915187) (xy 147.186835 62.915186) (xy 147.103565 62.887593) (xy 147.020297 62.860001) - (xy 147.020295 62.86) (xy 146.917515 62.8495) (xy 146.917508 62.8495) (xy 144.517492 62.8495) (xy 144.517484 62.8495) + (xy 109.2505 78.881902) (xy 109.213553 78.648631) (xy 109.155342 78.469478) (xy 109.140568 78.424008) + (xy 109.140566 78.424005) (xy 109.140566 78.424003) (xy 109.084002 78.312991) (xy 109.033343 78.213567) + (xy 108.894517 78.02249) (xy 108.72751 77.855483) (xy 108.536433 77.716657) (xy 108.523953 77.710298) + (xy 108.325996 77.609433) (xy 108.101368 77.536446) (xy 107.868097 77.4995) (xy 107.868092 77.4995) + (xy 107.631908 77.4995) (xy 107.631903 77.4995) (xy 107.398631 77.536446) (xy 107.174003 77.609433) + (xy 106.963566 77.716657) (xy 106.859982 77.791916) (xy 106.77249 77.855483) (xy 106.772488 77.855485) + (xy 106.772487 77.855485) (xy 106.605485 78.022487) (xy 106.605485 78.022488) (xy 106.605483 78.02249) + (xy 106.598223 78.032483) (xy 106.466657 78.213566) (xy 106.359433 78.424003) (xy 106.286446 78.648631) + (xy 106.2495 78.881902) (xy 102.7505 78.881902) (xy 102.713553 78.648631) (xy 102.655342 78.469478) + (xy 102.640568 78.424008) (xy 102.640566 78.424005) (xy 102.640566 78.424003) (xy 102.584002 78.312991) + (xy 102.533343 78.213567) (xy 102.394517 78.02249) (xy 102.22751 77.855483) (xy 102.036433 77.716657) + (xy 102.023953 77.710298) (xy 101.825996 77.609433) (xy 101.601368 77.536446) (xy 101.368097 77.4995) + (xy 101.368092 77.4995) (xy 101.131908 77.4995) (xy 101.131903 77.4995) (xy 100.898631 77.536446) + (xy 100.674003 77.609433) (xy 100.463566 77.716657) (xy 100.359982 77.791916) (xy 100.27249 77.855483) + (xy 100.272488 77.855485) (xy 100.272487 77.855485) (xy 100.105485 78.022487) (xy 100.105485 78.022488) + (xy 100.105483 78.02249) (xy 100.098223 78.032483) (xy 99.966657 78.213566) (xy 99.859433 78.424003) + (xy 99.786446 78.648631) (xy 99.7495 78.881902) (xy 50.5005 78.881902) (xy 50.5005 76.377135) (xy 77.8245 76.377135) + (xy 77.8245 77.97287) (xy 77.824501 77.972876) (xy 77.830908 78.032483) (xy 77.881202 78.167328) + (xy 77.881206 78.167335) (xy 77.967452 78.282544) (xy 77.967455 78.282547) (xy 78.082664 78.368793) + (xy 78.082671 78.368797) (xy 78.217517 78.419091) (xy 78.217516 78.419091) (xy 78.224444 78.419835) + (xy 78.277127 78.4255) (xy 79.872872 78.425499) (xy 79.932483 78.419091) (xy 80.067331 78.368796) + (xy 80.182546 78.282546) (xy 80.268796 78.167331) (xy 80.319091 78.032483) (xy 80.3255 77.972873) + (xy 80.325499 76.377128) (xy 80.319091 76.317517) (xy 80.270954 76.188456) (xy 80.268797 76.182671) + (xy 80.268793 76.182664) (xy 80.182547 76.067455) (xy 80.182544 76.067452) (xy 80.067335 75.981206) + (xy 80.067328 75.981202) (xy 79.932482 75.930908) (xy 79.932483 75.930908) (xy 79.872883 75.924501) + (xy 79.872881 75.9245) (xy 79.872873 75.9245) (xy 79.872864 75.9245) (xy 78.277129 75.9245) (xy 78.277123 75.924501) + (xy 78.217516 75.930908) (xy 78.082671 75.981202) (xy 78.082664 75.981206) (xy 77.967455 76.067452) + (xy 77.967452 76.067455) (xy 77.881206 76.182664) (xy 77.881202 76.182671) (xy 77.830908 76.317517) + (xy 77.829293 76.332544) (xy 77.824501 76.377123) (xy 77.8245 76.377135) (xy 50.5005 76.377135) + (xy 50.5005 74.381947) (xy 99.75 74.381947) (xy 99.75 74.618052) (xy 99.786934 74.851247) (xy 99.859897 75.075802) + (xy 99.967087 75.286174) (xy 100.027338 75.369104) (xy 100.02734 75.369105) (xy 100.726212 74.670233) + (xy 100.737482 74.712292) (xy 100.80989 74.837708) (xy 100.912292 74.94011) (xy 101.037708 75.012518) + (xy 101.079765 75.023787) (xy 100.380893 75.722658) (xy 100.463828 75.782914) (xy 100.674197 75.890102) + (xy 100.898752 75.963065) (xy 100.898751 75.963065) (xy 101.131948 76) (xy 101.368052 76) (xy 101.601247 75.963065) + (xy 101.825802 75.890102) (xy 102.036163 75.782918) (xy 102.036169 75.782914) (xy 102.119104 75.722658) + (xy 102.119105 75.722658) (xy 101.420233 75.023787) (xy 101.462292 75.012518) (xy 101.587708 74.94011) + (xy 101.69011 74.837708) (xy 101.762518 74.712292) (xy 101.773787 74.670233) (xy 102.472658 75.369105) + (xy 102.472658 75.369104) (xy 102.532914 75.286169) (xy 102.532918 75.286163) (xy 102.640102 75.075802) + (xy 102.713065 74.851247) (xy 102.75 74.618052) (xy 102.75 74.381947) (xy 106.25 74.381947) (xy 106.25 74.618052) + (xy 106.286934 74.851247) (xy 106.359897 75.075802) (xy 106.467087 75.286174) (xy 106.527338 75.369104) + (xy 106.52734 75.369105) (xy 107.226212 74.670233) (xy 107.237482 74.712292) (xy 107.30989 74.837708) + (xy 107.412292 74.94011) (xy 107.537708 75.012518) (xy 107.579765 75.023787) (xy 106.880893 75.722658) + (xy 106.963828 75.782914) (xy 107.174197 75.890102) (xy 107.398752 75.963065) (xy 107.398751 75.963065) + (xy 107.631948 76) (xy 107.868052 76) (xy 108.101247 75.963065) (xy 108.325802 75.890102) (xy 108.536163 75.782918) + (xy 108.536169 75.782914) (xy 108.619104 75.722658) (xy 108.619105 75.722658) (xy 107.920233 75.023787) + (xy 107.962292 75.012518) (xy 108.087708 74.94011) (xy 108.19011 74.837708) (xy 108.262518 74.712292) + (xy 108.273787 74.670233) (xy 108.972658 75.369105) (xy 108.972658 75.369104) (xy 109.032914 75.286169) + (xy 109.032918 75.286163) (xy 109.140102 75.075802) (xy 109.213065 74.851247) (xy 109.25 74.618052) + (xy 109.25 74.381947) (xy 110 74.381947) (xy 110 74.618052) (xy 110.036934 74.851247) (xy 110.109897 75.075802) + (xy 110.217087 75.286174) (xy 110.277338 75.369104) (xy 110.27734 75.369105) (xy 110.976212 74.670233) + (xy 110.987482 74.712292) (xy 111.05989 74.837708) (xy 111.162292 74.94011) (xy 111.287708 75.012518) + (xy 111.329765 75.023787) (xy 110.630893 75.722658) (xy 110.713828 75.782914) (xy 110.924197 75.890102) + (xy 111.148752 75.963065) (xy 111.148751 75.963065) (xy 111.381948 76) (xy 111.618052 76) (xy 111.851247 75.963065) + (xy 112.075802 75.890102) (xy 112.286163 75.782918) (xy 112.286169 75.782914) (xy 112.369104 75.722658) + (xy 112.369105 75.722658) (xy 111.670233 75.023787) (xy 111.712292 75.012518) (xy 111.837708 74.94011) + (xy 111.94011 74.837708) (xy 112.012518 74.712292) (xy 112.023787 74.670233) (xy 112.722658 75.369105) + (xy 112.722658 75.369104) (xy 112.782914 75.286169) (xy 112.782918 75.286163) (xy 112.890102 75.075802) + (xy 112.963065 74.851247) (xy 113 74.618052) (xy 113 74.381947) (xy 116.5 74.381947) (xy 116.5 74.618052) + (xy 116.536934 74.851247) (xy 116.609897 75.075802) (xy 116.717087 75.286174) (xy 116.777338 75.369104) + (xy 116.77734 75.369105) (xy 117.476212 74.670233) (xy 117.487482 74.712292) (xy 117.55989 74.837708) + (xy 117.662292 74.94011) (xy 117.787708 75.012518) (xy 117.829765 75.023787) (xy 117.130893 75.722658) + (xy 117.213828 75.782914) (xy 117.424197 75.890102) (xy 117.648752 75.963065) (xy 117.648751 75.963065) + (xy 117.881948 76) (xy 118.118052 76) (xy 118.351247 75.963065) (xy 118.575802 75.890102) (xy 118.786163 75.782918) + (xy 118.786169 75.782914) (xy 118.869104 75.722658) (xy 118.869105 75.722658) (xy 118.170233 75.023787) + (xy 118.212292 75.012518) (xy 118.337708 74.94011) (xy 118.44011 74.837708) (xy 118.512518 74.712292) + (xy 118.523787 74.670233) (xy 119.222658 75.369105) (xy 119.222658 75.369104) (xy 119.282914 75.286169) + (xy 119.282918 75.286163) (xy 119.390102 75.075802) (xy 119.406434 75.02554) (xy 129.4442 75.02554) + (xy 129.4442 75.172459) (xy 129.472858 75.316534) (xy 129.472861 75.316544) (xy 129.529078 75.452266) + (xy 129.529083 75.452275) (xy 129.610698 75.574419) (xy 129.610701 75.574423) (xy 129.714576 75.678298) + (xy 129.71458 75.678301) (xy 129.836724 75.759916) (xy 129.83673 75.759919) (xy 129.836731 75.75992) + (xy 129.972458 75.81614) (xy 130.11654 75.844799) (xy 130.116544 75.8448) (xy 130.116545 75.8448) + (xy 130.263456 75.8448) (xy 130.263457 75.844799) (xy 130.407542 75.81614) (xy 130.484483 75.784269) + (xy 130.553951 75.776801) (xy 130.616431 75.808076) (xy 130.646496 75.851377) (xy 130.668015 75.903327) + (xy 130.674064 75.91238) (xy 131.283223 75.303223) (xy 131.89238 74.694064) (xy 131.89238 74.694063) + (xy 131.883326 74.688014) (xy 131.720683 74.620645) (xy 131.720677 74.620643) (xy 131.548024 74.5863) + (xy 131.371976 74.5863) (xy 131.199322 74.620643) (xy 131.199316 74.620645) (xy 131.036676 74.688012) + (xy 131.036669 74.688016) (xy 130.984694 74.722745) (xy 130.918016 74.743622) (xy 130.850636 74.725137) + (xy 130.812702 74.688533) (xy 130.769301 74.62358) (xy 130.769298 74.623576) (xy 130.665423 74.519701) + (xy 130.665419 74.519698) (xy 130.543275 74.438083) (xy 130.543266 74.438078) (xy 130.407544 74.381861) + (xy 130.407545 74.381861) (xy 130.407542 74.38186) (xy 130.407538 74.381859) (xy 130.407534 74.381858) + (xy 130.263459 74.3532) (xy 130.263455 74.3532) (xy 130.116545 74.3532) (xy 130.11654 74.3532) (xy 129.972465 74.381858) + (xy 129.972455 74.381861) (xy 129.836733 74.438078) (xy 129.836724 74.438083) (xy 129.71458 74.519698) + (xy 129.714576 74.519701) (xy 129.610701 74.623576) (xy 129.610698 74.62358) (xy 129.529083 74.745724) + (xy 129.529078 74.745733) (xy 129.472861 74.881455) (xy 129.472858 74.881465) (xy 129.4442 75.02554) + (xy 119.406434 75.02554) (xy 119.420862 74.981135) (xy 119.420862 74.981134) (xy 119.463065 74.851245) + (xy 119.5 74.618052) (xy 119.5 74.381947) (xy 119.463065 74.148752) (xy 119.390102 73.924197) (xy 119.282914 73.713828) + (xy 119.222658 73.630894) (xy 119.222658 73.630893) (xy 118.523787 74.329765) (xy 118.512518 74.287708) + (xy 118.44011 74.162292) (xy 118.337708 74.05989) (xy 118.212292 73.987482) (xy 118.170234 73.976212) + (xy 118.869105 73.27734) (xy 118.869104 73.277338) (xy 118.786174 73.217087) (xy 118.575802 73.109897) + (xy 118.351247 73.036934) (xy 118.351248 73.036934) (xy 118.118052 73) (xy 117.881948 73) (xy 117.648752 73.036934) + (xy 117.424197 73.109897) (xy 117.21383 73.217084) (xy 117.130894 73.27734) (xy 117.829766 73.976212) + (xy 117.787708 73.987482) (xy 117.662292 74.05989) (xy 117.55989 74.162292) (xy 117.487482 74.287708) + (xy 117.476212 74.329766) (xy 116.77734 73.630894) (xy 116.717084 73.71383) (xy 116.609897 73.924197) + (xy 116.536934 74.148752) (xy 116.5 74.381947) (xy 113 74.381947) (xy 112.963065 74.148752) (xy 112.890102 73.924197) + (xy 112.782914 73.713828) (xy 112.722658 73.630894) (xy 112.722658 73.630893) (xy 112.023787 74.329765) + (xy 112.012518 74.287708) (xy 111.94011 74.162292) (xy 111.837708 74.05989) (xy 111.712292 73.987482) + (xy 111.670234 73.976212) (xy 112.369105 73.27734) (xy 112.369104 73.277339) (xy 112.286174 73.217087) + (xy 112.075802 73.109897) (xy 111.851247 73.036934) (xy 111.851248 73.036934) (xy 111.618052 73) + (xy 111.381948 73) (xy 111.148752 73.036934) (xy 110.924197 73.109897) (xy 110.71383 73.217084) + (xy 110.630894 73.27734) (xy 111.329766 73.976212) (xy 111.287708 73.987482) (xy 111.162292 74.05989) + (xy 111.05989 74.162292) (xy 110.987482 74.287708) (xy 110.976212 74.329766) (xy 110.27734 73.630894) + (xy 110.217084 73.71383) (xy 110.109897 73.924197) (xy 110.036934 74.148752) (xy 110 74.381947) + (xy 109.25 74.381947) (xy 109.213065 74.148752) (xy 109.140102 73.924197) (xy 109.032914 73.713828) + (xy 108.972658 73.630894) (xy 108.972658 73.630893) (xy 108.273787 74.329765) (xy 108.262518 74.287708) + (xy 108.19011 74.162292) (xy 108.087708 74.05989) (xy 107.962292 73.987482) (xy 107.920234 73.976212) + (xy 108.619105 73.27734) (xy 108.619104 73.277339) (xy 108.536174 73.217087) (xy 108.325802 73.109897) + (xy 108.101247 73.036934) (xy 108.101248 73.036934) (xy 107.868052 73) (xy 107.631948 73) (xy 107.398752 73.036934) + (xy 107.174197 73.109897) (xy 106.96383 73.217084) (xy 106.880894 73.27734) (xy 107.579766 73.976212) + (xy 107.537708 73.987482) (xy 107.412292 74.05989) (xy 107.30989 74.162292) (xy 107.237482 74.287708) + (xy 107.226212 74.329766) (xy 106.52734 73.630894) (xy 106.467084 73.71383) (xy 106.359897 73.924197) + (xy 106.286934 74.148752) (xy 106.25 74.381947) (xy 102.75 74.381947) (xy 102.713065 74.148752) + (xy 102.640102 73.924197) (xy 102.532914 73.713828) (xy 102.472658 73.630894) (xy 102.472658 73.630893) + (xy 101.773787 74.329765) (xy 101.762518 74.287708) (xy 101.69011 74.162292) (xy 101.587708 74.05989) + (xy 101.462292 73.987482) (xy 101.420234 73.976212) (xy 102.119105 73.27734) (xy 102.119104 73.277339) + (xy 102.036174 73.217087) (xy 101.825802 73.109897) (xy 101.601247 73.036934) (xy 101.601248 73.036934) + (xy 101.368052 73) (xy 101.131948 73) (xy 100.898752 73.036934) (xy 100.674197 73.109897) (xy 100.46383 73.217084) + (xy 100.380894 73.27734) (xy 101.079766 73.976212) (xy 101.037708 73.987482) (xy 100.912292 74.05989) + (xy 100.80989 74.162292) (xy 100.737482 74.287708) (xy 100.726212 74.329765) (xy 100.02734 73.630894) + (xy 99.967084 73.71383) (xy 99.859897 73.924197) (xy 99.786934 74.148752) (xy 99.75 74.381947) (xy 50.5005 74.381947) + (xy 50.5005 71.925441) (xy 143.8995 71.925441) (xy 143.8995 72.174558) (xy 143.899501 72.174575) + (xy 143.932017 72.421561) (xy 143.996498 72.662207) (xy 144.09183 72.892361) (xy 144.091837 72.892376) + (xy 144.2164 73.108126) (xy 144.36806 73.305774) (xy 144.368066 73.305781) (xy 144.544218 73.481933) + (xy 144.544225 73.481939) (xy 144.741873 73.633599) (xy 144.957623 73.758162) (xy 144.957638 73.758169) + (xy 145.056825 73.799253) (xy 145.187793 73.853502) (xy 145.428435 73.917982) (xy 145.675435 73.9505) + (xy 145.675442 73.9505) (xy 145.924558 73.9505) (xy 145.924565 73.9505) (xy 146.171565 73.917982) + (xy 146.412207 73.853502) (xy 146.642373 73.758164) (xy 146.858127 73.633599) (xy 147.055776 73.481938) + (xy 147.231938 73.305776) (xy 147.383599 73.108127) (xy 147.508164 72.892373) (xy 147.603502 72.662207) + (xy 147.667982 72.421565) (xy 147.7005 72.174565) (xy 147.7005 71.925435) (xy 147.667982 71.678435) + (xy 147.603502 71.437793) (xy 147.508164 71.207627) (xy 147.383599 70.991873) (xy 147.231938 70.794224) + (xy 147.231933 70.794218) (xy 147.055781 70.618066) (xy 147.055774 70.61806) (xy 146.858126 70.4664) + (xy 146.642376 70.341837) (xy 146.642361 70.34183) (xy 146.412207 70.246498) (xy 146.171561 70.182017) + (xy 145.924575 70.149501) (xy 145.92457 70.1495) (xy 145.924565 70.1495) (xy 145.675435 70.1495) + (xy 145.675429 70.1495) (xy 145.675424 70.149501) (xy 145.428438 70.182017) (xy 145.187792 70.246498) + (xy 144.957638 70.34183) (xy 144.957623 70.341837) (xy 144.741873 70.4664) (xy 144.544225 70.61806) + (xy 144.544218 70.618066) (xy 144.368066 70.794218) (xy 144.36806 70.794225) (xy 144.2164 70.991873) + (xy 144.091837 71.207623) (xy 144.09183 71.207638) (xy 143.996498 71.437792) (xy 143.932017 71.678438) + (xy 143.899501 71.925424) (xy 143.8995 71.925441) (xy 50.5005 71.925441) (xy 50.5005 67.97) (xy 51.780138 67.97) + (xy 52.583012 67.97) (xy 52.565795 67.97994) (xy 52.50994 68.035795) (xy 52.470444 68.104204) (xy 52.45 68.180504) + (xy 52.45 68.259496) (xy 52.470444 68.335796) (xy 52.50994 68.404205) (xy 52.565795 68.46006) (xy 52.583012 68.47) + (xy 51.780138 68.47) (xy 51.78843 68.51169) (xy 51.78843 68.511692) (xy 51.863807 68.693671) (xy 51.863814 68.693684) + (xy 51.973248 68.857462) (xy 51.973251 68.857466) (xy 52.112533 68.996748) (xy 52.112537 68.996751) + (xy 52.276315 69.106185) (xy 52.276328 69.106192) (xy 52.458306 69.181569) (xy 52.458318 69.181572) + (xy 52.651504 69.219999) (xy 52.651508 69.22) (xy 52.8 69.22) (xy 52.8 68.52) (xy 53.3 68.52) (xy 53.3 69.22) + (xy 53.448492 69.22) (xy 53.448495 69.219999) (xy 53.641681 69.181572) (xy 53.641693 69.181569) + (xy 53.823671 69.106192) (xy 53.823684 69.106185) (xy 53.987462 68.996751) (xy 53.987466 68.996748) + (xy 54.126748 68.857466) (xy 54.126751 68.857462) (xy 54.236185 68.693684) (xy 54.236192 68.693671) + (xy 54.311569 68.511692) (xy 54.311569 68.51169) (xy 54.319862 68.47) (xy 53.516988 68.47) (xy 53.534205 68.46006) + (xy 53.59006 68.404205) (xy 53.629556 68.335796) (xy 53.65 68.259496) (xy 53.65 68.180504) (xy 53.629556 68.104204) + (xy 53.59006 68.035795) (xy 53.534205 67.97994) (xy 53.516988 67.97) (xy 54.319862 67.97) (xy 54.311569 67.928309) + (xy 54.311569 67.928307) (xy 54.236192 67.746328) (xy 54.236185 67.746315) (xy 54.126751 67.582537) + (xy 54.126748 67.582533) (xy 53.987466 67.443251) (xy 53.987462 67.443248) (xy 53.823684 67.333814) + (xy 53.823671 67.333807) (xy 53.641693 67.25843) (xy 53.641681 67.258427) (xy 53.448495 67.22) (xy 53.3 67.22) + (xy 53.3 67.92) (xy 52.8 67.92) (xy 52.8 67.22) (xy 52.651504 67.22) (xy 52.458318 67.258427) (xy 52.458306 67.25843) + (xy 52.276328 67.333807) (xy 52.276315 67.333814) (xy 52.112537 67.443248) (xy 52.112533 67.443251) + (xy 51.973251 67.582533) (xy 51.973248 67.582537) (xy 51.863814 67.746315) (xy 51.863807 67.746328) + (xy 51.78843 67.928307) (xy 51.78843 67.928309) (xy 51.780138 67.97) (xy 50.5005 67.97) (xy 50.5005 57.71123) + (xy 50.520185 57.644191) (xy 50.572989 57.598436) (xy 50.642147 57.588492) (xy 50.705703 57.617517) + (xy 50.712181 57.623549) (xy 50.731344 57.642712) (xy 50.880666 57.734814) (xy 51.047203 57.789999) + (xy 51.149991 57.8005) (xy 52.699902 57.800499) (xy 52.766941 57.820184) (xy 52.787583 57.836818) + (xy 53.327701 58.376936) (xy 53.361186 58.438259) (xy 53.356202 58.507951) (xy 53.327702 58.552298) + (xy 53.3 58.58) (xy 53.3 59.28) (xy 52.8 59.28) (xy 52.8 58.58) (xy 52.651504 58.58) (xy 52.458318 58.618427) + (xy 52.458306 58.61843) (xy 52.276328 58.693807) (xy 52.276315 58.693814) (xy 52.112537 58.803248) + (xy 52.112533 58.803251) (xy 51.973251 58.942533) (xy 51.973248 58.942537) (xy 51.863814 59.106315) + (xy 51.863807 59.106328) (xy 51.78843 59.288307) (xy 51.78843 59.288309) (xy 51.780138 59.33) (xy 52.583012 59.33) + (xy 52.565795 59.33994) (xy 52.50994 59.395795) (xy 52.470444 59.464204) (xy 52.45 59.540504) (xy 52.45 59.619496) + (xy 52.470444 59.695796) (xy 52.50994 59.764205) (xy 52.565795 59.82006) (xy 52.583012 59.83) (xy 51.780138 59.83) + (xy 51.78843 59.87169) (xy 51.78843 59.871692) (xy 51.863807 60.053671) (xy 51.863814 60.053684) + (xy 51.973248 60.217462) (xy 51.973251 60.217466) (xy 52.112533 60.356748) (xy 52.112537 60.356751) + (xy 52.276315 60.466185) (xy 52.276328 60.466192) (xy 52.458306 60.541569) (xy 52.458318 60.541572) + (xy 52.651504 60.579999) (xy 52.651508 60.58) (xy 52.8 60.58) (xy 52.8 59.88) (xy 53.3 59.88) (xy 53.3 60.58) + (xy 53.448492 60.58) (xy 53.448495 60.579999) (xy 53.641681 60.541572) (xy 53.641693 60.541569) + (xy 53.823671 60.466192) (xy 53.823684 60.466185) (xy 53.98746 60.356753) (xy 54.02751 60.316703) + (xy 54.088833 60.283217) (xy 54.158524 60.288201) (xy 54.202873 60.316702) (xy 55.939884 62.053713) + (xy 55.939886 62.053716) (xy 56.05169 62.16552) (xy 56.070035 62.176111) (xy 56.080567 62.186042) + (xy 56.091191 62.204209) (xy 56.105714 62.21944) (xy 56.109694 62.235848) (xy 56.115839 62.246355) + (xy 56.115307 62.258985) (xy 56.119499 62.276261) (xy 56.119499 62.406636) (xy 56.1195 62.406649) + (xy 56.1195 65.563329) (xy 56.119499 65.563347) (xy 56.119499 65.729053) (xy 56.119498 65.729053) + (xy 56.160424 65.881787) (xy 56.168585 65.895922) (xy 56.168587 65.895925) (xy 56.239475 66.018708) + (xy 56.239481 66.018716) (xy 56.358349 66.137584) (xy 56.358355 66.137589) (xy 56.361865 66.141099) + (xy 56.39535 66.202422) (xy 56.390366 66.272114) (xy 56.352276 66.323632) (xy 56.352382 66.323738) + (xy 56.351678 66.324441) (xy 56.349673 66.327154) (xy 56.346633 66.329486) (xy 56.239487 66.436632) + (xy 56.239485 66.436635) (xy 56.163719 66.567863) (xy 56.1245 66.714234) (xy 56.1245 66.865765) + (xy 56.163719 67.012136) (xy 56.183623 67.04661) (xy 56.239485 67.143365) (xy 56.239488 67.143368) + (xy 56.244432 67.149811) (xy 56.241612 67.151974) (xy 56.267302 67.19902) (xy 56.262318 67.268712) + (xy 56.220446 67.324645) (xy 56.211379 67.330416) (xy 56.211387 67.330427) (xy 56.042536 67.443248) + (xy 55.903251 67.582533) (xy 55.903248 67.582537) (xy 55.793814 67.746315) (xy 55.793807 67.746328) + (xy 55.71843 67.928307) (xy 55.71843 67.928309) (xy 55.710138 67.97) (xy 56.513012 67.97) (xy 56.495795 67.97994) + (xy 56.43994 68.035795) (xy 56.400444 68.104204) (xy 56.38 68.180504) (xy 56.38 68.259496) (xy 56.400444 68.335796) + (xy 56.43994 68.404205) (xy 56.495795 68.46006) (xy 56.513012 68.47) (xy 55.710138 68.47) (xy 55.71843 68.51169) + (xy 55.71843 68.511692) (xy 55.793807 68.693671) (xy 55.793814 68.693684) (xy 55.903248 68.857462) + (xy 55.903251 68.857466) (xy 56.042533 68.996748) (xy 56.042537 68.996751) (xy 56.206315 69.106185) + (xy 56.206328 69.106192) (xy 56.388306 69.181569) (xy 56.388318 69.181572) (xy 56.581504 69.219999) + (xy 56.581508 69.22) (xy 56.98 69.22) (xy 56.98 68.52) (xy 57.48 68.52) (xy 57.48 69.22) (xy 57.878492 69.22) + (xy 57.878495 69.219999) (xy 58.071681 69.181572) (xy 58.071693 69.181569) (xy 58.253671 69.106192) + (xy 58.253684 69.106185) (xy 58.417462 68.996751) (xy 58.417466 68.996748) (xy 58.556748 68.857466) + (xy 58.556751 68.857462) (xy 58.666185 68.693684) (xy 58.666192 68.693671) (xy 58.741569 68.511692) + (xy 58.741569 68.51169) (xy 58.749862 68.47) (xy 57.946988 68.47) (xy 57.964205 68.46006) (xy 58.02006 68.404205) + (xy 58.059556 68.335796) (xy 58.08 68.259496) (xy 58.08 68.180504) (xy 58.059556 68.104204) (xy 58.02006 68.035795) + (xy 57.964205 67.97994) (xy 57.946988 67.97) (xy 58.764389 67.97) (xy 58.78919 67.953106) (xy 58.817574 67.947487) + (xy 58.822488 67.9471) (xy 58.822495 67.947099) (xy 58.980193 67.901283) (xy 58.980196 67.901282) + (xy 59.121552 67.817685) (xy 59.121561 67.817678) (xy 59.237678 67.701561) (xy 59.237685 67.701552) + (xy 59.321281 67.560198) (xy 59.3671 67.402486) (xy 59.367295 67.400001) (xy 59.367295 67.4) (xy 58.269 67.4) + (xy 58.260314 67.397449) (xy 58.251353 67.398738) (xy 58.227312 67.387759) (xy 58.201961 67.380315) + (xy 58.196033 67.373474) (xy 58.187797 67.369713) (xy 58.173507 67.347478) (xy 58.156206 67.327511) + (xy 58.153918 67.316996) (xy 58.150023 67.310935) (xy 58.145 67.276) (xy 58.145 67.2745) (xy 58.164685 67.207461) + (xy 58.217489 67.161706) (xy 58.269 67.1505) (xy 58.785686 67.1505) (xy 58.785694 67.1505) (xy 58.822569 67.147598) + (xy 58.822571 67.147597) (xy 58.822573 67.147597) (xy 58.864191 67.135505) (xy 58.980398 67.101744) + (xy 59.121865 67.018081) (xy 59.203628 66.936317) (xy 59.264949 66.902834) (xy 59.291308 66.9) (xy 59.367295 66.9) + (xy 59.367295 66.899998) (xy 59.3671 66.897508) (xy 59.334555 66.785491) (xy 59.334555 66.716302) + (xy 59.367598 66.602569) (xy 59.3705 66.565694) (xy 59.3705 66.3745) (xy 59.390185 66.307461) (xy 59.442989 66.261706) + (xy 59.4945 66.2505) (xy 60.070404 66.2505) (xy 60.137443 66.270185) (xy 60.158085 66.286819) (xy 60.262396 66.39113) + (xy 60.2624 66.391133) (xy 60.262402 66.391135) (xy 60.400607 66.472869) (xy 60.441268 66.484682) + (xy 60.554791 66.517664) (xy 60.554794 66.517664) (xy 60.554796 66.517665) (xy 60.590819 66.5205) + (xy 60.98918 66.520499) (xy 61.025204 66.517665) (xy 61.179393 66.472869) (xy 61.237369 66.438581) + (xy 61.305093 66.421398) (xy 61.363612 66.438581) (xy 61.420805 66.472404) (xy 61.56 66.512844) + (xy 61.56 66.512843) (xy 62.06 66.512843) (xy 62.199194 66.472404) (xy 62.337285 66.390738) (xy 62.337294 66.390731) + (xy 62.450731 66.277294) (xy 62.450738 66.277285) (xy 62.532406 66.139191) (xy 62.532407 66.139188) + (xy 62.577166 65.985128) (xy 62.577167 65.985122) (xy 62.579931 65.95) (xy 62.06 65.95) (xy 62.06 66.512843) + (xy 61.56 66.512843) (xy 61.56 65.960408) (xy 61.560004 65.959404) (xy 61.560039 65.955034) (xy 61.5605 65.949181) + (xy 61.560499 65.45082) (xy 61.560434 65.45) (xy 61.560382 65.449332) (xy 61.56 65.439607) (xy 61.56 64.887154) + (xy 62.06 64.887154) (xy 62.06 65.45) (xy 62.579931 65.45) (xy 62.577167 65.414877) (xy 62.577166 65.414871) + (xy 62.532407 65.260811) (xy 62.532406 65.260808) (xy 62.450738 65.122714) (xy 62.450731 65.122705) + (xy 62.337294 65.009268) (xy 62.337285 65.009261) (xy 62.199191 64.927593) (xy 62.199188 64.927591) + (xy 62.060001 64.887153) (xy 62.06 64.887154) (xy 61.56 64.887154) (xy 61.559998 64.887153) (xy 61.420811 64.927591) + (xy 61.42081 64.927592) (xy 61.363611 64.961419) (xy 61.295886 64.9786) (xy 61.237371 64.961419) + (xy 61.226676 64.955094) (xy 61.179393 64.927131) (xy 61.179392 64.92713) (xy 61.179391 64.92713) + (xy 61.179388 64.927129) (xy 61.025208 64.882335) (xy 61.025202 64.882334) (xy 60.989181 64.8795) + (xy 60.59083 64.8795) (xy 60.590808 64.879501) (xy 60.554794 64.882335) (xy 60.400611 64.927129) + (xy 60.400606 64.927131) (xy 60.262404 65.008863) (xy 60.262396 65.008869) (xy 60.258085 65.013181) + (xy 60.196762 65.046666) (xy 60.170404 65.0495) (xy 59.651506 65.0495) (xy 59.63026 65.043261) (xy 59.608174 65.041682) + (xy 59.59739 65.033609) (xy 59.584467 65.029815) (xy 59.569966 65.01308) (xy 59.55224 64.999811) + (xy 59.547532 64.98719) (xy 59.538712 64.977011) (xy 59.53556 64.955094) (xy 59.527822 64.934347) + (xy 59.530684 64.921185) (xy 59.528768 64.907853) (xy 59.537966 64.887711) (xy 59.542673 64.866074) + (xy 59.555943 64.848347) (xy 59.557793 64.844297) (xy 59.563824 64.83782) (xy 59.611717 64.789927) + (xy 59.611722 64.789923) (xy 59.621926 64.779718) (xy 59.621928 64.779718) (xy 59.733732 64.667914) + (xy 59.789718 64.570943) (xy 59.812789 64.530983) (xy 59.853713 64.378255) (xy 59.853713 64.378245) + (xy 59.85514 64.374104) (xy 59.872948 64.349021) (xy 59.888965 64.322746) (xy 59.892995 64.320788) + (xy 59.89559 64.317134) (xy 59.924137 64.30566) (xy 59.951812 64.292217) (xy 59.9591 64.291608) + (xy 59.96042 64.291078) (xy 59.961949 64.29137) (xy 59.972375 64.2905) (xy 76.449902 64.2905) (xy 76.516941 64.310185) + (xy 76.537582 64.326818) (xy 76.791283 64.58052) (xy 76.791285 64.580521) (xy 76.791289 64.580524) + (xy 76.924586 64.657482) (xy 76.928215 64.659577) (xy 76.992541 64.676813) (xy 77.052202 64.713179) + (xy 77.076629 64.753255) (xy 77.091202 64.792328) (xy 77.091206 64.792335) (xy 77.177452 64.907544) + (xy 77.177455 64.907547) (xy 77.292664 64.993793) (xy 77.292671 64.993797) (xy 77.427517 65.044091) + (xy 77.427516 65.044091) (xy 77.434444 65.044835) (xy 77.487127 65.0505) (xy 78.9755 65.050499) + (xy 79.042539 65.070184) (xy 79.088294 65.122987) (xy 79.0995 65.174499) (xy 79.0995 66.14787) (xy 79.099501 66.147876) + (xy 79.105908 66.207483) (xy 79.156202 66.342328) (xy 79.156206 66.342335) (xy 79.242452 66.457544) + (xy 79.242455 66.457547) (xy 79.357664 66.543793) (xy 79.357671 66.543797) (xy 79.492517 66.594091) + (xy 79.492516 66.594091) (xy 79.499444 66.594835) (xy 79.552127 66.6005) (xy 80.547872 66.600499) + (xy 80.607483 66.594091) (xy 80.641667 66.58134) (xy 80.711358 66.576357) (xy 80.728327 66.581338) + (xy 80.762517 66.594091) (xy 80.822127 66.6005) (xy 81.817872 66.600499) (xy 81.877483 66.594091) + (xy 81.911667 66.58134) (xy 81.981358 66.576357) (xy 81.998327 66.581338) (xy 82.032517 66.594091) + (xy 82.092127 66.6005) (xy 83.087872 66.600499) (xy 83.147483 66.594091) (xy 83.181667 66.58134) + (xy 83.251358 66.576357) (xy 83.268327 66.581338) (xy 83.302517 66.594091) (xy 83.362127 66.6005) + (xy 84.357872 66.600499) (xy 84.417483 66.594091) (xy 84.451667 66.58134) (xy 84.521358 66.576357) + (xy 84.538327 66.581338) (xy 84.572517 66.594091) (xy 84.632127 66.6005) (xy 85.627872 66.600499) + (xy 85.687483 66.594091) (xy 85.721667 66.58134) (xy 85.791358 66.576357) (xy 85.808327 66.581338) + (xy 85.842517 66.594091) (xy 85.902127 66.6005) (xy 86.897872 66.600499) (xy 86.957483 66.594091) + (xy 86.991667 66.58134) (xy 87.061358 66.576357) (xy 87.078327 66.581338) (xy 87.112517 66.594091) + (xy 87.172127 66.6005) (xy 88.167872 66.600499) (xy 88.227483 66.594091) (xy 88.261667 66.58134) + (xy 88.331358 66.576357) (xy 88.348327 66.581338) (xy 88.382517 66.594091) (xy 88.442127 66.6005) + (xy 89.437872 66.600499) (xy 89.497483 66.594091) (xy 89.531667 66.58134) (xy 89.601358 66.576357) + (xy 89.618327 66.581338) (xy 89.652517 66.594091) (xy 89.712127 66.6005) (xy 90.707872 66.600499) + (xy 90.767483 66.594091) (xy 90.801667 66.58134) (xy 90.871358 66.576357) (xy 90.888327 66.581338) + (xy 90.922517 66.594091) (xy 90.982127 66.6005) (xy 91.977872 66.600499) (xy 92.037483 66.594091) + (xy 92.071667 66.58134) (xy 92.141358 66.576357) (xy 92.158327 66.581338) (xy 92.192517 66.594091) + (xy 92.252127 66.6005) (xy 93.247872 66.600499) (xy 93.307483 66.594091) (xy 93.341667 66.58134) + (xy 93.411358 66.576357) (xy 93.428327 66.581338) (xy 93.462517 66.594091) (xy 93.522127 66.6005) + (xy 94.517872 66.600499) (xy 94.577483 66.594091) (xy 94.712331 66.543796) (xy 94.827546 66.457546) + (xy 94.913796 66.342331) (xy 94.964091 66.207483) (xy 94.9705 66.147873) (xy 94.970499 65.174498) + (xy 94.990183 65.10746) (xy 95.042987 65.061705) (xy 95.094494 65.050499) (xy 96.582872 65.050499) + (xy 96.642483 65.044091) (xy 96.777331 64.993796) (xy 96.892546 64.907546) (xy 96.978796 64.792331) + (xy 97.029091 64.657483) (xy 97.0355 64.597873) (xy 97.035499 63.602128) (xy 97.029894 63.549984) + (xy 143.817 63.549984) (xy 143.817 65.950015) (xy 143.8275 66.052795) (xy 143.827501 66.052796) + (xy 143.882686 66.219335) (xy 143.882687 66.219337) (xy 143.974786 66.368651) (xy 143.974789 66.368655) + (xy 144.098844 66.49271) (xy 144.098848 66.492713) (xy 144.248162 66.584812) (xy 144.248164 66.584813) + (xy 144.248166 66.584814) (xy 144.414703 66.639999) (xy 144.517492 66.6505) (xy 144.517497 66.6505) + (xy 146.917503 66.6505) (xy 146.917508 66.6505) (xy 147.020297 66.639999) (xy 147.186834 66.584814) + (xy 147.336155 66.492711) (xy 147.460211 66.368655) (xy 147.552314 66.219334) (xy 147.607499 66.052797) + (xy 147.618 65.950008) (xy 147.618 63.549992) (xy 147.607499 63.447203) (xy 147.552314 63.280666) + (xy 147.460211 63.131345) (xy 147.336155 63.007289) (xy 147.336151 63.007286) (xy 147.186837 62.915187) + (xy 147.186835 62.915186) (xy 147.103565 62.887593) (xy 147.020297 62.860001) (xy 147.020295 62.86) + (xy 146.917515 62.8495) (xy 146.917508 62.8495) (xy 144.517492 62.8495) (xy 144.517484 62.8495) (xy 144.414704 62.86) (xy 144.414703 62.860001) (xy 144.248164 62.915186) (xy 144.248162 62.915187) (xy 144.098848 63.007286) (xy 144.098844 63.007289) (xy 143.974789 63.131344) (xy 143.974786 63.131348) (xy 143.882687 63.280662) (xy 143.882686 63.280664) (xy 143.827501 63.447203) (xy 143.8275 63.447204) - (xy 143.817 63.549984) (xy 115.825657 63.549984) (xy 115.707482 63.505908) (xy 115.707483 63.505908) - (xy 115.647883 63.499501) (xy 115.647881 63.4995) (xy 115.647873 63.4995) (xy 115.647864 63.4995) - (xy 113.552129 63.4995) (xy 113.552123 63.499501) (xy 113.492516 63.505908) (xy 113.357671 63.556202) - (xy 113.357664 63.556206) (xy 113.242455 63.642452) (xy 113.242452 63.642455) (xy 113.156206 63.757664) - (xy 113.156202 63.757671) (xy 113.105908 63.892517) (xy 113.099501 63.952116) (xy 113.099501 63.952123) - (xy 113.0995 63.952135) (xy 108.074162 63.952135) (xy 107.97751 63.855483) (xy 107.786433 63.716657) - (xy 107.763934 63.705193) (xy 107.575996 63.609433) (xy 107.351368 63.536446) (xy 107.118097 63.4995) - (xy 107.118092 63.4995) (xy 106.881908 63.4995) (xy 106.881903 63.4995) (xy 106.648631 63.536446) - (xy 106.424003 63.609433) (xy 106.213566 63.716657) (xy 106.157119 63.757669) (xy 106.02249 63.855483) - (xy 106.022488 63.855485) (xy 106.022487 63.855485) (xy 105.855485 64.022487) (xy 105.855485 64.022488) - (xy 105.855483 64.02249) (xy 105.802973 64.094764) (xy 105.716657 64.213566) (xy 105.609433 64.424003) - (xy 105.536446 64.648631) (xy 105.4995 64.881902) (xy 96.911743 64.881902) (xy 96.978796 64.792331) - (xy 97.029091 64.657483) (xy 97.0355 64.597873) (xy 97.035499 63.602128) (xy 97.029091 63.542517) - (xy 97.01634 63.508332) (xy 97.011357 63.438642) (xy 97.01634 63.421669) (xy 97.029091 63.387483) + (xy 143.817 63.549984) (xy 97.029894 63.549984) (xy 97.029091 63.542517) (xy 97.01423 63.502673) + (xy 97.012682 63.496847) (xy 97.013435 63.46771) (xy 97.011357 63.438642) (xy 97.014461 63.428068) + (xy 97.014489 63.427) (xy 97.014992 63.426259) (xy 97.01634 63.421669) (xy 97.029091 63.387483) (xy 97.0355 63.327873) (xy 97.035499 62.332128) (xy 97.029091 62.272517) (xy 97.01634 62.238332) (xy 97.011357 62.168642) (xy 97.01634 62.151669) (xy 97.029091 62.117483) (xy 97.0355 62.057873) (xy 97.035499 61.062128) (xy 97.029091 61.002517) (xy 97.01634 60.968332) (xy 97.011357 60.898642) @@ -27845,112 +30818,118 @@ (xy 97.011357 57.088642) (xy 97.01634 57.071669) (xy 97.029091 57.037483) (xy 97.0355 56.977873) (xy 97.035499 55.982128) (xy 97.029091 55.922517) (xy 97.01634 55.888332) (xy 97.011357 55.818642) (xy 97.01634 55.801669) (xy 97.029091 55.767483) (xy 97.0355 55.707873) (xy 97.035499 54.712128) - (xy 97.029091 54.652517) (xy 97.01634 54.618332) (xy 97.011357 54.548642) (xy 97.01634 54.531669) - (xy 97.029091 54.497483) (xy 97.0355 54.437873) (xy 97.035499 53.442128) (xy 97.029091 53.382517) - (xy 97.01634 53.348332) (xy 97.011357 53.278642) (xy 97.01634 53.261669) (xy 97.029091 53.227483) - (xy 97.0355 53.167873) (xy 97.035499 52.172128) (xy 97.029091 52.112517) (xy 97.01634 52.078332) - (xy 97.011357 52.008642) (xy 97.01634 51.991669) (xy 97.029091 51.957483) (xy 97.0355 51.897873) - (xy 97.035499 50.902128) (xy 97.029091 50.842517) (xy 97.01634 50.808332) (xy 97.014455 50.781975) - (xy 97.008839 50.756153) (xy 97.011676 50.74311) (xy 97.011357 50.738642) (xy 97.012804 50.733713) - (xy 103.2495 50.733713) (xy 103.2495 50.946286) (xy 103.278187 51.127413) (xy 103.282754 51.156243) - (xy 103.338331 51.327292) (xy 103.348444 51.358414) (xy 103.444951 51.54782) (xy 103.56989 51.719786) - (xy 103.720213 51.870109) (xy 103.892182 51.99505) (xy 103.900946 51.999516) (xy 103.951742 52.047491) - (xy 103.968536 52.115312) (xy 103.945998 52.181447) (xy 103.900946 52.220484) (xy 103.892182 52.224949) - (xy 103.720213 52.34989) (xy 103.56989 52.500213) (xy 103.444951 52.672179) (xy 103.348444 52.861585) - (xy 103.282753 53.06376) (xy 103.2495 53.273713) (xy 103.2495 53.486286) (xy 103.268695 53.607482) - (xy 103.282754 53.696243) (xy 103.335144 53.857483) (xy 103.348444 53.898414) (xy 103.444951 54.08782) - (xy 103.56989 54.259786) (xy 103.720213 54.410109) (xy 103.892182 54.53505) (xy 103.900946 54.539516) - (xy 103.951742 54.587491) (xy 103.968536 54.655312) (xy 103.945998 54.721447) (xy 103.900946 54.760484) - (xy 103.892182 54.764949) (xy 103.720213 54.88989) (xy 103.56989 55.040213) (xy 103.444951 55.212179) - (xy 103.348444 55.401585) (xy 103.282753 55.60376) (xy 103.258376 55.757671) (xy 103.2495 55.813713) - (xy 103.2495 56.026287) (xy 103.259534 56.089644) (xy 103.275333 56.189393) (xy 103.282754 56.236243) - (xy 103.335967 56.400016) (xy 103.348444 56.438414) (xy 103.444951 56.62782) (xy 103.56989 56.799786) - (xy 103.720213 56.950109) (xy 103.892182 57.07505) (xy 103.900946 57.079516) (xy 103.951742 57.127491) - (xy 103.968536 57.195312) (xy 103.945998 57.261447) (xy 103.900946 57.300484) (xy 103.892182 57.304949) - (xy 103.720213 57.42989) (xy 103.56989 57.580213) (xy 103.444951 57.752179) (xy 103.348444 57.941585) - (xy 103.282753 58.14376) (xy 103.2495 58.353713) (xy 103.2495 58.566286) (xy 103.281517 58.768438) - (xy 103.282754 58.776243) (xy 103.339991 58.952401) (xy 103.348444 58.978414) (xy 103.444951 59.16782) - (xy 103.56989 59.339786) (xy 103.720213 59.490109) (xy 103.892182 59.61505) (xy 103.900946 59.619516) - (xy 103.951742 59.667491) (xy 103.968536 59.735312) (xy 103.945998 59.801447) (xy 103.900946 59.840484) - (xy 103.892182 59.844949) (xy 103.720213 59.96989) (xy 103.56989 60.120213) (xy 103.444951 60.292179) - (xy 103.348444 60.481585) (xy 103.282753 60.68376) (xy 103.262663 60.810607) (xy 103.2495 60.893713) - (xy 103.2495 61.106287) (xy 103.25788 61.159194) (xy 103.279752 61.297294) (xy 103.282754 61.316243) - (xy 103.345842 61.510408) (xy 103.348444 61.518414) (xy 103.444951 61.70782) (xy 103.56989 61.879786) - (xy 103.720213 62.030109) (xy 103.892179 62.155048) (xy 103.892181 62.155049) (xy 103.892184 62.155051) - (xy 104.081588 62.251557) (xy 104.283757 62.317246) (xy 104.493713 62.3505) (xy 104.493714 62.3505) - (xy 104.706286 62.3505) (xy 104.706287 62.3505) (xy 104.916243 62.317246) (xy 105.118412 62.251557) - (xy 105.307816 62.155051) (xy 105.401887 62.086705) (xy 105.479786 62.030109) (xy 105.479788 62.030106) - (xy 105.479792 62.030104) (xy 105.630104 61.879792) (xy 105.630106 61.879788) (xy 105.630109 61.879786) - (xy 105.755048 61.70782) (xy 105.755047 61.70782) (xy 105.755051 61.707816) (xy 105.851557 61.518412) - (xy 105.917246 61.316243) (xy 105.9505 61.106287) (xy 105.9505 61.02) (xy 134.967156 61.02) (xy 135.007595 61.159194) - (xy 135.089261 61.297285) (xy 135.089268 61.297294) (xy 135.202705 61.410731) (xy 135.202714 61.410738) - (xy 135.340808 61.492406) (xy 135.340811 61.492407) (xy 135.494871 61.537166) (xy 135.494877 61.537167) - (xy 135.53 61.539931) (xy 135.53 61.02) (xy 136.03 61.02) (xy 136.03 61.53993) (xy 136.065122 61.537167) - (xy 136.065128 61.537166) (xy 136.219187 61.492408) (xy 136.297393 61.446157) (xy 136.365117 61.428974) - (xy 136.423638 61.446158) (xy 136.432302 61.451282) (xy 136.432305 61.451283) (xy 136.590004 61.497099) - (xy 136.59001 61.4971) (xy 136.62685 61.499999) (xy 136.626866 61.5) (xy 137.03 61.5) (xy 137.53 61.5) - (xy 137.933134 61.5) (xy 137.933149 61.499999) (xy 137.969989 61.4971) (xy 137.969995 61.497099) - (xy 138.127693 61.451283) (xy 138.127696 61.451282) (xy 138.269052 61.367685) (xy 138.269061 61.367678) - (xy 138.385178 61.251561) (xy 138.385185 61.251552) (xy 138.468781 61.110198) (xy 138.5146 60.952486) - (xy 138.514795 60.950001) (xy 138.514795 60.95) (xy 137.53 60.95) (xy 137.53 61.5) (xy 137.03 61.5) - (xy 137.03 60.95) (xy 136.73 60.95) (xy 136.696319 60.983681) (xy 136.634996 61.017166) (xy 136.608638 61.02) - (xy 136.03 61.02) (xy 135.53 61.02) (xy 134.967156 61.02) (xy 105.9505 61.02) (xy 105.9505 60.893713) - (xy 105.917246 60.683757) (xy 105.851557 60.481588) (xy 105.851555 60.481585) (xy 105.851555 60.481583) - (xy 105.771064 60.323611) (xy 105.755051 60.292184) (xy 105.755049 60.292181) (xy 105.755048 60.292179) - (xy 105.630109 60.120213) (xy 105.479786 59.96989) (xy 105.30782 59.844951) (xy 105.304067 59.843039) - (xy 105.299054 59.840485) (xy 105.248259 59.792512) (xy 105.231463 59.724692) (xy 105.253999 59.658556) - (xy 105.299054 59.619515) (xy 105.307816 59.615051) (xy 105.366397 59.57249) (xy 105.479786 59.490109) - (xy 105.479788 59.490106) (xy 105.479792 59.490104) (xy 105.630104 59.339792) (xy 105.630106 59.339788) - (xy 105.630109 59.339786) (xy 105.755048 59.16782) (xy 105.755047 59.16782) (xy 105.755051 59.167816) - (xy 105.851557 58.978412) (xy 105.917246 58.776243) (xy 105.9505 58.566287) (xy 105.9505 58.353713) - (xy 105.917246 58.143757) (xy 105.851557 57.941588) (xy 105.755051 57.752184) (xy 105.755049 57.752181) - (xy 105.755048 57.752179) (xy 105.630109 57.580213) (xy 105.580707 57.530811) (xy 134.9595 57.530811) - (xy 134.9595 57.929169) (xy 134.959501 57.929191) (xy 134.962335 57.965205) (xy 135.007129 58.119388) - (xy 135.007132 58.119395) (xy 135.041128 58.176881) (xy 135.058309 58.244605) (xy 135.041128 58.303119) - (xy 135.007132 58.360604) (xy 135.007129 58.360611) (xy 134.962335 58.514791) (xy 134.962334 58.514797) - (xy 134.9595 58.550811) (xy 134.9595 58.949169) (xy 134.959501 58.949191) (xy 134.962335 58.985205) - (xy 135.007129 59.139388) (xy 135.007132 59.139396) (xy 135.035214 59.186881) (xy 135.052395 59.254605) - (xy 135.035214 59.313119) (xy 135.007132 59.360603) (xy 135.007129 59.360611) (xy 134.962335 59.514791) - (xy 134.962334 59.514797) (xy 134.9595 59.550811) (xy 134.9595 59.949169) (xy 134.959501 59.949191) - (xy 134.962335 59.985205) (xy 135.007129 60.139388) (xy 135.00713 60.139391) (xy 135.041419 60.197371) - (xy 135.058601 60.265095) (xy 135.041419 60.323611) (xy 135.007594 60.380806) (xy 134.967156 60.52) - (xy 135.519591 60.52) (xy 135.529318 60.520382) (xy 135.529516 60.520397) (xy 135.530819 60.5205) - (xy 136.02918 60.520499) (xy 136.065204 60.517665) (xy 136.219393 60.472869) (xy 136.228864 60.467268) - (xy 136.228866 60.467267) (xy 136.291985 60.45) (xy 137.03 60.45) (xy 137.03 59.9) (xy 136.724499 59.9) - (xy 136.715813 59.897449) (xy 136.706852 59.898738) (xy 136.682811 59.887759) (xy 136.65746 59.880315) - (xy 136.651532 59.873474) (xy 136.643296 59.869713) (xy 136.629006 59.847478) (xy 136.611705 59.827511) - (xy 136.609417 59.816996) (xy 136.605522 59.810935) (xy 136.600499 59.776003) (xy 136.600499 59.724498) - (xy 136.620184 59.657461) (xy 136.672988 59.611706) (xy 136.724499 59.6005) (xy 137.793 59.6005) - (xy 137.860039 59.620185) (xy 137.905794 59.672989) (xy 137.917 59.7245) (xy 137.917 59.776) (xy 137.897315 59.843039) - (xy 137.844511 59.888794) (xy 137.793 59.9) (xy 137.53 59.9) (xy 137.53 60.45) (xy 138.185685 60.45) - (xy 138.248806 60.467268) (xy 138.307102 60.501744) (xy 138.340403 60.511419) (xy 138.464926 60.547597) - (xy 138.464929 60.547597) (xy 138.464931 60.547598) (xy 138.501806 60.5505) (xy 138.501814 60.5505) - (xy 139.808186 60.5505) (xy 139.808194 60.5505) (xy 139.845069 60.547598) (xy 139.845071 60.547597) - (xy 139.845073 60.547597) (xy 139.91046 60.5286) (xy 140.002898 60.501744) (xy 140.144365 60.418081) - (xy 140.260581 60.301865) (xy 140.344244 60.160398) (xy 140.387214 60.012495) (xy 140.390097 60.002573) - (xy 140.390098 60.002567) (xy 140.390293 60.00009) (xy 140.393 59.965694) (xy 140.393 59.625441) - (xy 143.817 59.625441) (xy 143.817 59.874558) (xy 143.817001 59.874575) (xy 143.841478 60.0605) - (xy 143.849518 60.121565) (xy 143.854295 60.139393) (xy 143.913998 60.362207) (xy 144.00933 60.592361) - (xy 144.009337 60.592376) (xy 144.1339 60.808126) (xy 144.28556 61.005774) (xy 144.285566 61.005781) - (xy 144.461718 61.181933) (xy 144.461725 61.181939) (xy 144.659373 61.333599) (xy 144.875123 61.458162) - (xy 144.875138 61.458169) (xy 144.957794 61.492406) (xy 145.105293 61.553502) (xy 145.345935 61.617982) - (xy 145.592935 61.6505) (xy 145.592942 61.6505) (xy 145.842058 61.6505) (xy 145.842065 61.6505) - (xy 146.089065 61.617982) (xy 146.329707 61.553502) (xy 146.559873 61.458164) (xy 146.775627 61.333599) - (xy 146.973276 61.181938) (xy 147.149438 61.005776) (xy 147.301099 60.808127) (xy 147.425664 60.592373) - (xy 147.521002 60.362207) (xy 147.585482 60.121565) (xy 147.618 59.874565) (xy 147.618 59.625435) - (xy 147.585482 59.378435) (xy 147.521002 59.137793) (xy 147.463203 58.998254) (xy 147.425669 58.907638) - (xy 147.425662 58.907623) (xy 147.301099 58.691873) (xy 147.149439 58.494225) (xy 147.149433 58.494218) - (xy 146.973281 58.318066) (xy 146.973274 58.31806) (xy 146.775626 58.1664) (xy 146.559876 58.041837) - (xy 146.559861 58.04183) (xy 146.329707 57.946498) (xy 146.311371 57.941585) (xy 146.089065 57.882018) - (xy 146.089064 57.882017) (xy 146.089061 57.882017) (xy 145.842075 57.849501) (xy 145.84207 57.8495) - (xy 145.842065 57.8495) (xy 145.592935 57.8495) (xy 145.592929 57.8495) (xy 145.592924 57.849501) + (xy 97.031804 54.677753) (xy 97.044211 54.608994) (xy 97.091822 54.557857) (xy 97.155094 54.5405) + (xy 99.039903 54.5405) (xy 99.106942 54.560185) (xy 99.127584 54.576819) (xy 100.013181 55.462416) + (xy 100.046666 55.523739) (xy 100.0495 55.550097) (xy 100.0495 59.41333) (xy 100.049499 59.413348) + (xy 100.049499 59.579054) (xy 100.049498 59.579054) (xy 100.090423 59.731786) (xy 100.090851 59.732526) + (xy 100.09087 59.732559) (xy 100.169477 59.868712) (xy 100.169481 59.868717) (xy 100.288349 59.987585) + (xy 100.288355 59.98759) (xy 101.269478 60.968713) (xy 101.26948 60.968716) (xy 101.29335 60.992586) + (xy 101.293358 60.992601) (xy 101.323597 61.041945) (xy 101.348444 61.118415) (xy 101.444951 61.30782) + (xy 101.56989 61.479786) (xy 101.720213 61.630109) (xy 101.892179 61.755048) (xy 101.892181 61.755049) + (xy 101.892184 61.755051) (xy 102.081588 61.851557) (xy 102.283757 61.917246) (xy 102.493713 61.9505) + (xy 102.493714 61.9505) (xy 102.706286 61.9505) (xy 102.706287 61.9505) (xy 102.916243 61.917246) + (xy 103.118412 61.851557) (xy 103.307816 61.755051) (xy 103.354136 61.721398) (xy 103.479786 61.630109) + (xy 103.479788 61.630106) (xy 103.479792 61.630104) (xy 103.630104 61.479792) (xy 103.630106 61.479788) + (xy 103.630109 61.479786) (xy 103.755048 61.30782) (xy 103.755047 61.30782) (xy 103.755051 61.307816) + (xy 103.851557 61.118412) (xy 103.917246 60.916243) (xy 103.9505 60.706287) (xy 103.9505 60.493713) + (xy 103.917246 60.283757) (xy 103.851557 60.081588) (xy 103.755051 59.892184) (xy 103.755049 59.892181) + (xy 103.755048 59.892179) (xy 103.630109 59.720213) (xy 103.479786 59.56989) (xy 103.30782 59.444951) + (xy 103.307115 59.444591) (xy 103.299054 59.440485) (xy 103.248259 59.392512) (xy 103.231463 59.324692) + (xy 103.253999 59.258556) (xy 103.299054 59.219515) (xy 103.307816 59.215051) (xy 103.346589 59.186881) + (xy 103.479786 59.090109) (xy 103.479788 59.090106) (xy 103.479792 59.090104) (xy 103.593249 58.976647) + (xy 112.2995 58.976647) (xy 112.2995 59.523337) (xy 112.299501 59.523355) (xy 112.30965 59.622707) + (xy 112.309651 59.62271) (xy 112.362996 59.783694) (xy 112.363001 59.783705) (xy 112.452029 59.92804) + (xy 112.452032 59.928044) (xy 112.571955 60.047967) (xy 112.571959 60.04797) (xy 112.716294 60.136998) + (xy 112.716297 60.136999) (xy 112.716303 60.137003) (xy 112.877292 60.190349) (xy 112.976655 60.2005) + (xy 113.823344 60.200499) (xy 113.823352 60.200498) (xy 113.823355 60.200498) (xy 113.87776 60.19494) + (xy 113.922708 60.190349) (xy 114.023971 60.156794) (xy 114.062975 60.1505) (xy 114.825638 60.1505) + (xy 114.892677 60.170185) (xy 114.913319 60.186819) (xy 115.866507 61.140006) (xy 116.800536 62.074035) + (xy 116.878167 62.151666) (xy 116.925966 62.199465) (xy 116.955861 62.21944) (xy 117.073453 62.298013) + (xy 117.121452 62.317895) (xy 117.237334 62.365895) (xy 117.411304 62.400499) (xy 117.411308 62.4005) + (xy 117.411309 62.4005) (xy 117.588692 62.4005) (xy 119.475501 62.4005) (xy 119.54254 62.420185) + (xy 119.588295 62.472989) (xy 119.599501 62.5245) (xy 119.599501 62.547876) (xy 119.605908 62.607483) + (xy 119.656202 62.742328) (xy 119.656206 62.742335) (xy 119.742452 62.857544) (xy 119.742455 62.857547) + (xy 119.857664 62.943793) (xy 119.857671 62.943797) (xy 119.992517 62.994091) (xy 119.992516 62.994091) + (xy 119.999444 62.994835) (xy 120.052127 63.0005) (xy 122.147872 63.000499) (xy 122.207483 62.994091) + (xy 122.342331 62.943796) (xy 122.457546 62.857546) (xy 122.543796 62.742331) (xy 122.594091 62.607483) + (xy 122.6005 62.547873) (xy 122.600499 61.02) (xy 134.967156 61.02) (xy 135.007595 61.159194) (xy 135.089261 61.297285) + (xy 135.089268 61.297294) (xy 135.202705 61.410731) (xy 135.202714 61.410738) (xy 135.340808 61.492406) + (xy 135.340811 61.492407) (xy 135.494871 61.537166) (xy 135.494877 61.537167) (xy 135.53 61.539931) + (xy 135.53 61.02) (xy 136.03 61.02) (xy 136.03 61.53993) (xy 136.065122 61.537167) (xy 136.065128 61.537166) + (xy 136.219187 61.492408) (xy 136.297393 61.446157) (xy 136.365117 61.428974) (xy 136.423638 61.446158) + (xy 136.432302 61.451282) (xy 136.432305 61.451283) (xy 136.590004 61.497099) (xy 136.59001 61.4971) + (xy 136.62685 61.499999) (xy 136.626866 61.5) (xy 137.03 61.5) (xy 137.53 61.5) (xy 137.933134 61.5) + (xy 137.933149 61.499999) (xy 137.969989 61.4971) (xy 137.969995 61.497099) (xy 138.127693 61.451283) + (xy 138.127696 61.451282) (xy 138.269052 61.367685) (xy 138.269061 61.367678) (xy 138.385178 61.251561) + (xy 138.385185 61.251552) (xy 138.468781 61.110198) (xy 138.5146 60.952486) (xy 138.514795 60.950001) + (xy 138.514795 60.95) (xy 137.53 60.95) (xy 137.53 61.5) (xy 137.03 61.5) (xy 137.03 60.95) (xy 136.73 60.95) + (xy 136.696319 60.983681) (xy 136.634996 61.017166) (xy 136.608638 61.02) (xy 136.03 61.02) (xy 135.53 61.02) + (xy 134.967156 61.02) (xy 122.600499 61.02) (xy 122.600499 60.452128) (xy 122.594091 60.392517) + (xy 122.593887 60.391971) (xy 122.543797 60.257671) (xy 122.543793 60.257664) (xy 122.457547 60.142455) + (xy 122.457544 60.142452) (xy 122.342335 60.056206) (xy 122.342328 60.056202) (xy 122.207482 60.005908) + (xy 122.207483 60.005908) (xy 122.147883 59.999501) (xy 122.147881 59.9995) (xy 122.147873 59.9995) + (xy 122.147864 59.9995) (xy 120.052129 59.9995) (xy 120.052123 59.999501) (xy 119.992516 60.005908) + (xy 119.857671 60.056202) (xy 119.857664 60.056206) (xy 119.742455 60.142452) (xy 119.742452 60.142455) + (xy 119.656206 60.257664) (xy 119.656202 60.257671) (xy 119.605908 60.392517) (xy 119.599501 60.452116) + (xy 119.599501 60.452123) (xy 119.5995 60.452135) (xy 119.5995 60.4755) (xy 119.579815 60.542539) + (xy 119.527011 60.588294) (xy 119.4755 60.5995) (xy 117.924361 60.5995) (xy 117.857322 60.579815) + (xy 117.83668 60.563181) (xy 115.824041 58.55054) (xy 115.824038 58.550537) (xy 115.744907 58.497664) + (xy 115.676544 58.451985) (xy 115.676542 58.451984) (xy 115.594607 58.418046) (xy 115.594606 58.418046) + (xy 115.512666 58.384105) (xy 115.512658 58.384103) (xy 115.338696 58.3495) (xy 115.338692 58.3495) + (xy 115.338691 58.3495) (xy 114.062975 58.3495) (xy 114.023971 58.343206) (xy 113.922709 58.309651) + (xy 113.823346 58.2995) (xy 112.976662 58.2995) (xy 112.976644 58.299501) (xy 112.877292 58.30965) + (xy 112.877289 58.309651) (xy 112.716305 58.362996) (xy 112.716294 58.363001) (xy 112.571959 58.452029) + (xy 112.571955 58.452032) (xy 112.452032 58.571955) (xy 112.452029 58.571959) (xy 112.363001 58.716294) + (xy 112.362996 58.716305) (xy 112.309651 58.87729) (xy 112.2995 58.976647) (xy 103.593249 58.976647) + (xy 103.630104 58.939792) (xy 103.634052 58.934358) (xy 103.65857 58.900613) (xy 103.755048 58.76782) + (xy 103.755047 58.76782) (xy 103.755051 58.767816) (xy 103.851557 58.578412) (xy 103.917246 58.376243) + (xy 103.9505 58.166287) (xy 103.9505 57.953713) (xy 103.917246 57.743757) (xy 103.851557 57.541588) + (xy 103.846066 57.530811) (xy 134.9595 57.530811) (xy 134.9595 57.929169) (xy 134.959501 57.929191) + (xy 134.962335 57.965205) (xy 135.007129 58.119388) (xy 135.007132 58.119395) (xy 135.041128 58.176881) + (xy 135.058309 58.244605) (xy 135.041128 58.303119) (xy 135.007132 58.360604) (xy 135.007129 58.360611) + (xy 134.962335 58.514791) (xy 134.962334 58.514797) (xy 134.9595 58.550811) (xy 134.9595 58.949169) + (xy 134.959501 58.949191) (xy 134.962335 58.985205) (xy 135.007129 59.139388) (xy 135.007132 59.139396) + (xy 135.035214 59.186881) (xy 135.052395 59.254605) (xy 135.035214 59.313119) (xy 135.007132 59.360603) + (xy 135.007129 59.360611) (xy 134.962335 59.514791) (xy 134.962334 59.514797) (xy 134.9595 59.550811) + (xy 134.9595 59.949169) (xy 134.959501 59.949191) (xy 134.962335 59.985205) (xy 135.007129 60.139388) + (xy 135.00713 60.139391) (xy 135.041419 60.197371) (xy 135.058601 60.265095) (xy 135.041419 60.323611) + (xy 135.007594 60.380806) (xy 134.967156 60.52) (xy 135.519591 60.52) (xy 135.529318 60.520382) + (xy 135.529516 60.520397) (xy 135.530819 60.5205) (xy 136.02918 60.520499) (xy 136.065204 60.517665) + (xy 136.219393 60.472869) (xy 136.228864 60.467268) (xy 136.228866 60.467267) (xy 136.291985 60.45) + (xy 137.03 60.45) (xy 137.03 59.9) (xy 136.724499 59.9) (xy 136.715813 59.897449) (xy 136.706852 59.898738) + (xy 136.682811 59.887759) (xy 136.65746 59.880315) (xy 136.651532 59.873474) (xy 136.643296 59.869713) + (xy 136.629006 59.847478) (xy 136.611705 59.827511) (xy 136.609417 59.816996) (xy 136.605522 59.810935) + (xy 136.600499 59.776003) (xy 136.600499 59.724498) (xy 136.620184 59.657461) (xy 136.672988 59.611706) + (xy 136.724499 59.6005) (xy 137.793 59.6005) (xy 137.860039 59.620185) (xy 137.905794 59.672989) + (xy 137.917 59.7245) (xy 137.917 59.776) (xy 137.897315 59.843039) (xy 137.844511 59.888794) (xy 137.793 59.9) + (xy 137.53 59.9) (xy 137.53 60.45) (xy 138.185685 60.45) (xy 138.248806 60.467268) (xy 138.307102 60.501744) + (xy 138.348724 60.513836) (xy 138.464926 60.547597) (xy 138.464929 60.547597) (xy 138.464931 60.547598) + (xy 138.501806 60.5505) (xy 138.501814 60.5505) (xy 139.808186 60.5505) (xy 139.808194 60.5505) + (xy 139.845069 60.547598) (xy 139.845071 60.547597) (xy 139.845073 60.547597) (xy 139.926293 60.524) + (xy 140.002898 60.501744) (xy 140.144365 60.418081) (xy 140.260581 60.301865) (xy 140.344244 60.160398) + (xy 140.387214 60.012495) (xy 140.390097 60.002573) (xy 140.390098 60.002567) (xy 140.390339 59.999501) + (xy 140.393 59.965694) (xy 140.393 59.625441) (xy 143.817 59.625441) (xy 143.817 59.874558) (xy 143.817001 59.874575) + (xy 143.844254 60.081585) (xy 143.849518 60.121565) (xy 143.857271 60.1505) (xy 143.913998 60.362207) + (xy 144.00933 60.592361) (xy 144.009337 60.592376) (xy 144.1339 60.808126) (xy 144.28556 61.005774) + (xy 144.285566 61.005781) (xy 144.461718 61.181933) (xy 144.461725 61.181939) (xy 144.659373 61.333599) + (xy 144.875123 61.458162) (xy 144.875138 61.458169) (xy 144.957606 61.492328) (xy 145.105293 61.553502) + (xy 145.345935 61.617982) (xy 145.592935 61.6505) (xy 145.592942 61.6505) (xy 145.842058 61.6505) + (xy 145.842065 61.6505) (xy 146.089065 61.617982) (xy 146.329707 61.553502) (xy 146.559873 61.458164) + (xy 146.775627 61.333599) (xy 146.973276 61.181938) (xy 147.149438 61.005776) (xy 147.301099 60.808127) + (xy 147.425664 60.592373) (xy 147.521002 60.362207) (xy 147.585482 60.121565) (xy 147.618 59.874565) + (xy 147.618 59.625435) (xy 147.585482 59.378435) (xy 147.521002 59.137793) (xy 147.460648 58.992086) + (xy 147.425669 58.907638) (xy 147.425662 58.907623) (xy 147.301099 58.691873) (xy 147.149439 58.494225) + (xy 147.149433 58.494218) (xy 146.973281 58.318066) (xy 146.973274 58.31806) (xy 146.775626 58.1664) + (xy 146.559876 58.041837) (xy 146.559861 58.04183) (xy 146.329707 57.946498) (xy 146.319612 57.943793) + (xy 146.089065 57.882018) (xy 146.089064 57.882017) (xy 146.089061 57.882017) (xy 145.842075 57.849501) + (xy 145.84207 57.8495) (xy 145.842065 57.8495) (xy 145.592935 57.8495) (xy 145.592929 57.8495) (xy 145.592924 57.849501) (xy 145.345938 57.882017) (xy 145.105292 57.946498) (xy 144.875138 58.04183) (xy 144.875123 58.041837) (xy 144.659373 58.1664) (xy 144.461725 58.31806) (xy 144.461718 58.318066) (xy 144.285566 58.494218) (xy 144.28556 58.494225) (xy 144.1339 58.691873) (xy 144.009337 58.907623) (xy 144.00933 58.907638) (xy 143.913998 59.137792) (xy 143.849517 59.378438) (xy 143.817001 59.625424) (xy 143.817 59.625441) - (xy 140.393 59.625441) (xy 140.393 59.534306) (xy 140.390098 59.497431) (xy 140.387969 59.490104) - (xy 140.352569 59.368256) (xy 140.344244 59.339602) (xy 140.260581 59.198135) (xy 140.260579 59.198133) - (xy 140.260576 59.198129) (xy 140.14437 59.081923) (xy 140.144362 59.081917) (xy 140.051081 59.026751) + (xy 140.393 59.625441) (xy 140.393 59.534306) (xy 140.390098 59.497431) (xy 140.386398 59.484697) + (xy 140.350348 59.360611) (xy 140.344244 59.339602) (xy 140.260581 59.198135) (xy 140.260579 59.198133) + (xy 140.260576 59.198129) (xy 140.14437 59.081923) (xy 140.144362 59.081917) (xy 140.005845 58.999999) (xy 140.002898 58.998256) (xy 140.002897 58.998255) (xy 140.002896 58.998255) (xy 140.002893 58.998254) (xy 139.845073 58.952402) (xy 139.845067 58.952401) (xy 139.808201 58.9495) (xy 139.808194 58.9495) (xy 138.642 58.9495) (xy 138.574961 58.929815) (xy 138.529206 58.877011) (xy 138.518 58.8255) (xy 138.518 58.584313) @@ -27960,12 +30939,12 @@ (xy 138.428462 58.000815) (xy 138.437308 58.000499) (xy 138.765371 58.000499) (xy 138.765372 58.000499) (xy 138.824983 57.994091) (xy 138.959831 57.943796) (xy 139.075046 57.857546) (xy 139.161296 57.742331) (xy 139.211591 57.607483) (xy 139.218 57.547873) (xy 139.217999 55.952128) (xy 139.211591 55.892517) - (xy 139.209534 55.887003) (xy 139.161297 55.757671) (xy 139.161293 55.757664) (xy 139.075047 55.642455) + (xy 139.208828 55.88511) (xy 139.161297 55.757671) (xy 139.161293 55.757664) (xy 139.075047 55.642455) (xy 139.075044 55.642452) (xy 138.959835 55.556206) (xy 138.959828 55.556202) (xy 138.824982 55.505908) (xy 138.824983 55.505908) (xy 138.765383 55.499501) (xy 138.765381 55.4995) (xy 138.765373 55.4995) (xy 138.765364 55.4995) (xy 137.169629 55.4995) (xy 137.169623 55.499501) (xy 137.110016 55.505908) (xy 136.975171 55.556202) (xy 136.975164 55.556206) (xy 136.859955 55.642452) (xy 136.859952 55.642455) - (xy 136.773706 55.757664) (xy 136.773702 55.757671) (xy 136.723408 55.892517) (xy 136.717305 55.949292) + (xy 136.773706 55.757664) (xy 136.773702 55.757671) (xy 136.723408 55.892517) (xy 136.720183 55.922518) (xy 136.717001 55.952123) (xy 136.717 55.952135) (xy 136.717 57.16487) (xy 136.697315 57.231909) (xy 136.644511 57.277664) (xy 136.575353 57.287608) (xy 136.511797 57.258583) (xy 136.486269 57.227992) (xy 136.471135 57.202402) (xy 136.471132 57.202399) (xy 136.47113 57.202396) (xy 136.357603 57.088869) @@ -27974,116 +30953,153 @@ (xy 135.494794 56.962335) (xy 135.340611 57.007129) (xy 135.340606 57.007131) (xy 135.202404 57.088863) (xy 135.202396 57.088869) (xy 135.088869 57.202396) (xy 135.088863 57.202404) (xy 135.007131 57.340606) (xy 135.007129 57.340611) (xy 134.962335 57.494791) (xy 134.962334 57.494797) (xy 134.9595 57.530811) - (xy 105.580707 57.530811) (xy 105.479786 57.42989) (xy 105.30782 57.304951) (xy 105.307115 57.304591) - (xy 105.299054 57.300485) (xy 105.248259 57.252512) (xy 105.231463 57.184692) (xy 105.253999 57.118556) - (xy 105.299054 57.079515) (xy 105.307816 57.075051) (xy 105.401301 57.007131) (xy 105.479786 56.950109) - (xy 105.479788 56.950106) (xy 105.479792 56.950104) (xy 105.630104 56.799792) (xy 105.630106 56.799788) - (xy 105.630109 56.799786) (xy 105.755048 56.62782) (xy 105.755047 56.62782) (xy 105.755051 56.627816) - (xy 105.851557 56.438412) (xy 105.917246 56.236243) (xy 105.9505 56.026287) (xy 105.9505 55.813713) - (xy 105.917246 55.603757) (xy 105.851557 55.401588) (xy 105.755051 55.212184) (xy 105.755049 55.212181) - (xy 105.755048 55.212179) (xy 105.630109 55.040213) (xy 105.479792 54.889896) (xy 105.457271 54.873534) - (xy 105.307816 54.764949) (xy 105.291676 54.756725) (xy 105.284863 54.752018) (xy 105.267881 54.731044) - (xy 105.263225 54.726647) (xy 110.8995 54.726647) (xy 110.8995 55.273337) (xy 110.899501 55.273355) - (xy 110.90965 55.372707) (xy 110.909651 55.37271) (xy 110.962996 55.533694) (xy 110.963001 55.533705) - (xy 111.052029 55.67804) (xy 111.052032 55.678044) (xy 111.171955 55.797967) (xy 111.171959 55.79797) - (xy 111.316294 55.886998) (xy 111.316297 55.886999) (xy 111.316303 55.887003) (xy 111.477292 55.940349) - (xy 111.576655 55.9505) (xy 112.423344 55.950499) (xy 112.423352 55.950498) (xy 112.423355 55.950498) - (xy 112.47776 55.94494) (xy 112.522708 55.940349) (xy 112.683697 55.887003) (xy 112.828044 55.797968) - (xy 112.947968 55.678044) (xy 113.037003 55.533697) (xy 113.090349 55.372708) (xy 113.1005 55.273345) - (xy 113.100499 54.726656) (xy 113.099014 54.712123) (xy 113.090349 54.627292) (xy 113.090348 54.627289) - (xy 113.07716 54.587491) (xy 113.037003 54.466303) (xy 113.036999 54.466297) (xy 113.036998 54.466294) - (xy 112.94797 54.321959) (xy 112.947967 54.321955) (xy 112.828044 54.202032) (xy 112.82804 54.202029) - (xy 112.683705 54.113001) (xy 112.683699 54.112998) (xy 112.683697 54.112997) (xy 112.667241 54.107544) - (xy 112.522709 54.059651) (xy 112.423346 54.0495) (xy 111.576662 54.0495) (xy 111.576644 54.049501) - (xy 111.477292 54.05965) (xy 111.477289 54.059651) (xy 111.316305 54.112996) (xy 111.316294 54.113001) - (xy 111.171959 54.202029) (xy 111.171955 54.202032) (xy 111.052032 54.321955) (xy 111.052029 54.321959) - (xy 110.963001 54.466294) (xy 110.962996 54.466305) (xy 110.909651 54.62729) (xy 110.8995 54.726647) - (xy 105.263225 54.726647) (xy 105.248259 54.712512) (xy 105.246223 54.704294) (xy 105.240897 54.697715) - (xy 105.23795 54.670887) (xy 105.231463 54.644692) (xy 105.234193 54.636679) (xy 105.233269 54.628263) - (xy 105.245294 54.604101) (xy 105.253999 54.578556) (xy 105.261048 54.572447) (xy 105.264401 54.565712) - (xy 105.278584 54.557252) (xy 105.299054 54.539515) (xy 105.307816 54.535051) (xy 105.359527 54.497481) - (xy 105.479786 54.410109) (xy 105.479788 54.410106) (xy 105.479792 54.410104) (xy 105.630104 54.259792) - (xy 105.630106 54.259788) (xy 105.630109 54.259786) (xy 105.755048 54.08782) (xy 105.755047 54.08782) - (xy 105.755051 54.087816) (xy 105.851557 53.898412) (xy 105.917246 53.696243) (xy 105.9505 53.486287) - (xy 105.9505 53.273713) (xy 105.917246 53.063757) (xy 105.851557 52.861588) (xy 105.755051 52.672184) - (xy 105.755049 52.672181) (xy 105.755048 52.672179) (xy 105.630109 52.500213) (xy 105.479786 52.34989) - (xy 105.410905 52.299846) (xy 105.41087 52.299822) (xy 105.307816 52.224949) (xy 105.291455 52.216612) - (xy 105.284458 52.211737) (xy 105.276747 52.202135) (xy 107.2495 52.202135) (xy 107.2495 53.79787) - (xy 107.249501 53.797876) (xy 107.255908 53.857483) (xy 107.306202 53.992328) (xy 107.306206 53.992335) - (xy 107.392452 54.107544) (xy 107.392455 54.107547) (xy 107.507664 54.193793) (xy 107.507671 54.193797) - (xy 107.642517 54.244091) (xy 107.642516 54.244091) (xy 107.649444 54.244835) (xy 107.702127 54.2505) - (xy 109.297872 54.250499) (xy 109.357483 54.244091) (xy 109.492331 54.193796) (xy 109.607546 54.107546) - (xy 109.693796 53.992331) (xy 109.744091 53.857483) (xy 109.7505 53.797873) (xy 109.750499 52.202128) - (xy 109.744091 52.142517) (xy 109.733944 52.115312) (xy 109.693797 52.007671) (xy 109.693793 52.007664) - (xy 109.607547 51.892455) (xy 109.607544 51.892452) (xy 109.492335 51.806206) (xy 109.492328 51.806202) - (xy 109.357482 51.755908) (xy 109.357483 51.755908) (xy 109.297883 51.749501) (xy 109.297881 51.7495) - (xy 109.297873 51.7495) (xy 109.297864 51.7495) (xy 107.702129 51.7495) (xy 107.702123 51.749501) - (xy 107.642516 51.755908) (xy 107.507671 51.806202) (xy 107.507664 51.806206) (xy 107.392455 51.892452) - (xy 107.392452 51.892455) (xy 107.306206 52.007664) (xy 107.306202 52.007671) (xy 107.255908 52.142517) - (xy 107.251723 52.181447) (xy 107.249501 52.202123) (xy 107.2495 52.202135) (xy 105.276747 52.202135) - (xy 105.267708 52.19088) (xy 105.248259 52.172512) (xy 105.246164 52.164054) (xy 105.240708 52.15726) - (xy 105.237892 52.130655) (xy 105.231463 52.104692) (xy 105.234273 52.096445) (xy 105.233356 52.087778) - (xy 105.245371 52.063874) (xy 105.253999 52.038556) (xy 105.261262 52.032262) (xy 105.264736 52.025352) - (xy 105.278896 52.016982) (xy 105.299054 51.999515) (xy 105.307816 51.995051) (xy 105.366885 51.952135) - (xy 105.479786 51.870109) (xy 105.479788 51.870106) (xy 105.479792 51.870104) (xy 105.630104 51.719792) - (xy 105.630106 51.719788) (xy 105.630109 51.719786) (xy 105.748955 51.556206) (xy 105.755051 51.547816) - (xy 105.81679 51.426647) (xy 110.8995 51.426647) (xy 110.8995 51.973337) (xy 110.899501 51.973355) - (xy 110.90965 52.072707) (xy 110.909651 52.07271) (xy 110.962996 52.233694) (xy 110.963001 52.233705) - (xy 111.052029 52.37804) (xy 111.052032 52.378044) (xy 111.171955 52.497967) (xy 111.171959 52.49797) - (xy 111.316294 52.586998) (xy 111.316297 52.586999) (xy 111.316303 52.587003) (xy 111.477292 52.640349) - (xy 111.576655 52.6505) (xy 112.423344 52.650499) (xy 112.423352 52.650498) (xy 112.423355 52.650498) - (xy 112.505116 52.642146) (xy 112.522708 52.640349) (xy 112.683697 52.587003) (xy 112.828044 52.497968) - (xy 112.947968 52.378044) (xy 113.037003 52.233697) (xy 113.090349 52.072708) (xy 113.1005 51.973345) - (xy 113.100499 51.426656) (xy 113.090349 51.327292) (xy 113.037003 51.166303) (xy 113.036999 51.166297) - (xy 113.036998 51.166294) (xy 112.94797 51.021959) (xy 112.947967 51.021955) (xy 112.828044 50.902032) - (xy 112.82804 50.902029) (xy 112.683705 50.813001) (xy 112.683699 50.812998) (xy 112.683697 50.812997) - (xy 112.669616 50.808331) (xy 112.522709 50.759651) (xy 112.423346 50.7495) (xy 111.576662 50.7495) - (xy 111.576644 50.749501) (xy 111.477292 50.75965) (xy 111.477289 50.759651) (xy 111.316305 50.812996) - (xy 111.316294 50.813001) (xy 111.171959 50.902029) (xy 111.171955 50.902032) (xy 111.052032 51.021955) - (xy 111.052029 51.021959) (xy 110.963001 51.166294) (xy 110.962996 51.166305) (xy 110.909651 51.32729) - (xy 110.8995 51.426647) (xy 105.81679 51.426647) (xy 105.836187 51.388578) (xy 105.847078 51.367203) - (xy 105.847079 51.367201) (xy 105.851554 51.358417) (xy 105.851557 51.358412) (xy 105.917246 51.156243) - (xy 105.9505 50.946287) (xy 105.9505 50.733713) (xy 105.917246 50.523757) (xy 105.851557 50.321588) - (xy 105.851555 50.321585) (xy 105.851555 50.321583) (xy 105.841267 50.301392) (xy 105.841266 50.301391) - (xy 105.825365 50.270183) (xy 105.825272 50.27) (xy 107.437156 50.27) (xy 107.477595 50.409194) - (xy 107.559261 50.547285) (xy 107.559268 50.547294) (xy 107.672705 50.660731) (xy 107.672714 50.660738) - (xy 107.810808 50.742406) (xy 107.810811 50.742407) (xy 107.964871 50.787166) (xy 107.964877 50.787167) - (xy 108 50.789931) (xy 108 50.27) (xy 108.5 50.27) (xy 108.5 50.78993) (xy 108.535122 50.787167) - (xy 108.535128 50.787166) (xy 108.689188 50.742407) (xy 108.689191 50.742406) (xy 108.827285 50.660738) - (xy 108.82729 50.660734) (xy 108.827955 50.66007) (xy 108.828604 50.659715) (xy 108.833455 50.655953) - (xy 108.834061 50.656734) (xy 108.889275 50.62658) (xy 108.958967 50.631559) (xy 109.003328 50.660066) - (xy 109.010947 50.667685) (xy 109.152303 50.751282) (xy 109.152306 50.751283) (xy 109.310004 50.797099) - (xy 109.31001 50.7971) (xy 109.34685 50.799999) (xy 109.346866 50.8) (xy 109.75 50.8) (xy 110.25 50.8) - (xy 110.653134 50.8) (xy 110.653149 50.799999) (xy 110.689989 50.7971) (xy 110.689995 50.797099) - (xy 110.847693 50.751283) (xy 110.847696 50.751282) (xy 110.989052 50.667685) (xy 110.989061 50.667678) - (xy 111.105178 50.551561) (xy 111.105185 50.551552) (xy 111.188781 50.410198) (xy 111.2346 50.252486) - (xy 111.234795 50.250001) (xy 111.234795 50.25) (xy 110.25 50.25) (xy 110.25 50.8) (xy 109.75 50.8) - (xy 109.75 50.25) (xy 109.186433 50.25) (xy 109.154996 50.267166) (xy 109.128638 50.27) (xy 108.5 50.27) - (xy 108 50.27) (xy 107.437156 50.27) (xy 105.825272 50.27) (xy 105.755051 50.132184) (xy 105.755049 50.132181) - (xy 105.755048 50.132179) (xy 105.630109 49.960213) (xy 105.516181 49.846285) (xy 105.482696 49.784962) - (xy 105.48768 49.71527) (xy 105.529552 49.659337) (xy 105.560529 49.642422) (xy 105.692086 49.593354) - (xy 105.692093 49.59335) (xy 105.807187 49.50719) (xy 105.80719 49.507187) (xy 105.89335 49.392093) - (xy 105.893354 49.392086) (xy 105.943596 49.257379) (xy 105.943598 49.257372) (xy 105.949999 49.197844) - (xy 105.95 49.197827) (xy 105.95 48.55) (xy 105.033012 48.55) (xy 105.065925 48.492993) (xy 105.1 48.365826) - (xy 105.1 48.234174) (xy 105.065925 48.107007) (xy 105.033012 48.05) (xy 105.95 48.05) (xy 105.95 47.402172) - (xy 105.949999 47.402155) (xy 105.943598 47.342627) (xy 105.943596 47.34262) (xy 105.893354 47.207913) - (xy 105.89335 47.207906) (xy 105.80719 47.092812) (xy 105.807187 47.092809) (xy 105.692093 47.006649) - (xy 105.692086 47.006645) (xy 105.557379 46.956403) (xy 105.557372 46.956401) (xy 105.497844 46.95) - (xy 104.85 46.95) (xy 104.85 47.866988) (xy 104.792993 47.834075) (xy 104.665826 47.8) (xy 104.534174 47.8) - (xy 104.407007 47.834075) (xy 104.35 47.866988) (xy 104.35 46.95) (xy 103.702155 46.95) (xy 103.642627 46.956401) - (xy 103.64262 46.956403) (xy 103.507913 47.006645) (xy 103.507906 47.006649) (xy 103.392812 47.092809) - (xy 103.392809 47.092812) (xy 103.306649 47.207906) (xy 103.306645 47.207913) (xy 103.256403 47.34262) - (xy 103.256401 47.342627) (xy 103.25 47.402155) (xy 103.25 48.05) (xy 104.166988 48.05) (xy 104.134075 48.107007) - (xy 104.1 48.234174) (xy 104.1 48.365826) (xy 104.134075 48.492993) (xy 104.166988 48.55) (xy 103.25 48.55) - (xy 103.25 49.197844) (xy 103.256401 49.257372) (xy 103.256403 49.257379) (xy 103.306645 49.392086) - (xy 103.306649 49.392093) (xy 103.392809 49.507187) (xy 103.392812 49.50719) (xy 103.507906 49.59335) - (xy 103.507913 49.593354) (xy 103.63947 49.642422) (xy 103.695404 49.684293) (xy 103.719821 49.749758) - (xy 103.704969 49.818031) (xy 103.683819 49.846285) (xy 103.569889 49.960215) (xy 103.444951 50.132179) - (xy 103.348444 50.321585) (xy 103.348443 50.321587) (xy 103.348443 50.321588) (xy 103.331251 50.374499) - (xy 103.282753 50.52376) (xy 103.2495 50.733713) (xy 97.012804 50.733713) (xy 97.016342 50.721665) - (xy 97.01769 50.718048) (xy 97.029091 50.687483) (xy 97.0355 50.627873) (xy 97.035499 49.632128) - (xy 97.029091 49.572517) (xy 97.01634 49.538332) (xy 97.011357 49.468642) (xy 97.01634 49.451669) - (xy 97.029091 49.417483) (xy 97.0355 49.357873) (xy 97.035499 48.362128) (xy 97.029091 48.302517) + (xy 103.846066 57.530811) (xy 103.755051 57.352184) (xy 103.755049 57.352181) (xy 103.755048 57.352179) + (xy 103.630109 57.180213) (xy 103.479786 57.02989) (xy 103.30782 56.904951) (xy 103.303616 56.902809) + (xy 103.299054 56.900485) (xy 103.248259 56.852512) (xy 103.231463 56.784692) (xy 103.253999 56.718556) + (xy 103.299054 56.679515) (xy 103.307816 56.675051) (xy 103.347601 56.646146) (xy 103.479786 56.550109) + (xy 103.479788 56.550106) (xy 103.479792 56.550104) (xy 103.630104 56.399792) (xy 103.630106 56.399788) + (xy 103.630109 56.399786) (xy 103.755048 56.22782) (xy 103.755047 56.22782) (xy 103.755051 56.227816) + (xy 103.851557 56.038412) (xy 103.917246 55.836243) (xy 103.942524 55.676647) (xy 112.2995 55.676647) + (xy 112.2995 56.223337) (xy 112.299501 56.223355) (xy 112.30965 56.322707) (xy 112.309651 56.32271) + (xy 112.362996 56.483694) (xy 112.363001 56.483705) (xy 112.452029 56.62804) (xy 112.452032 56.628044) + (xy 112.571955 56.747967) (xy 112.571959 56.74797) (xy 112.716294 56.836998) (xy 112.716297 56.836999) + (xy 112.716303 56.837003) (xy 112.877292 56.890349) (xy 112.976655 56.9005) (xy 113.823344 56.900499) + (xy 113.823352 56.900498) (xy 113.823355 56.900498) (xy 113.87776 56.89494) (xy 113.922708 56.890349) + (xy 114.083697 56.837003) (xy 114.194008 56.768961) (xy 114.259105 56.7505) (xy 115.728844 56.7505) + (xy 115.728845 56.750499) (xy 115.883497 56.719737) (xy 116.021562 56.662549) (xy 116.029172 56.659397) + (xy 116.029172 56.659396) (xy 116.029179 56.659394) (xy 116.160289 56.571789) (xy 117.995259 54.736819) + (xy 118.056582 54.703334) (xy 118.08294 54.7005) (xy 119.763696 54.7005) (xy 119.830735 54.720185) + (xy 119.864013 54.751613) (xy 119.955483 54.87751) (xy 120.12249 55.044517) (xy 120.313567 55.183343) + (xy 120.365759 55.209936) (xy 120.524003 55.290566) (xy 120.524005 55.290566) (xy 120.524008 55.290568) + (xy 120.585694 55.310611) (xy 120.748631 55.363553) (xy 120.981903 55.4005) (xy 120.981908 55.4005) + (xy 121.218097 55.4005) (xy 121.451368 55.363553) (xy 121.489623 55.351123) (xy 121.675992 55.290568) + (xy 121.886433 55.183343) (xy 122.07751 55.044517) (xy 122.244517 54.87751) (xy 122.383343 54.686433) + (xy 122.490568 54.475992) (xy 122.563553 54.251368) (xy 122.581976 54.135051) (xy 122.6005 54.018097) + (xy 122.6005 53.781902) (xy 122.563553 53.548631) (xy 122.519888 53.414245) (xy 122.490568 53.324008) + (xy 122.490566 53.324005) (xy 122.490566 53.324003) (xy 122.411012 53.16787) (xy 122.383343 53.113567) + (xy 122.244517 52.92249) (xy 122.07751 52.755483) (xy 121.886433 52.616657) (xy 121.833635 52.589755) + (xy 121.675996 52.509433) (xy 121.451368 52.436446) (xy 121.218097 52.3995) (xy 121.218092 52.3995) + (xy 120.981908 52.3995) (xy 120.981903 52.3995) (xy 120.748631 52.436446) (xy 120.524003 52.509433) + (xy 120.313566 52.616657) (xy 120.248735 52.66376) (xy 120.12249 52.755483) (xy 120.122488 52.755485) + (xy 120.122487 52.755485) (xy 119.955485 52.922487) (xy 119.955485 52.922488) (xy 119.955483 52.92249) + (xy 119.883982 53.020902) (xy 119.864014 53.048386) (xy 119.808684 53.091051) (xy 119.763696 53.0995) + (xy 117.621155 53.0995) (xy 117.46651 53.130261) (xy 117.466498 53.130264) (xy 117.320827 53.190602) + (xy 117.320814 53.190609) (xy 117.189711 53.27821) (xy 117.189707 53.278213) (xy 115.354741 55.113181) + (xy 115.293418 55.146666) (xy 115.26706 55.1495) (xy 114.3245 55.1495) (xy 114.257461 55.129815) + (xy 114.211706 55.077011) (xy 114.2005 55.0255) (xy 114.2005 53.587) (xy 114.220185 53.519961) (xy 114.272989 53.474206) + (xy 114.3245 53.463) (xy 114.565686 53.463) (xy 114.565694 53.463) (xy 114.602569 53.460098) (xy 114.602571 53.460097) + (xy 114.602573 53.460097) (xy 114.664418 53.442129) (xy 114.760398 53.414244) (xy 114.901865 53.330581) + (xy 115.018081 53.214365) (xy 115.101744 53.072898) (xy 115.135505 52.956691) (xy 115.147597 52.915073) + (xy 115.147598 52.915067) (xy 115.149387 52.892331) (xy 115.1505 52.878194) (xy 115.1505 51.571806) + (xy 115.147598 51.534931) (xy 115.123814 51.453066) (xy 115.124013 51.383198) (xy 115.161955 51.324528) + (xy 115.225593 51.295684) (xy 115.252623 51.294855) (xy 115.260819 51.2955) (xy 115.65918 51.295499) + (xy 115.695204 51.292665) (xy 115.849393 51.247869) (xy 115.987598 51.166135) (xy 116.101135 51.052598) + (xy 116.182869 50.914393) (xy 116.225209 50.768657) (xy 116.227664 50.760208) (xy 116.227665 50.760202) + (xy 116.227977 50.756239) (xy 116.2305 50.724181) (xy 116.230499 50.22582) (xy 116.227665 50.189796) + (xy 116.182869 50.035607) (xy 116.101135 49.897402) (xy 116.101133 49.8974) (xy 116.10113 49.897396) + (xy 115.987603 49.783869) (xy 115.987595 49.783863) (xy 115.849393 49.702131) (xy 115.849388 49.702129) + (xy 115.695208 49.657335) (xy 115.695202 49.657334) (xy 115.659181 49.6545) (xy 115.26083 49.6545) + (xy 115.260808 49.654501) (xy 115.224794 49.657335) (xy 115.070611 49.702129) (xy 115.070604 49.702132) + (xy 115.013119 49.736128) (xy 114.945395 49.753309) (xy 114.886881 49.736128) (xy 114.829395 49.702132) + (xy 114.829388 49.702129) (xy 114.675208 49.657335) (xy 114.675202 49.657334) (xy 114.639181 49.6545) + (xy 114.24083 49.6545) (xy 114.240808 49.654501) (xy 114.204794 49.657335) (xy 114.050611 49.702129) + (xy 114.050603 49.702132) (xy 114.008119 49.727257) (xy 113.940395 49.744438) (xy 113.881881 49.727257) + (xy 113.839396 49.702132) (xy 113.839388 49.702129) (xy 113.685208 49.657335) (xy 113.685202 49.657334) + (xy 113.649181 49.6545) (xy 113.25083 49.6545) (xy 113.250808 49.654501) (xy 113.214794 49.657335) + (xy 113.060611 49.702129) (xy 113.060607 49.70213) (xy 113.002628 49.736419) (xy 112.934903 49.7536) + (xy 112.876388 49.736419) (xy 112.819189 49.702592) (xy 112.819188 49.702591) (xy 112.680001 49.662153) + (xy 112.68 49.662154) (xy 112.68 50.214591) (xy 112.679618 50.224316) (xy 112.6795 50.225804) (xy 112.6795 50.225819) + (xy 112.679501 50.72418) (xy 112.682335 50.760204) (xy 112.683718 50.764965) (xy 112.699343 50.916111) + (xy 112.698891 50.918554) (xy 112.7 50.928862) (xy 112.7 51.975) (xy 113.25 51.975) (xy 113.25 51.571865) + (xy 113.249999 51.57185) (xy 113.2471 51.53501) (xy 113.247099 51.535004) (xy 113.223592 51.454094) + (xy 113.223666 51.42784) (xy 113.21993 51.401852) (xy 113.223764 51.393455) (xy 113.223791 51.384225) + (xy 113.238047 51.362179) (xy 113.248955 51.338296) (xy 113.25672 51.333305) (xy 113.261733 51.325555) + (xy 113.285645 51.314716) (xy 113.307733 51.300522) (xy 113.321251 51.298578) (xy 113.325371 51.296711) + (xy 113.342657 51.295499) (xy 113.456811 51.295499) (xy 113.523849 51.315184) (xy 113.569604 51.367988) + (xy 113.579548 51.437146) (xy 113.575887 51.454093) (xy 113.552401 51.534932) (xy 113.5495 51.571798) + (xy 113.5495 52.738) (xy 113.546949 52.746685) (xy 113.548238 52.755647) (xy 113.537259 52.779687) + (xy 113.529815 52.805039) (xy 113.522974 52.810966) (xy 113.519213 52.819203) (xy 113.496978 52.833492) + (xy 113.477011 52.850794) (xy 113.466496 52.853081) (xy 113.460435 52.856977) (xy 113.4255 52.862) + (xy 113.374 52.862) (xy 113.306961 52.842315) (xy 113.261206 52.789511) (xy 113.25 52.738) (xy 113.25 52.475) + (xy 112.7 52.475) (xy 112.7 53.130684) (xy 112.682733 53.193804) (xy 112.648254 53.252105) (xy 112.648254 53.252106) + (xy 112.602402 53.409926) (xy 112.602401 53.409932) (xy 112.5995 53.446798) (xy 112.5995 55.073125) + (xy 112.579815 55.140164) (xy 112.563182 55.160806) (xy 112.452029 55.271959) (xy 112.363001 55.416294) + (xy 112.362996 55.416305) (xy 112.309651 55.57729) (xy 112.2995 55.676647) (xy 103.942524 55.676647) + (xy 103.9505 55.626287) (xy 103.9505 55.413713) (xy 103.917246 55.203757) (xy 103.851557 55.001588) + (xy 103.755051 54.812184) (xy 103.755049 54.812181) (xy 103.755048 54.812179) (xy 103.630109 54.640213) + (xy 103.479786 54.48989) (xy 103.30782 54.364951) (xy 103.307115 54.364591) (xy 103.299054 54.360485) + (xy 103.248259 54.312512) (xy 103.231463 54.244692) (xy 103.253999 54.178556) (xy 103.299054 54.139515) + (xy 103.307816 54.135051) (xy 103.329789 54.119086) (xy 103.479786 54.010109) (xy 103.479788 54.010106) + (xy 103.479792 54.010104) (xy 103.630104 53.859792) (xy 103.630106 53.859788) (xy 103.630109 53.859786) + (xy 103.755048 53.68782) (xy 103.755047 53.68782) (xy 103.755051 53.687816) (xy 103.851557 53.498412) + (xy 103.917246 53.296243) (xy 103.9505 53.086287) (xy 103.9505 52.878149) (xy 111.65 52.878149) + (xy 111.652899 52.914989) (xy 111.6529 52.914995) (xy 111.698716 53.072693) (xy 111.698717 53.072696) + (xy 111.782314 53.214052) (xy 111.782321 53.214061) (xy 111.898438 53.330178) (xy 111.898447 53.330185) + (xy 112.039801 53.413781) (xy 112.197514 53.4596) (xy 112.197511 53.4596) (xy 112.199998 53.459795) + (xy 112.2 53.459795) (xy 112.2 52.475) (xy 111.65 52.475) (xy 111.65 52.878149) (xy 103.9505 52.878149) + (xy 103.9505 52.873713) (xy 103.917246 52.663757) (xy 103.851557 52.461588) (xy 103.755051 52.272184) + (xy 103.755049 52.272181) (xy 103.755048 52.272179) (xy 103.630109 52.100213) (xy 103.479786 51.94989) + (xy 103.30782 51.824951) (xy 103.307115 51.824591) (xy 103.299054 51.820485) (xy 103.248259 51.772512) + (xy 103.231463 51.704692) (xy 103.253999 51.638556) (xy 103.283733 51.608772) (xy 103.291058 51.603589) + (xy 103.307816 51.595051) (xy 103.33975 51.57185) (xy 111.65 51.57185) (xy 111.65 51.975) (xy 112.2 51.975) + (xy 112.2 51.411433) (xy 112.182834 51.379996) (xy 112.18 51.353638) (xy 112.18 50.725) (xy 111.660069 50.725) + (xy 111.662832 50.760122) (xy 111.662833 50.760128) (xy 111.707592 50.914188) (xy 111.707593 50.914191) + (xy 111.789261 51.052285) (xy 111.789268 51.052294) (xy 111.789936 51.052962) (xy 111.790291 51.053613) + (xy 111.794047 51.058455) (xy 111.793266 51.05906) (xy 111.823421 51.114285) (xy 111.818437 51.183977) + (xy 111.789936 51.228324) (xy 111.782321 51.235938) (xy 111.782314 51.235947) (xy 111.698717 51.377303) + (xy 111.698716 51.377306) (xy 111.6529 51.535004) (xy 111.652899 51.53501) (xy 111.65 51.57185) + (xy 103.33975 51.57185) (xy 103.479792 51.470104) (xy 103.630104 51.319792) (xy 103.630106 51.319788) + (xy 103.630109 51.319786) (xy 103.755048 51.14782) (xy 103.755047 51.14782) (xy 103.755051 51.147816) + (xy 103.851557 50.958412) (xy 103.917246 50.756243) (xy 103.9505 50.546287) (xy 103.9505 50.333713) + (xy 103.933281 50.225) (xy 111.660069 50.225) (xy 112.18 50.225) (xy 112.18 49.662154) (xy 112.179998 49.662153) + (xy 112.040811 49.702591) (xy 112.040808 49.702593) (xy 111.902714 49.784261) (xy 111.902705 49.784268) + (xy 111.789268 49.897705) (xy 111.789261 49.897714) (xy 111.707593 50.035808) (xy 111.707592 50.035811) + (xy 111.662833 50.189871) (xy 111.662832 50.189877) (xy 111.660069 50.225) (xy 103.933281 50.225) + (xy 103.917246 50.123757) (xy 103.851557 49.921588) (xy 103.755051 49.732184) (xy 103.755049 49.732181) + (xy 103.755048 49.732179) (xy 103.630109 49.560213) (xy 103.569897 49.500001) (xy 120.765204 49.500001) + (xy 120.765399 49.502486) (xy 120.811218 49.660198) (xy 120.894814 49.801552) (xy 120.894821 49.801561) + (xy 121.010938 49.917678) (xy 121.010947 49.917685) (xy 121.152303 50.001282) (xy 121.152306 50.001283) + (xy 121.310004 50.047099) (xy 121.31001 50.0471) (xy 121.34685 50.049999) (xy 121.346866 50.05) + (xy 121.75 50.05) (xy 122.25 50.05) (xy 122.653134 50.05) (xy 122.653149 50.049999) (xy 122.689989 50.0471) + (xy 122.689995 50.047099) (xy 122.847693 50.001283) (xy 122.847696 50.001282) (xy 122.989052 49.917685) + (xy 122.989061 49.917678) (xy 123.105178 49.801561) (xy 123.105185 49.801552) (xy 123.188781 49.660198) + (xy 123.2346 49.502486) (xy 123.234795 49.500001) (xy 123.234795 49.5) (xy 122.25 49.5) (xy 122.25 50.05) + (xy 121.75 50.05) (xy 121.75 49.5) (xy 120.765205 49.5) (xy 120.765204 49.500001) (xy 103.569897 49.500001) + (xy 103.516181 49.446285) (xy 103.482696 49.384962) (xy 103.48768 49.31527) (xy 103.529552 49.259337) + (xy 103.560529 49.242422) (xy 103.692086 49.193354) (xy 103.692093 49.19335) (xy 103.807187 49.10719) + (xy 103.80719 49.107187) (xy 103.887432 48.999998) (xy 120.765204 48.999998) (xy 120.765205 49) + (xy 121.75 49) (xy 121.75 48.45) (xy 121.34685 48.45) (xy 121.31001 48.452899) (xy 121.310004 48.4529) + (xy 121.152306 48.498716) (xy 121.152303 48.498717) (xy 121.010947 48.582314) (xy 121.010938 48.582321) + (xy 120.894821 48.698438) (xy 120.894814 48.698447) (xy 120.811218 48.839801) (xy 120.765399 48.997513) + (xy 120.765204 48.999998) (xy 103.887432 48.999998) (xy 103.893352 48.99209) (xy 103.893353 48.992089) + (xy 103.943596 48.857379) (xy 103.943598 48.857372) (xy 103.949999 48.797844) (xy 103.95 48.797827) + (xy 103.95 48.15) (xy 103.033012 48.15) (xy 103.065925 48.092993) (xy 103.1 47.965826) (xy 103.1 47.834174) + (xy 103.065925 47.707007) (xy 103.033012 47.65) (xy 103.95 47.65) (xy 103.95 47.002172) (xy 103.949999 47.002155) + (xy 103.943598 46.942627) (xy 103.943596 46.94262) (xy 103.893354 46.807913) (xy 103.89335 46.807906) + (xy 103.80719 46.692812) (xy 103.807187 46.692809) (xy 103.692093 46.606649) (xy 103.692086 46.606645) + (xy 103.557379 46.556403) (xy 103.557372 46.556401) (xy 103.497844 46.55) (xy 102.85 46.55) (xy 102.85 47.466988) + (xy 102.792993 47.434075) (xy 102.665826 47.4) (xy 102.534174 47.4) (xy 102.407007 47.434075) (xy 102.35 47.466988) + (xy 102.35 46.55) (xy 101.702155 46.55) (xy 101.642627 46.556401) (xy 101.64262 46.556403) (xy 101.507913 46.606645) + (xy 101.507906 46.606649) (xy 101.392812 46.692809) (xy 101.392809 46.692812) (xy 101.306649 46.807906) + (xy 101.306645 46.807913) (xy 101.256403 46.94262) (xy 101.256401 46.942627) (xy 101.25 47.002155) + (xy 101.25 47.65) (xy 102.166988 47.65) (xy 102.134075 47.707007) (xy 102.1 47.834174) (xy 102.1 47.965826) + (xy 102.134075 48.092993) (xy 102.166988 48.15) (xy 101.25 48.15) (xy 101.25 48.797844) (xy 101.256401 48.857372) + (xy 101.256403 48.857379) (xy 101.306645 48.992086) (xy 101.306649 48.992093) (xy 101.392809 49.107187) + (xy 101.392812 49.10719) (xy 101.507906 49.19335) (xy 101.507913 49.193354) (xy 101.63947 49.242422) + (xy 101.665286 49.261747) (xy 101.691943 49.279882) (xy 101.693079 49.282552) (xy 101.695404 49.284293) + (xy 101.706672 49.314506) (xy 101.719295 49.344176) (xy 101.718806 49.347038) (xy 101.719821 49.349758) + (xy 101.712967 49.381264) (xy 101.707544 49.41305) (xy 101.705398 49.416055) (xy 101.704969 49.418031) + (xy 101.687692 49.442232) (xy 101.685793 49.44431) (xy 101.569896 49.560208) (xy 101.530881 49.613907) + (xy 101.526195 49.619038) (xy 101.502017 49.633696) (xy 101.479629 49.650961) (xy 101.472536 49.65157) + (xy 101.466449 49.655261) (xy 101.438182 49.65452) (xy 101.410015 49.65694) (xy 101.403719 49.653618) + (xy 101.396603 49.653432) (xy 101.373227 49.637529) (xy 101.34822 49.624335) (xy 101.340887 49.615528) + (xy 101.338834 49.614132) (xy 101.337904 49.611946) (xy 101.331538 49.604301) (xy 101.321789 49.58971) + (xy 101.210292 49.478213) (xy 101.210288 49.47821) (xy 101.079185 49.390609) (xy 101.079172 49.390602) + (xy 100.933501 49.330264) (xy 100.933489 49.330261) (xy 100.778845 49.2995) (xy 100.778842 49.2995) + (xy 100.621158 49.2995) (xy 100.621155 49.2995) (xy 100.46651 49.330261) (xy 100.466498 49.330264) + (xy 100.320827 49.390602) (xy 100.320814 49.390609) (xy 100.189125 49.478602) (xy 100.122447 49.49948) + (xy 100.120234 49.4995) (xy 97.158319 49.4995) (xy 97.09128 49.479815) (xy 97.045525 49.427011) + (xy 97.03503 49.362244) (xy 97.0355 49.357872) (xy 97.0355 49.35787) (xy 97.035499 48.362128) (xy 97.029091 48.302517) (xy 97.016073 48.267616) (xy 97.01109 48.197926) (xy 97.016075 48.180949) (xy 97.028597 48.147375) (xy 97.028598 48.147372) (xy 97.034999 48.087844) (xy 97.035 48.087827) (xy 97.035 47.84) (xy 94.535 47.84) (xy 94.535 48.087844) (xy 94.541401 48.147372) (xy 94.541403 48.147379) (xy 94.553925 48.180952) @@ -28092,40 +31108,41 @@ (xy 94.540908 49.417481) (xy 94.553659 49.451669) (xy 94.558642 49.521361) (xy 94.553659 49.538331) (xy 94.540908 49.572518) (xy 94.534657 49.630664) (xy 94.534501 49.632123) (xy 94.5345 49.632135) (xy 94.5345 50.62787) (xy 94.534501 50.627876) (xy 94.540908 50.687481) (xy 94.553659 50.721669) - (xy 94.558642 50.791361) (xy 94.553659 50.808331) (xy 94.540908 50.842518) (xy 94.53451 50.902032) + (xy 94.558642 50.791361) (xy 94.553659 50.808331) (xy 94.540908 50.842518) (xy 94.53747 50.8745) (xy 94.534501 50.902123) (xy 94.5345 50.902135) (xy 94.5345 51.89787) (xy 94.534501 51.897876) (xy 94.540908 51.957481) (xy 94.553659 51.991669) (xy 94.558642 52.061361) (xy 94.553659 52.078331) (xy 94.540908 52.112518) - (xy 94.535368 52.164054) (xy 94.534501 52.172123) (xy 94.5345 52.172135) (xy 94.5345 53.16787) (xy 94.534501 53.167876) + (xy 94.534501 52.172116) (xy 94.534501 52.172123) (xy 94.5345 52.172135) (xy 94.5345 53.16787) (xy 94.534501 53.167876) (xy 94.540908 53.227481) (xy 94.553659 53.261669) (xy 94.558642 53.331361) (xy 94.553659 53.348331) - (xy 94.540908 53.382518) (xy 94.534501 53.442116) (xy 94.534501 53.442123) (xy 94.5345 53.442135) + (xy 94.540908 53.382518) (xy 94.536285 53.425523) (xy 94.534501 53.442123) (xy 94.5345 53.442135) (xy 94.5345 54.43787) (xy 94.534501 54.437876) (xy 94.540908 54.497481) (xy 94.553659 54.531669) - (xy 94.558642 54.601361) (xy 94.553659 54.618331) (xy 94.540908 54.652518) (xy 94.535342 54.704294) + (xy 94.558642 54.601361) (xy 94.553659 54.618331) (xy 94.540908 54.652518) (xy 94.53575 54.7005) (xy 94.534501 54.712123) (xy 94.5345 54.712135) (xy 94.5345 55.70787) (xy 94.534501 55.707876) (xy 94.540908 55.767481) (xy 94.553659 55.801669) (xy 94.558642 55.871361) (xy 94.553659 55.888331) (xy 94.540908 55.922518) (xy 94.534501 55.982116) (xy 94.534501 55.982123) (xy 94.5345 55.982135) (xy 94.5345 56.97787) (xy 94.534501 56.977876) (xy 94.540908 57.037481) (xy 94.553659 57.071669) (xy 94.558642 57.141361) (xy 94.553659 57.158331) - (xy 94.540908 57.192518) (xy 94.534675 57.250498) (xy 94.534501 57.252123) (xy 94.5345 57.252135) - (xy 94.5345 58.24787) (xy 94.534501 58.247876) (xy 94.540908 58.307481) (xy 94.553659 58.341669) + (xy 94.540908 57.192518) (xy 94.535999 57.238186) (xy 94.534501 57.252123) (xy 94.5345 57.252135) + (xy 94.534501 58.247868) (xy 94.534501 58.247873) (xy 94.540908 58.307481) (xy 94.553659 58.341669) (xy 94.558642 58.411361) (xy 94.553659 58.428331) (xy 94.540908 58.462518) (xy 94.535288 58.514796) (xy 94.534501 58.522123) (xy 94.5345 58.522135) (xy 94.5345 59.51787) (xy 94.534501 59.517876) (xy 94.540908 59.577481) (xy 94.553659 59.611669) (xy 94.558642 59.681361) (xy 94.553659 59.698331) (xy 94.540908 59.732518) - (xy 94.538409 59.755765) (xy 94.534501 59.792123) (xy 94.5345 59.792135) (xy 94.5345 60.78787) (xy 94.534501 60.787876) + (xy 94.535406 59.783697) (xy 94.534501 59.792123) (xy 94.5345 59.792135) (xy 94.5345 60.78787) (xy 94.534501 60.787876) (xy 94.540908 60.847481) (xy 94.553659 60.881669) (xy 94.558642 60.951361) (xy 94.553659 60.968331) - (xy 94.540908 61.002518) (xy 94.539029 61.02) (xy 94.534501 61.062123) (xy 94.5345 61.062135) (xy 94.5345 62.05787) - (xy 94.534501 62.057876) (xy 94.540908 62.117481) (xy 94.553659 62.151669) (xy 94.558642 62.221361) - (xy 94.553659 62.238331) (xy 94.540908 62.272518) (xy 94.5361 62.317246) (xy 94.534501 62.332123) - (xy 94.5345 62.332135) (xy 94.5345 63.32787) (xy 94.534501 63.327876) (xy 94.540908 63.387481) (xy 94.553659 63.421669) - (xy 94.558642 63.491361) (xy 94.553659 63.508331) (xy 94.540908 63.542518) (xy 94.534501 63.602116) - (xy 94.534501 63.602123) (xy 94.5345 63.602135) (xy 94.5345 63.9755) (xy 94.514815 64.042539) (xy 94.462011 64.088294) - (xy 94.4105 64.0995) (xy 93.522129 64.0995) (xy 93.522123 64.099501) (xy 93.462518 64.105908) (xy 93.428331 64.118659) - (xy 93.358639 64.123642) (xy 93.341669 64.118659) (xy 93.30748 64.105908) (xy 93.307482 64.105908) - (xy 93.247883 64.099501) (xy 93.247881 64.0995) (xy 93.247873 64.0995) (xy 93.247864 64.0995) (xy 92.252129 64.0995) - (xy 92.252123 64.099501) (xy 92.192518 64.105908) (xy 92.158331 64.118659) (xy 92.088639 64.123642) - (xy 92.071669 64.118659) (xy 92.03748 64.105908) (xy 92.037482 64.105908) (xy 91.977883 64.099501) - (xy 91.977881 64.0995) (xy 91.977873 64.0995) (xy 91.977864 64.0995) (xy 90.982129 64.0995) (xy 90.982123 64.099501) - (xy 90.922518 64.105908) (xy 90.888331 64.118659) (xy 90.818639 64.123642) (xy 90.801669 64.118659) - (xy 90.76748 64.105908) (xy 90.767482 64.105908) (xy 90.707883 64.099501) (xy 90.707881 64.0995) - (xy 90.707873 64.0995) (xy 90.707864 64.0995) (xy 89.712129 64.0995) (xy 89.712123 64.099501) (xy 89.652518 64.105908) + (xy 94.540908 61.002518) (xy 94.534501 61.062116) (xy 94.534501 61.062123) (xy 94.5345 61.062135) + (xy 94.5345 62.05787) (xy 94.534501 62.057876) (xy 94.540908 62.117481) (xy 94.553659 62.151669) + (xy 94.558642 62.221361) (xy 94.553659 62.238331) (xy 94.540908 62.272518) (xy 94.53603 62.317895) + (xy 94.534501 62.332123) (xy 94.5345 62.332135) (xy 94.5345 63.32787) (xy 94.534501 63.327876) (xy 94.540908 63.387481) + (xy 94.553659 63.421669) (xy 94.558642 63.491361) (xy 94.553659 63.508331) (xy 94.540908 63.542518) + (xy 94.538006 63.569517) (xy 94.534501 63.602123) (xy 94.5345 63.602135) (xy 94.5345 63.9755) (xy 94.514815 64.042539) + (xy 94.462011 64.088294) (xy 94.4105 64.0995) (xy 93.522129 64.0995) (xy 93.522123 64.099501) (xy 93.462518 64.105908) + (xy 93.428331 64.118659) (xy 93.358639 64.123642) (xy 93.341669 64.118659) (xy 93.30748 64.105908) + (xy 93.307482 64.105908) (xy 93.247883 64.099501) (xy 93.247881 64.0995) (xy 93.247873 64.0995) + (xy 93.247864 64.0995) (xy 92.252129 64.0995) (xy 92.252123 64.099501) (xy 92.192518 64.105908) + (xy 92.158331 64.118659) (xy 92.088639 64.123642) (xy 92.071669 64.118659) (xy 92.03748 64.105908) + (xy 92.037482 64.105908) (xy 91.977883 64.099501) (xy 91.977881 64.0995) (xy 91.977873 64.0995) + (xy 91.977864 64.0995) (xy 90.982129 64.0995) (xy 90.982123 64.099501) (xy 90.922518 64.105908) + (xy 90.888331 64.118659) (xy 90.818639 64.123642) (xy 90.801669 64.118659) (xy 90.76748 64.105908) + (xy 90.767482 64.105908) (xy 90.707883 64.099501) (xy 90.707881 64.0995) (xy 90.707873 64.0995) + (xy 90.707864 64.0995) (xy 89.712129 64.0995) (xy 89.712123 64.099501) (xy 89.652518 64.105908) (xy 89.618331 64.118659) (xy 89.548639 64.123642) (xy 89.531669 64.118659) (xy 89.49748 64.105908) (xy 89.497482 64.105908) (xy 89.437883 64.099501) (xy 89.437881 64.0995) (xy 89.437873 64.0995) (xy 89.437864 64.0995) (xy 88.442129 64.0995) (xy 88.442123 64.099501) (xy 88.382518 64.105908) @@ -28185,7 +31202,7 @@ (xy 76.75 47.5) (xy 76.905 47.5) (xy 76.905 47.464) (xy 76.924685 47.396961) (xy 76.977489 47.351206) (xy 77.029 47.34) (xy 78.035 47.34) (xy 78.535 47.34) (xy 79.535 47.34) (xy 79.535 47.092172) (xy 79.534999 47.092155) (xy 94.535 47.092155) (xy 94.535 47.34) (xy 95.535 47.34) (xy 96.035 47.34) (xy 97.035 47.34) (xy 97.035 47.092172) - (xy 97.034999 47.092155) (xy 97.028598 47.032627) (xy 97.028596 47.03262) (xy 96.978354 46.897913) + (xy 97.034999 47.092155) (xy 97.028598 47.032629) (xy 97.028596 47.032618) (xy 96.978354 46.897913) (xy 96.97835 46.897906) (xy 96.89219 46.782812) (xy 96.892187 46.782809) (xy 96.777093 46.696649) (xy 96.777086 46.696645) (xy 96.642379 46.646403) (xy 96.642372 46.646401) (xy 96.582844 46.64) (xy 96.035 46.64) (xy 96.035 47.34) (xy 95.535 47.34) (xy 95.535 46.64) (xy 94.987155 46.64) (xy 94.927627 46.646401) @@ -28210,54 +31227,356 @@ (xy 73.812181 48.196976) (xy 73.856381 48.246116) (xy 73.867602 48.315079) (xy 73.839759 48.379161) (xy 73.809661 48.405241) (xy 73.806349 48.407283) (xy 73.806343 48.407288) (xy 73.682289 48.531342) (xy 73.590187 48.680663) (xy 73.590185 48.680668) (xy 73.573393 48.731344) (xy 73.535001 48.847203) - (xy 73.535001 48.847204) (xy 73.535 48.847204) (xy 73.5245 48.949983) (xy 72.657256 48.949983) (xy 72.634358 48.88088) - (xy 72.634356 48.880875) (xy 72.542315 48.731654) (xy 72.418345 48.607684) (xy 72.269124 48.515643) - (xy 72.269119 48.515641) (xy 72.102697 48.460494) (xy 72.10269 48.460493) (xy 71.999986 48.45) (xy 70.7 48.45) - (xy 70.7 49.5) (xy 70.2 49.5) (xy 70.2 48.45) (xy 68.900028 48.45) (xy 68.900012 48.450001) (xy 68.797302 48.460494) + (xy 73.535001 48.847204) (xy 73.535 48.847204) (xy 73.5245 48.949983) (xy 73.5245 49.550001) (xy 73.524501 49.550019) + (xy 73.535 49.652796) (xy 73.535001 49.652799) (xy 73.586953 49.809577) (xy 73.590186 49.819334) + (xy 73.682288 49.968656) (xy 73.806344 50.092712) (xy 73.955666 50.184814) (xy 74.122203 50.239999) + (xy 74.224991 50.2505) (xy 74.3455 50.250499) (xy 74.412539 50.270183) (xy 74.458294 50.322987) + (xy 74.4695 50.374499) (xy 74.4695 50.749169) (xy 74.469501 50.749191) (xy 74.472335 50.785205) + (xy 74.517129 50.939388) (xy 74.517131 50.939393) (xy 74.598863 51.077595) (xy 74.598869 51.077603) + (xy 74.712396 51.19113) (xy 74.7124 51.191133) (xy 74.712402 51.191135) (xy 74.850607 51.272869) + (xy 74.850614 51.272871) (xy 75.004791 51.317664) (xy 75.004794 51.317664) (xy 75.004796 51.317665) + (xy 75.040819 51.3205) (xy 75.43918 51.320499) (xy 75.475204 51.317665) (xy 75.629393 51.272869) + (xy 75.686882 51.238869) (xy 75.754602 51.221688) (xy 75.813117 51.238869) (xy 75.870607 51.272869) + (xy 75.87061 51.272869) (xy 75.870612 51.272871) (xy 76.024791 51.317664) (xy 76.024794 51.317664) + (xy 76.024796 51.317665) (xy 76.060819 51.3205) (xy 76.45918 51.320499) (xy 76.495204 51.317665) + (xy 76.649393 51.272869) (xy 76.787598 51.191135) (xy 76.822818 51.155915) (xy 76.88414 51.122429) + (xy 76.953832 51.127413) (xy 77.009766 51.169283) (xy 77.034184 51.234747) (xy 77.0345 51.243595) + (xy 77.0345 51.89787) (xy 77.034501 51.897876) (xy 77.040908 51.957481) (xy 77.053659 51.991669) + (xy 77.058642 52.061361) (xy 77.053659 52.078331) (xy 77.040908 52.112518) (xy 77.034501 52.172116) + (xy 77.034501 52.172123) (xy 77.0345 52.172135) (xy 77.0345 53.16787) (xy 77.034501 53.167876) (xy 77.040908 53.227481) + (xy 77.053659 53.261669) (xy 77.058642 53.331361) (xy 77.053659 53.348331) (xy 77.040908 53.382518) + (xy 77.036285 53.425523) (xy 77.034501 53.442123) (xy 77.0345 53.442135) (xy 77.0345 54.43787) (xy 77.034501 54.437876) + (xy 77.040908 54.497481) (xy 77.053659 54.531669) (xy 77.058642 54.601361) (xy 77.053659 54.618331) + (xy 77.040908 54.652518) (xy 77.03575 54.7005) (xy 77.034501 54.712123) (xy 77.0345 54.712135) (xy 77.0345 55.70787) + (xy 77.034501 55.707876) (xy 77.040908 55.767481) (xy 77.053659 55.801669) (xy 77.058642 55.871361) + (xy 77.053659 55.888331) (xy 77.040908 55.922518) (xy 77.034501 55.982116) (xy 77.034501 55.982123) + (xy 77.0345 55.982135) (xy 77.0345 56.97787) (xy 77.034501 56.977876) (xy 77.040908 57.037481) (xy 77.053659 57.071669) + (xy 77.058642 57.141361) (xy 77.053659 57.158331) (xy 77.040908 57.192518) (xy 77.035999 57.238186) + (xy 77.034501 57.252123) (xy 77.0345 57.252135) (xy 77.034501 58.247868) (xy 77.034501 58.247873) + (xy 77.040908 58.307482) (xy 77.051337 58.335442) (xy 77.056321 58.405134) (xy 77.022835 58.466457) + (xy 76.961512 58.499941) (xy 76.89182 58.494956) (xy 76.883405 58.490938) (xy 76.883351 58.491065) + (xy 76.87619 58.487965) (xy 76.730001 58.445493) (xy 76.73 58.445494) (xy 76.73 60.054503) (xy 76.875905 60.012115) + (xy 76.945775 60.012315) (xy 77.004445 60.050258) (xy 77.033288 60.113896) (xy 77.0345 60.131192) + (xy 77.0345 60.78787) (xy 77.034501 60.787876) (xy 77.040908 60.847481) (xy 77.053659 60.881669) + (xy 77.058642 60.951361) (xy 77.053659 60.968331) (xy 77.040908 61.002518) (xy 77.034501 61.062116) + (xy 77.034501 61.062123) (xy 77.0345 61.062135) (xy 77.0345 62.05787) (xy 77.034501 62.057876) (xy 77.041738 62.125196) + (xy 77.039992 62.125383) (xy 77.036763 62.185556) (xy 76.995892 62.242225) (xy 76.951925 62.264069) + (xy 76.92822 62.270421) (xy 76.928208 62.270426) (xy 76.791289 62.349475) (xy 76.791281 62.349481) + (xy 76.537583 62.603181) (xy 76.47626 62.636666) (xy 76.449902 62.6395) (xy 69.813912 62.6395) (xy 69.746873 62.619815) + (xy 69.701118 62.567011) (xy 69.691174 62.497853) (xy 69.720199 62.434297) (xy 69.778977 62.396523) + (xy 69.7798 62.396284) (xy 69.823049 62.383909) (xy 70.003407 62.289698) (xy 70.161109 62.161109) + (xy 70.289698 62.003407) (xy 70.383909 61.823049) (xy 70.439886 61.627418) (xy 70.4505 61.508037) + (xy 70.450499 60.391964) (xy 70.439886 60.272582) (xy 70.383909 60.076951) (xy 70.289698 59.896593) + (xy 70.18175 59.764205) (xy 70.161109 59.73889) (xy 70.116032 59.702135) (xy 71.6495 59.702135) + (xy 71.6495 61.29787) (xy 71.649501 61.297876) (xy 71.655908 61.357483) (xy 71.706202 61.492328) + (xy 71.706206 61.492335) (xy 71.792452 61.607544) (xy 71.792455 61.607547) (xy 71.907664 61.693793) + (xy 71.907671 61.693797) (xy 72.042517 61.744091) (xy 72.042516 61.744091) (xy 72.049444 61.744835) + (xy 72.102127 61.7505) (xy 73.697872 61.750499) (xy 73.757483 61.744091) (xy 73.892331 61.693796) + (xy 74.007546 61.607546) (xy 74.093796 61.492331) (xy 74.144091 61.357483) (xy 74.1505 61.297873) + (xy 74.150499 59.702128) (xy 74.144091 59.642517) (xy 74.136703 59.62271) (xy 74.093797 59.507671) + (xy 74.093793 59.507664) (xy 74.007547 59.392455) (xy 74.007544 59.392453) (xy 73.988819 59.378435) + (xy 73.949437 59.348953) (xy 73.907567 59.293019) (xy 73.902583 59.223327) (xy 73.936069 59.162004) + (xy 73.949439 59.15042) (xy 74.007189 59.107188) (xy 74.00719 59.107187) (xy 74.075976 59.015302) + (xy 74.7395 59.015302) (xy 74.7395 59.484697) (xy 74.742356 59.520991) (xy 74.742357 59.520997) + (xy 74.787504 59.67639) (xy 74.787505 59.676393) (xy 74.787506 59.676395) (xy 74.802725 59.702129) + (xy 74.869881 59.815684) (xy 74.869887 59.815692) (xy 74.984307 59.930112) (xy 74.984311 59.930115) + (xy 74.984313 59.930117) (xy 75.123605 60.012494) (xy 75.164587 60.0244) (xy 75.279002 60.057642) + (xy 75.279005 60.057642) (xy 75.279007 60.057643) (xy 75.31531 60.0605) (xy 75.315318 60.0605) (xy 75.724682 60.0605) + (xy 75.72469 60.0605) (xy 75.760993 60.057643) (xy 75.760995 60.057642) (xy 75.760997 60.057642) + (xy 75.801975 60.045736) (xy 75.916395 60.012494) (xy 75.937369 60.000089) (xy 76.005088 59.982906) + (xy 76.063613 60.00009) (xy 76.083803 60.012031) (xy 76.23 60.054504) (xy 76.23 59.748352) (xy 76.247267 59.685233) + (xy 76.252494 59.676395) (xy 76.2673 59.625435) (xy 76.297642 59.520997) (xy 76.297643 59.520991) + (xy 76.297888 59.517876) (xy 76.3005 59.48469) (xy 76.3005 59.01531) (xy 76.297643 58.979007) (xy 76.296957 58.976647) + (xy 76.252495 58.823608) (xy 76.252492 58.8236) (xy 76.247266 58.814763) (xy 76.23 58.751645) (xy 76.23 58.445494) + (xy 76.229998 58.445493) (xy 76.083809 58.487965) (xy 76.083806 58.487967) (xy 76.063608 58.499912) + (xy 75.995884 58.517092) (xy 75.93737 58.49991) (xy 75.916397 58.487507) (xy 75.91639 58.487504) + (xy 75.760997 58.442357) (xy 75.760991 58.442356) (xy 75.724697 58.4395) (xy 75.72469 58.4395) (xy 75.31531 58.4395) + (xy 75.315302 58.4395) (xy 75.279008 58.442356) (xy 75.279002 58.442357) (xy 75.123609 58.487504) + (xy 75.123606 58.487505) (xy 74.984315 58.569881) (xy 74.984307 58.569887) (xy 74.869887 58.684307) + (xy 74.869881 58.684315) (xy 74.787505 58.823606) (xy 74.787504 58.823609) (xy 74.742357 58.979002) + (xy 74.742356 58.979008) (xy 74.7395 59.015302) (xy 74.075976 59.015302) (xy 74.09335 58.992093) + (xy 74.093354 58.992086) (xy 74.101763 58.969542) (xy 74.143596 58.857379) (xy 74.143598 58.857372) + (xy 74.149999 58.797844) (xy 74.15 58.797827) (xy 74.15 58.25) (xy 71.65 58.25) (xy 71.65 58.797844) + (xy 71.656401 58.857372) (xy 71.656403 58.857379) (xy 71.706645 58.992086) (xy 71.706649 58.992093) + (xy 71.792809 59.107186) (xy 71.850561 59.15042) (xy 71.892432 59.206354) (xy 71.897416 59.276046) + (xy 71.863931 59.337369) (xy 71.850563 59.348952) (xy 71.792454 59.392453) (xy 71.792452 59.392455) + (xy 71.706206 59.507664) (xy 71.706202 59.507671) (xy 71.655908 59.642517) (xy 71.649908 59.698331) + (xy 71.649501 59.702123) (xy 71.6495 59.702135) (xy 70.116032 59.702135) (xy 70.025899 59.628642) + (xy 70.003407 59.610302) (xy 69.823049 59.516091) (xy 69.823048 59.51609) (xy 69.823045 59.516089) + (xy 69.705829 59.48255) (xy 69.627418 59.460114) (xy 69.627415 59.460113) (xy 69.627413 59.460113) + (xy 69.561102 59.454217) (xy 69.508037 59.4495) (xy 69.508032 59.4495) (xy 66.591971 59.4495) (xy 66.591965 59.4495) + (xy 66.591964 59.449501) (xy 66.580316 59.450536) (xy 66.472584 59.460113) (xy 66.276954 59.516089) + (xy 66.195604 59.558583) (xy 66.096593 59.610302) (xy 66.096591 59.610303) (xy 66.09659 59.610304) + (xy 65.93889 59.73889) (xy 65.817505 59.887759) (xy 65.810302 59.896593) (xy 65.782827 59.949191) + (xy 65.716089 60.076954) (xy 65.672987 60.227592) (xy 65.662257 60.265095) (xy 65.660114 60.272583) + (xy 65.660113 60.272586) (xy 65.6495 60.391966) (xy 65.6495 61.508028) (xy 65.649501 61.508034) + (xy 65.660113 61.627415) (xy 65.716089 61.823045) (xy 65.71609 61.823048) (xy 65.716091 61.823049) + (xy 65.810302 62.003407) (xy 65.810304 62.003409) (xy 65.93889 62.161109) (xy 65.991749 62.204209) + (xy 66.096593 62.289698) (xy 66.276951 62.383909) (xy 66.3202 62.396284) (xy 66.379238 62.433652) + (xy 66.408701 62.497005) (xy 66.399236 62.566231) (xy 66.353847 62.61935) (xy 66.286945 62.639497) + (xy 66.286088 62.6395) (xy 60.109097 62.6395) (xy 60.042058 62.619815) (xy 59.996303 62.567011) + (xy 59.986359 62.497853) (xy 60.015384 62.434297) (xy 60.021416 62.427819) (xy 60.592416 61.856818) + (xy 60.653739 61.823333) (xy 60.680097 61.820499) (xy 60.989168 61.820499) (xy 60.98918 61.820499) + (xy 61.025204 61.817665) (xy 61.179393 61.772869) (xy 61.237369 61.738581) (xy 61.305093 61.721398) + (xy 61.363612 61.738581) (xy 61.420805 61.772404) (xy 61.56 61.812844) (xy 61.56 61.812843) (xy 62.06 61.812843) + (xy 62.199194 61.772404) (xy 62.337285 61.690738) (xy 62.337294 61.690731) (xy 62.450731 61.577294) + (xy 62.450738 61.577285) (xy 62.532406 61.439191) (xy 62.532407 61.439188) (xy 62.577166 61.285128) + (xy 62.577167 61.285122) (xy 62.579931 61.25) (xy 62.06 61.25) (xy 62.06 61.812843) (xy 61.56 61.812843) + (xy 61.56 61.260408) (xy 61.560004 61.259404) (xy 61.560039 61.255034) (xy 61.5605 61.249181) (xy 61.560499 60.75082) + (xy 61.560434 60.75) (xy 61.560382 60.749332) (xy 61.56 60.739607) (xy 61.56 60.187154) (xy 62.06 60.187154) + (xy 62.06 60.75) (xy 62.579931 60.75) (xy 62.577167 60.714877) (xy 62.577166 60.714871) (xy 62.532407 60.560811) + (xy 62.532406 60.560808) (xy 62.450738 60.422714) (xy 62.450731 60.422705) (xy 62.337294 60.309268) + (xy 62.337285 60.309261) (xy 62.199191 60.227593) (xy 62.199188 60.227591) (xy 62.060001 60.187153) + (xy 62.06 60.187154) (xy 61.56 60.187154) (xy 61.559998 60.187153) (xy 61.420811 60.227591) (xy 61.42081 60.227592) + (xy 61.363611 60.261419) (xy 61.295886 60.2786) (xy 61.237371 60.261419) (xy 61.180174 60.227593) + (xy 61.179393 60.227131) (xy 61.179392 60.22713) (xy 61.179391 60.22713) (xy 61.179388 60.227129) + (xy 61.025208 60.182335) (xy 61.025202 60.182334) (xy 60.989181 60.1795) (xy 60.59083 60.1795) (xy 60.590808 60.179501) + (xy 60.554794 60.182335) (xy 60.400611 60.227129) (xy 60.400606 60.227131) (xy 60.262404 60.308863) + (xy 60.262396 60.308869) (xy 60.148869 60.422396) (xy 60.148863 60.422404) (xy 60.067131 60.560606) + (xy 60.067129 60.560612) (xy 60.025634 60.703438) (xy 59.994239 60.756524) (xy 59.557671 61.193092) + (xy 59.553503 61.195367) (xy 59.550925 61.199355) (xy 59.523129 61.211953) (xy 59.496348 61.226577) + (xy 59.491611 61.226238) (xy 59.487286 61.228199) (xy 59.457091 61.223769) (xy 59.426656 61.221593) + (xy 59.422854 61.218747) (xy 59.418157 61.218058) (xy 59.395154 61.19801) (xy 59.370723 61.179721) + (xy 59.368073 61.174408) (xy 59.365484 61.172152) (xy 59.350914 61.140006) (xy 59.344641 61.118415) + (xy 59.334555 61.083697) (xy 59.334555 61.014507) (xy 59.3671 60.90249) (xy 59.367295 60.900001) + (xy 59.367295 60.9) (xy 59.291308 60.9) (xy 59.224269 60.880315) (xy 59.203631 60.863685) (xy 59.121865 60.781919) + (xy 58.980398 60.698256) (xy 58.980397 60.698255) (xy 58.980396 60.698255) (xy 58.980393 60.698254) + (xy 58.822573 60.652402) (xy 58.822567 60.652401) (xy 58.785701 60.6495) (xy 58.785694 60.6495) + (xy 58.269 60.6495) (xy 58.260314 60.646949) (xy 58.251353 60.648238) (xy 58.227312 60.637259) (xy 58.201961 60.629815) + (xy 58.196033 60.622974) (xy 58.187797 60.619213) (xy 58.173507 60.596978) (xy 58.156206 60.577011) + (xy 58.153918 60.566496) (xy 58.150023 60.560435) (xy 58.145 60.5255) (xy 58.145 60.524) (xy 58.164685 60.456961) + (xy 58.217489 60.411206) (xy 58.269 60.4) (xy 59.367295 60.4) (xy 59.367295 60.399998) (xy 59.3671 60.397513) + (xy 59.321281 60.239801) (xy 59.237685 60.098447) (xy 59.237678 60.098438) (xy 59.121561 59.982321) + (xy 59.121552 59.982314) (xy 58.980196 59.898717) (xy 58.980193 59.898716) (xy 58.822495 59.8529) + (xy 58.822482 59.852898) (xy 58.817563 59.852511) (xy 58.758509 59.83) (xy 57.946988 59.83) (xy 57.964205 59.82006) + (xy 58.02006 59.764205) (xy 58.059556 59.695796) (xy 58.08 59.619496) (xy 58.08 59.540504) (xy 58.059556 59.464204) + (xy 58.02006 59.395795) (xy 57.964205 59.33994) (xy 57.946988 59.33) (xy 58.749862 59.33) (xy 58.741569 59.288309) + (xy 58.741569 59.288307) (xy 58.666192 59.106328) (xy 58.666185 59.106315) (xy 58.556751 58.942537) + (xy 58.556748 58.942533) (xy 58.417466 58.803251) (xy 58.417462 58.803248) (xy 58.253684 58.693814) + (xy 58.253671 58.693807) (xy 58.071693 58.61843) (xy 58.071681 58.618427) (xy 57.878495 58.58) (xy 57.48 58.58) + (xy 57.48 59.28) (xy 56.98 59.28) (xy 56.98 58.58) (xy 56.581504 58.58) (xy 56.388318 58.618427) + (xy 56.388306 58.61843) (xy 56.206328 58.693807) (xy 56.206315 58.693814) (xy 56.042537 58.803248) + (xy 56.042533 58.803251) (xy 55.903251 58.942533) (xy 55.903248 58.942537) (xy 55.793814 59.106315) + (xy 55.793807 59.106328) (xy 55.71843 59.288307) (xy 55.71843 59.288309) (xy 55.710138 59.33) (xy 56.513012 59.33) + (xy 56.495795 59.33994) (xy 56.43994 59.395795) (xy 56.400444 59.464204) (xy 56.38 59.540504) (xy 56.38 59.619496) + (xy 56.400444 59.695796) (xy 56.43994 59.764205) (xy 56.495795 59.82006) (xy 56.513012 59.83) (xy 55.710136 59.83) + (xy 55.699762 59.84264) (xy 55.697533 59.867544) (xy 55.654668 59.922721) (xy 55.588778 59.945963) + (xy 55.520781 59.929894) (xy 55.494463 59.909822) (xy 54.786819 59.202178) (xy 54.753334 59.140855) + (xy 54.7505 59.114497) (xy 54.7505 58.270942) (xy 54.744318 58.247873) (xy 54.744318 58.247872) + (xy 54.739534 58.230019) (xy 54.709577 58.118216) (xy 54.66548 58.041837) (xy 54.630524 57.98129) + (xy 54.630521 57.981286) (xy 54.63052 57.981284) (xy 54.518716 57.86948) (xy 54.518715 57.869479) + (xy 54.514385 57.865149) (xy 54.514374 57.865139) (xy 53.972177 57.322942) (xy 53.938692 57.261619) + (xy 53.938607 57.209295) (xy 53.939998 57.202799) (xy 53.939999 57.202797) (xy 53.9505 57.100009) + (xy 53.950499 55.699992) (xy 53.950498 55.699983) (xy 54.4495 55.699983) (xy 54.4495 57.100001) + (xy 54.449501 57.100018) (xy 54.46 57.202796) (xy 54.460001 57.202799) (xy 54.505666 57.340606) + (xy 54.515186 57.369334) (xy 54.607288 57.518656) (xy 54.731344 57.642712) (xy 54.880666 57.734814) + (xy 55.047203 57.789999) (xy 55.149991 57.8005) (xy 57.250008 57.800499) (xy 57.352797 57.789999) + (xy 57.519334 57.734814) (xy 57.527139 57.73) (xy 60.445496 57.73) (xy 60.487968 57.876195) (xy 60.570278 58.015374) + (xy 60.570285 58.015383) (xy 60.684616 58.129714) (xy 60.684625 58.129721) (xy 60.823804 58.212031) + (xy 60.979089 58.257145) (xy 61 58.258789) (xy 61 57.73) (xy 60.445496 57.73) (xy 57.527139 57.73) + (xy 57.668656 57.642712) (xy 57.792712 57.518656) (xy 57.884814 57.369334) (xy 57.939999 57.202797) + (xy 57.941154 57.191492) (xy 57.96755 57.1268) (xy 58.024731 57.086648) (xy 58.094542 57.083785) + (xy 58.138823 57.104828) (xy 58.257664 57.193793) (xy 58.257671 57.193797) (xy 58.392517 57.244091) + (xy 58.392516 57.244091) (xy 58.399444 57.244835) (xy 58.452127 57.2505) (xy 60.047872 57.250499) + (xy 60.107483 57.244091) (xy 60.242328 57.193797) (xy 60.242329 57.193797) (xy 60.242329 57.193796) + (xy 60.242331 57.193796) (xy 60.255863 57.183665) (xy 60.321324 57.159247) (xy 60.389597 57.174096) + (xy 60.429335 57.208478) (xy 60.445494 57.23) (xy 60.751648 57.23) (xy 60.814766 57.247267) (xy 60.823605 57.252494) + (xy 60.823608 57.252494) (xy 60.82361 57.252496) (xy 60.979002 57.297642) (xy 60.979005 57.297642) + (xy 60.979007 57.297643) (xy 61.01531 57.3005) (xy 61.015318 57.3005) (xy 61.126 57.3005) (xy 61.193039 57.320185) + (xy 61.238794 57.372989) (xy 61.25 57.4245) (xy 61.25 57.48) (xy 61.376 57.48) (xy 61.443039 57.499685) + (xy 61.488794 57.552489) (xy 61.5 57.604) (xy 61.5 58.258789) (xy 61.520913 58.257145) (xy 61.62059 58.228186) + (xy 61.690459 58.228385) (xy 61.749129 58.266327) (xy 61.777973 58.329965) (xy 61.778543 58.334659) + (xy 61.785494 58.402697) (xy 61.840641 58.569119) (xy 61.840643 58.569124) (xy 61.932684 58.718345) + (xy 62.056654 58.842315) (xy 62.205875 58.934356) (xy 62.20588 58.934358) (xy 62.372302 58.989505) + (xy 62.372309 58.989506) (xy 62.475019 58.999999) (xy 62.749999 58.999999) (xy 63.25 58.999999) + (xy 63.524972 58.999999) (xy 63.524986 58.999998) (xy 63.627697 58.989505) (xy 63.794119 58.934358) + (xy 63.794124 58.934356) (xy 63.943345 58.842315) (xy 64.067315 58.718345) (xy 64.159356 58.569124) + (xy 64.159358 58.569119) (xy 64.214505 58.402697) (xy 64.214506 58.40269) (xy 64.224999 58.299986) + (xy 64.225 58.299973) (xy 64.225 58.25) (xy 63.25 58.25) (xy 63.25 58.999999) (xy 62.749999 58.999999) + (xy 62.75 58.999998) (xy 62.75 58.124) (xy 62.769685 58.056961) (xy 62.822489 58.011206) (xy 62.874 58) + (xy 63 58) (xy 63 57.874) (xy 63.019685 57.806961) (xy 63.072489 57.761206) (xy 63.124 57.75) (xy 64.224999 57.75) + (xy 64.224999 57.700028) (xy 64.224998 57.700013) (xy 64.214505 57.597302) (xy 64.159358 57.43088) + (xy 64.159356 57.430875) (xy 64.067647 57.282192) (xy 63.984444 57.202155) (xy 71.65 57.202155) + (xy 71.65 57.75) (xy 72.65 57.75) (xy 73.15 57.75) (xy 74.15 57.75) (xy 74.15 57.202172) (xy 74.149999 57.202155) + (xy 74.143598 57.142627) (xy 74.143596 57.14262) (xy 74.093354 57.007913) (xy 74.09335 57.007906) + (xy 74.00719 56.892812) (xy 74.007187 56.892809) (xy 73.892093 56.806649) (xy 73.892086 56.806645) + (xy 73.757379 56.756403) (xy 73.757372 56.756401) (xy 73.697844 56.75) (xy 73.15 56.75) (xy 73.15 57.75) + (xy 72.65 57.75) (xy 72.65 56.75) (xy 72.102155 56.75) (xy 72.042627 56.756401) (xy 72.04262 56.756403) + (xy 71.907913 56.806645) (xy 71.907906 56.806649) (xy 71.792812 56.892809) (xy 71.792809 56.892812) + (xy 71.706649 57.007906) (xy 71.706645 57.007913) (xy 71.656403 57.14262) (xy 71.656401 57.142627) + (xy 71.65 57.202155) (xy 63.984444 57.202155) (xy 63.919475 57.139658) (xy 63.90846 57.120383) (xy 63.893617 57.10388) + (xy 63.891463 57.090641) (xy 63.884808 57.078996) (xy 63.885961 57.056828) (xy 63.882397 57.034917) + (xy 63.887742 57.022614) (xy 63.88844 57.00922) (xy 63.901396 56.991193) (xy 63.910243 56.970836) + (xy 63.925581 56.957546) (xy 63.929219 56.952485) (xy 63.93327 56.950883) (xy 63.940344 56.944754) + (xy 63.943656 56.942712) (xy 64.067712 56.818656) (xy 64.159814 56.669334) (xy 64.214999 56.502797) + (xy 64.2255 56.400009) (xy 64.225499 55.799992) (xy 64.224223 55.787505) (xy 64.214999 55.697203) + (xy 64.214998 55.6972) (xy 64.196856 55.642452) (xy 64.159814 55.530666) (xy 64.067712 55.381344) + (xy 63.943656 55.257288) (xy 63.850888 55.200069) (xy 63.794336 55.165187) (xy 63.794331 55.165185) + (xy 63.792862 55.164698) (xy 63.627797 55.110001) (xy 63.627795 55.11) (xy 63.52501 55.0995) (xy 62.474998 55.0995) + (xy 62.47498 55.099501) (xy 62.372203 55.11) (xy 62.3722 55.110001) (xy 62.205668 55.165185) (xy 62.205663 55.165187) + (xy 62.056342 55.257289) (xy 61.932289 55.381342) (xy 61.840187 55.530663) (xy 61.840185 55.530668) + (xy 61.785746 55.694955) (xy 61.745973 55.7524) (xy 61.681457 55.779223) (xy 61.633445 55.775027) + (xy 61.520997 55.742357) (xy 61.520991 55.742356) (xy 61.484697 55.7395) (xy 61.48469 55.7395) (xy 61.01531 55.7395) + (xy 61.015302 55.7395) (xy 60.979008 55.742356) (xy 60.979002 55.742357) (xy 60.823609 55.787504) + (xy 60.823606 55.787505) (xy 60.68762 55.867927) (xy 60.619896 55.88511) (xy 60.553633 55.86295) + (xy 60.50987 55.808484) (xy 60.500499 55.761195) (xy 60.500499 55.202129) (xy 60.500498 55.202123) + (xy 60.498479 55.183343) (xy 60.494091 55.142517) (xy 60.493213 55.140164) (xy 60.443797 55.007671) + (xy 60.443793 55.007664) (xy 60.357547 54.892455) (xy 60.357544 54.892452) (xy 60.242335 54.806206) + (xy 60.242328 54.806202) (xy 60.107482 54.755908) (xy 60.107483 54.755908) (xy 60.047883 54.749501) + (xy 60.047881 54.7495) (xy 60.047873 54.7495) (xy 60.047864 54.7495) (xy 58.452129 54.7495) (xy 58.452123 54.749501) + (xy 58.392516 54.755908) (xy 58.257671 54.806202) (xy 58.257664 54.806206) (xy 58.142455 54.892452) + (xy 58.142452 54.892455) (xy 58.056206 55.007664) (xy 58.056202 55.007671) (xy 58.005908 55.142516) + (xy 57.99944 55.202678) (xy 57.972701 55.267229) (xy 57.915308 55.307076) (xy 57.845483 55.309569) + (xy 57.78847 55.277102) (xy 57.668657 55.157289) (xy 57.668656 55.157288) (xy 57.55757 55.08877) + (xy 57.519336 55.065187) (xy 57.519331 55.065185) (xy 57.517862 55.064698) (xy 57.352797 55.010001) + (xy 57.352795 55.01) (xy 57.25001 54.9995) (xy 55.149998 54.9995) (xy 55.149981 54.999501) (xy 55.047203 55.01) + (xy 55.0472 55.010001) (xy 54.880668 55.065185) (xy 54.880663 55.065187) (xy 54.731342 55.157289) + (xy 54.607289 55.281342) (xy 54.515187 55.430663) (xy 54.515185 55.430668) (xy 54.490253 55.505908) + (xy 54.460001 55.597203) (xy 54.460001 55.597204) (xy 54.46 55.597204) (xy 54.4495 55.699983) (xy 53.950498 55.699983) + (xy 53.949984 55.694955) (xy 53.939999 55.597203) (xy 53.939998 55.5972) (xy 53.926413 55.556204) + (xy 53.884814 55.430666) (xy 53.792712 55.281344) (xy 53.668656 55.157288) (xy 53.55757 55.08877) + (xy 53.519336 55.065187) (xy 53.519331 55.065185) (xy 53.517862 55.064698) (xy 53.352797 55.010001) + (xy 53.352795 55.01) (xy 53.25001 54.9995) (xy 51.149998 54.9995) (xy 51.149981 54.999501) (xy 51.047203 55.01) + (xy 51.0472 55.010001) (xy 50.880668 55.065185) (xy 50.880663 55.065187) (xy 50.731342 55.157289) + (xy 50.712181 55.176451) (xy 50.650858 55.209936) (xy 50.581166 55.204952) (xy 50.525233 55.16308) + (xy 50.500816 55.097616) (xy 50.5005 55.08877) (xy 50.5005 54.024986) (xy 60.550001 54.024986) (xy 60.560494 54.127697) + (xy 60.615641 54.294119) (xy 60.615643 54.294124) (xy 60.707684 54.443345) (xy 60.831654 54.567315) + (xy 60.980875 54.659356) (xy 60.98088 54.659358) (xy 61.147302 54.714505) (xy 61.147309 54.714506) + (xy 61.250019 54.724999) (xy 61.299999 54.724998) (xy 61.3 54.724998) (xy 61.3 53.75) (xy 60.550001 53.75) + (xy 60.550001 54.024986) (xy 50.5005 54.024986) (xy 50.5005 49.899984) (xy 52.3495 49.899984) (xy 52.3495 52.300015) + (xy 52.36 52.402795) (xy 52.360001 52.402797) (xy 52.379603 52.461951) (xy 52.415186 52.569335) + (xy 52.415187 52.569337) (xy 52.507286 52.718651) (xy 52.507289 52.718655) (xy 52.631344 52.84271) + (xy 52.631348 52.842713) (xy 52.780662 52.934812) (xy 52.780664 52.934813) (xy 52.780666 52.934814) + (xy 52.947203 52.989999) (xy 53.049992 53.0005) (xy 53.049997 53.0005) (xy 55.450003 53.0005) (xy 55.450008 53.0005) + (xy 55.552797 52.989999) (xy 55.719334 52.934814) (xy 55.868655 52.842711) (xy 55.992711 52.718655) + (xy 56.084814 52.569334) (xy 56.139999 52.402797) (xy 56.1505 52.300008) (xy 56.1505 49.899992) + (xy 56.139999 49.797203) (xy 56.107783 49.699983) (xy 59.3495 49.699983) (xy 59.3495 51.800001) + (xy 59.349501 51.800018) (xy 59.36 51.902796) (xy 59.360001 51.902799) (xy 59.412544 52.061361) + (xy 59.415186 52.069334) (xy 59.507288 52.218656) (xy 59.631344 52.342712) (xy 59.780666 52.434814) + (xy 59.947203 52.489999) (xy 60.049991 52.5005) (xy 60.520148 52.500499) (xy 60.587185 52.520183) + (xy 60.63294 52.572987) (xy 60.642884 52.642146) (xy 60.625685 52.689595) (xy 60.615646 52.705871) + (xy 60.615641 52.70588) (xy 60.560494 52.872302) (xy 60.560493 52.872309) (xy 60.55 52.975013) (xy 60.55 53.25) + (xy 61.426 53.25) (xy 61.493039 53.269685) (xy 61.538794 53.322489) (xy 61.55 53.374) (xy 61.55 53.5) + (xy 61.676 53.5) (xy 61.743039 53.519685) (xy 61.788794 53.572489) (xy 61.8 53.624) (xy 61.8 54.724999) + (xy 61.849972 54.724999) (xy 61.849986 54.724998) (xy 61.952697 54.714505) (xy 62.119119 54.659358) + (xy 62.119124 54.659356) (xy 62.268345 54.567315) (xy 62.392318 54.443342) (xy 62.394165 54.440348) + (xy 62.395969 54.438724) (xy 62.396798 54.437677) (xy 62.396976 54.437818) (xy 62.44611 54.393621) + (xy 62.515073 54.382396) (xy 62.579156 54.410236) (xy 62.605243 54.440341) (xy 62.607288 54.443656) + (xy 62.731344 54.567712) (xy 62.880666 54.659814) (xy 63.047203 54.714999) (xy 63.149991 54.7255) + (xy 63.750008 54.725499) (xy 63.750016 54.725498) (xy 63.750019 54.725498) (xy 63.806302 54.719748) + (xy 63.852797 54.714999) (xy 64.019334 54.659814) (xy 64.168656 54.567712) (xy 64.287822 54.448545) + (xy 64.349141 54.415063) (xy 64.418833 54.420047) (xy 64.474767 54.461918) (xy 64.499184 54.527382) + (xy 64.4995 54.536229) (xy 64.4995 55.351122) (xy 64.499501 55.351125) (xy 64.502399 55.393886) + (xy 64.502399 55.393887) (xy 64.520034 55.464796) (xy 64.541247 55.550097) (xy 64.54836 55.578696) + (xy 64.632967 55.749292) (xy 64.632969 55.749295) (xy 64.752277 55.897721) (xy 64.752278 55.897722) + (xy 64.900704 56.01703) (xy 64.900707 56.017032) (xy 65.071302 56.101639) (xy 65.071303 56.101639) + (xy 65.071307 56.101641) (xy 65.256111 56.1476) (xy 65.298877 56.1505) (xy 66.201122 56.150499) + (xy 66.243889 56.1476) (xy 66.428693 56.101641) (xy 66.599296 56.01703) (xy 66.747722 55.897722) + (xy 66.803353 55.828514) (xy 66.860696 55.788595) (xy 66.930518 55.786015) (xy 66.990651 55.821594) + (xy 66.996647 55.828514) (xy 67.052277 55.897721) (xy 67.052278 55.897722) (xy 67.200704 56.01703) + (xy 67.200707 56.017032) (xy 67.371302 56.101639) (xy 67.371303 56.101639) (xy 67.371307 56.101641) + (xy 67.556111 56.1476) (xy 67.598877 56.1505) (xy 68.501122 56.150499) (xy 68.543889 56.1476) (xy 68.728693 56.101641) + (xy 68.899296 56.01703) (xy 69.047722 55.897722) (xy 69.103675 55.828112) (xy 69.161015 55.788196) + (xy 69.230837 55.785616) (xy 69.29097 55.821194) (xy 69.296967 55.828115) (xy 69.352632 55.897366) + (xy 69.352633 55.897367) (xy 69.500974 56.016607) (xy 69.500977 56.016609) (xy 69.671476 56.101168) + (xy 69.856175 56.147102) (xy 69.898903 56.15) (xy 70.1 56.15) (xy 70.6 56.15) (xy 70.801097 56.15) + (xy 70.843824 56.147102) (xy 71.028523 56.101168) (xy 71.199022 56.016609) (xy 71.199025 56.016607) + (xy 71.347366 55.897367) (xy 71.347367 55.897366) (xy 71.466607 55.749025) (xy 71.466609 55.749022) + (xy 71.551168 55.578523) (xy 71.597102 55.393824) (xy 71.6 55.351096) (xy 71.6 54.9) (xy 70.6 54.9) + (xy 70.6 56.15) (xy 70.1 56.15) (xy 70.1 54.4) (xy 70.6 54.4) (xy 71.6 54.4) (xy 71.6 53.948903) + (xy 71.597102 53.906175) (xy 71.551168 53.721476) (xy 71.466609 53.550977) (xy 71.466607 53.550974) + (xy 71.347367 53.402633) (xy 71.347366 53.402632) (xy 71.199025 53.283392) (xy 71.199022 53.28339) + (xy 71.028523 53.198831) (xy 70.843824 53.152897) (xy 70.801097 53.15) (xy 70.6 53.15) (xy 70.6 54.4) + (xy 70.1 54.4) (xy 70.1 53.15) (xy 69.898903 53.15) (xy 69.856175 53.152897) (xy 69.671476 53.198831) + (xy 69.500977 53.28339) (xy 69.500974 53.283392) (xy 69.352635 53.402631) (xy 69.296967 53.471885) + (xy 69.239624 53.511803) (xy 69.169801 53.514383) (xy 69.109669 53.478804) (xy 69.103673 53.471884) + (xy 69.047722 53.402278) (xy 69.047721 53.402277) (xy 68.899295 53.282969) (xy 68.899292 53.282967) + (xy 68.728697 53.19836) (xy 68.543892 53.1524) (xy 68.522506 53.15095) (xy 68.501123 53.1495) (xy 68.50112 53.1495) + (xy 67.598877 53.1495) (xy 67.598874 53.149501) (xy 67.556113 53.152399) (xy 67.556112 53.152399) + (xy 67.371303 53.19836) (xy 67.200707 53.282967) (xy 67.200704 53.282969) (xy 67.052278 53.402277) + (xy 67.052277 53.402278) (xy 66.996647 53.471486) (xy 66.939304 53.511405) (xy 66.869482 53.513985) + (xy 66.809349 53.478406) (xy 66.803353 53.471486) (xy 66.747722 53.402278) (xy 66.747721 53.402277) + (xy 66.599295 53.282969) (xy 66.599292 53.282967) (xy 66.428697 53.19836) (xy 66.243892 53.1524) + (xy 66.222506 53.15095) (xy 66.201123 53.1495) (xy 66.20112 53.1495) (xy 65.298877 53.1495) (xy 65.298874 53.149501) + (xy 65.256113 53.152399) (xy 65.256112 53.152399) (xy 65.071303 53.19836) (xy 64.900707 53.282967) + (xy 64.900704 53.282969) (xy 64.75228 53.402276) (xy 64.752278 53.402278) (xy 64.675002 53.498414) + (xy 64.671146 53.503211) (xy 64.613803 53.543129) (xy 64.543981 53.545709) (xy 64.483848 53.51013) + (xy 64.452496 53.447689) (xy 64.450499 53.425523) (xy 64.450499 52.974998) (xy 64.450498 52.97498) + (xy 64.439999 52.872203) (xy 64.439998 52.8722) (xy 64.427171 52.833492) (xy 64.384814 52.705666) + (xy 64.292712 52.556344) (xy 64.168656 52.432288) (xy 64.075888 52.375069) (xy 64.019336 52.340187) + (xy 64.019331 52.340185) (xy 64.017862 52.339698) (xy 63.852797 52.285001) (xy 63.852795 52.285) + (xy 63.75001 52.2745) (xy 63.149998 52.2745) (xy 63.14998 52.274501) (xy 63.047203 52.285) (xy 63.0472 52.285001) + (xy 62.880668 52.340185) (xy 62.880663 52.340187) (xy 62.731342 52.432289) (xy 62.607288 52.556343) + (xy 62.607283 52.556349) (xy 62.605241 52.559661) (xy 62.603247 52.561453) (xy 62.602807 52.562011) + (xy 62.602711 52.561935) (xy 62.553291 52.606383) (xy 62.484328 52.617602) (xy 62.420247 52.589755) + (xy 62.394168 52.559656) (xy 62.392319 52.556659) (xy 62.392316 52.556655) (xy 62.268345 52.432684) + (xy 62.119124 52.340643) (xy 62.119121 52.340642) (xy 62.100552 52.334489) (xy 62.043107 52.294715) + (xy 62.016285 52.230199) (xy 62.028601 52.161424) (xy 62.034019 52.151686) (xy 62.084809 52.069342) + (xy 62.084808 52.069342) (xy 62.084814 52.069334) (xy 62.139999 51.902797) (xy 62.1505 51.800009) + (xy 62.150499 49.699992) (xy 62.146454 49.660398) (xy 62.139999 49.597203) (xy 62.139998 49.5972) + (xy 62.124192 49.5495) (xy 62.084814 49.430666) (xy 61.992712 49.281344) (xy 61.868656 49.157288) + (xy 61.856813 49.149983) (xy 62.7995 49.149983) (xy 62.7995 50.350001) (xy 62.799501 50.350018) + (xy 62.81 50.452796) (xy 62.810001 50.452799) (xy 62.865185 50.619331) (xy 62.865187 50.619336) + (xy 62.891493 50.661984) (xy 62.957288 50.768656) (xy 63.081344 50.892712) (xy 63.230666 50.984814) + (xy 63.397203 51.039999) (xy 63.499991 51.0505) (xy 66.600008 51.050499) (xy 66.702797 51.039999) + (xy 66.869334 50.984814) (xy 67.018656 50.892712) (xy 67.142712 50.768656) (xy 67.234814 50.619334) + (xy 67.289999 50.452797) (xy 67.3005 50.350009) (xy 67.3005 50.349986) (xy 68.200001 50.349986) + (xy 68.210494 50.452697) (xy 68.265641 50.619119) (xy 68.265643 50.619124) (xy 68.357684 50.768345) + (xy 68.481654 50.892315) (xy 68.630875 50.984356) (xy 68.63088 50.984358) (xy 68.797302 51.039505) + (xy 68.797309 51.039506) (xy 68.900019 51.049999) (xy 70.199999 51.049999) (xy 70.7 51.049999) (xy 71.999972 51.049999) + (xy 71.999986 51.049998) (xy 72.102697 51.039505) (xy 72.269119 50.984358) (xy 72.269124 50.984356) + (xy 72.418345 50.892315) (xy 72.542315 50.768345) (xy 72.634356 50.619124) (xy 72.634358 50.619119) + (xy 72.689505 50.452697) (xy 72.689506 50.45269) (xy 72.699999 50.349986) (xy 72.7 50.349973) (xy 72.7 50) + (xy 70.7 50) (xy 70.7 51.049999) (xy 70.199999 51.049999) (xy 70.2 51.049998) (xy 70.2 50) (xy 68.200001 50) + (xy 68.200001 50.349986) (xy 67.3005 50.349986) (xy 67.300499 49.744438) (xy 67.300499 49.150013) + (xy 68.2 49.150013) (xy 68.2 49.5) (xy 70.2 49.5) (xy 70.7 49.5) (xy 72.699999 49.5) (xy 72.699999 49.150028) + (xy 72.699998 49.150013) (xy 72.689505 49.047302) (xy 72.634358 48.88088) (xy 72.634356 48.880875) + (xy 72.542315 48.731654) (xy 72.418345 48.607684) (xy 72.269124 48.515643) (xy 72.269119 48.515641) + (xy 72.102697 48.460494) (xy 72.10269 48.460493) (xy 71.999986 48.45) (xy 70.7 48.45) (xy 70.7 49.5) + (xy 70.2 49.5) (xy 70.2 48.45) (xy 68.900028 48.45) (xy 68.900012 48.450001) (xy 68.797302 48.460494) (xy 68.63088 48.515641) (xy 68.630875 48.515643) (xy 68.481654 48.607684) (xy 68.357684 48.731654) (xy 68.265643 48.880875) (xy 68.265641 48.88088) (xy 68.210494 49.047302) (xy 68.210493 49.047309) (xy 68.2 49.150013) (xy 67.300499 49.150013) (xy 67.300499 49.149998) (xy 67.300498 49.149981) (xy 67.289999 49.047203) - (xy 67.289998 49.0472) (xy 67.282476 49.0245) (xy 67.234814 48.880666) (xy 67.142712 48.731344) - (xy 67.018656 48.607288) (xy 66.925777 48.55) (xy 66.869336 48.515187) (xy 66.869331 48.515185) - (xy 66.852492 48.509605) (xy 66.702797 48.460001) (xy 66.702795 48.46) (xy 66.60001 48.4495) (xy 63.499998 48.4495) + (xy 67.289998 49.0472) (xy 67.285717 49.034282) (xy 67.234814 48.880666) (xy 67.142712 48.731344) + (xy 67.018656 48.607288) (xy 66.925888 48.550069) (xy 66.869336 48.515187) (xy 66.869331 48.515185) + (xy 66.867862 48.514698) (xy 66.702797 48.460001) (xy 66.702795 48.46) (xy 66.60001 48.4495) (xy 63.499998 48.4495) (xy 63.499981 48.449501) (xy 63.397203 48.46) (xy 63.3972 48.460001) (xy 63.230668 48.515185) (xy 63.230663 48.515187) (xy 63.081342 48.607289) (xy 62.957289 48.731342) (xy 62.865187 48.880663) (xy 62.865185 48.880668) - (xy 62.842217 48.949983) (xy 62.810001 49.047203) (xy 62.810001 49.047204) (xy 62.81 49.047204) - (xy 62.7995 49.149983) (xy 61.856813 49.149983) (xy 61.771881 49.097597) (xy 61.719336 49.065187) - (xy 61.719331 49.065185) (xy 61.717862 49.064698) (xy 61.552797 49.010001) (xy 61.552795 49.01) - (xy 61.45001 48.9995) (xy 60.049998 48.9995) (xy 60.049981 48.999501) (xy 59.947203 49.01) (xy 59.9472 49.010001) - (xy 59.780668 49.065185) (xy 59.780663 49.065187) (xy 59.631342 49.157289) (xy 59.507289 49.281342) - (xy 59.415187 49.430663) (xy 59.415185 49.430668) (xy 59.396306 49.487643) (xy 59.360001 49.597203) - (xy 59.360001 49.597204) (xy 59.36 49.597204) (xy 59.3495 49.699983) (xy 56.107783 49.699983) (xy 56.084814 49.630666) - (xy 56.075949 49.616294) (xy 55.992713 49.481348) (xy 55.99271 49.481344) (xy 55.868655 49.357289) - (xy 55.868651 49.357286) (xy 55.719337 49.265187) (xy 55.719335 49.265186) (xy 55.60231 49.226408) - (xy 55.552797 49.210001) (xy 55.552795 49.21) (xy 55.450015 49.1995) (xy 55.450008 49.1995) (xy 53.049992 49.1995) - (xy 53.049984 49.1995) (xy 52.947204 49.21) (xy 52.947203 49.210001) (xy 52.780664 49.265186) (xy 52.780662 49.265187) - (xy 52.631348 49.357286) (xy 52.631344 49.357289) (xy 52.507289 49.481344) (xy 52.507286 49.481348) - (xy 52.415187 49.630662) (xy 52.415186 49.630664) (xy 52.360001 49.797203) (xy 52.36 49.797204) - (xy 52.3495 49.899984) (xy 50.5005 49.899984) (xy 50.5005 45.975466) (xy 52.35 45.975466) (xy 52.35 46.224533) - (xy 52.382508 46.471463) (xy 52.446973 46.712049) (xy 52.542283 46.942148) (xy 52.542288 46.942159) - (xy 52.666813 47.157841) (xy 52.666819 47.157849) (xy 52.7414 47.255045) (xy 53.648958 46.347487) - (xy 53.673978 46.40789) (xy 53.745112 46.514351) (xy 53.835649 46.604888) (xy 53.94211 46.676022) - (xy 54.002511 46.701041) (xy 53.094953 47.608598) (xy 53.19215 47.68318) (xy 53.192158 47.683186) - (xy 53.40784 47.807711) (xy 53.407851 47.807716) (xy 53.63795 47.903026) (xy 53.878536 47.967491) - (xy 54.125466 48) (xy 54.374534 48) (xy 54.621463 47.967491) (xy 54.862049 47.903026) (xy 55.092148 47.807716) - (xy 55.092159 47.807711) (xy 55.307855 47.683178) (xy 55.405045 47.6086) (xy 55.405045 47.608597) - (xy 54.497488 46.701041) (xy 54.55789 46.676022) (xy 54.664351 46.604888) (xy 54.754888 46.514351) - (xy 54.826022 46.40789) (xy 54.851041 46.347489) (xy 55.758597 47.255045) (xy 55.7586 47.255045) - (xy 55.833178 47.157855) (xy 55.957711 46.942159) (xy 55.957716 46.942148) (xy 56.053026 46.712049) - (xy 56.117491 46.471463) (xy 56.15 46.224533) (xy 56.15 45.975466) (xy 56.117491 45.728536) (xy 56.10984 45.699983) - (xy 59.3495 45.699983) (xy 59.3495 47.800001) (xy 59.349501 47.800018) (xy 59.36 47.902796) (xy 59.360001 47.902799) - (xy 59.415185 48.069331) (xy 59.415187 48.069336) (xy 59.435177 48.101745) (xy 59.507288 48.218656) - (xy 59.631344 48.342712) (xy 59.780666 48.434814) (xy 59.947203 48.489999) (xy 60.049991 48.5005) - (xy 61.450008 48.500499) (xy 61.463469 48.499124) (xy 61.473209 48.498129) (xy 61.552797 48.489999) - (xy 61.719334 48.434814) (xy 61.868656 48.342712) (xy 61.992712 48.218656) (xy 62.084814 48.069334) - (xy 62.139999 47.902797) (xy 62.1505 47.800009) (xy 62.150499 47.050013) (xy 73.525 47.050013) (xy 73.525 47.1) - (xy 74.5 47.1) (xy 74.5 46.35) (xy 74.225029 46.35) (xy 74.225012 46.350001) (xy 74.122302 46.360494) - (xy 73.95588 46.415641) (xy 73.955875 46.415643) (xy 73.806654 46.507684) (xy 73.682684 46.631654) - (xy 73.590643 46.780875) (xy 73.590641 46.78088) (xy 73.535494 46.947302) (xy 73.535493 46.947309) - (xy 73.525 47.050013) (xy 62.150499 47.050013) (xy 62.150499 46.75) (xy 62.150499 45.699998) (xy 62.150498 45.699981) - (xy 62.139999 45.597203) (xy 62.139998 45.5972) (xy 62.137235 45.588863) (xy 62.084814 45.430666) + (xy 62.851451 48.922114) (xy 62.810001 49.047203) (xy 62.810001 49.047204) (xy 62.81 49.047204) + (xy 62.7995 49.149983) (xy 61.856813 49.149983) (xy 61.719334 49.065186) (xy 61.552797 49.010001) + (xy 61.552795 49.01) (xy 61.45001 48.9995) (xy 60.049998 48.9995) (xy 60.049981 48.999501) (xy 59.947203 49.01) + (xy 59.9472 49.010001) (xy 59.780668 49.065185) (xy 59.780663 49.065187) (xy 59.631342 49.157289) + (xy 59.507289 49.281342) (xy 59.415187 49.430663) (xy 59.415185 49.430668) (xy 59.398247 49.481785) + (xy 59.360001 49.597203) (xy 59.360001 49.597204) (xy 59.36 49.597204) (xy 59.3495 49.699983) (xy 56.107783 49.699983) + (xy 56.084814 49.630666) (xy 56.082479 49.626881) (xy 55.992713 49.481348) (xy 55.99271 49.481344) + (xy 55.868655 49.357289) (xy 55.868651 49.357286) (xy 55.719337 49.265187) (xy 55.719335 49.265186) + (xy 55.596549 49.224499) (xy 55.552797 49.210001) (xy 55.552795 49.21) (xy 55.450015 49.1995) (xy 55.450008 49.1995) + (xy 53.049992 49.1995) (xy 53.049984 49.1995) (xy 52.947204 49.21) (xy 52.947203 49.210001) (xy 52.780664 49.265186) + (xy 52.780662 49.265187) (xy 52.631348 49.357286) (xy 52.631344 49.357289) (xy 52.507289 49.481344) + (xy 52.507286 49.481348) (xy 52.415187 49.630662) (xy 52.415186 49.630664) (xy 52.360001 49.797203) + (xy 52.36 49.797204) (xy 52.3495 49.899984) (xy 50.5005 49.899984) (xy 50.5005 45.975466) (xy 52.35 45.975466) + (xy 52.35 46.224533) (xy 52.382508 46.471463) (xy 52.446973 46.712049) (xy 52.542283 46.942148) + (xy 52.542288 46.942159) (xy 52.666813 47.157841) (xy 52.666819 47.157849) (xy 52.7414 47.255045) + (xy 53.648958 46.347487) (xy 53.673978 46.40789) (xy 53.745112 46.514351) (xy 53.835649 46.604888) + (xy 53.94211 46.676022) (xy 54.002511 46.701041) (xy 53.094953 47.608598) (xy 53.19215 47.68318) + (xy 53.192158 47.683186) (xy 53.40784 47.807711) (xy 53.407851 47.807716) (xy 53.63795 47.903026) + (xy 53.878536 47.967491) (xy 54.125466 48) (xy 54.374534 48) (xy 54.621463 47.967491) (xy 54.862049 47.903026) + (xy 55.092148 47.807716) (xy 55.092159 47.807711) (xy 55.307855 47.683178) (xy 55.405045 47.6086) + (xy 55.405045 47.608597) (xy 54.497488 46.701041) (xy 54.55789 46.676022) (xy 54.664351 46.604888) + (xy 54.754888 46.514351) (xy 54.826022 46.40789) (xy 54.851041 46.347489) (xy 55.758597 47.255045) + (xy 55.7586 47.255045) (xy 55.833178 47.157855) (xy 55.957711 46.942159) (xy 55.957716 46.942148) + (xy 56.053026 46.712049) (xy 56.117491 46.471463) (xy 56.15 46.224533) (xy 56.15 45.975466) (xy 56.117491 45.728536) + (xy 56.10984 45.699983) (xy 59.3495 45.699983) (xy 59.3495 47.800001) (xy 59.349501 47.800018) (xy 59.36 47.902796) + (xy 59.360001 47.902799) (xy 59.415185 48.069331) (xy 59.415187 48.069336) (xy 59.435177 48.101745) + (xy 59.507288 48.218656) (xy 59.631344 48.342712) (xy 59.780666 48.434814) (xy 59.947203 48.489999) + (xy 60.049991 48.5005) (xy 61.450008 48.500499) (xy 61.552797 48.489999) (xy 61.719334 48.434814) + (xy 61.868656 48.342712) (xy 61.992712 48.218656) (xy 62.084814 48.069334) (xy 62.139999 47.902797) + (xy 62.1505 47.800009) (xy 62.150499 47.050013) (xy 73.525 47.050013) (xy 73.525 47.1) (xy 74.5 47.1) + (xy 74.5 46.35) (xy 74.225029 46.35) (xy 74.225012 46.350001) (xy 74.122302 46.360494) (xy 73.95588 46.415641) + (xy 73.955875 46.415643) (xy 73.806654 46.507684) (xy 73.682684 46.631654) (xy 73.590643 46.780875) + (xy 73.590641 46.78088) (xy 73.535494 46.947302) (xy 73.535493 46.947309) (xy 73.525 47.050013) + (xy 62.150499 47.050013) (xy 62.150499 46.75) (xy 62.150499 45.699998) (xy 62.150498 45.699981) + (xy 62.139999 45.597203) (xy 62.139998 45.5972) (xy 62.119989 45.536818) (xy 62.084814 45.430666) (xy 61.992712 45.281344) (xy 61.973905 45.262537) (xy 61.94042 45.201214) (xy 61.945404 45.131522) (xy 61.964322 45.097942) (xy 61.967706 45.093662) (xy 61.967712 45.093656) (xy 62.059814 44.944334) (xy 62.114999 44.777797) (xy 62.1255 44.675009) (xy 62.125499 43.824992) (xy 62.117838 43.75) (xy 62.114999 43.722203) @@ -28271,7 +31590,7 @@ (xy 59.440185 44.944331) (xy 59.440187 44.944336) (xy 59.470958 44.994224) (xy 59.504048 45.047872) (xy 59.532292 45.093662) (xy 59.535681 45.097948) (xy 59.56182 45.162744) (xy 59.548778 45.231386) (xy 59.526096 45.262535) (xy 59.507289 45.281342) (xy 59.415187 45.430663) (xy 59.415185 45.430668) - (xy 59.396204 45.48795) (xy 59.360001 45.597203) (xy 59.360001 45.597204) (xy 59.36 45.597204) (xy 59.3495 45.699983) + (xy 59.408779 45.45) (xy 59.360001 45.597203) (xy 59.360001 45.597204) (xy 59.36 45.597204) (xy 59.3495 45.699983) (xy 56.10984 45.699983) (xy 56.053027 45.487952) (xy 55.957716 45.257851) (xy 55.957711 45.25784) (xy 55.833186 45.042158) (xy 55.83318 45.04215) (xy 55.758598 44.944953) (xy 54.851041 45.85251) (xy 54.826022 45.79211) (xy 54.754888 45.685649) (xy 54.664351 45.595112) (xy 54.55789 45.523978) @@ -28289,6 +31608,7 @@ ) (zone (net "GND") + (locked yes) (layer "B.Cu") (uuid "fc1d8b82-a1a6-4d5a-95c1-8097c7e01c28") (hatch edge 0.5) @@ -28312,22 +31632,22 @@ (xy 62.978039 40.520185) (xy 63.023794 40.572989) (xy 63.035 40.6245) (xy 63.035 46.1) (xy 111.035 46.1) (xy 111.035 40.6245) (xy 111.054685 40.557461) (xy 111.107489 40.511706) (xy 111.159 40.5005) (xy 149.3755 40.5005) (xy 149.442539 40.520185) (xy 149.488294 40.572989) (xy 149.4995 40.6245) (xy 149.4995 109.3755) - (xy 149.479815 109.442539) (xy 149.427011 109.488294) (xy 149.3755 109.4995) (xy 147.405215 109.4995) - (xy 147.338176 109.479815) (xy 147.292421 109.427011) (xy 147.282477 109.357853) (xy 147.299986 109.312171) - (xy 147.29907 109.311642) (xy 147.425662 109.092376) (xy 147.425664 109.092373) (xy 147.521002 108.862207) - (xy 147.585482 108.621565) (xy 147.618 108.374565) (xy 147.618 108.125435) (xy 147.585482 107.878435) - (xy 147.521002 107.637793) (xy 147.425664 107.407627) (xy 147.301099 107.191873) (xy 147.149438 106.994224) - (xy 147.149433 106.994218) (xy 146.973281 106.818066) (xy 146.973274 106.81806) (xy 146.775626 106.6664) - (xy 146.559876 106.541837) (xy 146.559861 106.54183) (xy 146.329707 106.446498) (xy 146.089061 106.382017) - (xy 145.842075 106.349501) (xy 145.84207 106.3495) (xy 145.842065 106.3495) (xy 145.592935 106.3495) - (xy 145.592929 106.3495) (xy 145.592924 106.349501) (xy 145.345938 106.382017) (xy 145.105292 106.446498) - (xy 144.875138 106.54183) (xy 144.875123 106.541837) (xy 144.659373 106.6664) (xy 144.461725 106.81806) - (xy 144.461718 106.818066) (xy 144.285566 106.994218) (xy 144.28556 106.994225) (xy 144.1339 107.191873) - (xy 144.009337 107.407623) (xy 144.00933 107.407638) (xy 143.913998 107.637792) (xy 143.849517 107.878438) - (xy 143.817001 108.125424) (xy 143.817 108.125441) (xy 143.817 108.374558) (xy 143.817001 108.374575) - (xy 143.849517 108.621561) (xy 143.913998 108.862207) (xy 144.00933 109.092361) (xy 144.009337 109.092376) - (xy 144.13593 109.311642) (xy 144.134682 109.312362) (xy 144.153765 109.373263) (xy 144.135293 109.440646) - (xy 144.083323 109.487347) (xy 144.029785 109.4995) (xy 50.6245 109.4995) (xy 50.557461 109.479815) + (xy 149.479815 109.442539) (xy 149.427011 109.488294) (xy 149.3755 109.4995) (xy 147.378968 109.4995) + (xy 147.311929 109.479815) (xy 147.266174 109.427011) (xy 147.25623 109.357853) (xy 147.280592 109.300014) + (xy 147.294197 109.282282) (xy 147.351099 109.208127) (xy 147.475664 108.992373) (xy 147.571002 108.762207) + (xy 147.635482 108.521565) (xy 147.668 108.274565) (xy 147.668 108.025435) (xy 147.635482 107.778435) + (xy 147.571002 107.537793) (xy 147.475664 107.307627) (xy 147.351099 107.091873) (xy 147.199438 106.894224) + (xy 147.199433 106.894218) (xy 147.023281 106.718066) (xy 147.023274 106.71806) (xy 146.825626 106.5664) + (xy 146.609876 106.441837) (xy 146.609861 106.44183) (xy 146.379707 106.346498) (xy 146.139061 106.282017) + (xy 145.892075 106.249501) (xy 145.89207 106.2495) (xy 145.892065 106.2495) (xy 145.642935 106.2495) + (xy 145.642929 106.2495) (xy 145.642924 106.249501) (xy 145.395938 106.282017) (xy 145.155292 106.346498) + (xy 144.925138 106.44183) (xy 144.925123 106.441837) (xy 144.709373 106.5664) (xy 144.511725 106.71806) + (xy 144.511718 106.718066) (xy 144.335566 106.894218) (xy 144.33556 106.894225) (xy 144.1839 107.091873) + (xy 144.059337 107.307623) (xy 144.05933 107.307638) (xy 143.963998 107.537792) (xy 143.899517 107.778438) + (xy 143.867001 108.025424) (xy 143.867 108.025441) (xy 143.867 108.274558) (xy 143.867001 108.274575) + (xy 143.899517 108.521561) (xy 143.963998 108.762207) (xy 144.05933 108.992361) (xy 144.059337 108.992376) + (xy 144.1839 109.208126) (xy 144.254408 109.300014) (xy 144.279602 109.365183) (xy 144.265564 109.433628) + (xy 144.21675 109.483617) (xy 144.156032 109.4995) (xy 50.6245 109.4995) (xy 50.557461 109.479815) (xy 50.511706 109.427011) (xy 50.5005 109.3755) (xy 50.5005 102.802135) (xy 59.8995 102.802135) (xy 59.8995 104.89787) (xy 59.899501 104.897876) (xy 59.905908 104.957483) (xy 59.956202 105.092328) (xy 59.956206 105.092335) (xy 60.042452 105.207544) (xy 60.042455 105.207547) (xy 60.157664 105.293793) @@ -28501,114 +31821,145 @@ (xy 60.292516 94.144091) (xy 60.299444 94.144835) (xy 60.352127 94.1505) (xy 63.647872 94.150499) (xy 63.707483 94.144091) (xy 63.842331 94.093796) (xy 63.957546 94.007546) (xy 64.043796 93.892331) (xy 64.094091 93.757483) (xy 64.1005 93.697873) (xy 64.100499 92.636649) (xy 64.100499 91.602129) - (xy 64.100498 91.602123) (xy 64.100497 91.602116) (xy 64.094091 91.542517) (xy 64.043796 91.407669) - (xy 64.043795 91.407668) (xy 64.043793 91.407664) (xy 63.957547 91.292455) (xy 63.957544 91.292452) + (xy 64.100498 91.602123) (xy 64.100497 91.602116) (xy 64.094091 91.542517) (xy 64.079276 91.502797) + (xy 64.043797 91.407671) (xy 64.043793 91.407664) (xy 63.957547 91.292455) (xy 63.957544 91.292452) (xy 63.842335 91.206206) (xy 63.842328 91.206202) (xy 63.707482 91.155908) (xy 63.707483 91.155908) (xy 63.647883 91.149501) (xy 63.647881 91.1495) (xy 63.647873 91.1495) (xy 63.647864 91.1495) (xy 60.352129 91.1495) (xy 60.352123 91.149501) (xy 60.292516 91.155908) (xy 60.157671 91.206202) (xy 60.157664 91.206206) (xy 60.042455 91.292452) (xy 60.042452 91.292455) (xy 59.956206 91.407664) (xy 59.956202 91.407671) (xy 59.905908 91.542517) (xy 59.899501 91.602116) (xy 59.899501 91.602123) (xy 59.8995 91.602135) - (xy 50.5005 91.602135) (xy 50.5005 88.299984) (xy 143.802 88.299984) (xy 143.802 90.700015) (xy 143.8125 90.802795) - (xy 143.812501 90.802796) (xy 143.867686 90.969335) (xy 143.867687 90.969337) (xy 143.959786 91.118651) - (xy 143.959789 91.118655) (xy 144.083844 91.24271) (xy 144.083848 91.242713) (xy 144.233162 91.334812) - (xy 144.233164 91.334813) (xy 144.233166 91.334814) (xy 144.399703 91.389999) (xy 144.502492 91.4005) - (xy 144.502497 91.4005) (xy 146.902503 91.4005) (xy 146.902508 91.4005) (xy 147.005297 91.389999) - (xy 147.171834 91.334814) (xy 147.321155 91.242711) (xy 147.445211 91.118655) (xy 147.537314 90.969334) - (xy 147.592499 90.802797) (xy 147.603 90.700008) (xy 147.603 88.299992) (xy 147.592499 88.197203) - (xy 147.537314 88.030666) (xy 147.445211 87.881345) (xy 147.321155 87.757289) (xy 147.321151 87.757286) - (xy 147.171837 87.665187) (xy 147.171835 87.665186) (xy 147.088565 87.637593) (xy 147.005297 87.610001) - (xy 147.005295 87.61) (xy 146.902515 87.5995) (xy 146.902508 87.5995) (xy 144.502492 87.5995) (xy 144.502484 87.5995) - (xy 144.399704 87.61) (xy 144.399703 87.610001) (xy 144.233164 87.665186) (xy 144.233162 87.665187) - (xy 144.083848 87.757286) (xy 144.083844 87.757289) (xy 143.959789 87.881344) (xy 143.959786 87.881348) - (xy 143.867687 88.030662) (xy 143.867686 88.030664) (xy 143.812501 88.197203) (xy 143.8125 88.197204) - (xy 143.802 88.299984) (xy 50.5005 88.299984) (xy 50.5005 84.375441) (xy 143.802 84.375441) (xy 143.802 84.624558) - (xy 143.802001 84.624575) (xy 143.834517 84.871561) (xy 143.898998 85.112207) (xy 143.99433 85.342361) - (xy 143.994337 85.342376) (xy 144.1189 85.558126) (xy 144.27056 85.755774) (xy 144.270566 85.755781) - (xy 144.446718 85.931933) (xy 144.446725 85.931939) (xy 144.644373 86.083599) (xy 144.860123 86.208162) - (xy 144.860138 86.208169) (xy 144.959325 86.249253) (xy 145.090293 86.303502) (xy 145.330935 86.367982) - (xy 145.577935 86.4005) (xy 145.577942 86.4005) (xy 145.827058 86.4005) (xy 145.827065 86.4005) - (xy 146.074065 86.367982) (xy 146.314707 86.303502) (xy 146.544873 86.208164) (xy 146.760627 86.083599) - (xy 146.958276 85.931938) (xy 147.134438 85.755776) (xy 147.286099 85.558127) (xy 147.410664 85.342373) - (xy 147.506002 85.112207) (xy 147.570482 84.871565) (xy 147.603 84.624565) (xy 147.603 84.375435) - (xy 147.570482 84.128435) (xy 147.506002 83.887793) (xy 147.410664 83.657627) (xy 147.286099 83.441873) - (xy 147.134438 83.244224) (xy 147.134433 83.244218) (xy 146.958281 83.068066) (xy 146.958274 83.06806) - (xy 146.760626 82.9164) (xy 146.544876 82.791837) (xy 146.544861 82.79183) (xy 146.314707 82.696498) - (xy 146.074061 82.632017) (xy 145.827075 82.599501) (xy 145.82707 82.5995) (xy 145.827065 82.5995) - (xy 145.577935 82.5995) (xy 145.577929 82.5995) (xy 145.577924 82.599501) (xy 145.330938 82.632017) - (xy 145.090292 82.696498) (xy 144.860138 82.79183) (xy 144.860123 82.791837) (xy 144.644373 82.9164) - (xy 144.446725 83.06806) (xy 144.446718 83.068066) (xy 144.270566 83.244218) (xy 144.27056 83.244225) - (xy 144.1189 83.441873) (xy 143.994337 83.657623) (xy 143.99433 83.657638) (xy 143.898998 83.887792) - (xy 143.834517 84.128438) (xy 143.802001 84.375424) (xy 143.802 84.375441) (xy 50.5005 84.375441) + (xy 50.5005 91.602135) (xy 50.5005 88.999984) (xy 143.8995 88.999984) (xy 143.8995 91.400015) (xy 143.91 91.502795) + (xy 143.910001 91.502796) (xy 143.965186 91.669335) (xy 143.965187 91.669337) (xy 144.057286 91.818651) + (xy 144.057289 91.818655) (xy 144.181344 91.94271) (xy 144.181348 91.942713) (xy 144.330662 92.034812) + (xy 144.330664 92.034813) (xy 144.330666 92.034814) (xy 144.497203 92.089999) (xy 144.599992 92.1005) + (xy 144.599997 92.1005) (xy 147.000003 92.1005) (xy 147.000008 92.1005) (xy 147.102797 92.089999) + (xy 147.269334 92.034814) (xy 147.418655 91.942711) (xy 147.542711 91.818655) (xy 147.634814 91.669334) + (xy 147.689999 91.502797) (xy 147.7005 91.400008) (xy 147.7005 88.999992) (xy 147.689999 88.897203) + (xy 147.634814 88.730666) (xy 147.542711 88.581345) (xy 147.418655 88.457289) (xy 147.418651 88.457286) + (xy 147.269337 88.365187) (xy 147.269335 88.365186) (xy 147.186065 88.337593) (xy 147.102797 88.310001) + (xy 147.102795 88.31) (xy 147.000015 88.2995) (xy 147.000008 88.2995) (xy 144.599992 88.2995) (xy 144.599984 88.2995) + (xy 144.497204 88.31) (xy 144.497203 88.310001) (xy 144.330664 88.365186) (xy 144.330662 88.365187) + (xy 144.181348 88.457286) (xy 144.181344 88.457289) (xy 144.057289 88.581344) (xy 144.057286 88.581348) + (xy 143.965187 88.730662) (xy 143.965186 88.730664) (xy 143.910001 88.897203) (xy 143.91 88.897204) + (xy 143.8995 88.999984) (xy 50.5005 88.999984) (xy 50.5005 85.075441) (xy 143.8995 85.075441) (xy 143.8995 85.324558) + (xy 143.899501 85.324575) (xy 143.932017 85.571561) (xy 143.996498 85.812207) (xy 144.09183 86.042361) + (xy 144.091837 86.042376) (xy 144.2164 86.258126) (xy 144.36806 86.455774) (xy 144.368066 86.455781) + (xy 144.544218 86.631933) (xy 144.544225 86.631939) (xy 144.741873 86.783599) (xy 144.957623 86.908162) + (xy 144.957638 86.908169) (xy 145.056825 86.949253) (xy 145.187793 87.003502) (xy 145.428435 87.067982) + (xy 145.675435 87.1005) (xy 145.675442 87.1005) (xy 145.924558 87.1005) (xy 145.924565 87.1005) + (xy 146.171565 87.067982) (xy 146.412207 87.003502) (xy 146.642373 86.908164) (xy 146.858127 86.783599) + (xy 147.055776 86.631938) (xy 147.231938 86.455776) (xy 147.383599 86.258127) (xy 147.508164 86.042373) + (xy 147.603502 85.812207) (xy 147.667982 85.571565) (xy 147.7005 85.324565) (xy 147.7005 85.075435) + (xy 147.667982 84.828435) (xy 147.603502 84.587793) (xy 147.508164 84.357627) (xy 147.383599 84.141873) + (xy 147.231938 83.944224) (xy 147.231933 83.944218) (xy 147.055781 83.768066) (xy 147.055774 83.76806) + (xy 146.858126 83.6164) (xy 146.642376 83.491837) (xy 146.642361 83.49183) (xy 146.412207 83.396498) + (xy 146.171561 83.332017) (xy 145.924575 83.299501) (xy 145.92457 83.2995) (xy 145.924565 83.2995) + (xy 145.675435 83.2995) (xy 145.675429 83.2995) (xy 145.675424 83.299501) (xy 145.428438 83.332017) + (xy 145.187792 83.396498) (xy 144.957638 83.49183) (xy 144.957623 83.491837) (xy 144.741873 83.6164) + (xy 144.544225 83.76806) (xy 144.544218 83.768066) (xy 144.368066 83.944218) (xy 144.36806 83.944225) + (xy 144.2164 84.141873) (xy 144.091837 84.357623) (xy 144.09183 84.357638) (xy 143.996498 84.587792) + (xy 143.932017 84.828438) (xy 143.899501 85.075424) (xy 143.8995 85.075441) (xy 50.5005 85.075441) (xy 50.5005 78.881902) (xy 99.7495 78.881902) (xy 99.7495 79.118097) (xy 99.786446 79.351368) (xy 99.859433 79.575996) (xy 99.966657 79.786433) (xy 100.105483 79.97751) (xy 100.27249 80.144517) (xy 100.463567 80.283343) (xy 100.562991 80.334002) (xy 100.674003 80.390566) (xy 100.674005 80.390566) (xy 100.674008 80.390568) (xy 100.794412 80.429689) (xy 100.898631 80.463553) (xy 101.131903 80.5005) (xy 101.131908 80.5005) (xy 101.368097 80.5005) (xy 101.601368 80.463553) (xy 101.825992 80.390568) (xy 102.036433 80.283343) (xy 102.22751 80.144517) (xy 102.394517 79.97751) (xy 102.533343 79.786433) (xy 102.640568 79.575992) - (xy 102.713553 79.351368) (xy 102.730762 79.242713) (xy 102.7505 79.118097) (xy 102.7505 78.881902) - (xy 106.2495 78.881902) (xy 106.2495 79.118097) (xy 106.286446 79.351368) (xy 106.359433 79.575996) - (xy 106.466657 79.786433) (xy 106.605483 79.97751) (xy 106.77249 80.144517) (xy 106.963567 80.283343) - (xy 107.062991 80.334002) (xy 107.174003 80.390566) (xy 107.174005 80.390566) (xy 107.174008 80.390568) - (xy 107.294412 80.429689) (xy 107.398631 80.463553) (xy 107.631903 80.5005) (xy 107.631908 80.5005) - (xy 107.868097 80.5005) (xy 108.101368 80.463553) (xy 108.325992 80.390568) (xy 108.536433 80.283343) - (xy 108.72751 80.144517) (xy 108.894517 79.97751) (xy 109.033343 79.786433) (xy 109.140568 79.575992) - (xy 109.213553 79.351368) (xy 109.230762 79.242713) (xy 109.2505 79.118097) (xy 109.2505 78.881902) - (xy 109.9995 78.881902) (xy 109.9995 79.118097) (xy 110.036446 79.351368) (xy 110.109433 79.575996) - (xy 110.216657 79.786433) (xy 110.355483 79.97751) (xy 110.52249 80.144517) (xy 110.713567 80.283343) - (xy 110.812991 80.334002) (xy 110.924003 80.390566) (xy 110.924005 80.390566) (xy 110.924008 80.390568) - (xy 111.044412 80.429689) (xy 111.148631 80.463553) (xy 111.381903 80.5005) (xy 111.381908 80.5005) - (xy 111.618097 80.5005) (xy 111.851368 80.463553) (xy 112.075992 80.390568) (xy 112.286433 80.283343) - (xy 112.47751 80.144517) (xy 112.644517 79.97751) (xy 112.783343 79.786433) (xy 112.890568 79.575992) - (xy 112.963553 79.351368) (xy 112.980762 79.242713) (xy 113.0005 79.118097) (xy 113.0005 78.881902) - (xy 116.4995 78.881902) (xy 116.4995 79.118097) (xy 116.536446 79.351368) (xy 116.609433 79.575996) - (xy 116.716657 79.786433) (xy 116.855483 79.97751) (xy 117.02249 80.144517) (xy 117.213567 80.283343) - (xy 117.312991 80.334002) (xy 117.424003 80.390566) (xy 117.424005 80.390566) (xy 117.424008 80.390568) - (xy 117.544412 80.429689) (xy 117.648631 80.463553) (xy 117.881903 80.5005) (xy 117.881908 80.5005) - (xy 118.118097 80.5005) (xy 118.351368 80.463553) (xy 118.575992 80.390568) (xy 118.786433 80.283343) - (xy 118.97751 80.144517) (xy 119.144517 79.97751) (xy 119.283343 79.786433) (xy 119.390568 79.575992) - (xy 119.463553 79.351368) (xy 119.480762 79.242713) (xy 119.5005 79.118097) (xy 119.5005 78.881902) - (xy 119.463553 78.648631) (xy 119.390566 78.424003) (xy 119.283342 78.213566) (xy 119.144517 78.02249) - (xy 118.97751 77.855483) (xy 118.786433 77.716657) (xy 118.575996 77.609433) (xy 118.351368 77.536446) - (xy 118.118097 77.4995) (xy 118.118092 77.4995) (xy 117.881908 77.4995) (xy 117.881903 77.4995) - (xy 117.648631 77.536446) (xy 117.424003 77.609433) (xy 117.213566 77.716657) (xy 117.10455 77.795862) - (xy 117.02249 77.855483) (xy 117.022488 77.855485) (xy 117.022487 77.855485) (xy 116.855485 78.022487) - (xy 116.855485 78.022488) (xy 116.855483 78.02249) (xy 116.795862 78.10455) (xy 116.716657 78.213566) - (xy 116.609433 78.424003) (xy 116.536446 78.648631) (xy 116.4995 78.881902) (xy 113.0005 78.881902) - (xy 112.963553 78.648631) (xy 112.890566 78.424003) (xy 112.783342 78.213566) (xy 112.644517 78.02249) - (xy 112.47751 77.855483) (xy 112.286433 77.716657) (xy 112.075996 77.609433) (xy 111.851368 77.536446) + (xy 102.713553 79.351368) (xy 102.7505 79.118097) (xy 102.7505 78.881902) (xy 106.2495 78.881902) + (xy 106.2495 79.118097) (xy 106.286446 79.351368) (xy 106.359433 79.575996) (xy 106.466657 79.786433) + (xy 106.605483 79.97751) (xy 106.77249 80.144517) (xy 106.963567 80.283343) (xy 107.062991 80.334002) + (xy 107.174003 80.390566) (xy 107.174005 80.390566) (xy 107.174008 80.390568) (xy 107.294412 80.429689) + (xy 107.398631 80.463553) (xy 107.631903 80.5005) (xy 107.631908 80.5005) (xy 107.868097 80.5005) + (xy 108.101368 80.463553) (xy 108.325992 80.390568) (xy 108.536433 80.283343) (xy 108.72751 80.144517) + (xy 108.894517 79.97751) (xy 109.033343 79.786433) (xy 109.140568 79.575992) (xy 109.213553 79.351368) + (xy 109.2505 79.118097) (xy 109.2505 78.881902) (xy 109.9995 78.881902) (xy 109.9995 79.118097) + (xy 110.036446 79.351368) (xy 110.109433 79.575996) (xy 110.216657 79.786433) (xy 110.355483 79.97751) + (xy 110.52249 80.144517) (xy 110.713567 80.283343) (xy 110.812991 80.334002) (xy 110.924003 80.390566) + (xy 110.924005 80.390566) (xy 110.924008 80.390568) (xy 111.044412 80.429689) (xy 111.148631 80.463553) + (xy 111.381903 80.5005) (xy 111.381908 80.5005) (xy 111.618097 80.5005) (xy 111.851368 80.463553) + (xy 112.075992 80.390568) (xy 112.286433 80.283343) (xy 112.47751 80.144517) (xy 112.644517 79.97751) + (xy 112.783343 79.786433) (xy 112.890568 79.575992) (xy 112.963553 79.351368) (xy 113.0005 79.118097) + (xy 113.0005 78.881902) (xy 116.4995 78.881902) (xy 116.4995 79.118097) (xy 116.536446 79.351368) + (xy 116.609433 79.575996) (xy 116.716657 79.786433) (xy 116.855483 79.97751) (xy 117.02249 80.144517) + (xy 117.213567 80.283343) (xy 117.312991 80.334002) (xy 117.424003 80.390566) (xy 117.424005 80.390566) + (xy 117.424008 80.390568) (xy 117.544412 80.429689) (xy 117.648631 80.463553) (xy 117.881903 80.5005) + (xy 117.881908 80.5005) (xy 118.118097 80.5005) (xy 118.351368 80.463553) (xy 118.575992 80.390568) + (xy 118.786433 80.283343) (xy 118.97751 80.144517) (xy 119.144517 79.97751) (xy 119.283343 79.786433) + (xy 119.390568 79.575992) (xy 119.463553 79.351368) (xy 119.5005 79.118097) (xy 119.5005 78.881902) + (xy 119.463553 78.648631) (xy 119.390566 78.424003) (xy 119.301914 78.250015) (xy 119.283343 78.213567) + (xy 119.144517 78.02249) (xy 118.97751 77.855483) (xy 118.786433 77.716657) (xy 118.773953 77.710298) + (xy 118.575996 77.609433) (xy 118.351368 77.536446) (xy 118.118097 77.4995) (xy 118.118092 77.4995) + (xy 117.881908 77.4995) (xy 117.881903 77.4995) (xy 117.648631 77.536446) (xy 117.424003 77.609433) + (xy 117.213566 77.716657) (xy 117.109982 77.791916) (xy 117.02249 77.855483) (xy 117.022488 77.855485) + (xy 117.022487 77.855485) (xy 116.855485 78.022487) (xy 116.855485 78.022488) (xy 116.855483 78.02249) + (xy 116.795862 78.10455) (xy 116.716657 78.213566) (xy 116.609433 78.424003) (xy 116.536446 78.648631) + (xy 116.4995 78.881902) (xy 113.0005 78.881902) (xy 112.963553 78.648631) (xy 112.890566 78.424003) + (xy 112.801914 78.250015) (xy 112.783343 78.213567) (xy 112.644517 78.02249) (xy 112.47751 77.855483) + (xy 112.286433 77.716657) (xy 112.273953 77.710298) (xy 112.075996 77.609433) (xy 111.851368 77.536446) (xy 111.618097 77.4995) (xy 111.618092 77.4995) (xy 111.381908 77.4995) (xy 111.381903 77.4995) - (xy 111.148631 77.536446) (xy 110.924003 77.609433) (xy 110.713566 77.716657) (xy 110.60455 77.795862) + (xy 111.148631 77.536446) (xy 110.924003 77.609433) (xy 110.713566 77.716657) (xy 110.609982 77.791916) (xy 110.52249 77.855483) (xy 110.522488 77.855485) (xy 110.522487 77.855485) (xy 110.355485 78.022487) (xy 110.355485 78.022488) (xy 110.355483 78.02249) (xy 110.295862 78.10455) (xy 110.216657 78.213566) (xy 110.109433 78.424003) (xy 110.036446 78.648631) (xy 109.9995 78.881902) (xy 109.2505 78.881902) - (xy 109.213553 78.648631) (xy 109.140566 78.424003) (xy 109.033342 78.213566) (xy 108.894517 78.02249) - (xy 108.72751 77.855483) (xy 108.536433 77.716657) (xy 108.325996 77.609433) (xy 108.101368 77.536446) - (xy 107.868097 77.4995) (xy 107.868092 77.4995) (xy 107.631908 77.4995) (xy 107.631903 77.4995) - (xy 107.398631 77.536446) (xy 107.174003 77.609433) (xy 106.963566 77.716657) (xy 106.85455 77.795862) - (xy 106.77249 77.855483) (xy 106.772488 77.855485) (xy 106.772487 77.855485) (xy 106.605485 78.022487) - (xy 106.605485 78.022488) (xy 106.605483 78.02249) (xy 106.545862 78.10455) (xy 106.466657 78.213566) - (xy 106.359433 78.424003) (xy 106.286446 78.648631) (xy 106.2495 78.881902) (xy 102.7505 78.881902) - (xy 102.713553 78.648631) (xy 102.640566 78.424003) (xy 102.533342 78.213566) (xy 102.394517 78.02249) - (xy 102.22751 77.855483) (xy 102.036433 77.716657) (xy 101.825996 77.609433) (xy 101.601368 77.536446) + (xy 109.213553 78.648631) (xy 109.140566 78.424003) (xy 109.051914 78.250015) (xy 109.033343 78.213567) + (xy 108.894517 78.02249) (xy 108.72751 77.855483) (xy 108.536433 77.716657) (xy 108.523953 77.710298) + (xy 108.325996 77.609433) (xy 108.101368 77.536446) (xy 107.868097 77.4995) (xy 107.868092 77.4995) + (xy 107.631908 77.4995) (xy 107.631903 77.4995) (xy 107.398631 77.536446) (xy 107.174003 77.609433) + (xy 106.963566 77.716657) (xy 106.859982 77.791916) (xy 106.77249 77.855483) (xy 106.772488 77.855485) + (xy 106.772487 77.855485) (xy 106.605485 78.022487) (xy 106.605485 78.022488) (xy 106.605483 78.02249) + (xy 106.545862 78.10455) (xy 106.466657 78.213566) (xy 106.359433 78.424003) (xy 106.286446 78.648631) + (xy 106.2495 78.881902) (xy 102.7505 78.881902) (xy 102.713553 78.648631) (xy 102.640566 78.424003) + (xy 102.551914 78.250015) (xy 102.533343 78.213567) (xy 102.394517 78.02249) (xy 102.22751 77.855483) + (xy 102.036433 77.716657) (xy 102.023953 77.710298) (xy 101.825996 77.609433) (xy 101.601368 77.536446) (xy 101.368097 77.4995) (xy 101.368092 77.4995) (xy 101.131908 77.4995) (xy 101.131903 77.4995) - (xy 100.898631 77.536446) (xy 100.674003 77.609433) (xy 100.463566 77.716657) (xy 100.35455 77.795862) + (xy 100.898631 77.536446) (xy 100.674003 77.609433) (xy 100.463566 77.716657) (xy 100.359982 77.791916) (xy 100.27249 77.855483) (xy 100.272488 77.855485) (xy 100.272487 77.855485) (xy 100.105485 78.022487) (xy 100.105485 78.022488) (xy 100.105483 78.02249) (xy 100.045862 78.10455) (xy 99.966657 78.213566) (xy 99.859433 78.424003) (xy 99.786446 78.648631) (xy 99.7495 78.881902) (xy 50.5005 78.881902) - (xy 50.5005 76.299984) (xy 143.8345 76.299984) (xy 143.8345 78.700015) (xy 143.845 78.802795) (xy 143.845001 78.802796) - (xy 143.900186 78.969335) (xy 143.900187 78.969337) (xy 143.992286 79.118651) (xy 143.992289 79.118655) - (xy 144.116344 79.24271) (xy 144.116348 79.242713) (xy 144.265662 79.334812) (xy 144.265664 79.334813) - (xy 144.265666 79.334814) (xy 144.432203 79.389999) (xy 144.534992 79.4005) (xy 144.534997 79.4005) - (xy 146.935003 79.4005) (xy 146.935008 79.4005) (xy 147.037797 79.389999) (xy 147.204334 79.334814) - (xy 147.353655 79.242711) (xy 147.477711 79.118655) (xy 147.569814 78.969334) (xy 147.624999 78.802797) - (xy 147.6355 78.700008) (xy 147.6355 76.299992) (xy 147.624999 76.197203) (xy 147.569814 76.030666) - (xy 147.483112 75.890102) (xy 147.477713 75.881348) (xy 147.47771 75.881344) (xy 147.353655 75.757289) - (xy 147.353651 75.757286) (xy 147.204337 75.665187) (xy 147.204335 75.665186) (xy 147.121065 75.637593) - (xy 147.037797 75.610001) (xy 147.037795 75.61) (xy 146.935015 75.5995) (xy 146.935008 75.5995) - (xy 144.534992 75.5995) (xy 144.534984 75.5995) (xy 144.432204 75.61) (xy 144.432203 75.610001) - (xy 144.265664 75.665186) (xy 144.265662 75.665187) (xy 144.116348 75.757286) (xy 144.116344 75.757289) - (xy 143.992289 75.881344) (xy 143.992286 75.881348) (xy 143.900187 76.030662) (xy 143.900186 76.030664) - (xy 143.845001 76.197203) (xy 143.845 76.197204) (xy 143.8345 76.299984) (xy 50.5005 76.299984) + (xy 50.5005 77.05754) (xy 129.4442 77.05754) (xy 129.4442 77.204459) (xy 129.472858 77.348534) (xy 129.472861 77.348544) + (xy 129.529078 77.484266) (xy 129.529083 77.484275) (xy 129.610698 77.606419) (xy 129.610701 77.606423) + (xy 129.714576 77.710298) (xy 129.71458 77.710301) (xy 129.836724 77.791916) (xy 129.83673 77.791919) + (xy 129.836731 77.79192) (xy 129.972458 77.84814) (xy 130.11654 77.876799) (xy 130.116544 77.8768) + (xy 130.116545 77.8768) (xy 130.263456 77.8768) (xy 130.263457 77.876799) (xy 130.407542 77.84814) + (xy 130.543269 77.79192) (xy 130.66542 77.710301) (xy 130.769301 77.60642) (xy 130.85092 77.484269) + (xy 130.90714 77.348542) (xy 130.9358 77.204455) (xy 130.9358 77.057545) (xy 130.90714 76.913458) + (xy 130.85092 76.777731) (xy 130.850919 76.77773) (xy 130.850916 76.777724) (xy 130.769301 76.65558) + (xy 130.769298 76.655576) (xy 130.665423 76.551701) (xy 130.665419 76.551698) (xy 130.543275 76.470083) + (xy 130.543266 76.470078) (xy 130.407544 76.413861) (xy 130.407545 76.413861) (xy 130.407542 76.41386) + (xy 130.407538 76.413859) (xy 130.407534 76.413858) (xy 130.263459 76.3852) (xy 130.263455 76.3852) + (xy 130.116545 76.3852) (xy 130.11654 76.3852) (xy 129.972465 76.413858) (xy 129.972455 76.413861) + (xy 129.836733 76.470078) (xy 129.836724 76.470083) (xy 129.71458 76.551698) (xy 129.714576 76.551701) + (xy 129.610701 76.655576) (xy 129.610698 76.65558) (xy 129.529083 76.777724) (xy 129.529078 76.777733) + (xy 129.472861 76.913455) (xy 129.472858 76.913465) (xy 129.4442 77.05754) (xy 50.5005 77.05754) + (xy 50.5005 76.04154) (xy 134.5242 76.04154) (xy 134.5242 76.188459) (xy 134.552858 76.332534) (xy 134.552861 76.332544) + (xy 134.609078 76.468266) (xy 134.609083 76.468275) (xy 134.690698 76.590419) (xy 134.690701 76.590423) + (xy 134.794576 76.694298) (xy 134.79458 76.694301) (xy 134.916724 76.775916) (xy 134.91673 76.775919) + (xy 134.916731 76.77592) (xy 135.052458 76.83214) (xy 135.19654 76.860799) (xy 135.196544 76.8608) + (xy 135.196545 76.8608) (xy 135.343456 76.8608) (xy 135.343457 76.860799) (xy 135.487542 76.83214) + (xy 135.623269 76.77592) (xy 135.74542 76.694301) (xy 135.849301 76.59042) (xy 135.93092 76.468269) + (xy 135.98714 76.332542) (xy 136.0158 76.188455) (xy 136.0158 76.041545) (xy 135.98714 75.897458) + (xy 135.967475 75.849984) (xy 143.8995 75.849984) (xy 143.8995 78.250015) (xy 143.91 78.352795) + (xy 143.910001 78.352796) (xy 143.965186 78.519335) (xy 143.965187 78.519337) (xy 144.057286 78.668651) + (xy 144.057289 78.668655) (xy 144.181344 78.79271) (xy 144.181348 78.792713) (xy 144.330662 78.884812) + (xy 144.330664 78.884813) (xy 144.330666 78.884814) (xy 144.497203 78.939999) (xy 144.599992 78.9505) + (xy 144.599997 78.9505) (xy 147.000003 78.9505) (xy 147.000008 78.9505) (xy 147.102797 78.939999) + (xy 147.269334 78.884814) (xy 147.418655 78.792711) (xy 147.542711 78.668655) (xy 147.634814 78.519334) + (xy 147.689999 78.352797) (xy 147.7005 78.250008) (xy 147.7005 75.849992) (xy 147.689999 75.747203) + (xy 147.634814 75.580666) (xy 147.630963 75.574423) (xy 147.542713 75.431348) (xy 147.54271 75.431344) + (xy 147.418655 75.307289) (xy 147.418651 75.307286) (xy 147.269337 75.215187) (xy 147.269335 75.215186) + (xy 147.186065 75.187593) (xy 147.102797 75.160001) (xy 147.102795 75.16) (xy 147.000015 75.1495) + (xy 147.000008 75.1495) (xy 144.599992 75.1495) (xy 144.599984 75.1495) (xy 144.497204 75.16) (xy 144.497203 75.160001) + (xy 144.330664 75.215186) (xy 144.330662 75.215187) (xy 144.181348 75.307286) (xy 144.181344 75.307289) + (xy 144.057289 75.431344) (xy 144.057286 75.431348) (xy 143.965187 75.580662) (xy 143.965186 75.580664) + (xy 143.910001 75.747203) (xy 143.91 75.747204) (xy 143.8995 75.849984) (xy 135.967475 75.849984) + (xy 135.965328 75.8448) (xy 135.930921 75.761733) (xy 135.930916 75.761724) (xy 135.849301 75.63958) + (xy 135.849298 75.639576) (xy 135.745423 75.535701) (xy 135.745419 75.535698) (xy 135.623275 75.454083) + (xy 135.623266 75.454078) (xy 135.487544 75.397861) (xy 135.487545 75.397861) (xy 135.487542 75.39786) + (xy 135.487538 75.397859) (xy 135.487534 75.397858) (xy 135.343459 75.3692) (xy 135.343455 75.3692) + (xy 135.196545 75.3692) (xy 135.19654 75.3692) (xy 135.052465 75.397858) (xy 135.052455 75.397861) + (xy 134.916733 75.454078) (xy 134.916724 75.454083) (xy 134.79458 75.535698) (xy 134.794576 75.535701) + (xy 134.690701 75.639576) (xy 134.690698 75.63958) (xy 134.609083 75.761724) (xy 134.609078 75.761733) + (xy 134.552861 75.897455) (xy 134.552858 75.897465) (xy 134.5242 76.04154) (xy 50.5005 76.04154) (xy 50.5005 74.381947) (xy 99.75 74.381947) (xy 99.75 74.618052) (xy 99.786934 74.851247) (xy 99.859897 75.075802) (xy 99.967087 75.286174) (xy 100.027338 75.369104) (xy 100.02734 75.369105) (xy 100.726212 74.670233) (xy 100.737482 74.712292) (xy 100.80989 74.837708) (xy 100.912292 74.94011) (xy 101.037708 75.012518) @@ -28642,11 +31993,27 @@ (xy 116.77734 75.369105) (xy 117.476212 74.670233) (xy 117.487482 74.712292) (xy 117.55989 74.837708) (xy 117.662292 74.94011) (xy 117.787708 75.012518) (xy 117.829765 75.023787) (xy 117.130893 75.722658) (xy 117.213828 75.782914) (xy 117.424197 75.890102) (xy 117.648752 75.963065) (xy 117.648751 75.963065) - (xy 117.881948 76) (xy 118.118052 76) (xy 118.351247 75.963065) (xy 118.575802 75.890102) (xy 118.786163 75.782918) - (xy 118.786169 75.782914) (xy 118.869104 75.722658) (xy 118.869105 75.722658) (xy 118.170233 75.023787) - (xy 118.212292 75.012518) (xy 118.337708 74.94011) (xy 118.44011 74.837708) (xy 118.512518 74.712292) - (xy 118.523787 74.670233) (xy 119.222658 75.369105) (xy 119.222658 75.369104) (xy 119.282914 75.286169) - (xy 119.282918 75.286163) (xy 119.390102 75.075802) (xy 119.463065 74.851247) (xy 119.5 74.618052) + (xy 117.881948 76) (xy 118.118052 76) (xy 118.351247 75.963065) (xy 118.491416 75.917522) (xy 118.575802 75.890102) + (xy 118.786163 75.782918) (xy 118.786169 75.782914) (xy 118.869104 75.722658) (xy 118.869105 75.722658) + (xy 118.170233 75.023787) (xy 118.212292 75.012518) (xy 118.337708 74.94011) (xy 118.44011 74.837708) + (xy 118.512518 74.712292) (xy 118.523787 74.670233) (xy 119.222658 75.369105) (xy 119.222658 75.369104) + (xy 119.282914 75.286169) (xy 119.282918 75.286163) (xy 119.390102 75.075802) (xy 119.406434 75.02554) + (xy 129.4442 75.02554) (xy 129.4442 75.172459) (xy 129.472858 75.316534) (xy 129.472861 75.316544) + (xy 129.529078 75.452266) (xy 129.529083 75.452275) (xy 129.610698 75.574419) (xy 129.610701 75.574423) + (xy 129.714576 75.678298) (xy 129.71458 75.678301) (xy 129.836724 75.759916) (xy 129.83673 75.759919) + (xy 129.836731 75.75992) (xy 129.972458 75.81614) (xy 130.11654 75.844799) (xy 130.116544 75.8448) + (xy 130.116545 75.8448) (xy 130.263456 75.8448) (xy 130.263457 75.844799) (xy 130.407542 75.81614) + (xy 130.543269 75.75992) (xy 130.66542 75.678301) (xy 130.769301 75.57442) (xy 130.85092 75.452269) + (xy 130.90714 75.316542) (xy 130.9358 75.172455) (xy 130.9358 75.025545) (xy 130.90714 74.881458) + (xy 130.85092 74.745731) (xy 130.850919 74.74573) (xy 130.850916 74.745724) (xy 130.769301 74.62358) + (xy 130.769298 74.623576) (xy 130.665423 74.519701) (xy 130.665419 74.519698) (xy 130.543275 74.438083) + (xy 130.543266 74.438078) (xy 130.407544 74.381861) (xy 130.407545 74.381861) (xy 130.407542 74.38186) + (xy 130.407538 74.381859) (xy 130.407534 74.381858) (xy 130.263459 74.3532) (xy 130.263455 74.3532) + (xy 130.116545 74.3532) (xy 130.11654 74.3532) (xy 129.972465 74.381858) (xy 129.972455 74.381861) + (xy 129.836733 74.438078) (xy 129.836724 74.438083) (xy 129.71458 74.519698) (xy 129.714576 74.519701) + (xy 129.610701 74.623576) (xy 129.610698 74.62358) (xy 129.529083 74.745724) (xy 129.529078 74.745733) + (xy 129.472861 74.881455) (xy 129.472858 74.881465) (xy 129.4442 75.02554) (xy 119.406434 75.02554) + (xy 119.420862 74.981135) (xy 119.420862 74.981134) (xy 119.463065 74.851245) (xy 119.5 74.618052) (xy 119.5 74.381947) (xy 119.463065 74.148752) (xy 119.390102 73.924197) (xy 119.282914 73.713828) (xy 119.222658 73.630894) (xy 119.222658 73.630893) (xy 118.523787 74.329765) (xy 118.512518 74.287708) (xy 118.44011 74.162292) (xy 118.337708 74.05989) (xy 118.212292 73.987482) (xy 118.170234 73.976212) @@ -28681,207 +32048,183 @@ (xy 100.380894 73.27734) (xy 101.079766 73.976212) (xy 101.037708 73.987482) (xy 100.912292 74.05989) (xy 100.80989 74.162292) (xy 100.737482 74.287708) (xy 100.726212 74.329765) (xy 100.02734 73.630894) (xy 99.967084 73.71383) (xy 99.859897 73.924197) (xy 99.786934 74.148752) (xy 99.75 74.381947) (xy 50.5005 74.381947) - (xy 50.5005 72.375441) (xy 143.8345 72.375441) (xy 143.8345 72.624558) (xy 143.834501 72.624575) - (xy 143.867017 72.871561) (xy 143.931498 73.112207) (xy 144.02683 73.342361) (xy 144.026837 73.342376) - (xy 144.1514 73.558126) (xy 144.30306 73.755774) (xy 144.303066 73.755781) (xy 144.479218 73.931933) - (xy 144.479225 73.931939) (xy 144.676873 74.083599) (xy 144.892623 74.208162) (xy 144.892638 74.208169) - (xy 144.991825 74.249253) (xy 145.122793 74.303502) (xy 145.363435 74.367982) (xy 145.610435 74.4005) - (xy 145.610442 74.4005) (xy 145.859558 74.4005) (xy 145.859565 74.4005) (xy 146.106565 74.367982) - (xy 146.347207 74.303502) (xy 146.577373 74.208164) (xy 146.793127 74.083599) (xy 146.990776 73.931938) - (xy 147.166938 73.755776) (xy 147.318599 73.558127) (xy 147.443164 73.342373) (xy 147.538502 73.112207) - (xy 147.602982 72.871565) (xy 147.6355 72.624565) (xy 147.6355 72.375435) (xy 147.602982 72.128435) - (xy 147.538502 71.887793) (xy 147.443164 71.657627) (xy 147.318599 71.441873) (xy 147.166938 71.244224) - (xy 147.166933 71.244218) (xy 146.990781 71.068066) (xy 146.990774 71.06806) (xy 146.793126 70.9164) - (xy 146.577376 70.791837) (xy 146.577361 70.79183) (xy 146.347207 70.696498) (xy 146.106561 70.632017) - (xy 145.859575 70.599501) (xy 145.85957 70.5995) (xy 145.859565 70.5995) (xy 145.610435 70.5995) - (xy 145.610429 70.5995) (xy 145.610424 70.599501) (xy 145.363438 70.632017) (xy 145.122792 70.696498) - (xy 144.892638 70.79183) (xy 144.892623 70.791837) (xy 144.676873 70.9164) (xy 144.479225 71.06806) - (xy 144.479218 71.068066) (xy 144.303066 71.244218) (xy 144.30306 71.244225) (xy 144.1514 71.441873) - (xy 144.026837 71.657623) (xy 144.02683 71.657638) (xy 143.931498 71.887792) (xy 143.867017 72.128438) - (xy 143.834501 72.375424) (xy 143.8345 72.375441) (xy 50.5005 72.375441) (xy 50.5005 66.64) (xy 51.780138 66.64) - (xy 52.583012 66.64) (xy 52.565795 66.64994) (xy 52.50994 66.705795) (xy 52.470444 66.774204) (xy 52.45 66.850504) - (xy 52.45 66.929496) (xy 52.470444 67.005796) (xy 52.50994 67.074205) (xy 52.565795 67.13006) (xy 52.583012 67.14) - (xy 51.780138 67.14) (xy 51.78843 67.18169) (xy 51.78843 67.181692) (xy 51.863807 67.363671) (xy 51.863814 67.363684) - (xy 51.973248 67.527462) (xy 51.973251 67.527466) (xy 52.112533 67.666748) (xy 52.112537 67.666751) - (xy 52.276315 67.776185) (xy 52.276328 67.776192) (xy 52.458306 67.851569) (xy 52.458318 67.851572) - (xy 52.651504 67.889999) (xy 52.651508 67.89) (xy 52.8 67.89) (xy 52.8 67.19) (xy 53.3 67.19) (xy 53.3 67.89) - (xy 53.448492 67.89) (xy 53.448495 67.889999) (xy 53.641681 67.851572) (xy 53.641693 67.851569) - (xy 53.823671 67.776192) (xy 53.823684 67.776185) (xy 53.987462 67.666751) (xy 53.987466 67.666748) - (xy 54.126748 67.527466) (xy 54.126751 67.527462) (xy 54.236185 67.363684) (xy 54.236192 67.363671) - (xy 54.311569 67.181692) (xy 54.311569 67.18169) (xy 54.319862 67.14) (xy 53.516988 67.14) (xy 53.534205 67.13006) - (xy 53.59006 67.074205) (xy 53.629556 67.005796) (xy 53.65 66.929496) (xy 53.65 66.850504) (xy 53.629556 66.774204) - (xy 53.59006 66.705795) (xy 53.534205 66.64994) (xy 53.516988 66.64) (xy 54.319862 66.64) (xy 55.710138 66.64) - (xy 56.513012 66.64) (xy 56.495795 66.64994) (xy 56.43994 66.705795) (xy 56.400444 66.774204) (xy 56.38 66.850504) - (xy 56.38 66.929496) (xy 56.400444 67.005796) (xy 56.43994 67.074205) (xy 56.495795 67.13006) (xy 56.513012 67.14) - (xy 55.710138 67.14) (xy 55.71843 67.18169) (xy 55.71843 67.181692) (xy 55.793807 67.363671) (xy 55.793814 67.363684) - (xy 55.903248 67.527462) (xy 55.903251 67.527466) (xy 56.042533 67.666748) (xy 56.042537 67.666751) - (xy 56.206315 67.776185) (xy 56.206328 67.776192) (xy 56.388306 67.851569) (xy 56.388318 67.851572) - (xy 56.581504 67.889999) (xy 56.581508 67.89) (xy 56.98 67.89) (xy 56.98 67.19) (xy 57.48 67.19) - (xy 57.48 67.89) (xy 57.878492 67.89) (xy 57.878495 67.889999) (xy 58.071681 67.851572) (xy 58.071693 67.851569) - (xy 58.253671 67.776192) (xy 58.253684 67.776185) (xy 58.417462 67.666751) (xy 58.417466 67.666748) - (xy 58.556748 67.527466) (xy 58.556751 67.527462) (xy 58.666185 67.363684) (xy 58.666192 67.363671) - (xy 58.741569 67.181692) (xy 58.741569 67.18169) (xy 58.749862 67.14) (xy 57.946988 67.14) (xy 57.964205 67.13006) - (xy 58.02006 67.074205) (xy 58.059556 67.005796) (xy 58.08 66.929496) (xy 58.08 66.850504) (xy 58.059556 66.774204) - (xy 58.02006 66.705795) (xy 57.964205 66.64994) (xy 57.946988 66.64) (xy 58.749862 66.64) (xy 58.741569 66.598309) - (xy 58.741569 66.598307) (xy 58.666192 66.416328) (xy 58.666185 66.416315) (xy 58.556751 66.252537) - (xy 58.556748 66.252533) (xy 58.417466 66.113251) (xy 58.417462 66.113248) (xy 58.253684 66.003814) - (xy 58.253671 66.003807) (xy 58.071693 65.92843) (xy 58.071681 65.928427) (xy 57.878495 65.89) (xy 57.48 65.89) - (xy 57.48 66.59) (xy 56.98 66.59) (xy 56.98 66.034463) (xy 56.999685 65.967424) (xy 57.042 65.927076) - (xy 57.053365 65.920515) (xy 57.160515 65.813365) (xy 57.161372 65.811879) (xy 57.181721 65.776637) - (xy 57.236279 65.682138) (xy 57.236281 65.682135) (xy 57.2755 65.535766) (xy 57.2755 65.384234) - (xy 57.236281 65.237865) (xy 57.160515 65.106635) (xy 57.053365 64.999485) (xy 56.975714 64.954653) - (xy 56.922136 64.923719) (xy 56.84895 64.904109) (xy 56.775766 64.8845) (xy 56.624234 64.8845) (xy 56.477863 64.923719) - (xy 56.346635 64.999485) (xy 56.346632 64.999487) (xy 56.239487 65.106632) (xy 56.239485 65.106635) - (xy 56.163719 65.237863) (xy 56.133306 65.351368) (xy 56.1245 65.384234) (xy 56.1245 65.535766) - (xy 56.144109 65.60895) (xy 56.163719 65.682136) (xy 56.201602 65.74775) (xy 56.239485 65.813365) - (xy 56.239487 65.813367) (xy 56.244432 65.819811) (xy 56.241612 65.821974) (xy 56.267302 65.86902) - (xy 56.262318 65.938712) (xy 56.220446 65.994645) (xy 56.211379 66.000416) (xy 56.211387 66.000427) - (xy 56.042536 66.113248) (xy 55.903251 66.252533) (xy 55.903248 66.252537) (xy 55.793814 66.416315) - (xy 55.793807 66.416328) (xy 55.71843 66.598307) (xy 55.71843 66.598309) (xy 55.710138 66.64) (xy 54.319862 66.64) - (xy 54.311569 66.598309) (xy 54.311569 66.598307) (xy 54.236192 66.416328) (xy 54.236185 66.416315) - (xy 54.126751 66.252537) (xy 54.126748 66.252533) (xy 53.987466 66.113251) (xy 53.987462 66.113248) - (xy 53.823684 66.003814) (xy 53.823671 66.003807) (xy 53.641693 65.92843) (xy 53.641681 65.928427) - (xy 53.448495 65.89) (xy 53.3 65.89) (xy 53.3 66.59) (xy 52.8 66.59) (xy 52.8 65.89) (xy 52.651504 65.89) - (xy 52.458318 65.928427) (xy 52.458306 65.92843) (xy 52.276328 66.003807) (xy 52.276315 66.003814) - (xy 52.112537 66.113248) (xy 52.112533 66.113251) (xy 51.973251 66.252533) (xy 51.973248 66.252537) - (xy 51.863814 66.416315) (xy 51.863807 66.416328) (xy 51.78843 66.598307) (xy 51.78843 66.598309) - (xy 51.780138 66.64) (xy 50.5005 66.64) (xy 50.5005 64.881902) (xy 105.4995 64.881902) (xy 105.4995 65.118097) - (xy 105.536446 65.351368) (xy 105.609433 65.575996) (xy 105.663516 65.682138) (xy 105.716657 65.786433) - (xy 105.855483 65.97751) (xy 106.02249 66.144517) (xy 106.213567 66.283343) (xy 106.312991 66.334002) - (xy 106.424003 66.390566) (xy 106.424005 66.390566) (xy 106.424008 66.390568) (xy 106.503249 66.416315) - (xy 106.648631 66.463553) (xy 106.881903 66.5005) (xy 106.881908 66.5005) (xy 107.118097 66.5005) - (xy 107.351368 66.463553) (xy 107.575992 66.390568) (xy 107.786433 66.283343) (xy 107.97751 66.144517) - (xy 108.144517 65.97751) (xy 108.283343 65.786433) (xy 108.390568 65.575992) (xy 108.463553 65.351368) - (xy 108.48153 65.237865) (xy 108.5005 65.118097) (xy 108.5005 64.881902) (xy 108.463553 64.648631) - (xy 108.390566 64.424003) (xy 108.283342 64.213566) (xy 108.144517 64.02249) (xy 108.074162 63.952135) - (xy 113.0995 63.952135) (xy 113.0995 66.04787) (xy 113.099501 66.047876) (xy 113.105908 66.107483) - (xy 113.156202 66.242328) (xy 113.156206 66.242335) (xy 113.242452 66.357544) (xy 113.242455 66.357547) - (xy 113.357664 66.443793) (xy 113.357671 66.443797) (xy 113.492517 66.494091) (xy 113.492516 66.494091) - (xy 113.499444 66.494835) (xy 113.552127 66.5005) (xy 115.647872 66.500499) (xy 115.707483 66.494091) - (xy 115.842331 66.443796) (xy 115.957546 66.357546) (xy 116.043796 66.242331) (xy 116.094091 66.107483) - (xy 116.1005 66.047873) (xy 116.100499 63.952128) (xy 116.094091 63.892517) (xy 116.080278 63.855483) - (xy 116.043797 63.757671) (xy 116.043793 63.757664) (xy 115.957547 63.642455) (xy 115.957545 63.642453) - (xy 115.842335 63.556206) (xy 115.842328 63.556202) (xy 115.825657 63.549984) (xy 143.817 63.549984) - (xy 143.817 65.950015) (xy 143.8275 66.052795) (xy 143.827501 66.052796) (xy 143.882686 66.219335) - (xy 143.882687 66.219337) (xy 143.974786 66.368651) (xy 143.974789 66.368655) (xy 144.098844 66.49271) - (xy 144.098848 66.492713) (xy 144.248162 66.584812) (xy 144.248164 66.584813) (xy 144.248166 66.584814) - (xy 144.414703 66.639999) (xy 144.517492 66.6505) (xy 144.517497 66.6505) (xy 146.917503 66.6505) - (xy 146.917508 66.6505) (xy 147.020297 66.639999) (xy 147.186834 66.584814) (xy 147.336155 66.492711) - (xy 147.460211 66.368655) (xy 147.552314 66.219334) (xy 147.607499 66.052797) (xy 147.618 65.950008) - (xy 147.618 63.549992) (xy 147.607499 63.447203) (xy 147.552314 63.280666) (xy 147.460211 63.131345) - (xy 147.336155 63.007289) (xy 147.336151 63.007286) (xy 147.186837 62.915187) (xy 147.186835 62.915186) - (xy 147.103565 62.887593) (xy 147.020297 62.860001) (xy 147.020295 62.86) (xy 146.917515 62.8495) - (xy 146.917508 62.8495) (xy 144.517492 62.8495) (xy 144.517484 62.8495) (xy 144.414704 62.86) (xy 144.414703 62.860001) - (xy 144.248164 62.915186) (xy 144.248162 62.915187) (xy 144.098848 63.007286) (xy 144.098844 63.007289) - (xy 143.974789 63.131344) (xy 143.974786 63.131348) (xy 143.882687 63.280662) (xy 143.882686 63.280664) - (xy 143.827501 63.447203) (xy 143.8275 63.447204) (xy 143.817 63.549984) (xy 115.825657 63.549984) - (xy 115.707482 63.505908) (xy 115.707483 63.505908) (xy 115.647883 63.499501) (xy 115.647881 63.4995) - (xy 115.647873 63.4995) (xy 115.647864 63.4995) (xy 113.552129 63.4995) (xy 113.552123 63.499501) - (xy 113.492516 63.505908) (xy 113.357671 63.556202) (xy 113.357664 63.556206) (xy 113.242455 63.642452) - (xy 113.242452 63.642455) (xy 113.156206 63.757664) (xy 113.156202 63.757671) (xy 113.105908 63.892517) - (xy 113.099501 63.952116) (xy 113.099501 63.952123) (xy 113.0995 63.952135) (xy 108.074162 63.952135) - (xy 107.97751 63.855483) (xy 107.786433 63.716657) (xy 107.575996 63.609433) (xy 107.351368 63.536446) - (xy 107.118097 63.4995) (xy 107.118092 63.4995) (xy 106.881908 63.4995) (xy 106.881903 63.4995) - (xy 106.648631 63.536446) (xy 106.424003 63.609433) (xy 106.213566 63.716657) (xy 106.157119 63.757669) - (xy 106.02249 63.855483) (xy 106.022488 63.855485) (xy 106.022487 63.855485) (xy 105.855485 64.022487) - (xy 105.855485 64.022488) (xy 105.855483 64.02249) (xy 105.795862 64.10455) (xy 105.716657 64.213566) - (xy 105.609433 64.424003) (xy 105.536446 64.648631) (xy 105.4995 64.881902) (xy 50.5005 64.881902) - (xy 50.5005 58) (xy 51.780138 58) (xy 52.583012 58) (xy 52.565795 58.00994) (xy 52.50994 58.065795) - (xy 52.470444 58.134204) (xy 52.45 58.210504) (xy 52.45 58.289496) (xy 52.470444 58.365796) (xy 52.50994 58.434205) - (xy 52.565795 58.49006) (xy 52.583012 58.5) (xy 51.780138 58.5) (xy 51.78843 58.54169) (xy 51.78843 58.541692) - (xy 51.863807 58.723671) (xy 51.863814 58.723684) (xy 51.973248 58.887462) (xy 51.973251 58.887466) - (xy 52.112533 59.026748) (xy 52.112537 59.026751) (xy 52.276315 59.136185) (xy 52.276328 59.136192) - (xy 52.458306 59.211569) (xy 52.458318 59.211572) (xy 52.651504 59.249999) (xy 52.651508 59.25) - (xy 52.8 59.25) (xy 52.8 58.55) (xy 53.3 58.55) (xy 53.3 59.25) (xy 53.448492 59.25) (xy 53.448495 59.249999) - (xy 53.641681 59.211572) (xy 53.641693 59.211569) (xy 53.823671 59.136192) (xy 53.823684 59.136185) - (xy 53.987462 59.026751) (xy 53.987466 59.026748) (xy 54.126748 58.887466) (xy 54.126751 58.887462) - (xy 54.236185 58.723684) (xy 54.236192 58.723671) (xy 54.311569 58.541692) (xy 54.311569 58.54169) - (xy 54.319862 58.5) (xy 53.516988 58.5) (xy 53.534205 58.49006) (xy 53.59006 58.434205) (xy 53.629556 58.365796) - (xy 53.65 58.289496) (xy 53.65 58.210504) (xy 53.629556 58.134204) (xy 53.59006 58.065795) (xy 53.534205 58.00994) - (xy 53.516988 58) (xy 54.319862 58) (xy 55.710138 58) (xy 56.513012 58) (xy 56.495795 58.00994) - (xy 56.43994 58.065795) (xy 56.400444 58.134204) (xy 56.38 58.210504) (xy 56.38 58.289496) (xy 56.400444 58.365796) - (xy 56.43994 58.434205) (xy 56.495795 58.49006) (xy 56.513012 58.5) (xy 55.710138 58.5) (xy 55.71843 58.54169) - (xy 55.71843 58.541692) (xy 55.793807 58.723671) (xy 55.793814 58.723684) (xy 55.903248 58.887462) - (xy 55.903251 58.887466) (xy 56.042533 59.026748) (xy 56.042537 59.026751) (xy 56.211387 59.139574) - (xy 56.21043 59.141005) (xy 56.254425 59.184211) (xy 56.269895 59.252346) (xy 56.246072 59.318029) - (xy 56.244309 59.320094) (xy 56.244432 59.320189) (xy 56.239485 59.326635) (xy 56.163719 59.457863) - (xy 56.1245 59.604234) (xy 56.1245 59.755765) (xy 56.163719 59.902136) (xy 56.201602 59.96775) (xy 56.239485 60.033365) - (xy 56.346635 60.140515) (xy 56.477865 60.216281) (xy 56.624234 60.2555) (xy 56.624236 60.2555) - (xy 56.775764 60.2555) (xy 56.775766 60.2555) (xy 56.922135 60.216281) (xy 57.053365 60.140515) - (xy 57.160515 60.033365) (xy 57.236281 59.902135) (xy 57.2755 59.755766) (xy 57.2755 59.604234) - (xy 57.236281 59.457865) (xy 57.160515 59.326635) (xy 57.053365 59.219485) (xy 57.041998 59.212922) - (xy 56.993783 59.162354) (xy 56.98 59.105536) (xy 56.98 58.55) (xy 57.48 58.55) (xy 57.48 59.25) - (xy 57.878492 59.25) (xy 57.878495 59.249999) (xy 58.071681 59.211572) (xy 58.071693 59.211569) - (xy 58.253671 59.136192) (xy 58.253684 59.136185) (xy 58.417462 59.026751) (xy 58.417466 59.026748) - (xy 58.556748 58.887466) (xy 58.556751 58.887462) (xy 58.666185 58.723684) (xy 58.666192 58.723671) - (xy 58.741569 58.541692) (xy 58.741569 58.54169) (xy 58.749862 58.5) (xy 57.946988 58.5) (xy 57.964205 58.49006) - (xy 58.02006 58.434205) (xy 58.059556 58.365796) (xy 58.08 58.289496) (xy 58.08 58.210504) (xy 58.059556 58.134204) - (xy 58.02006 58.065795) (xy 57.964205 58.00994) (xy 57.946988 58) (xy 58.749862 58) (xy 58.741569 57.958309) - (xy 58.741569 57.958307) (xy 58.666192 57.776328) (xy 58.666185 57.776315) (xy 58.556751 57.612537) - (xy 58.556748 57.612533) (xy 58.417466 57.473251) (xy 58.417462 57.473248) (xy 58.253684 57.363814) - (xy 58.253671 57.363807) (xy 58.071693 57.28843) (xy 58.071681 57.288427) (xy 57.878495 57.25) (xy 57.48 57.25) - (xy 57.48 57.95) (xy 56.98 57.95) (xy 56.98 57.25) (xy 56.581504 57.25) (xy 56.388318 57.288427) - (xy 56.388306 57.28843) (xy 56.206328 57.363807) (xy 56.206315 57.363814) (xy 56.042537 57.473248) - (xy 56.042533 57.473251) (xy 55.903251 57.612533) (xy 55.903248 57.612537) (xy 55.793814 57.776315) - (xy 55.793807 57.776328) (xy 55.71843 57.958307) (xy 55.71843 57.958309) (xy 55.710138 58) (xy 54.319862 58) - (xy 54.311569 57.958309) (xy 54.311569 57.958307) (xy 54.236192 57.776328) (xy 54.236185 57.776315) - (xy 54.126751 57.612537) (xy 54.126748 57.612533) (xy 53.987466 57.473251) (xy 53.987462 57.473248) - (xy 53.823684 57.363814) (xy 53.823671 57.363807) (xy 53.641693 57.28843) (xy 53.641681 57.288427) - (xy 53.448495 57.25) (xy 53.3 57.25) (xy 53.3 57.95) (xy 52.8 57.95) (xy 52.8 57.25) (xy 52.651504 57.25) - (xy 52.458318 57.288427) (xy 52.458306 57.28843) (xy 52.276328 57.363807) (xy 52.276315 57.363814) - (xy 52.112537 57.473248) (xy 52.112533 57.473251) (xy 51.973251 57.612533) (xy 51.973248 57.612537) - (xy 51.863814 57.776315) (xy 51.863807 57.776328) (xy 51.78843 57.958307) (xy 51.78843 57.958309) - (xy 51.780138 58) (xy 50.5005 58) (xy 50.5005 49.899984) (xy 52.3495 49.899984) (xy 52.3495 52.300015) - (xy 52.36 52.402795) (xy 52.360001 52.402796) (xy 52.415186 52.569335) (xy 52.415187 52.569337) - (xy 52.507286 52.718651) (xy 52.507289 52.718655) (xy 52.631344 52.84271) (xy 52.631348 52.842713) - (xy 52.780662 52.934812) (xy 52.780664 52.934813) (xy 52.780666 52.934814) (xy 52.947203 52.989999) - (xy 53.049992 53.0005) (xy 53.049997 53.0005) (xy 55.450003 53.0005) (xy 55.450008 53.0005) (xy 55.552797 52.989999) - (xy 55.719334 52.934814) (xy 55.868655 52.842711) (xy 55.992711 52.718655) (xy 56.084814 52.569334) - (xy 56.139999 52.402797) (xy 56.1505 52.300008) (xy 56.1505 50.733713) (xy 103.2495 50.733713) (xy 103.2495 50.946286) - (xy 103.282753 51.156239) (xy 103.348444 51.358414) (xy 103.444951 51.54782) (xy 103.56989 51.719786) - (xy 103.720213 51.870109) (xy 103.892182 51.99505) (xy 103.900946 51.999516) (xy 103.951742 52.047491) - (xy 103.968536 52.115312) (xy 103.945998 52.181447) (xy 103.900946 52.220484) (xy 103.892182 52.224949) - (xy 103.720213 52.34989) (xy 103.56989 52.500213) (xy 103.444951 52.672179) (xy 103.348444 52.861585) - (xy 103.282753 53.06376) (xy 103.2495 53.273713) (xy 103.2495 53.486286) (xy 103.282753 53.696239) - (xy 103.348444 53.898414) (xy 103.444951 54.08782) (xy 103.56989 54.259786) (xy 103.720213 54.410109) - (xy 103.892182 54.53505) (xy 103.900946 54.539516) (xy 103.951742 54.587491) (xy 103.968536 54.655312) - (xy 103.945998 54.721447) (xy 103.900946 54.760484) (xy 103.892182 54.764949) (xy 103.720213 54.88989) - (xy 103.56989 55.040213) (xy 103.444951 55.212179) (xy 103.348444 55.401585) (xy 103.282753 55.60376) - (xy 103.2495 55.813713) (xy 103.2495 56.026286) (xy 103.282753 56.236239) (xy 103.348444 56.438414) - (xy 103.444951 56.62782) (xy 103.56989 56.799786) (xy 103.720213 56.950109) (xy 103.892182 57.07505) - (xy 103.900946 57.079516) (xy 103.951742 57.127491) (xy 103.968536 57.195312) (xy 103.945998 57.261447) - (xy 103.900946 57.300484) (xy 103.892182 57.304949) (xy 103.720213 57.42989) (xy 103.56989 57.580213) - (xy 103.444951 57.752179) (xy 103.348444 57.941585) (xy 103.282753 58.14376) (xy 103.272182 58.210504) - (xy 103.2495 58.353713) (xy 103.2495 58.566287) (xy 103.282754 58.776243) (xy 103.325443 58.907627) - (xy 103.348444 58.978414) (xy 103.444951 59.16782) (xy 103.56989 59.339786) (xy 103.720213 59.490109) - (xy 103.892182 59.61505) (xy 103.900946 59.619516) (xy 103.951742 59.667491) (xy 103.968536 59.735312) - (xy 103.945998 59.801447) (xy 103.900946 59.840484) (xy 103.892182 59.844949) (xy 103.720213 59.96989) - (xy 103.56989 60.120213) (xy 103.444951 60.292179) (xy 103.348444 60.481585) (xy 103.282753 60.68376) - (xy 103.2495 60.893713) (xy 103.2495 61.106287) (xy 103.282754 61.316243) (xy 103.328866 61.458162) - (xy 103.348444 61.518414) (xy 103.444951 61.70782) (xy 103.56989 61.879786) (xy 103.720213 62.030109) - (xy 103.892179 62.155048) (xy 103.892181 62.155049) (xy 103.892184 62.155051) (xy 104.081588 62.251557) - (xy 104.283757 62.317246) (xy 104.493713 62.3505) (xy 104.493714 62.3505) (xy 104.706286 62.3505) - (xy 104.706287 62.3505) (xy 104.916243 62.317246) (xy 105.118412 62.251557) (xy 105.307816 62.155051) - (xy 105.329789 62.139086) (xy 105.479786 62.030109) (xy 105.479788 62.030106) (xy 105.479792 62.030104) - (xy 105.630104 61.879792) (xy 105.630106 61.879788) (xy 105.630109 61.879786) (xy 105.755048 61.70782) - (xy 105.755047 61.70782) (xy 105.755051 61.707816) (xy 105.851557 61.518412) (xy 105.917246 61.316243) - (xy 105.9505 61.106287) (xy 105.9505 60.893713) (xy 105.917246 60.683757) (xy 105.851557 60.481588) - (xy 105.755051 60.292184) (xy 105.755049 60.292181) (xy 105.755048 60.292179) (xy 105.630109 60.120213) - (xy 105.479786 59.96989) (xy 105.30782 59.844951) (xy 105.307115 59.844591) (xy 105.299054 59.840485) - (xy 105.296302 59.837885) (xy 105.292631 59.836969) (xy 105.271101 59.814085) (xy 105.248259 59.792512) - (xy 105.247349 59.788838) (xy 105.244755 59.786081) (xy 105.239014 59.755183) (xy 105.231463 59.724692) - (xy 105.232683 59.721109) (xy 105.231992 59.717387) (xy 105.243865 59.688294) (xy 105.253999 59.658556) - (xy 105.257379 59.655181) (xy 105.258394 59.652697) (xy 105.266484 59.646094) (xy 105.2841 59.628513) - (xy 105.288475 59.625441) (xy 143.817 59.625441) (xy 143.817 59.874558) (xy 143.817001 59.874575) - (xy 143.849517 60.121561) (xy 143.913998 60.362207) (xy 144.00933 60.592361) (xy 144.009337 60.592376) - (xy 144.1339 60.808126) (xy 144.28556 61.005774) (xy 144.285566 61.005781) (xy 144.461718 61.181933) - (xy 144.461725 61.181939) (xy 144.659373 61.333599) (xy 144.875123 61.458162) (xy 144.875138 61.458169) - (xy 144.974325 61.499253) (xy 145.105293 61.553502) (xy 145.345935 61.617982) (xy 145.592935 61.6505) - (xy 145.592942 61.6505) (xy 145.842058 61.6505) (xy 145.842065 61.6505) (xy 146.089065 61.617982) - (xy 146.329707 61.553502) (xy 146.559873 61.458164) (xy 146.775627 61.333599) (xy 146.973276 61.181938) - (xy 147.149438 61.005776) (xy 147.301099 60.808127) (xy 147.425664 60.592373) (xy 147.521002 60.362207) - (xy 147.585482 60.121565) (xy 147.618 59.874565) (xy 147.618 59.625435) (xy 147.585482 59.378435) - (xy 147.521002 59.137793) (xy 147.425664 58.907627) (xy 147.349807 58.776239) (xy 147.301099 58.691873) + (xy 50.5005 71.925441) (xy 143.8995 71.925441) (xy 143.8995 72.174558) (xy 143.899501 72.174575) + (xy 143.932017 72.421561) (xy 143.996498 72.662207) (xy 144.09183 72.892361) (xy 144.091837 72.892376) + (xy 144.2164 73.108126) (xy 144.36806 73.305774) (xy 144.368066 73.305781) (xy 144.544218 73.481933) + (xy 144.544225 73.481939) (xy 144.741873 73.633599) (xy 144.957623 73.758162) (xy 144.957638 73.758169) + (xy 145.056825 73.799253) (xy 145.187793 73.853502) (xy 145.428435 73.917982) (xy 145.675435 73.9505) + (xy 145.675442 73.9505) (xy 145.924558 73.9505) (xy 145.924565 73.9505) (xy 146.171565 73.917982) + (xy 146.412207 73.853502) (xy 146.642373 73.758164) (xy 146.858127 73.633599) (xy 147.055776 73.481938) + (xy 147.231938 73.305776) (xy 147.383599 73.108127) (xy 147.508164 72.892373) (xy 147.603502 72.662207) + (xy 147.667982 72.421565) (xy 147.7005 72.174565) (xy 147.7005 71.925435) (xy 147.667982 71.678435) + (xy 147.603502 71.437793) (xy 147.508164 71.207627) (xy 147.383599 70.991873) (xy 147.231938 70.794224) + (xy 147.231933 70.794218) (xy 147.055781 70.618066) (xy 147.055774 70.61806) (xy 146.858126 70.4664) + (xy 146.642376 70.341837) (xy 146.642361 70.34183) (xy 146.412207 70.246498) (xy 146.171561 70.182017) + (xy 145.924575 70.149501) (xy 145.92457 70.1495) (xy 145.924565 70.1495) (xy 145.675435 70.1495) + (xy 145.675429 70.1495) (xy 145.675424 70.149501) (xy 145.428438 70.182017) (xy 145.187792 70.246498) + (xy 144.957638 70.34183) (xy 144.957623 70.341837) (xy 144.741873 70.4664) (xy 144.544225 70.61806) + (xy 144.544218 70.618066) (xy 144.368066 70.794218) (xy 144.36806 70.794225) (xy 144.2164 70.991873) + (xy 144.091837 71.207623) (xy 144.09183 71.207638) (xy 143.996498 71.437792) (xy 143.932017 71.678438) + (xy 143.899501 71.925424) (xy 143.8995 71.925441) (xy 50.5005 71.925441) (xy 50.5005 67.97) (xy 51.780138 67.97) + (xy 52.583012 67.97) (xy 52.565795 67.97994) (xy 52.50994 68.035795) (xy 52.470444 68.104204) (xy 52.45 68.180504) + (xy 52.45 68.259496) (xy 52.470444 68.335796) (xy 52.50994 68.404205) (xy 52.565795 68.46006) (xy 52.583012 68.47) + (xy 51.780138 68.47) (xy 51.78843 68.51169) (xy 51.78843 68.511692) (xy 51.863807 68.693671) (xy 51.863814 68.693684) + (xy 51.973248 68.857462) (xy 51.973251 68.857466) (xy 52.112533 68.996748) (xy 52.112537 68.996751) + (xy 52.276315 69.106185) (xy 52.276328 69.106192) (xy 52.458306 69.181569) (xy 52.458318 69.181572) + (xy 52.651504 69.219999) (xy 52.651508 69.22) (xy 52.8 69.22) (xy 52.8 68.52) (xy 53.3 68.52) (xy 53.3 69.22) + (xy 53.448492 69.22) (xy 53.448495 69.219999) (xy 53.641681 69.181572) (xy 53.641693 69.181569) + (xy 53.823671 69.106192) (xy 53.823684 69.106185) (xy 53.987462 68.996751) (xy 53.987466 68.996748) + (xy 54.126748 68.857466) (xy 54.126751 68.857462) (xy 54.236185 68.693684) (xy 54.236192 68.693671) + (xy 54.311569 68.511692) (xy 54.311569 68.51169) (xy 54.319862 68.47) (xy 53.516988 68.47) (xy 53.534205 68.46006) + (xy 53.59006 68.404205) (xy 53.629556 68.335796) (xy 53.65 68.259496) (xy 53.65 68.180504) (xy 53.629556 68.104204) + (xy 53.59006 68.035795) (xy 53.534205 67.97994) (xy 53.516988 67.97) (xy 54.319862 67.97) (xy 55.710138 67.97) + (xy 56.513012 67.97) (xy 56.495795 67.97994) (xy 56.43994 68.035795) (xy 56.400444 68.104204) (xy 56.38 68.180504) + (xy 56.38 68.259496) (xy 56.400444 68.335796) (xy 56.43994 68.404205) (xy 56.495795 68.46006) (xy 56.513012 68.47) + (xy 55.710138 68.47) (xy 55.71843 68.51169) (xy 55.71843 68.511692) (xy 55.793807 68.693671) (xy 55.793814 68.693684) + (xy 55.903248 68.857462) (xy 55.903251 68.857466) (xy 56.042533 68.996748) (xy 56.042537 68.996751) + (xy 56.206315 69.106185) (xy 56.206328 69.106192) (xy 56.388306 69.181569) (xy 56.388318 69.181572) + (xy 56.581504 69.219999) (xy 56.581508 69.22) (xy 56.98 69.22) (xy 56.98 68.52) (xy 57.48 68.52) + (xy 57.48 69.22) (xy 57.878492 69.22) (xy 57.878495 69.219999) (xy 58.071681 69.181572) (xy 58.071693 69.181569) + (xy 58.253671 69.106192) (xy 58.253684 69.106185) (xy 58.417462 68.996751) (xy 58.417466 68.996748) + (xy 58.556748 68.857466) (xy 58.556751 68.857462) (xy 58.666185 68.693684) (xy 58.666192 68.693671) + (xy 58.741569 68.511692) (xy 58.741569 68.51169) (xy 58.749862 68.47) (xy 57.946988 68.47) (xy 57.964205 68.46006) + (xy 58.02006 68.404205) (xy 58.059556 68.335796) (xy 58.08 68.259496) (xy 58.08 68.180504) (xy 58.059556 68.104204) + (xy 58.02006 68.035795) (xy 57.964205 67.97994) (xy 57.946988 67.97) (xy 58.749862 67.97) (xy 58.741569 67.928309) + (xy 58.741569 67.928307) (xy 58.666192 67.746328) (xy 58.666185 67.746315) (xy 58.556751 67.582537) + (xy 58.556748 67.582533) (xy 58.417466 67.443251) (xy 58.417462 67.443248) (xy 58.253684 67.333814) + (xy 58.253671 67.333807) (xy 58.071693 67.25843) (xy 58.071681 67.258427) (xy 57.878495 67.22) (xy 57.48 67.22) + (xy 57.48 67.92) (xy 56.98 67.92) (xy 56.98 67.364463) (xy 56.999685 67.297424) (xy 57.042 67.257076) + (xy 57.053365 67.250515) (xy 57.160515 67.143365) (xy 57.161372 67.141879) (xy 57.181721 67.106637) + (xy 57.236279 67.012138) (xy 57.236281 67.012135) (xy 57.2755 66.865766) (xy 57.2755 66.714234) + (xy 57.236281 66.567865) (xy 57.160515 66.436635) (xy 57.053365 66.329485) (xy 56.98775 66.291602) + (xy 56.922136 66.253719) (xy 56.84895 66.234109) (xy 56.775766 66.2145) (xy 56.624234 66.2145) (xy 56.477863 66.253719) + (xy 56.346635 66.329485) (xy 56.346632 66.329487) (xy 56.239487 66.436632) (xy 56.239485 66.436635) + (xy 56.163719 66.567863) (xy 56.1245 66.714234) (xy 56.1245 66.865765) (xy 56.163719 67.012136) + (xy 56.201602 67.07775) (xy 56.239485 67.143365) (xy 56.239487 67.143367) (xy 56.244432 67.149811) + (xy 56.241612 67.151974) (xy 56.267302 67.19902) (xy 56.262318 67.268712) (xy 56.220446 67.324645) + (xy 56.211379 67.330416) (xy 56.211387 67.330427) (xy 56.042536 67.443248) (xy 55.903251 67.582533) + (xy 55.903248 67.582537) (xy 55.793814 67.746315) (xy 55.793807 67.746328) (xy 55.71843 67.928307) + (xy 55.71843 67.928309) (xy 55.710138 67.97) (xy 54.319862 67.97) (xy 54.311569 67.928309) (xy 54.311569 67.928307) + (xy 54.236192 67.746328) (xy 54.236185 67.746315) (xy 54.126751 67.582537) (xy 54.126748 67.582533) + (xy 53.987466 67.443251) (xy 53.987462 67.443248) (xy 53.823684 67.333814) (xy 53.823671 67.333807) + (xy 53.641693 67.25843) (xy 53.641681 67.258427) (xy 53.448495 67.22) (xy 53.3 67.22) (xy 53.3 67.92) + (xy 52.8 67.92) (xy 52.8 67.22) (xy 52.651504 67.22) (xy 52.458318 67.258427) (xy 52.458306 67.25843) + (xy 52.276328 67.333807) (xy 52.276315 67.333814) (xy 52.112537 67.443248) (xy 52.112533 67.443251) + (xy 51.973251 67.582533) (xy 51.973248 67.582537) (xy 51.863814 67.746315) (xy 51.863807 67.746328) + (xy 51.78843 67.928307) (xy 51.78843 67.928309) (xy 51.780138 67.97) (xy 50.5005 67.97) (xy 50.5005 63.549984) + (xy 143.817 63.549984) (xy 143.817 65.950015) (xy 143.8275 66.052795) (xy 143.827501 66.052796) + (xy 143.882686 66.219335) (xy 143.882687 66.219337) (xy 143.974786 66.368651) (xy 143.974789 66.368655) + (xy 144.098844 66.49271) (xy 144.098848 66.492713) (xy 144.248162 66.584812) (xy 144.248164 66.584813) + (xy 144.248166 66.584814) (xy 144.414703 66.639999) (xy 144.517492 66.6505) (xy 144.517497 66.6505) + (xy 146.917503 66.6505) (xy 146.917508 66.6505) (xy 147.020297 66.639999) (xy 147.186834 66.584814) + (xy 147.336155 66.492711) (xy 147.460211 66.368655) (xy 147.552314 66.219334) (xy 147.607499 66.052797) + (xy 147.618 65.950008) (xy 147.618 63.549992) (xy 147.607499 63.447203) (xy 147.552314 63.280666) + (xy 147.460211 63.131345) (xy 147.336155 63.007289) (xy 147.336151 63.007286) (xy 147.186837 62.915187) + (xy 147.186835 62.915186) (xy 147.103565 62.887593) (xy 147.020297 62.860001) (xy 147.020295 62.86) + (xy 146.917515 62.8495) (xy 146.917508 62.8495) (xy 144.517492 62.8495) (xy 144.517484 62.8495) + (xy 144.414704 62.86) (xy 144.414703 62.860001) (xy 144.248164 62.915186) (xy 144.248162 62.915187) + (xy 144.098848 63.007286) (xy 144.098844 63.007289) (xy 143.974789 63.131344) (xy 143.974786 63.131348) + (xy 143.882687 63.280662) (xy 143.882686 63.280664) (xy 143.827501 63.447203) (xy 143.8275 63.447204) + (xy 143.817 63.549984) (xy 50.5005 63.549984) (xy 50.5005 59.33) (xy 51.780138 59.33) (xy 52.583012 59.33) + (xy 52.565795 59.33994) (xy 52.50994 59.395795) (xy 52.470444 59.464204) (xy 52.45 59.540504) (xy 52.45 59.619496) + (xy 52.470444 59.695796) (xy 52.50994 59.764205) (xy 52.565795 59.82006) (xy 52.583012 59.83) (xy 51.780138 59.83) + (xy 51.78843 59.87169) (xy 51.78843 59.871692) (xy 51.863807 60.053671) (xy 51.863814 60.053684) + (xy 51.973248 60.217462) (xy 51.973251 60.217466) (xy 52.112533 60.356748) (xy 52.112537 60.356751) + (xy 52.276315 60.466185) (xy 52.276328 60.466192) (xy 52.458306 60.541569) (xy 52.458318 60.541572) + (xy 52.651504 60.579999) (xy 52.651508 60.58) (xy 52.8 60.58) (xy 52.8 59.88) (xy 53.3 59.88) (xy 53.3 60.58) + (xy 53.448492 60.58) (xy 53.448495 60.579999) (xy 53.641681 60.541572) (xy 53.641693 60.541569) + (xy 53.823671 60.466192) (xy 53.823684 60.466185) (xy 53.987462 60.356751) (xy 53.987466 60.356748) + (xy 54.126748 60.217466) (xy 54.126751 60.217462) (xy 54.236185 60.053684) (xy 54.236192 60.053671) + (xy 54.311569 59.871692) (xy 54.311569 59.87169) (xy 54.319862 59.83) (xy 53.516988 59.83) (xy 53.534205 59.82006) + (xy 53.59006 59.764205) (xy 53.629556 59.695796) (xy 53.65 59.619496) (xy 53.65 59.540504) (xy 53.629556 59.464204) + (xy 53.59006 59.395795) (xy 53.534205 59.33994) (xy 53.516988 59.33) (xy 54.319862 59.33) (xy 55.710138 59.33) + (xy 56.513012 59.33) (xy 56.495795 59.33994) (xy 56.43994 59.395795) (xy 56.400444 59.464204) (xy 56.38 59.540504) + (xy 56.38 59.619496) (xy 56.400444 59.695796) (xy 56.43994 59.764205) (xy 56.495795 59.82006) (xy 56.513012 59.83) + (xy 55.710138 59.83) (xy 55.71843 59.87169) (xy 55.71843 59.871692) (xy 55.793807 60.053671) (xy 55.793814 60.053684) + (xy 55.903248 60.217462) (xy 55.903251 60.217466) (xy 56.042533 60.356748) (xy 56.042537 60.356751) + (xy 56.211387 60.469574) (xy 56.21043 60.471005) (xy 56.254425 60.514211) (xy 56.269895 60.582346) + (xy 56.246072 60.648029) (xy 56.244309 60.650094) (xy 56.244432 60.650189) (xy 56.239485 60.656635) + (xy 56.163719 60.787863) (xy 56.129322 60.916239) (xy 56.1245 60.934234) (xy 56.1245 61.085766) + (xy 56.133248 61.118414) (xy 56.163719 61.232136) (xy 56.201602 61.29775) (xy 56.239485 61.363365) + (xy 56.346635 61.470515) (xy 56.477865 61.546281) (xy 56.624234 61.5855) (xy 56.624236 61.5855) + (xy 56.775764 61.5855) (xy 56.775766 61.5855) (xy 56.922135 61.546281) (xy 57.053365 61.470515) + (xy 57.160515 61.363365) (xy 57.236281 61.232135) (xy 57.2755 61.085766) (xy 57.2755 60.934234) + (xy 57.236281 60.787865) (xy 57.160515 60.656635) (xy 57.053365 60.549485) (xy 57.041998 60.542922) + (xy 56.993783 60.492354) (xy 56.98 60.435536) (xy 56.98 59.88) (xy 57.48 59.88) (xy 57.48 60.58) + (xy 57.878492 60.58) (xy 57.878495 60.579999) (xy 58.071681 60.541572) (xy 58.071693 60.541569) + (xy 58.253671 60.466192) (xy 58.253684 60.466185) (xy 58.417462 60.356751) (xy 58.417466 60.356748) + (xy 58.556748 60.217466) (xy 58.556751 60.217462) (xy 58.666185 60.053684) (xy 58.666192 60.053671) + (xy 58.741569 59.871692) (xy 58.741569 59.87169) (xy 58.749862 59.83) (xy 57.946988 59.83) (xy 57.964205 59.82006) + (xy 58.02006 59.764205) (xy 58.059556 59.695796) (xy 58.08 59.619496) (xy 58.08 59.540504) (xy 58.059556 59.464204) + (xy 58.02006 59.395795) (xy 57.964205 59.33994) (xy 57.946988 59.33) (xy 58.749862 59.33) (xy 58.741569 59.288309) + (xy 58.741569 59.288307) (xy 58.666192 59.106328) (xy 58.666185 59.106315) (xy 58.556751 58.942537) + (xy 58.556748 58.942533) (xy 58.417466 58.803251) (xy 58.417462 58.803248) (xy 58.253684 58.693814) + (xy 58.253671 58.693807) (xy 58.071693 58.61843) (xy 58.071681 58.618427) (xy 57.878495 58.58) (xy 57.48 58.58) + (xy 57.48 59.28) (xy 56.98 59.28) (xy 56.98 58.58) (xy 56.581504 58.58) (xy 56.388318 58.618427) + (xy 56.388306 58.61843) (xy 56.206328 58.693807) (xy 56.206315 58.693814) (xy 56.042537 58.803248) + (xy 56.042533 58.803251) (xy 55.903251 58.942533) (xy 55.903248 58.942537) (xy 55.793814 59.106315) + (xy 55.793807 59.106328) (xy 55.71843 59.288307) (xy 55.71843 59.288309) (xy 55.710138 59.33) (xy 54.319862 59.33) + (xy 54.311569 59.288309) (xy 54.311569 59.288307) (xy 54.236192 59.106328) (xy 54.236185 59.106315) + (xy 54.126751 58.942537) (xy 54.126748 58.942533) (xy 53.987466 58.803251) (xy 53.987462 58.803248) + (xy 53.823684 58.693814) (xy 53.823671 58.693807) (xy 53.641693 58.61843) (xy 53.641681 58.618427) + (xy 53.448495 58.58) (xy 53.3 58.58) (xy 53.3 59.28) (xy 52.8 59.28) (xy 52.8 58.58) (xy 52.651504 58.58) + (xy 52.458318 58.618427) (xy 52.458306 58.61843) (xy 52.276328 58.693807) (xy 52.276315 58.693814) + (xy 52.112537 58.803248) (xy 52.112533 58.803251) (xy 51.973251 58.942533) (xy 51.973248 58.942537) + (xy 51.863814 59.106315) (xy 51.863807 59.106328) (xy 51.78843 59.288307) (xy 51.78843 59.288309) + (xy 51.780138 59.33) (xy 50.5005 59.33) (xy 50.5005 49.899984) (xy 52.3495 49.899984) (xy 52.3495 52.300015) + (xy 52.36 52.402795) (xy 52.360001 52.402797) (xy 52.387593 52.486065) (xy 52.415186 52.569335) + (xy 52.415187 52.569337) (xy 52.507286 52.718651) (xy 52.507289 52.718655) (xy 52.631344 52.84271) + (xy 52.631348 52.842713) (xy 52.780662 52.934812) (xy 52.780664 52.934813) (xy 52.780666 52.934814) + (xy 52.947203 52.989999) (xy 53.049992 53.0005) (xy 53.049997 53.0005) (xy 55.450003 53.0005) (xy 55.450008 53.0005) + (xy 55.552797 52.989999) (xy 55.719334 52.934814) (xy 55.868655 52.842711) (xy 55.992711 52.718655) + (xy 56.084814 52.569334) (xy 56.139999 52.402797) (xy 56.1505 52.300008) (xy 56.1505 50.021153) + (xy 99.8995 50.021153) (xy 99.8995 50.178846) (xy 99.930261 50.333489) (xy 99.930264 50.333501) + (xy 99.990602 50.479172) (xy 99.990609 50.479185) (xy 100.07821 50.610288) (xy 100.078213 50.610292) + (xy 100.189707 50.721786) (xy 100.189711 50.721789) (xy 100.320814 50.80939) (xy 100.320827 50.809397) + (xy 100.466498 50.869735) (xy 100.466503 50.869737) (xy 100.576987 50.891713) (xy 100.599691 50.89623) + (xy 100.661602 50.928615) (xy 100.696176 50.98933) (xy 100.6995 51.017847) (xy 100.6995 56.67333) + (xy 100.699499 56.673348) (xy 100.699499 56.839054) (xy 100.699498 56.839054) (xy 100.740423 56.991785) + (xy 100.762425 57.029892) (xy 100.762426 57.029896) (xy 100.819475 57.128709) (xy 100.819481 57.128717) + (xy 100.938349 57.247585) (xy 100.938355 57.24759) (xy 101.266241 57.575476) (xy 101.299726 57.636799) + (xy 101.296492 57.701473) (xy 101.282753 57.743757) (xy 101.2495 57.953713) (xy 101.2495 58.166286) + (xy 101.282753 58.376239) (xy 101.348444 58.578414) (xy 101.444951 58.76782) (xy 101.56989 58.939786) + (xy 101.720213 59.090109) (xy 101.892182 59.21505) (xy 101.900946 59.219516) (xy 101.951742 59.267491) + (xy 101.968536 59.335312) (xy 101.945998 59.401447) (xy 101.900946 59.440484) (xy 101.892182 59.444949) + (xy 101.720213 59.56989) (xy 101.56989 59.720213) (xy 101.444951 59.892179) (xy 101.348444 60.081585) + (xy 101.282753 60.28376) (xy 101.265528 60.392516) (xy 101.2495 60.493713) (xy 101.2495 60.706287) + (xy 101.282754 60.916243) (xy 101.337835 61.085765) (xy 101.348444 61.118414) (xy 101.444951 61.30782) + (xy 101.56989 61.479786) (xy 101.720213 61.630109) (xy 101.892179 61.755048) (xy 101.892181 61.755049) + (xy 101.892184 61.755051) (xy 102.081588 61.851557) (xy 102.283757 61.917246) (xy 102.493713 61.9505) + (xy 102.493714 61.9505) (xy 102.706286 61.9505) (xy 102.706287 61.9505) (xy 102.916243 61.917246) + (xy 103.118412 61.851557) (xy 103.307816 61.755051) (xy 103.329789 61.739086) (xy 103.479786 61.630109) + (xy 103.479788 61.630106) (xy 103.479792 61.630104) (xy 103.630104 61.479792) (xy 103.630106 61.479788) + (xy 103.630109 61.479786) (xy 103.755048 61.30782) (xy 103.755047 61.30782) (xy 103.755051 61.307816) + (xy 103.851557 61.118412) (xy 103.917246 60.916243) (xy 103.9505 60.706287) (xy 103.9505 60.493713) + (xy 103.943915 60.452135) (xy 119.5995 60.452135) (xy 119.5995 62.54787) (xy 119.599501 62.547876) + (xy 119.605908 62.607483) (xy 119.656202 62.742328) (xy 119.656206 62.742335) (xy 119.742452 62.857544) + (xy 119.742455 62.857547) (xy 119.857664 62.943793) (xy 119.857671 62.943797) (xy 119.992517 62.994091) + (xy 119.992516 62.994091) (xy 119.999444 62.994835) (xy 120.052127 63.0005) (xy 122.147872 63.000499) + (xy 122.207483 62.994091) (xy 122.342331 62.943796) (xy 122.457546 62.857546) (xy 122.543796 62.742331) + (xy 122.594091 62.607483) (xy 122.6005 62.547873) (xy 122.600499 60.452128) (xy 122.594091 60.392517) + (xy 122.553527 60.28376) (xy 122.543797 60.257671) (xy 122.543793 60.257664) (xy 122.457547 60.142455) + (xy 122.457544 60.142452) (xy 122.342335 60.056206) (xy 122.342328 60.056202) (xy 122.207482 60.005908) + (xy 122.207483 60.005908) (xy 122.147883 59.999501) (xy 122.147881 59.9995) (xy 122.147873 59.9995) + (xy 122.147864 59.9995) (xy 120.052129 59.9995) (xy 120.052123 59.999501) (xy 119.992516 60.005908) + (xy 119.857671 60.056202) (xy 119.857664 60.056206) (xy 119.742455 60.142452) (xy 119.742452 60.142455) + (xy 119.656206 60.257664) (xy 119.656202 60.257671) (xy 119.605908 60.392517) (xy 119.599501 60.452116) + (xy 119.599501 60.452123) (xy 119.5995 60.452135) (xy 103.943915 60.452135) (xy 103.917246 60.283757) + (xy 103.851557 60.081588) (xy 103.755051 59.892184) (xy 103.755049 59.892181) (xy 103.755048 59.892179) + (xy 103.630109 59.720213) (xy 103.535337 59.625441) (xy 143.817 59.625441) (xy 143.817 59.874558) + (xy 143.817001 59.874575) (xy 143.844254 60.081585) (xy 143.849518 60.121565) (xy 143.875214 60.217462) + (xy 143.913998 60.362207) (xy 144.00933 60.592361) (xy 144.009337 60.592376) (xy 144.1339 60.808126) + (xy 144.28556 61.005774) (xy 144.285566 61.005781) (xy 144.461718 61.181933) (xy 144.461725 61.181939) + (xy 144.659373 61.333599) (xy 144.875123 61.458162) (xy 144.875138 61.458169) (xy 144.974325 61.499253) + (xy 145.105293 61.553502) (xy 145.345935 61.617982) (xy 145.592935 61.6505) (xy 145.592942 61.6505) + (xy 145.842058 61.6505) (xy 145.842065 61.6505) (xy 146.089065 61.617982) (xy 146.329707 61.553502) + (xy 146.559873 61.458164) (xy 146.775627 61.333599) (xy 146.973276 61.181938) (xy 147.149438 61.005776) + (xy 147.301099 60.808127) (xy 147.425664 60.592373) (xy 147.521002 60.362207) (xy 147.585482 60.121565) + (xy 147.618 59.874565) (xy 147.618 59.625435) (xy 147.585482 59.378435) (xy 147.521002 59.137793) + (xy 147.466753 59.006825) (xy 147.425669 58.907638) (xy 147.425662 58.907623) (xy 147.301099 58.691873) (xy 147.149439 58.494225) (xy 147.149433 58.494218) (xy 146.973281 58.318066) (xy 146.973274 58.31806) (xy 146.775626 58.1664) (xy 146.559876 58.041837) (xy 146.559861 58.04183) (xy 146.329707 57.946498) (xy 146.089061 57.882017) (xy 145.842075 57.849501) (xy 145.84207 57.8495) (xy 145.842065 57.8495) @@ -28889,89 +32232,117 @@ (xy 145.105292 57.946498) (xy 144.875138 58.04183) (xy 144.875123 58.041837) (xy 144.659373 58.1664) (xy 144.461725 58.31806) (xy 144.461718 58.318066) (xy 144.285566 58.494218) (xy 144.28556 58.494225) (xy 144.1339 58.691873) (xy 144.009337 58.907623) (xy 144.00933 58.907638) (xy 143.913998 59.137792) - (xy 143.849517 59.378438) (xy 143.817001 59.625424) (xy 143.817 59.625441) (xy 105.288475 59.625441) - (xy 105.291257 59.623487) (xy 105.307816 59.615051) (xy 105.479792 59.490104) (xy 105.630104 59.339792) - (xy 105.630106 59.339788) (xy 105.630109 59.339786) (xy 105.755048 59.16782) (xy 105.755047 59.16782) - (xy 105.755051 59.167816) (xy 105.851557 58.978412) (xy 105.917246 58.776243) (xy 105.9505 58.566287) - (xy 105.9505 58.353713) (xy 105.917246 58.143757) (xy 105.851557 57.941588) (xy 105.755051 57.752184) - (xy 105.755049 57.752181) (xy 105.755048 57.752179) (xy 105.630109 57.580213) (xy 105.479786 57.42989) - (xy 105.30782 57.304951) (xy 105.307115 57.304591) (xy 105.299054 57.300485) (xy 105.248259 57.252512) - (xy 105.231463 57.184692) (xy 105.253999 57.118556) (xy 105.299054 57.079515) (xy 105.307816 57.075051) - (xy 105.329789 57.059086) (xy 105.479786 56.950109) (xy 105.479788 56.950106) (xy 105.479792 56.950104) - (xy 105.630104 56.799792) (xy 105.630106 56.799788) (xy 105.630109 56.799786) (xy 105.755048 56.62782) - (xy 105.755047 56.62782) (xy 105.755051 56.627816) (xy 105.851557 56.438412) (xy 105.917246 56.236243) - (xy 105.9505 56.026287) (xy 105.9505 55.813713) (xy 105.917246 55.603757) (xy 105.851557 55.401588) - (xy 105.755051 55.212184) (xy 105.755049 55.212181) (xy 105.755048 55.212179) (xy 105.630109 55.040213) - (xy 105.479786 54.88989) (xy 105.30782 54.764951) (xy 105.307115 54.764591) (xy 105.299054 54.760485) - (xy 105.248259 54.712512) (xy 105.231463 54.644692) (xy 105.253999 54.578556) (xy 105.299054 54.539515) - (xy 105.307816 54.535051) (xy 105.329789 54.519086) (xy 105.479786 54.410109) (xy 105.479788 54.410106) - (xy 105.479792 54.410104) (xy 105.630104 54.259792) (xy 105.630106 54.259788) (xy 105.630109 54.259786) - (xy 105.755048 54.08782) (xy 105.755047 54.08782) (xy 105.755051 54.087816) (xy 105.851557 53.898412) - (xy 105.917246 53.696243) (xy 105.9505 53.486287) (xy 105.9505 53.273713) (xy 105.917246 53.063757) - (xy 105.851557 52.861588) (xy 105.755051 52.672184) (xy 105.755049 52.672181) (xy 105.755048 52.672179) - (xy 105.630109 52.500213) (xy 105.479786 52.34989) (xy 105.30782 52.224951) (xy 105.307115 52.224591) - (xy 105.299054 52.220485) (xy 105.248259 52.172512) (xy 105.231463 52.104692) (xy 105.253999 52.038556) - (xy 105.299054 51.999515) (xy 105.307816 51.995051) (xy 105.329789 51.979086) (xy 105.479786 51.870109) - (xy 105.479788 51.870106) (xy 105.479792 51.870104) (xy 105.630104 51.719792) (xy 105.630106 51.719788) - (xy 105.630109 51.719786) (xy 105.755048 51.54782) (xy 105.755047 51.54782) (xy 105.755051 51.547816) - (xy 105.851557 51.358412) (xy 105.917246 51.156243) (xy 105.9505 50.946287) (xy 105.9505 50.733713) - (xy 105.917246 50.523757) (xy 105.851557 50.321588) (xy 105.755051 50.132184) (xy 105.745995 50.119719) - (xy 105.69533 50.049984) (xy 143.817 50.049984) (xy 143.817 52.450015) (xy 143.8275 52.552795) (xy 143.827501 52.552796) - (xy 143.882686 52.719335) (xy 143.882687 52.719337) (xy 143.974786 52.868651) (xy 143.974789 52.868655) - (xy 144.098844 52.99271) (xy 144.098848 52.992713) (xy 144.248162 53.084812) (xy 144.248164 53.084813) - (xy 144.248166 53.084814) (xy 144.414703 53.139999) (xy 144.517492 53.1505) (xy 144.517497 53.1505) - (xy 146.917503 53.1505) (xy 146.917508 53.1505) (xy 147.020297 53.139999) (xy 147.186834 53.084814) - (xy 147.336155 52.992711) (xy 147.460211 52.868655) (xy 147.552314 52.719334) (xy 147.607499 52.552797) - (xy 147.618 52.450008) (xy 147.618 50.049992) (xy 147.607499 49.947203) (xy 147.552314 49.780666) - (xy 147.467043 49.642422) (xy 147.460213 49.631348) (xy 147.46021 49.631344) (xy 147.336155 49.507289) - (xy 147.336151 49.507286) (xy 147.186837 49.415187) (xy 147.186835 49.415186) (xy 147.103565 49.387593) - (xy 147.020297 49.360001) (xy 147.020295 49.36) (xy 146.917515 49.3495) (xy 146.917508 49.3495) - (xy 144.517492 49.3495) (xy 144.517484 49.3495) (xy 144.414704 49.36) (xy 144.414703 49.360001) + (xy 143.849517 59.378438) (xy 143.817001 59.625424) (xy 143.817 59.625441) (xy 103.535337 59.625441) + (xy 103.479786 59.56989) (xy 103.30782 59.444951) (xy 103.307115 59.444591) (xy 103.299054 59.440485) + (xy 103.248259 59.392512) (xy 103.231463 59.324692) (xy 103.253999 59.258556) (xy 103.299054 59.219515) + (xy 103.307816 59.215051) (xy 103.329789 59.199086) (xy 103.479786 59.090109) (xy 103.479788 59.090106) + (xy 103.479792 59.090104) (xy 103.630104 58.939792) (xy 103.630106 58.939788) (xy 103.630109 58.939786) + (xy 103.755048 58.76782) (xy 103.755047 58.76782) (xy 103.755051 58.767816) (xy 103.851557 58.578412) + (xy 103.917246 58.376243) (xy 103.9505 58.166287) (xy 103.9505 57.953713) (xy 103.917246 57.743757) + (xy 103.851557 57.541588) (xy 103.755051 57.352184) (xy 103.755049 57.352181) (xy 103.755048 57.352179) + (xy 103.630109 57.180213) (xy 103.479786 57.02989) (xy 103.30782 56.904951) (xy 103.307115 56.904591) + (xy 103.299054 56.900485) (xy 103.248259 56.852512) (xy 103.231463 56.784692) (xy 103.253999 56.718556) + (xy 103.299054 56.679515) (xy 103.307816 56.675051) (xy 103.329789 56.659086) (xy 103.479786 56.550109) + (xy 103.479788 56.550106) (xy 103.479792 56.550104) (xy 103.630104 56.399792) (xy 103.630106 56.399788) + (xy 103.630109 56.399786) (xy 103.755048 56.22782) (xy 103.755047 56.22782) (xy 103.755051 56.227816) + (xy 103.851557 56.038412) (xy 103.917246 55.836243) (xy 103.9505 55.626287) (xy 103.9505 55.413713) + (xy 103.917246 55.203757) (xy 103.851557 55.001588) (xy 103.755051 54.812184) (xy 103.755049 54.812181) + (xy 103.755048 54.812179) (xy 103.630109 54.640213) (xy 103.479786 54.48989) (xy 103.30782 54.364951) + (xy 103.299498 54.360711) (xy 103.299054 54.360485) (xy 103.248259 54.312512) (xy 103.231463 54.244692) + (xy 103.253999 54.178556) (xy 103.299054 54.139515) (xy 103.307816 54.135051) (xy 103.468791 54.018097) + (xy 103.479786 54.010109) (xy 103.479788 54.010106) (xy 103.479792 54.010104) (xy 103.630104 53.859792) + (xy 103.686694 53.781902) (xy 119.5995 53.781902) (xy 119.5995 54.018097) (xy 119.636446 54.251368) + (xy 119.709433 54.475996) (xy 119.793104 54.640208) (xy 119.816657 54.686433) (xy 119.955483 54.87751) + (xy 120.12249 55.044517) (xy 120.313567 55.183343) (xy 120.353632 55.203757) (xy 120.524003 55.290566) + (xy 120.524005 55.290566) (xy 120.524008 55.290568) (xy 120.644412 55.329689) (xy 120.748631 55.363553) + (xy 120.981903 55.4005) (xy 120.981908 55.4005) (xy 121.218097 55.4005) (xy 121.451368 55.363553) + (xy 121.675992 55.290568) (xy 121.886433 55.183343) (xy 122.07751 55.044517) (xy 122.244517 54.87751) + (xy 122.383343 54.686433) (xy 122.490568 54.475992) (xy 122.563553 54.251368) (xy 122.581976 54.135051) + (xy 122.6005 54.018097) (xy 122.6005 53.781902) (xy 122.563553 53.548631) (xy 122.490566 53.324003) + (xy 122.402161 53.1505) (xy 122.383343 53.113567) (xy 122.244517 52.92249) (xy 122.07751 52.755483) + (xy 121.886433 52.616657) (xy 121.675996 52.509433) (xy 121.451368 52.436446) (xy 121.218097 52.3995) + (xy 121.218092 52.3995) (xy 120.981908 52.3995) (xy 120.981903 52.3995) (xy 120.748631 52.436446) + (xy 120.524003 52.509433) (xy 120.313566 52.616657) (xy 120.248735 52.66376) (xy 120.12249 52.755483) + (xy 120.122488 52.755485) (xy 120.122487 52.755485) (xy 119.955485 52.922487) (xy 119.955485 52.922488) + (xy 119.955483 52.92249) (xy 119.906435 52.989999) (xy 119.816657 53.113566) (xy 119.709433 53.324003) + (xy 119.636446 53.548631) (xy 119.5995 53.781902) (xy 103.686694 53.781902) (xy 103.743184 53.704151) + (xy 103.750823 53.693634) (xy 103.755051 53.687816) (xy 103.851557 53.498412) (xy 103.917246 53.296243) + (xy 103.9505 53.086287) (xy 103.9505 52.873713) (xy 103.917246 52.663757) (xy 103.851557 52.461588) + (xy 103.755051 52.272184) (xy 103.755049 52.272181) (xy 103.755048 52.272179) (xy 103.630109 52.100213) + (xy 103.479786 51.94989) (xy 103.30782 51.824951) (xy 103.299498 51.820711) (xy 103.299054 51.820485) + (xy 103.248259 51.772512) (xy 103.231463 51.704692) (xy 103.253999 51.638556) (xy 103.299054 51.599515) + (xy 103.307816 51.595051) (xy 103.329789 51.579086) (xy 103.479786 51.470109) (xy 103.479788 51.470106) + (xy 103.479792 51.470104) (xy 103.630104 51.319792) (xy 103.630106 51.319788) (xy 103.630109 51.319786) + (xy 103.755048 51.14782) (xy 103.755047 51.14782) (xy 103.755051 51.147816) (xy 103.851557 50.958412) + (xy 103.917246 50.756243) (xy 103.9505 50.546287) (xy 103.9505 50.333713) (xy 103.917246 50.123757) + (xy 103.893276 50.049984) (xy 143.817 50.049984) (xy 143.817 52.450015) (xy 143.8275 52.552795) + (xy 143.827501 52.552796) (xy 143.882686 52.719335) (xy 143.882687 52.719337) (xy 143.974786 52.868651) + (xy 143.974789 52.868655) (xy 144.098844 52.99271) (xy 144.098848 52.992713) (xy 144.248162 53.084812) + (xy 144.248164 53.084813) (xy 144.248166 53.084814) (xy 144.414703 53.139999) (xy 144.517492 53.1505) + (xy 144.517497 53.1505) (xy 146.917503 53.1505) (xy 146.917508 53.1505) (xy 147.020297 53.139999) + (xy 147.186834 53.084814) (xy 147.336155 52.992711) (xy 147.460211 52.868655) (xy 147.552314 52.719334) + (xy 147.607499 52.552797) (xy 147.618 52.450008) (xy 147.618 50.049992) (xy 147.607499 49.947203) + (xy 147.552314 49.780666) (xy 147.543008 49.765579) (xy 147.460213 49.631348) (xy 147.46021 49.631344) + (xy 147.336155 49.507289) (xy 147.336151 49.507286) (xy 147.186837 49.415187) (xy 147.186835 49.415186) + (xy 147.084464 49.381264) (xy 147.020297 49.360001) (xy 147.020295 49.36) (xy 146.917515 49.3495) + (xy 146.917508 49.3495) (xy 144.517492 49.3495) (xy 144.517484 49.3495) (xy 144.414704 49.36) (xy 144.414703 49.360001) (xy 144.248164 49.415186) (xy 144.248162 49.415187) (xy 144.098848 49.507286) (xy 144.098844 49.507289) (xy 143.974789 49.631344) (xy 143.974786 49.631348) (xy 143.882687 49.780662) (xy 143.882686 49.780664) - (xy 143.827501 49.947203) (xy 143.8275 49.947204) (xy 143.817 50.049984) (xy 105.69533 50.049984) - (xy 105.630109 49.960213) (xy 105.516181 49.846285) (xy 105.482696 49.784962) (xy 105.48768 49.71527) - (xy 105.529552 49.659337) (xy 105.560529 49.642422) (xy 105.692086 49.593354) (xy 105.692093 49.59335) - (xy 105.807187 49.50719) (xy 105.80719 49.507187) (xy 105.89335 49.392093) (xy 105.893354 49.392086) - (xy 105.943596 49.257379) (xy 105.943598 49.257372) (xy 105.949999 49.197844) (xy 105.95 49.197827) - (xy 105.95 48.55) (xy 105.033012 48.55) (xy 105.065925 48.492993) (xy 105.1 48.365826) (xy 105.1 48.234174) - (xy 105.065925 48.107007) (xy 105.033012 48.05) (xy 105.95 48.05) (xy 105.95 47.402172) (xy 105.949999 47.402155) - (xy 105.943598 47.342627) (xy 105.943596 47.34262) (xy 105.893354 47.207913) (xy 105.89335 47.207906) - (xy 105.80719 47.092812) (xy 105.807187 47.092809) (xy 105.692093 47.006649) (xy 105.692086 47.006645) - (xy 105.557379 46.956403) (xy 105.557372 46.956401) (xy 105.497844 46.95) (xy 104.85 46.95) (xy 104.85 47.866988) - (xy 104.792993 47.834075) (xy 104.665826 47.8) (xy 104.534174 47.8) (xy 104.407007 47.834075) (xy 104.35 47.866988) - (xy 104.35 46.95) (xy 103.702155 46.95) (xy 103.642627 46.956401) (xy 103.64262 46.956403) (xy 103.507913 47.006645) - (xy 103.507906 47.006649) (xy 103.392812 47.092809) (xy 103.392809 47.092812) (xy 103.306649 47.207906) - (xy 103.306645 47.207913) (xy 103.256403 47.34262) (xy 103.256401 47.342627) (xy 103.25 47.402155) - (xy 103.25 48.05) (xy 104.166988 48.05) (xy 104.134075 48.107007) (xy 104.1 48.234174) (xy 104.1 48.365826) - (xy 104.134075 48.492993) (xy 104.166988 48.55) (xy 103.25 48.55) (xy 103.25 49.197844) (xy 103.256401 49.257372) - (xy 103.256403 49.257379) (xy 103.306645 49.392086) (xy 103.306649 49.392093) (xy 103.392809 49.507187) - (xy 103.392812 49.50719) (xy 103.507906 49.59335) (xy 103.507913 49.593354) (xy 103.63947 49.642422) - (xy 103.695404 49.684293) (xy 103.719821 49.749758) (xy 103.704969 49.818031) (xy 103.683819 49.846285) - (xy 103.569889 49.960215) (xy 103.444951 50.132179) (xy 103.348444 50.321585) (xy 103.282753 50.52376) - (xy 103.2495 50.733713) (xy 56.1505 50.733713) (xy 56.1505 49.899992) (xy 56.139999 49.797203) (xy 56.084814 49.630666) - (xy 56.05877 49.588443) (xy 55.992713 49.481348) (xy 55.99271 49.481344) (xy 55.868655 49.357289) - (xy 55.868651 49.357286) (xy 55.719337 49.265187) (xy 55.719335 49.265186) (xy 55.636065 49.237593) - (xy 55.552797 49.210001) (xy 55.552795 49.21) (xy 55.450015 49.1995) (xy 55.450008 49.1995) (xy 53.049992 49.1995) - (xy 53.049984 49.1995) (xy 52.947204 49.21) (xy 52.947203 49.210001) (xy 52.780664 49.265186) (xy 52.780662 49.265187) - (xy 52.631348 49.357286) (xy 52.631344 49.357289) (xy 52.507289 49.481344) (xy 52.507286 49.481348) - (xy 52.415187 49.630662) (xy 52.415186 49.630664) (xy 52.360001 49.797203) (xy 52.36 49.797204) - (xy 52.3495 49.899984) (xy 50.5005 49.899984) (xy 50.5005 45.975466) (xy 52.35 45.975466) (xy 52.35 46.224533) - (xy 52.382508 46.471463) (xy 52.446973 46.712049) (xy 52.542283 46.942148) (xy 52.542288 46.942159) - (xy 52.666813 47.157841) (xy 52.666819 47.157849) (xy 52.7414 47.255045) (xy 53.648958 46.347487) - (xy 53.673978 46.40789) (xy 53.745112 46.514351) (xy 53.835649 46.604888) (xy 53.94211 46.676022) - (xy 54.002511 46.701041) (xy 53.094953 47.608598) (xy 53.19215 47.68318) (xy 53.192158 47.683186) - (xy 53.40784 47.807711) (xy 53.407851 47.807716) (xy 53.63795 47.903026) (xy 53.878536 47.967491) - (xy 54.125466 48) (xy 54.374534 48) (xy 54.621463 47.967491) (xy 54.862049 47.903026) (xy 55.092148 47.807716) - (xy 55.092159 47.807711) (xy 55.307855 47.683178) (xy 55.405045 47.6086) (xy 55.405045 47.608597) - (xy 55.28298 47.486532) (xy 54.497488 46.701041) (xy 54.55789 46.676022) (xy 54.664351 46.604888) - (xy 54.754888 46.514351) (xy 54.826022 46.40789) (xy 54.851041 46.347489) (xy 55.758597 47.255045) - (xy 55.7586 47.255045) (xy 55.833178 47.157855) (xy 55.957711 46.942159) (xy 55.957716 46.942148) + (xy 143.827501 49.947203) (xy 143.8275 49.947204) (xy 143.817 50.049984) (xy 103.893276 50.049984) + (xy 103.851557 49.921588) (xy 103.755051 49.732184) (xy 103.755049 49.732181) (xy 103.755048 49.732179) + (xy 103.630109 49.560213) (xy 103.516181 49.446285) (xy 103.482696 49.384962) (xy 103.48768 49.31527) + (xy 103.529552 49.259337) (xy 103.560529 49.242422) (xy 103.692086 49.193354) (xy 103.692093 49.19335) + (xy 103.807187 49.10719) (xy 103.80719 49.107187) (xy 103.89335 48.992093) (xy 103.893354 48.992086) + (xy 103.943596 48.857379) (xy 103.943598 48.857372) (xy 103.949999 48.797844) (xy 103.95 48.797827) + (xy 103.95 48.15) (xy 103.033012 48.15) (xy 103.065925 48.092993) (xy 103.1 47.965826) (xy 103.1 47.834174) + (xy 103.065925 47.707007) (xy 103.033012 47.65) (xy 103.95 47.65) (xy 103.95 47.002172) (xy 103.949999 47.002155) + (xy 103.943598 46.942627) (xy 103.943596 46.94262) (xy 103.893354 46.807913) (xy 103.89335 46.807906) + (xy 103.80719 46.692812) (xy 103.807187 46.692809) (xy 103.692093 46.606649) (xy 103.692086 46.606645) + (xy 103.557379 46.556403) (xy 103.557372 46.556401) (xy 103.497844 46.55) (xy 102.85 46.55) (xy 102.85 47.466988) + (xy 102.792993 47.434075) (xy 102.665826 47.4) (xy 102.534174 47.4) (xy 102.407007 47.434075) (xy 102.35 47.466988) + (xy 102.35 46.55) (xy 101.702155 46.55) (xy 101.642627 46.556401) (xy 101.64262 46.556403) (xy 101.507913 46.606645) + (xy 101.507906 46.606649) (xy 101.392812 46.692809) (xy 101.392809 46.692812) (xy 101.306649 46.807906) + (xy 101.306645 46.807913) (xy 101.256403 46.94262) (xy 101.256401 46.942627) (xy 101.25 47.002155) + (xy 101.25 47.65) (xy 102.166988 47.65) (xy 102.134075 47.707007) (xy 102.1 47.834174) (xy 102.1 47.965826) + (xy 102.134075 48.092993) (xy 102.166988 48.15) (xy 101.25 48.15) (xy 101.25 48.797844) (xy 101.256401 48.857372) + (xy 101.256403 48.857379) (xy 101.306645 48.992086) (xy 101.306649 48.992093) (xy 101.392809 49.107187) + (xy 101.392812 49.10719) (xy 101.507906 49.19335) (xy 101.507913 49.193354) (xy 101.63947 49.242422) + (xy 101.665286 49.261747) (xy 101.691943 49.279882) (xy 101.693079 49.282552) (xy 101.695404 49.284293) + (xy 101.706672 49.314506) (xy 101.719295 49.344176) (xy 101.718806 49.347038) (xy 101.719821 49.349758) + (xy 101.712967 49.381264) (xy 101.707544 49.41305) (xy 101.705398 49.416055) (xy 101.704969 49.418031) + (xy 101.687692 49.442232) (xy 101.685793 49.44431) (xy 101.569896 49.560208) (xy 101.530881 49.613907) + (xy 101.526195 49.619038) (xy 101.502017 49.633696) (xy 101.479629 49.650961) (xy 101.472536 49.65157) + (xy 101.466449 49.655261) (xy 101.438182 49.65452) (xy 101.410015 49.65694) (xy 101.403719 49.653618) + (xy 101.396603 49.653432) (xy 101.373227 49.637529) (xy 101.34822 49.624335) (xy 101.340887 49.615528) + (xy 101.338834 49.614132) (xy 101.337904 49.611946) (xy 101.331538 49.604301) (xy 101.321789 49.58971) + (xy 101.210292 49.478213) (xy 101.210288 49.47821) (xy 101.079185 49.390609) (xy 101.079172 49.390602) + (xy 100.933501 49.330264) (xy 100.933489 49.330261) (xy 100.778845 49.2995) (xy 100.778842 49.2995) + (xy 100.621158 49.2995) (xy 100.621155 49.2995) (xy 100.46651 49.330261) (xy 100.466498 49.330264) + (xy 100.320827 49.390602) (xy 100.320814 49.390609) (xy 100.189711 49.47821) (xy 100.189707 49.478213) + (xy 100.078213 49.589707) (xy 100.07821 49.589711) (xy 99.990609 49.720814) (xy 99.990602 49.720827) + (xy 99.930264 49.866498) (xy 99.930261 49.86651) (xy 99.8995 50.021153) (xy 56.1505 50.021153) (xy 56.1505 49.899992) + (xy 56.139999 49.797203) (xy 56.084814 49.630666) (xy 56.073267 49.611946) (xy 55.992713 49.481348) + (xy 55.99271 49.481344) (xy 55.868655 49.357289) (xy 55.868651 49.357286) (xy 55.719337 49.265187) + (xy 55.719335 49.265186) (xy 55.636065 49.237593) (xy 55.552797 49.210001) (xy 55.552795 49.21) + (xy 55.450015 49.1995) (xy 55.450008 49.1995) (xy 53.049992 49.1995) (xy 53.049984 49.1995) (xy 52.947204 49.21) + (xy 52.947203 49.210001) (xy 52.780664 49.265186) (xy 52.780662 49.265187) (xy 52.631348 49.357286) + (xy 52.631344 49.357289) (xy 52.507289 49.481344) (xy 52.507286 49.481348) (xy 52.415187 49.630662) + (xy 52.415186 49.630664) (xy 52.360001 49.797203) (xy 52.36 49.797204) (xy 52.3495 49.899984) (xy 50.5005 49.899984) + (xy 50.5005 45.975466) (xy 52.35 45.975466) (xy 52.35 46.224533) (xy 52.382508 46.471463) (xy 52.446973 46.712049) + (xy 52.542283 46.942148) (xy 52.542288 46.942159) (xy 52.666813 47.157841) (xy 52.666819 47.157849) + (xy 52.7414 47.255045) (xy 53.648958 46.347487) (xy 53.673978 46.40789) (xy 53.745112 46.514351) + (xy 53.835649 46.604888) (xy 53.94211 46.676022) (xy 54.002511 46.701041) (xy 53.094953 47.608598) + (xy 53.19215 47.68318) (xy 53.192158 47.683186) (xy 53.40784 47.807711) (xy 53.407851 47.807716) + (xy 53.63795 47.903026) (xy 53.878536 47.967491) (xy 54.125466 48) (xy 54.374534 48) (xy 54.621463 47.967491) + (xy 54.862049 47.903026) (xy 55.092148 47.807716) (xy 55.092159 47.807711) (xy 55.307855 47.683178) + (xy 55.405045 47.6086) (xy 55.405045 47.608597) (xy 54.497488 46.701041) (xy 54.55789 46.676022) + (xy 54.664351 46.604888) (xy 54.754888 46.514351) (xy 54.826022 46.40789) (xy 54.851041 46.347489) + (xy 55.758597 47.255045) (xy 55.7586 47.255045) (xy 55.833178 47.157855) (xy 55.957714 46.942153) (xy 56.053026 46.712049) (xy 56.117491 46.471463) (xy 56.15 46.224533) (xy 56.15 46.125441) (xy 143.817 46.125441) (xy 143.817 46.374558) (xy 143.817001 46.374575) (xy 143.849517 46.621561) (xy 143.913998 46.862207) (xy 144.00933 47.092361) (xy 144.009337 47.092376) (xy 144.1339 47.308126) (xy 144.28556 47.505774) (xy 144.285566 47.505781) (xy 144.461718 47.681933) (xy 144.461725 47.681939) (xy 144.659373 47.833599) - (xy 144.875123 47.958162) (xy 144.875138 47.958169) (xy 144.974325 47.999253) (xy 145.105293 48.053502) + (xy 144.875123 47.958162) (xy 144.875138 47.958169) (xy 144.897644 47.967491) (xy 145.105293 48.053502) (xy 145.345935 48.117982) (xy 145.592935 48.1505) (xy 145.592942 48.1505) (xy 145.842058 48.1505) (xy 145.842065 48.1505) (xy 146.089065 48.117982) (xy 146.329707 48.053502) (xy 146.559873 47.958164) (xy 146.775627 47.833599) (xy 146.973276 47.681938) (xy 147.149438 47.505776) (xy 147.301099 47.308127) diff --git a/hardware/kilncontrol.kicad_pro b/hardware/safekiln.kicad_pro similarity index 97% rename from hardware/kilncontrol.kicad_pro rename to hardware/safekiln.kicad_pro index 6b034a3..910fa7f 100644 --- a/hardware/kilncontrol.kicad_pro +++ b/hardware/safekiln.kicad_pro @@ -69,7 +69,13 @@ "thermal_relief_spoke_width": 0.5 } }, - "diff_pair_dimensions": [], + "diff_pair_dimensions": [ + { + "gap": 0.0, + "via_gap": 0.0, + "width": 0.0 + } + ], "drc_exclusions": [], "meta": { "version": 2 @@ -203,7 +209,10 @@ "td_width_to_size_filter_ratio": 0.9 } ], - "track_widths": [], + "track_widths": [ + 0.0, + 0.2 + ], "tuning_pattern_settings": { "diff_pair_defaults": { "corner_radius_percentage": 80, @@ -230,7 +239,12 @@ "spacing": 0.6 } }, - "via_dimensions": [], + "via_dimensions": [ + { + "diameter": 0.0, + "drill": 0.0 + } + ], "zones_allow_external_fillets": false }, "ipc2581": { @@ -488,7 +502,7 @@ "pinned_symbol_libs": [] }, "meta": { - "filename": "kilncontrol.kicad_pro", + "filename": "safekiln.kicad_pro", "version": 3 }, "net_settings": { @@ -733,8 +747,8 @@ "subpart_id_separator": 0, "top_level_sheets": [ { - "filename": "kilncontrol.kicad_sch", - "name": "Root", + "filename": "safekiln.kicad_sch", + "name": "safekiln", "uuid": "6afeae78-026c-45c9-9b0b-16826713d2f4" } ], @@ -744,7 +758,7 @@ "sheets": [ [ "6afeae78-026c-45c9-9b0b-16826713d2f4", - "Root" + "safekiln" ] ], "text_variables": {}, diff --git a/hardware/kilncontrol.kicad_sch b/hardware/safekiln.kicad_sch similarity index 78% rename from hardware/kilncontrol.kicad_sch rename to hardware/safekiln.kicad_sch index 92ff155..1fc2119 100644 --- a/hardware/kilncontrol.kicad_sch +++ b/hardware/safekiln.kicad_sch @@ -5,12 +5,221 @@ (uuid "6afeae78-026c-45c9-9b0b-16826713d2f4") (paper "A2") (title_block - (title "Main") + (title "Safe Kiln") (date "2026-09-26") (rev "1") (company "Bitcrush Testing") ) (lib_symbols + (symbol "Connector:Conn_ARM_SWD_TagConnect_TC2030" + (exclude_from_sim no) + (in_bom no) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "J" + (at 2.54 11.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Conn_ARM_SWD_TagConnect_TC2030" + (at 5.08 8.89 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_Vertical" + (at 0 -17.78 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "https://www.tag-connect.com/wp-content/uploads/bsk-pdf-manager/TC2030-CTX_1.pdf" + (at 0 -15.24 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Tag-Connect ARM Cortex SWD JTAG connector, 6 pin" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "Cortex Debug Connector ARM SWD JTAG" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "*TC2030*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "Conn_ARM_SWD_TagConnect_TC2030_0_0" + (pin power_in line + (at -2.54 10.16 270) + (length 2.54) + (name "VCC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 7.62 -2.54 180) + (length 2.54) + (name "SWDIO" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "TMS" bidirectional line) + ) + (pin open_collector line + (at 7.62 5.08 180) + (length 2.54) + (name "~{RESET}" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin output line + (at 7.62 0 180) + (length 2.54) + (name "SWCLK" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "TCK" output line) + ) + (pin power_in line + (at -2.54 -10.16 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at 7.62 -5.08 180) + (length 2.54) + (name "SWO" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (alternate "TDO" input line) + ) + ) + (symbol "Conn_ARM_SWD_TagConnect_TC2030_0_1" + (rectangle + (start -5.08 7.62) + (end 5.08 -7.62) + (stroke + (width 0) + (type default) + ) + (fill + (type background) + ) + ) + ) + (embedded_fonts no) + ) (symbol "Connector:Screw_Terminal_01x02" (pin_names (offset 1.016) @@ -3245,9 +3454,9 @@ ) (embedded_fonts no) ) - (symbol "Diode:BAT54S" + (symbol "Diode:BAT54C" (pin_names - (offset 0) + (offset 1.016) ) (exclude_from_sim no) (in_bom yes) @@ -3255,7 +3464,7 @@ (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) (property "Reference" "D" - (at 2.54 -5.08 0) + (at 0.635 -3.81 0) (show_name no) (do_not_autoplace no) (effects @@ -3265,7 +3474,7 @@ (justify left) ) ) - (property "Value" "BAT54S" + (property "Value" "BAT54C" (at -6.35 3.175 0) (show_name no) (do_not_autoplace no) @@ -3288,8 +3497,8 @@ (justify left) ) ) - (property "Datasheet" "https://www.diodes.com/assets/Datasheets/ds11005.pdf" - (at -3.048 0 0) + (property "Datasheet" "http://www.diodes.com/_files/datasheets/ds11005.pdf" + (at -2.032 0 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -3299,7 +3508,7 @@ ) ) ) - (property "Description" "Vr 30V, If 200mA, Dual schottky barrier diode, in series, SOT-323" + (property "Description" "dual schottky barrier diode, common cathode" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -3310,7 +3519,7 @@ ) ) ) - (property "ki_keywords" "schottky diode" + (property "ki_keywords" "schottky diode common cathode" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -3332,10 +3541,10 @@ ) ) ) - (symbol "BAT54S_0_1" + (symbol "BAT54C_0_1" (polyline (pts - (xy -4.445 1.27) (xy -4.445 -1.27) (xy -2.54 0) (xy -4.445 1.27) + (xy -3.175 -1.27) (xy -3.175 1.27) (xy -1.27 0) (xy -3.175 -1.27) ) (stroke (width 0) @@ -3347,7 +3556,7 @@ ) (polyline (pts - (xy -3.81 0) (xy -1.27 0) + (xy -1.905 1.27) (xy -1.905 1.016) ) (stroke (width 0) @@ -3359,7 +3568,7 @@ ) (polyline (pts - (xy -3.175 -1.27) (xy -3.175 -1.016) + (xy -1.905 0) (xy 1.905 0) ) (stroke (width 0) @@ -3371,7 +3580,7 @@ ) (polyline (pts - (xy -2.54 1.27) (xy -1.905 1.27) + (xy -1.27 1.27) (xy -1.905 1.27) ) (stroke (width 0) @@ -3383,7 +3592,7 @@ ) (polyline (pts - (xy -2.54 -1.27) (xy -3.175 -1.27) + (xy -1.27 1.27) (xy -1.27 -1.27) ) (stroke (width 0) @@ -3395,7 +3604,7 @@ ) (polyline (pts - (xy -2.54 -1.27) (xy -2.54 1.27) + (xy -1.27 0) (xy -3.81 0) ) (stroke (width 0) @@ -3407,7 +3616,7 @@ ) (polyline (pts - (xy -1.905 1.27) (xy -1.905 1.016) + (xy -1.27 -1.27) (xy -0.635 -1.27) ) (stroke (width 0) @@ -3419,7 +3628,7 @@ ) (polyline (pts - (xy -1.905 0) (xy 1.905 0) + (xy -0.635 -1.27) (xy -0.635 -1.016) ) (stroke (width 0) @@ -3442,7 +3651,7 @@ ) (polyline (pts - (xy 1.27 0) (xy 3.81 0) + (xy 0.635 -1.27) (xy 0.635 -1.016) ) (stroke (width 0) @@ -3454,7 +3663,7 @@ ) (polyline (pts - (xy 1.905 1.27) (xy 1.905 -1.27) (xy 3.81 0) (xy 1.905 1.27) + (xy 1.27 1.27) (xy 1.27 -1.27) ) (stroke (width 0) @@ -3466,7 +3675,7 @@ ) (polyline (pts - (xy 3.175 -1.27) (xy 3.175 -1.016) + (xy 1.27 1.27) (xy 1.905 1.27) ) (stroke (width 0) @@ -3478,7 +3687,7 @@ ) (polyline (pts - (xy 3.81 1.27) (xy 4.445 1.27) + (xy 1.27 -1.27) (xy 0.635 -1.27) ) (stroke (width 0) @@ -3490,7 +3699,7 @@ ) (polyline (pts - (xy 3.81 -1.27) (xy 3.175 -1.27) + (xy 1.905 1.27) (xy 1.905 1.016) ) (stroke (width 0) @@ -3502,7 +3711,7 @@ ) (polyline (pts - (xy 3.81 -1.27) (xy 3.81 1.27) + (xy 3.175 -1.27) (xy 3.175 1.27) (xy 1.27 0) (xy 3.175 -1.27) ) (stroke (width 0) @@ -3514,7 +3723,7 @@ ) (polyline (pts - (xy 4.445 1.27) (xy 4.445 1.016) + (xy 3.81 0) (xy 1.27 0) ) (stroke (width 0) @@ -3525,11 +3734,11 @@ ) ) ) - (symbol "BAT54S_1_1" + (symbol "BAT54C_1_1" (pin passive line (at -7.62 0 0) (length 3.81) - (name "A" + (name "" (effects (font (size 1.27 1.27) @@ -3547,7 +3756,7 @@ (pin passive line (at 7.62 0 180) (length 3.81) - (name "K" + (name "" (effects (font (size 1.27 1.27) @@ -3565,7 +3774,7 @@ (pin passive line (at 0 -5.08 90) (length 5.08) - (name "COM" + (name "" (effects (font (size 1.27 1.27) @@ -3583,34 +3792,39 @@ ) (embedded_fonts no) ) - (symbol "RF_Module:ESP32-S3-WROOM-1" + (symbol "Diode:BAT54S" + (pin_names + (offset 0) + ) (exclude_from_sim no) (in_bom yes) (on_board yes) (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "U" - (at -12.7 26.67 0) + (property "Reference" "D" + (at 2.54 -5.08 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "ESP32-S3-WROOM-1" - (at 12.7 26.67 0) + (property "Value" "BAT54S" + (at -6.35 3.175 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "RF_Module:ESP32-S3-WROOM-1" - (at 0 2.54 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23" + (at 1.905 3.175 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -3618,10 +3832,11 @@ (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf" - (at 0 0 0) + (property "Datasheet" "https://www.diodes.com/assets/Datasheets/ds11005.pdf" + (at -3.048 0 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -3631,7 +3846,7 @@ ) ) ) - (property "Description" "RF Module, ESP32-S3 SoC, Wi-Fi 802.11b/g/n, Bluetooth, BLE, 32-bit, 3.3V, onboard antenna, SMD" + (property "Description" "Vr 30V, If 200mA, Dual schottky barrier diode, in series, SOT-323" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -3642,7 +3857,7 @@ ) ) ) - (property "ki_keywords" "RF Radio BT ESP ESP32-S3 Espressif onboard PCB antenna" + (property "ki_keywords" "schottky diode" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -3653,7 +3868,7 @@ ) ) ) - (property "ki_fp_filters" "ESP32?S3?WROOM?1*" + (property "ki_fp_filters" "SOT?23*" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -3664,31 +3879,34 @@ ) ) ) - (symbol "ESP32-S3-WROOM-1_0_0" - (rectangle - (start -12.7 25.4) - (end 12.7 -25.4) + (symbol "BAT54S_0_1" + (polyline + (pts + (xy -4.445 1.27) (xy -4.445 -1.27) (xy -2.54 0) (xy -4.445 1.27) + ) (stroke - (width 0.254) + (width 0) (type default) ) (fill - (type background) + (type none) ) ) - (text "PSRAM" - (at 5.08 2.54 900) - (effects - (font - (size 1.27 1.27) - ) + (polyline + (pts + (xy -3.81 0) (xy -1.27 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) ) ) - ) - (symbol "ESP32-S3-WROOM-1_0_1" (polyline (pts - (xy 7.62 -1.27) (xy 6.35 -1.27) (xy 6.35 6.35) (xy 7.62 6.35) + (xy -3.175 -1.27) (xy -3.175 -1.016) ) (stroke (width 0) @@ -3698,73 +3916,174 @@ (type none) ) ) - ) - (symbol "ESP32-S3-WROOM-1_1_1" - (pin power_in line - (at 0 -27.94 90) - (length 2.54) - (name "GND" - (effects - (font - (size 1.27 1.27) - ) - ) + (polyline + (pts + (xy -2.54 1.27) (xy -1.905 1.27) ) - (number "1" - (effects - (font - (size 1.27 1.27) - ) - ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) ) ) - (pin power_in line - (at 0 27.94 270) - (length 2.54) - (name "3V3" - (effects - (font - (size 1.27 1.27) - ) - ) + (polyline + (pts + (xy -2.54 -1.27) (xy -3.175 -1.27) ) - (number "2" - (effects - (font - (size 1.27 1.27) - ) - ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) ) ) - (pin input line - (at -15.24 22.86 0) - (length 2.54) - (name "EN" - (effects - (font - (size 1.27 1.27) - ) - ) + (polyline + (pts + (xy -2.54 -1.27) (xy -2.54 1.27) ) - (number "3" - (effects - (font - (size 1.27 1.27) - ) - ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) ) ) - (pin bidirectional line - (at -15.24 7.62 0) - (length 2.54) - (name "IO4" + (polyline + (pts + (xy -1.905 1.27) (xy -1.905 1.016) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.905 0) (xy 1.905 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 0 0) + (radius 0.254) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 1.27 0) (xy 3.81 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 1.905 1.27) (xy 1.905 -1.27) (xy 3.81 0) (xy 1.905 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 3.175 -1.27) (xy 3.175 -1.016) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 3.81 1.27) (xy 4.445 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 3.81 -1.27) (xy 3.175 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 3.81 -1.27) (xy 3.81 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 4.445 1.27) (xy 4.445 1.016) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "BAT54S_1_1" + (pin passive line + (at -7.62 0 0) + (length 3.81) + (name "A" (effects (font (size 1.27 1.27) ) ) ) - (number "4" + (number "1" (effects (font (size 1.27 1.27) @@ -3772,17 +4091,17 @@ ) ) ) - (pin bidirectional line - (at -15.24 5.08 0) - (length 2.54) - (name "IO5" + (pin passive line + (at 7.62 0 180) + (length 3.81) + (name "K" (effects (font (size 1.27 1.27) ) ) ) - (number "5" + (number "2" (effects (font (size 1.27 1.27) @@ -3790,17 +4109,17 @@ ) ) ) - (pin bidirectional line - (at -15.24 2.54 0) - (length 2.54) - (name "IO6" + (pin passive line + (at 0 -5.08 90) + (length 5.08) + (name "COM" (effects (font (size 1.27 1.27) ) ) ) - (number "6" + (number "3" (effects (font (size 1.27 1.27) @@ -3808,107 +4127,182 @@ ) ) ) - (pin bidirectional line - (at -15.24 0 0) - (length 2.54) - (name "IO7" - (effects - (font - (size 1.27 1.27) - ) - ) + ) + (embedded_fonts no) + ) + (symbol "MCU_ST_STM32G0:STM32G031K8Tx" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "U" + (at -15.24 26.67 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) ) - (number "7" - (effects - (font - (size 1.27 1.27) - ) - ) + (justify left) + ) + ) + (property "Value" "STM32G031K8Tx" + (at 2.54 26.67 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) ) + (justify left) ) - (pin bidirectional line - (at -15.24 -20.32 0) - (length 2.54) - (name "IO15" - (effects - (font - (size 1.27 1.27) - ) - ) + ) + (property "Footprint" "Package_QFP:LQFP-32_7x7mm_P0.8mm" + (at -15.24 -22.86 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) ) - (number "8" - (effects - (font - (size 1.27 1.27) - ) - ) + (justify right) + ) + ) + (property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32g031k8.pdf" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "STMicroelectronics Arm Cortex-M0+ MCU, 64KB flash, 8KB RAM, 64 MHz, 1.7-3.6V, 30 GPIO, LQFP32" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "Arm Cortex-M0+ STM32G0 STM32G0x1" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "LQFP*7x7mm*P0.8mm*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "STM32G031K8Tx_0_1" + (rectangle + (start -15.24 -22.86) + (end 15.24 25.4) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) ) ) + ) + (symbol "STM32G031K8Tx_1_1" (pin bidirectional line - (at -15.24 -22.86 0) + (at -17.78 -17.78 0) (length 2.54) - (name "IO16" + (name "PB9" (effects (font (size 1.27 1.27) ) ) ) - (number "9" + (number "1" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2C1_SDA" bidirectional line) + (alternate "IR_OUT" bidirectional line) + (alternate "SPI2_NSS" bidirectional line) + (alternate "TIM17_CH1" bidirectional line) ) (pin bidirectional line - (at 15.24 17.78 180) + (at -17.78 12.7 0) (length 2.54) - (name "IO17" + (name "PC14" (effects (font (size 1.27 1.27) ) ) ) - (number "10" + (number "2" (effects (font (size 1.27 1.27) ) ) ) + (alternate "RCC_OSC32_IN" bidirectional line) + (alternate "RCC_OSC_IN" bidirectional line) + (alternate "TIM1_BK2" bidirectional line) ) (pin bidirectional line - (at 15.24 15.24 180) + (at -17.78 10.16 0) (length 2.54) - (name "IO18" + (name "PC15" (effects (font (size 1.27 1.27) ) ) ) - (number "11" + (number "3" (effects (font (size 1.27 1.27) ) ) ) + (alternate "RCC_OSC32_EN" bidirectional line) + (alternate "RCC_OSC32_OUT" bidirectional line) + (alternate "RCC_OSC_EN" bidirectional line) ) - (pin bidirectional line - (at -15.24 -2.54 0) + (pin power_in line + (at 0 27.94 270) (length 2.54) - (name "IO8" + (name "VDD" (effects (font (size 1.27 1.27) ) ) ) - (number "12" + (number "4" (effects (font (size 1.27 1.27) @@ -3916,543 +4310,700 @@ ) ) ) - (pin bidirectional line - (at 15.24 12.7 180) + (pin power_in line + (at 0 -25.4 90) (length 2.54) - (name "USB_D-" + (name "VSS" (effects (font (size 1.27 1.27) ) ) ) - (number "13" + (number "5" (effects (font (size 1.27 1.27) ) ) ) - (alternate "IO19" bidirectional line) ) (pin bidirectional line - (at 15.24 10.16 180) + (at -17.78 20.32 0) (length 2.54) - (name "USB_D+" + (name "PF2" (effects (font (size 1.27 1.27) ) ) ) - (number "14" + (number "6" (effects (font (size 1.27 1.27) ) ) ) - (alternate "IO20" bidirectional line) + (alternate "RCC_MCO" bidirectional line) ) (pin bidirectional line - (at -15.24 10.16 0) + (at 17.78 20.32 180) (length 2.54) - (name "IO3" + (name "PA0" (effects (font (size 1.27 1.27) ) ) ) - (number "15" + (number "7" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN0" bidirectional line) + (alternate "LPTIM1_OUT" bidirectional line) + (alternate "RTC_TAMP_IN2" bidirectional line) + (alternate "SPI2_SCK" bidirectional line) + (alternate "SYS_WKUP1" bidirectional line) + (alternate "TIM2_CH1" bidirectional line) + (alternate "TIM2_ETR" bidirectional line) + (alternate "USART2_CTS" bidirectional line) + (alternate "USART2_NSS" bidirectional line) ) (pin bidirectional line - (at 15.24 -17.78 180) + (at 17.78 17.78 180) (length 2.54) - (name "IO46" + (name "PA1" (effects (font (size 1.27 1.27) ) ) ) - (number "16" + (number "8" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN1" bidirectional line) + (alternate "I2C1_SMBA" bidirectional line) + (alternate "I2S1_CK" bidirectional line) + (alternate "SPI1_SCK" bidirectional line) + (alternate "TIM2_CH2" bidirectional line) + (alternate "USART2_CK" bidirectional line) + (alternate "USART2_DE" bidirectional line) + (alternate "USART2_RTS" bidirectional line) ) (pin bidirectional line - (at -15.24 -5.08 0) + (at 17.78 15.24 180) (length 2.54) - (name "IO9" + (name "PA2" (effects (font (size 1.27 1.27) ) ) ) - (number "17" + (number "9" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN2" bidirectional line) + (alternate "I2S1_SD" bidirectional line) + (alternate "LPUART1_TX" bidirectional line) + (alternate "RCC_LSCO" bidirectional line) + (alternate "SPI1_MOSI" bidirectional line) + (alternate "SYS_WKUP4" bidirectional line) + (alternate "TIM2_CH3" bidirectional line) + (alternate "USART2_TX" bidirectional line) ) (pin bidirectional line - (at -15.24 -7.62 0) + (at 17.78 12.7 180) (length 2.54) - (name "IO10" + (name "PA3" (effects (font (size 1.27 1.27) ) ) ) - (number "18" + (number "10" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN3" bidirectional line) + (alternate "LPUART1_RX" bidirectional line) + (alternate "SPI2_MISO" bidirectional line) + (alternate "TIM2_CH4" bidirectional line) + (alternate "USART2_RX" bidirectional line) ) (pin bidirectional line - (at -15.24 -10.16 0) + (at 17.78 10.16 180) (length 2.54) - (name "IO11" + (name "PA4" (effects (font (size 1.27 1.27) ) ) ) - (number "19" + (number "11" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN4" bidirectional line) + (alternate "I2S1_WS" bidirectional line) + (alternate "LPTIM2_OUT" bidirectional line) + (alternate "RTC_OUT_ALARM" bidirectional line) + (alternate "RTC_OUT_CALIB" bidirectional line) + (alternate "RTC_TAMP_IN1" bidirectional line) + (alternate "RTC_TS" bidirectional line) + (alternate "SPI1_NSS" bidirectional line) + (alternate "SPI2_MOSI" bidirectional line) + (alternate "SYS_WKUP2" bidirectional line) + (alternate "TIM14_CH1" bidirectional line) ) (pin bidirectional line - (at -15.24 -12.7 0) + (at 17.78 7.62 180) (length 2.54) - (name "IO12" + (name "PA5" (effects (font (size 1.27 1.27) ) ) ) - (number "20" + (number "12" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN5" bidirectional line) + (alternate "I2S1_CK" bidirectional line) + (alternate "LPTIM2_ETR" bidirectional line) + (alternate "SPI1_SCK" bidirectional line) + (alternate "TIM2_CH1" bidirectional line) + (alternate "TIM2_ETR" bidirectional line) ) (pin bidirectional line - (at -15.24 -15.24 0) + (at 17.78 5.08 180) (length 2.54) - (name "IO13" + (name "PA6" (effects (font (size 1.27 1.27) ) ) ) - (number "21" + (number "13" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN6" bidirectional line) + (alternate "I2S1_MCK" bidirectional line) + (alternate "LPUART1_CTS" bidirectional line) + (alternate "SPI1_MISO" bidirectional line) + (alternate "TIM16_CH1" bidirectional line) + (alternate "TIM1_BK" bidirectional line) + (alternate "TIM3_CH1" bidirectional line) ) (pin bidirectional line - (at -15.24 -17.78 0) + (at 17.78 2.54 180) (length 2.54) - (name "IO14" + (name "PA7" (effects (font (size 1.27 1.27) ) ) ) - (number "22" + (number "14" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN7" bidirectional line) + (alternate "I2S1_SD" bidirectional line) + (alternate "SPI1_MOSI" bidirectional line) + (alternate "TIM14_CH1" bidirectional line) + (alternate "TIM17_CH1" bidirectional line) + (alternate "TIM1_CH1N" bidirectional line) + (alternate "TIM3_CH2" bidirectional line) ) (pin bidirectional line - (at 15.24 7.62 180) + (at -17.78 5.08 0) (length 2.54) - (name "IO21" + (name "PB0" (effects (font (size 1.27 1.27) ) ) ) - (number "23" + (number "15" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN8" bidirectional line) + (alternate "I2S1_WS" bidirectional line) + (alternate "LPTIM1_OUT" bidirectional line) + (alternate "SPI1_NSS" bidirectional line) + (alternate "TIM1_CH2N" bidirectional line) + (alternate "TIM3_CH3" bidirectional line) ) (pin bidirectional line - (at 15.24 -20.32 180) + (at -17.78 2.54 0) (length 2.54) - (name "IO47" + (name "PB1" (effects (font (size 1.27 1.27) ) ) ) - (number "24" + (number "16" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN9" bidirectional line) + (alternate "LPTIM2_IN1" bidirectional line) + (alternate "LPUART1_DE" bidirectional line) + (alternate "LPUART1_RTS" bidirectional line) + (alternate "TIM14_CH1" bidirectional line) + (alternate "TIM1_CH3N" bidirectional line) + (alternate "TIM3_CH4" bidirectional line) ) (pin bidirectional line - (at 15.24 -22.86 180) + (at -17.78 0 0) (length 2.54) - (name "IO48" + (name "PB2" (effects (font (size 1.27 1.27) ) ) ) - (number "25" + (number "17" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN10" bidirectional line) + (alternate "LPTIM1_OUT" bidirectional line) + (alternate "SPI2_MISO" bidirectional line) ) (pin bidirectional line - (at 15.24 -15.24 180) + (at 17.78 0 180) (length 2.54) - (name "IO45" + (name "PA8" (effects (font (size 1.27 1.27) ) ) ) - (number "26" + (number "18" (effects (font (size 1.27 1.27) ) ) ) + (alternate "LPTIM2_OUT" bidirectional line) + (alternate "RCC_MCO" bidirectional line) + (alternate "SPI2_NSS" bidirectional line) + (alternate "TIM1_CH1" bidirectional line) ) - (pin bidirectional line - (at -15.24 17.78 0) + (pin no_connect line + (at -15.24 -22.86 0) (length 2.54) - (name "IO0" + (hide yes) + (name "NC/PA9" (effects (font (size 1.27 1.27) ) ) ) - (number "27" + (number "19" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2C1_SCL (PA9)" bidirectional line) + (alternate "NC" bidirectional line) + (alternate "PA9" bidirectional line) + (alternate "RCC_MCO (PA9)" bidirectional line) + (alternate "SPI2_MISO (PA9)" bidirectional line) + (alternate "TIM1_CH2 (PA9)" bidirectional line) + (alternate "USART1_TX (PA9)" bidirectional line) ) (pin bidirectional line - (at 15.24 5.08 180) + (at -17.78 15.24 0) (length 2.54) - (name "IO35" + (name "PC6" (effects (font (size 1.27 1.27) ) ) ) - (number "28" + (number "20" (effects (font (size 1.27 1.27) ) ) ) + (alternate "TIM2_CH3" bidirectional line) + (alternate "TIM3_CH1" bidirectional line) ) - (pin bidirectional line - (at 15.24 2.54 180) + (pin no_connect line + (at -15.24 -20.32 0) (length 2.54) - (name "IO36" + (hide yes) + (name "NC/PA10" (effects (font (size 1.27 1.27) ) ) ) - (number "29" + (number "21" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2C1_SDA (PA10)" bidirectional line) + (alternate "NC" bidirectional line) + (alternate "PA10" bidirectional line) + (alternate "SPI2_MOSI (PA10)" bidirectional line) + (alternate "TIM17_BK (PA10)" bidirectional line) + (alternate "TIM1_CH3 (PA10)" bidirectional line) + (alternate "USART1_RX (PA10)" bidirectional line) ) (pin bidirectional line - (at 15.24 0 180) + (at 17.78 -2.54 180) (length 2.54) - (name "IO37" + (name "PA9/PA11" (effects (font (size 1.27 1.27) ) ) ) - (number "30" + (number "22" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_EXTI11 (PA11)" bidirectional line) + (alternate "ADC1_IN15 (PA11)" bidirectional line) + (alternate "I2C1_SCL (PA9)" bidirectional line) + (alternate "I2C2_SCL (PA11)" bidirectional line) + (alternate "I2S1_MCK (PA11)" bidirectional line) + (alternate "PA11" bidirectional line) + (alternate "PA9" bidirectional line) + (alternate "RCC_MCO (PA9)" bidirectional line) + (alternate "SPI1_MISO (PA11)" bidirectional line) + (alternate "SPI2_MISO (PA9)" bidirectional line) + (alternate "TIM1_BK2 (PA11)" bidirectional line) + (alternate "TIM1_CH2 (PA9)" bidirectional line) + (alternate "TIM1_CH4 (PA11)" bidirectional line) + (alternate "USART1_CTS (PA11)" bidirectional line) + (alternate "USART1_NSS (PA11)" bidirectional line) + (alternate "USART1_TX (PA9)" bidirectional line) ) (pin bidirectional line - (at 15.24 -2.54 180) + (at 17.78 -5.08 180) (length 2.54) - (name "IO38" + (name "PA10/PA12" (effects (font (size 1.27 1.27) ) ) ) - (number "31" + (number "23" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN16 (PA12)" bidirectional line) + (alternate "I2C1_SDA (PA10)" bidirectional line) + (alternate "I2C2_SDA (PA12)" bidirectional line) + (alternate "I2S1_SD (PA12)" bidirectional line) + (alternate "I2S_CKIN (PA12)" bidirectional line) + (alternate "PA10" bidirectional line) + (alternate "PA12" bidirectional line) + (alternate "SPI1_MOSI (PA12)" bidirectional line) + (alternate "SPI2_MOSI (PA10)" bidirectional line) + (alternate "TIM17_BK (PA10)" bidirectional line) + (alternate "TIM1_CH3 (PA10)" bidirectional line) + (alternate "TIM1_ETR (PA12)" bidirectional line) + (alternate "USART1_CK (PA12)" bidirectional line) + (alternate "USART1_DE (PA12)" bidirectional line) + (alternate "USART1_RTS (PA12)" bidirectional line) + (alternate "USART1_RX (PA10)" bidirectional line) ) (pin bidirectional line - (at 15.24 -5.08 180) + (at 17.78 -7.62 180) (length 2.54) - (name "IO39" + (name "PA13" (effects (font (size 1.27 1.27) ) ) ) - (number "32" + (number "24" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN17" bidirectional line) + (alternate "IR_OUT" bidirectional line) + (alternate "SYS_SWDIO" bidirectional line) ) (pin bidirectional line - (at 15.24 -7.62 180) + (at 17.78 -10.16 180) (length 2.54) - (name "IO40" + (name "PA14" (effects (font (size 1.27 1.27) ) ) ) - (number "33" + (number "25" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN18" bidirectional line) + (alternate "SYS_SWCLK" bidirectional line) + (alternate "USART2_TX" bidirectional line) ) (pin bidirectional line - (at 15.24 -10.16 180) + (at 17.78 -12.7 180) (length 2.54) - (name "IO41" + (name "PA15" (effects (font (size 1.27 1.27) ) ) ) - (number "34" + (number "26" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2S1_WS" bidirectional line) + (alternate "SPI1_NSS" bidirectional line) + (alternate "TIM2_CH1" bidirectional line) + (alternate "TIM2_ETR" bidirectional line) + (alternate "USART2_RX" bidirectional line) ) (pin bidirectional line - (at 15.24 -12.7 180) + (at -17.78 -2.54 0) (length 2.54) - (name "IO42" + (name "PB3" (effects (font (size 1.27 1.27) ) ) ) - (number "35" + (number "27" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2S1_CK" bidirectional line) + (alternate "SPI1_SCK" bidirectional line) + (alternate "TIM1_CH2" bidirectional line) + (alternate "TIM2_CH2" bidirectional line) + (alternate "USART1_CK" bidirectional line) + (alternate "USART1_DE" bidirectional line) + (alternate "USART1_RTS" bidirectional line) ) (pin bidirectional line - (at 15.24 20.32 180) + (at -17.78 -5.08 0) (length 2.54) - (name "RXD0" + (name "PB4" (effects (font (size 1.27 1.27) ) ) ) - (number "36" + (number "28" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2S1_MCK" bidirectional line) + (alternate "SPI1_MISO" bidirectional line) + (alternate "TIM17_BK" bidirectional line) + (alternate "TIM3_CH1" bidirectional line) + (alternate "USART1_CTS" bidirectional line) + (alternate "USART1_NSS" bidirectional line) ) (pin bidirectional line - (at 15.24 22.86 180) + (at -17.78 -7.62 0) (length 2.54) - (name "TXD0" + (name "PB5" (effects (font (size 1.27 1.27) ) ) ) - (number "37" + (number "29" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2C1_SMBA" bidirectional line) + (alternate "I2S1_SD" bidirectional line) + (alternate "LPTIM1_IN1" bidirectional line) + (alternate "SPI1_MOSI" bidirectional line) + (alternate "SYS_WKUP6" bidirectional line) + (alternate "TIM16_BK" bidirectional line) + (alternate "TIM3_CH2" bidirectional line) ) (pin bidirectional line - (at -15.24 12.7 0) + (at -17.78 -10.16 0) (length 2.54) - (name "IO2" + (name "PB6" (effects (font (size 1.27 1.27) ) ) ) - (number "38" + (number "30" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2C1_SCL" bidirectional line) + (alternate "LPTIM1_ETR" bidirectional line) + (alternate "SPI2_MISO" bidirectional line) + (alternate "TIM16_CH1N" bidirectional line) + (alternate "TIM1_CH3" bidirectional line) + (alternate "USART1_TX" bidirectional line) ) (pin bidirectional line - (at -15.24 15.24 0) + (at -17.78 -12.7 0) (length 2.54) - (name "IO1" + (name "PB7" (effects (font (size 1.27 1.27) ) ) ) - (number "39" + (number "31" (effects (font (size 1.27 1.27) ) ) ) + (alternate "ADC1_IN11" bidirectional line) + (alternate "I2C1_SDA" bidirectional line) + (alternate "LPTIM1_IN2" bidirectional line) + (alternate "SPI2_MOSI" bidirectional line) + (alternate "SYS_PVD_IN" bidirectional line) + (alternate "TIM17_CH1N" bidirectional line) + (alternate "USART1_RX" bidirectional line) ) - (pin passive line - (at 0 -27.94 90) + (pin bidirectional line + (at -17.78 -15.24 0) (length 2.54) - (hide yes) - (name "GND" + (name "PB8" (effects (font (size 1.27 1.27) ) ) ) - (number "40" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - (pin passive line - (at 0 -27.94 90) - (length 2.54) - (hide yes) - (name "GND" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "41" + (number "32" (effects (font (size 1.27 1.27) ) ) ) + (alternate "I2C1_SCL" bidirectional line) + (alternate "SPI2_SCK" bidirectional line) + (alternate "TIM16_CH1" bidirectional line) ) ) (embedded_fonts no) ) - (symbol "Regulator_Linear:AMS1117-3.3" + (symbol "RF_Module:ESP32-S3-WROOM-1" (exclude_from_sim no) (in_bom yes) (on_board yes) (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) (property "Reference" "U" - (at -3.81 3.175 0) + (at -12.7 26.67 0) (show_name no) (do_not_autoplace no) (effects @@ -4461,19 +5012,18 @@ ) ) ) - (property "Value" "AMS1117-3.3" - (at 0 3.175 0) + (property "Value" "ESP32-S3-WROOM-1" + (at 12.7 26.67 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" - (at 0 5.08 0) + (property "Footprint" "RF_Module:ESP32-S3-WROOM-1" + (at 0 2.54 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -4483,8 +5033,8 @@ ) ) ) - (property "Datasheet" "http://www.advanced-monolithic.com/pdf/ds1117.pdf" - (at 2.54 -6.35 0) + (property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf" + (at 0 0 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -4494,7 +5044,7 @@ ) ) ) - (property "Description" "1A Low Dropout regulator, positive, 3.3V fixed output, SOT-223" + (property "Description" "RF Module, ESP32-S3 SoC, Wi-Fi 802.11b/g/n, Bluetooth, BLE, 32-bit, 3.3V, onboard antenna, SMD" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -4505,7 +5055,7 @@ ) ) ) - (property "ki_keywords" "linear regulator ldo fixed positive" + (property "ki_keywords" "RF Radio BT ESP ESP32-S3 Espressif onboard PCB antenna" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -4516,7 +5066,7 @@ ) ) ) - (property "ki_fp_filters" "SOT?223*TabPin2*" + (property "ki_fp_filters" "ESP32?S3?WROOM?1*" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -4527,10 +5077,10 @@ ) ) ) - (symbol "AMS1117-3.3_0_1" + (symbol "ESP32-S3-WROOM-1_0_0" (rectangle - (start -5.08 -5.08) - (end 5.08 1.905) + (start -12.7 25.4) + (end 12.7 -25.4) (stroke (width 0.254) (type default) @@ -4539,10 +5089,32 @@ (type background) ) ) + (text "PSRAM" + (at 5.08 2.54 900) + (effects + (font + (size 1.27 1.27) + ) + ) + ) ) - (symbol "AMS1117-3.3_1_1" + (symbol "ESP32-S3-WROOM-1_0_1" + (polyline + (pts + (xy 7.62 -1.27) (xy 6.35 -1.27) (xy 6.35 6.35) (xy 7.62 6.35) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "ESP32-S3-WROOM-1_1_1" (pin power_in line - (at 0 -7.62 90) + (at 0 -27.94 90) (length 2.54) (name "GND" (effects @@ -4559,10 +5131,10 @@ ) ) ) - (pin power_out line - (at 7.62 0 180) + (pin power_in line + (at 0 27.94 270) (length 2.54) - (name "VO" + (name "3V3" (effects (font (size 1.27 1.27) @@ -4577,10 +5149,10 @@ ) ) ) - (pin power_in line - (at -7.62 0 0) + (pin input line + (at -15.24 22.86 0) (length 2.54) - (name "VI" + (name "EN" (effects (font (size 1.27 1.27) @@ -4595,236 +5167,161 @@ ) ) ) - ) - (embedded_fonts no) - ) - (symbol "Sensor_Temperature:MAX31856" - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (in_pos_files yes) - (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "U" - (at -7.62 13.97 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - (justify right) - ) - ) - (property "Value" "MAX31856" - (at 13.97 13.97 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) + (pin bidirectional line + (at -15.24 7.62 0) + (length 2.54) + (name "IO4" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (justify right) - ) - ) - (property "Footprint" "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" - (at 3.81 -13.97 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (justify left) ) - ) - (property "Datasheet" "https://datasheets.maximintegrated.com/en/ds/MAX31856.pdf" - (at -1.27 5.08 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin bidirectional line + (at -15.24 5.08 0) + (length 2.54) + (name "IO5" + (effects + (font + (size 1.27 1.27) + ) + ) ) - ) - ) - (property "Description" "Precision Thermocouple to Digital Converter with Linearization, TSSOP-14" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (property "ki_keywords" "Thermocouple converter serial" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin bidirectional line + (at -15.24 2.54 0) + (length 2.54) + (name "IO6" + (effects + (font + (size 1.27 1.27) + ) + ) ) - ) - ) - (property "ki_fp_filters" "TSSOP*14*4.4x5mm*P0.65mm*" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (symbol "MAX31856_0_1" - (rectangle - (start -10.16 12.7) - (end 10.16 -12.7) - (stroke - (width 0.254) - (type default) + (pin bidirectional line + (at -15.24 0 0) + (length 2.54) + (name "IO7" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type background) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy -0.762 3.175) (xy -0.762 0) - ) - (stroke - (width 0.254) - (type default) + (pin bidirectional line + (at -15.24 -20.32 0) + (length 2.54) + (name "IO15" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy -0.762 3.175) (xy -0.127 3.175) - ) - (stroke - (width 0.254) - (type default) - ) - (fill - (type none) - ) - ) - (polyline - (pts - (xy -0.762 2.54) (xy -0.127 2.54) - ) - (stroke - (width 0.254) - (type default) - ) - (fill - (type none) - ) - ) - (polyline - (pts - (xy -0.762 1.905) (xy -0.127 1.905) - ) - (stroke - (width 0.254) - (type default) - ) - (fill - (type none) - ) - ) - (polyline - (pts - (xy -0.762 1.27) (xy -0.127 1.27) - ) - (stroke - (width 0.254) - (type default) - ) - (fill - (type none) - ) - ) - (polyline - (pts - (xy -0.762 0.635) (xy -0.127 0.635) - ) - (stroke - (width 0.254) - (type default) - ) - (fill - (type none) - ) - ) - (arc - (start -0.762 3.175) - (mid -0.127 3.8073) - (end 0.508 3.175) - (stroke - (width 0.254) - (type default) - ) - (fill - (type none) - ) - ) - (circle - (center -0.127 -2.54) - (radius 1.27) - (stroke - (width 0.254) - (type default) + (pin bidirectional line + (at -15.24 -22.86 0) + (length 2.54) + (name "IO16" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type outline) + (number "9" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 0.508 3.175) (xy 0.508 0) - ) - (stroke - (width 0.254) - (type default) + (pin bidirectional line + (at 15.24 17.78 180) + (length 2.54) + (name "IO17" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (rectangle - (start 0.508 -1.905) - (end -0.762 0) - (stroke - (width 0.254) - (type default) + (pin bidirectional line + (at 15.24 15.24 180) + (length 2.54) + (name "IO18" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type outline) + (number "11" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (symbol "MAX31856_1_1" - (pin power_in line - (at -2.54 -15.24 90) + (pin bidirectional line + (at -15.24 -2.54 0) (length 2.54) - (name "AGND" + (name "IO8" (effects (font (size 1.27 1.27) ) ) ) - (number "1" + (number "12" (effects (font (size 1.27 1.27) @@ -4832,53 +5329,55 @@ ) ) ) - (pin input line - (at -12.7 -2.54 0) + (pin bidirectional line + (at 15.24 12.7 180) (length 2.54) - (name "BIAS" + (name "USB_D-" (effects (font (size 1.27 1.27) ) ) ) - (number "2" + (number "13" (effects (font (size 1.27 1.27) ) ) ) + (alternate "IO19" bidirectional line) ) - (pin input line - (at -12.7 0 0) + (pin bidirectional line + (at 15.24 10.16 180) (length 2.54) - (name "T-" + (name "USB_D+" (effects (font (size 1.27 1.27) ) ) ) - (number "3" + (number "14" (effects (font (size 1.27 1.27) ) ) ) + (alternate "IO20" bidirectional line) ) - (pin input line - (at -12.7 2.54 0) + (pin bidirectional line + (at -15.24 10.16 0) (length 2.54) - (name "T+" + (name "IO3" (effects (font (size 1.27 1.27) ) ) ) - (number "4" + (number "15" (effects (font (size 1.27 1.27) @@ -4886,17 +5385,17 @@ ) ) ) - (pin power_in line - (at -2.54 15.24 270) + (pin bidirectional line + (at 15.24 -17.78 180) (length 2.54) - (name "AVDD" + (name "IO46" (effects (font (size 1.27 1.27) ) ) ) - (number "5" + (number "16" (effects (font (size 1.27 1.27) @@ -4904,18 +5403,17 @@ ) ) ) - (pin no_connect line - (at -10.16 -7.62 0) + (pin bidirectional line + (at -15.24 -5.08 0) (length 2.54) - (hide yes) - (name "DNC" + (name "IO9" (effects (font (size 1.27 1.27) ) ) ) - (number "6" + (number "17" (effects (font (size 1.27 1.27) @@ -4923,17 +5421,17 @@ ) ) ) - (pin output line - (at 12.7 7.62 180) + (pin bidirectional line + (at -15.24 -7.62 0) (length 2.54) - (name "~{DRDY}" + (name "IO10" (effects (font (size 1.27 1.27) ) ) ) - (number "7" + (number "18" (effects (font (size 1.27 1.27) @@ -4941,17 +5439,17 @@ ) ) ) - (pin power_in line - (at 2.54 15.24 270) + (pin bidirectional line + (at -15.24 -10.16 0) (length 2.54) - (name "DVDD" + (name "IO11" (effects (font (size 1.27 1.27) ) ) ) - (number "8" + (number "19" (effects (font (size 1.27 1.27) @@ -4959,17 +5457,17 @@ ) ) ) - (pin input line - (at 12.7 0 180) + (pin bidirectional line + (at -15.24 -12.7 0) (length 2.54) - (name "~{CS}" + (name "IO12" (effects (font (size 1.27 1.27) ) ) ) - (number "9" + (number "20" (effects (font (size 1.27 1.27) @@ -4977,17 +5475,17 @@ ) ) ) - (pin input line - (at 12.7 -2.54 180) + (pin bidirectional line + (at -15.24 -15.24 0) (length 2.54) - (name "SCK" + (name "IO13" (effects (font (size 1.27 1.27) ) ) ) - (number "10" + (number "21" (effects (font (size 1.27 1.27) @@ -4995,17 +5493,17 @@ ) ) ) - (pin output line - (at 12.7 -5.08 180) + (pin bidirectional line + (at -15.24 -17.78 0) (length 2.54) - (name "SDO" + (name "IO14" (effects (font (size 1.27 1.27) ) ) ) - (number "11" + (number "22" (effects (font (size 1.27 1.27) @@ -5013,17 +5511,17 @@ ) ) ) - (pin input line - (at 12.7 -7.62 180) + (pin bidirectional line + (at 15.24 7.62 180) (length 2.54) - (name "SDI" + (name "IO21" (effects (font (size 1.27 1.27) ) ) ) - (number "12" + (number "23" (effects (font (size 1.27 1.27) @@ -5031,17 +5529,17 @@ ) ) ) - (pin output line - (at 12.7 5.08 180) + (pin bidirectional line + (at 15.24 -20.32 180) (length 2.54) - (name "~{FAULT}" + (name "IO47" (effects (font (size 1.27 1.27) ) ) ) - (number "13" + (number "24" (effects (font (size 1.27 1.27) @@ -5049,17 +5547,17 @@ ) ) ) - (pin power_in line - (at 2.54 -15.24 90) + (pin bidirectional line + (at 15.24 -22.86 180) (length 2.54) - (name "DGND" + (name "IO48" (effects (font (size 1.27 1.27) ) ) ) - (number "14" + (number "25" (effects (font (size 1.27 1.27) @@ -5067,145 +5565,179 @@ ) ) ) - ) - (embedded_fonts no) - ) - (symbol "Switch:SW_Push" - (pin_numbers - (hide yes) - ) - (pin_names - (offset 1.016) - (hide yes) - ) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (in_pos_files yes) - (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "SW" - (at 1.27 2.54 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) + (pin bidirectional line + (at 15.24 -15.24 180) + (length 2.54) + (name "IO45" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (justify left) - ) - ) - (property "Value" "SW_Push" - (at 0 -1.524 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) + (number "26" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (property "Footprint" "" - (at 0 5.08 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin bidirectional line + (at -15.24 17.78 0) + (length 2.54) + (name "IO0" + (effects + (font + (size 1.27 1.27) + ) + ) ) - ) - ) - (property "Datasheet" "" - (at 0 5.08 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (number "27" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (property "Description" "Push button switch, generic, two pins" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin bidirectional line + (at 15.24 5.08 180) + (length 2.54) + (name "IO35" + (effects + (font + (size 1.27 1.27) + ) + ) ) - ) - ) - (property "ki_keywords" "switch normally-open pushbutton push-button" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (number "28" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (symbol "SW_Push_0_1" - (circle - (center -2.032 0) - (radius 0.508) - (stroke - (width 0) - (type default) + (pin bidirectional line + (at 15.24 2.54 180) + (length 2.54) + (name "IO36" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + (number "29" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 0 1.27) (xy 0 3.048) + (pin bidirectional line + (at 15.24 0 180) + (length 2.54) + (name "IO37" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (stroke - (width 0) - (type default) + (number "30" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + ) + (pin bidirectional line + (at 15.24 -2.54 180) + (length 2.54) + (name "IO38" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "31" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (circle - (center 2.032 0) - (radius 0.508) - (stroke - (width 0) - (type default) + (pin bidirectional line + (at 15.24 -5.08 180) + (length 2.54) + (name "IO39" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + (number "32" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 2.54 1.27) (xy -2.54 1.27) + (pin bidirectional line + (at 15.24 -7.62 180) + (length 2.54) + (name "IO40" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (stroke - (width 0) - (type default) + (number "33" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + ) + (pin bidirectional line + (at 15.24 -10.16 180) + (length 2.54) + (name "IO41" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "34" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (pin passive line - (at -5.08 0 0) + (pin bidirectional line + (at 15.24 -12.7 180) (length 2.54) - (name "1" + (name "IO42" (effects (font (size 1.27 1.27) ) ) ) - (number "1" + (number "35" (effects (font (size 1.27 1.27) @@ -5213,17 +5745,109 @@ ) ) ) - (pin passive line - (at 5.08 0 180) + (pin bidirectional line + (at 15.24 20.32 180) (length 2.54) - (name "2" + (name "RXD0" (effects (font (size 1.27 1.27) ) ) ) - (number "2" + (number "36" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at 15.24 22.86 180) + (length 2.54) + (name "TXD0" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "37" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 12.7 0) + (length 2.54) + (name "IO2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "38" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin bidirectional line + (at -15.24 15.24 0) + (length 2.54) + (name "IO1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "39" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -27.94 90) + (length 2.54) + (hide yes) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "40" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -27.94 90) + (length 2.54) + (hide yes) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "41" (effects (font (size 1.27 1.27) @@ -5234,29 +5858,24 @@ ) (embedded_fonts no) ) - (symbol "Transistor_FET:Q_NMOS_GSD" - (pin_names - (offset 0) - (hide yes) - ) + (symbol "Regulator_Linear:AMS1117-3.3" (exclude_from_sim no) (in_bom yes) (on_board yes) (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "Q" - (at 5.08 1.905 0) + (property "Reference" "U" + (at -3.81 3.175 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "Q_NMOS_GSD" - (at 5.08 0 0) + (property "Value" "AMS1117-3.3" + (at 0 3.175 0) (show_name no) (do_not_autoplace no) (effects @@ -5266,8 +5885,8 @@ (justify left) ) ) - (property "Footprint" "" - (at 5.08 2.54 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" + (at 0 5.08 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -5277,8 +5896,8 @@ ) ) ) - (property "Datasheet" "" - (at 0 0 0) + (property "Datasheet" "http://www.advanced-monolithic.com/pdf/ds1117.pdf" + (at 2.54 -6.35 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -5288,7 +5907,7 @@ ) ) ) - (property "Description" "N-MOSFET transistor, gate/source/drain" + (property "Description" "1A Low Dropout regulator, positive, 3.3V fixed output, SOT-223" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -5299,7 +5918,7 @@ ) ) ) - (property "ki_keywords" "transistor NMOS N-MOS N-MOSFET" + (property "ki_keywords" "linear regulator ldo fixed positive" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -5310,94 +5929,188 @@ ) ) ) - (symbol "Q_NMOS_GSD_0_1" - (polyline - (pts - (xy 0.254 1.905) (xy 0.254 -1.905) + (property "ki_fp_filters" "SOT?223*TabPin2*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) ) + ) + ) + (symbol "AMS1117-3.3_0_1" + (rectangle + (start -5.08 -5.08) + (end 5.08 1.905) (stroke (width 0.254) (type default) ) (fill - (type none) + (type background) ) ) - (polyline - (pts - (xy 0.254 0) (xy -2.54 0) - ) - (stroke - (width 0) - (type default) + ) + (symbol "AMS1117-3.3_1_1" + (pin power_in line + (at 0 -7.62 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 0.762 2.286) (xy 0.762 1.27) - ) - (stroke - (width 0.254) - (type default) + (pin power_out line + (at 7.62 0 180) + (length 2.54) + (name "VO" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 0.762 0.508) (xy 0.762 -0.508) - ) - (stroke - (width 0.254) - (type default) + (pin power_in line + (at -7.62 0 0) + (length 2.54) + (name "VI" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 0.762 -1.27) (xy 0.762 -2.286) - ) - (stroke - (width 0.254) - (type default) - ) - (fill - (type none) + ) + (embedded_fonts no) + ) + (symbol "Sensor_Temperature:MAX31856" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "U" + (at -7.62 13.97 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) ) + (justify right) ) - (polyline - (pts - (xy 0.762 -1.778) (xy 3.302 -1.778) (xy 3.302 1.778) (xy 0.762 1.778) - ) - (stroke - (width 0) - (type default) + ) + (property "Value" "MAX31856" + (at 13.97 13.97 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) ) - (fill - (type none) + (justify right) + ) + ) + (property "Footprint" "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" + (at 3.81 -13.97 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) ) + (justify left) ) - (polyline - (pts - (xy 1.016 0) (xy 2.032 0.381) (xy 2.032 -0.381) (xy 1.016 0) + ) + (property "Datasheet" "https://datasheets.maximintegrated.com/en/ds/MAX31856.pdf" + (at -1.27 5.08 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Precision Thermocouple to Digital Converter with Linearization, TSSOP-14" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "Thermocouple converter serial" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_fp_filters" "TSSOP*14*4.4x5mm*P0.65mm*" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) ) + ) + ) + (symbol "MAX31856_0_1" + (rectangle + (start -10.16 12.7) + (end 10.16 -12.7) (stroke - (width 0) + (width 0.254) (type default) ) (fill - (type outline) + (type background) ) ) - (circle - (center 1.651 0) - (radius 2.794) + (polyline + (pts + (xy -0.762 3.175) (xy -0.762 0) + ) (stroke (width 0.254) (type default) @@ -5408,44 +6121,46 @@ ) (polyline (pts - (xy 2.54 2.54) (xy 2.54 1.778) + (xy -0.762 3.175) (xy -0.127 3.175) ) (stroke - (width 0) + (width 0.254) (type default) ) (fill (type none) ) ) - (circle - (center 2.54 1.778) - (radius 0.254) + (polyline + (pts + (xy -0.762 2.54) (xy -0.127 2.54) + ) (stroke - (width 0) + (width 0.254) (type default) ) (fill - (type outline) + (type none) ) ) - (circle - (center 2.54 -1.778) - (radius 0.254) + (polyline + (pts + (xy -0.762 1.905) (xy -0.127 1.905) + ) (stroke - (width 0) + (width 0.254) (type default) ) (fill - (type outline) + (type none) ) ) (polyline (pts - (xy 2.54 -2.54) (xy 2.54 0) (xy 0.762 0) + (xy -0.762 1.27) (xy -0.127 1.27) ) (stroke - (width 0) + (width 0.254) (type default) ) (fill @@ -5454,34 +6169,68 @@ ) (polyline (pts - (xy 2.921 0.381) (xy 3.683 0.381) + (xy -0.762 0.635) (xy -0.127 0.635) ) (stroke - (width 0) + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start -0.762 3.175) + (mid -0.127 3.8073) + (end 0.508 3.175) + (stroke + (width 0.254) (type default) ) (fill (type none) ) ) + (circle + (center -0.127 -2.54) + (radius 1.27) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) (polyline (pts - (xy 3.302 0.381) (xy 2.921 -0.254) (xy 3.683 -0.254) (xy 3.302 0.381) + (xy 0.508 3.175) (xy 0.508 0) ) (stroke - (width 0) + (width 0.254) (type default) ) (fill (type none) ) ) + (rectangle + (start 0.508 -1.905) + (end -0.762 0) + (stroke + (width 0.254) + (type default) + ) + (fill + (type outline) + ) + ) ) - (symbol "Q_NMOS_GSD_1_1" - (pin input line - (at -5.08 0 0) + (symbol "MAX31856_1_1" + (pin power_in line + (at -2.54 -15.24 90) (length 2.54) - (name "G" + (name "AGND" (effects (font (size 1.27 1.27) @@ -5496,10 +6245,10 @@ ) ) ) - (pin passive line - (at 2.54 -5.08 90) + (pin input line + (at -12.7 -2.54 0) (length 2.54) - (name "S" + (name "BIAS" (effects (font (size 1.27 1.27) @@ -5514,10 +6263,10 @@ ) ) ) - (pin passive line - (at 2.54 5.08 270) + (pin input line + (at -12.7 0 0) (length 2.54) - (name "D" + (name "T-" (effects (font (size 1.27 1.27) @@ -5532,138 +6281,198 @@ ) ) ) - ) - (embedded_fonts no) - ) - (symbol "power:+3.3V" - (power global) - (pin_numbers - (hide yes) - ) - (pin_names - (offset 0) - (hide yes) - ) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (in_pos_files yes) - (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "#PWR" - (at 0 -3.81 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin input line + (at -12.7 2.54 0) + (length 2.54) + (name "T+" + (effects + (font + (size 1.27 1.27) + ) + ) ) - ) - ) - (property "Value" "+3.3V" - (at 0 3.556 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (property "Footprint" "" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin power_in line + (at -2.54 15.24 270) + (length 2.54) + (name "AVDD" + (effects + (font + (size 1.27 1.27) + ) + ) ) - ) - ) - (property "Datasheet" "" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin no_connect line + (at -10.16 -7.62 0) + (length 2.54) + (hide yes) + (name "DNC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (property "ki_keywords" "global power" - (at 0 0 0) - (show_name no) - (do_not_autoplace no) - (hide yes) - (effects - (font - (size 1.27 1.27) + (pin output line + (at 12.7 7.62 180) + (length 2.54) + (name "~{DRDY}" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (symbol "+3.3V_0_1" - (polyline - (pts - (xy -0.762 1.27) (xy 0 2.54) + (pin power_in line + (at 2.54 15.24 270) + (length 2.54) + (name "DVDD" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (stroke - (width 0) - (type default) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + ) + (pin input line + (at 12.7 0 180) + (length 2.54) + (name "~{CS}" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "9" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 0 2.54) (xy 0.762 1.27) + (pin input line + (at 12.7 -2.54 180) + (length 2.54) + (name "SCK" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (stroke - (width 0) - (type default) + (number "10" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + ) + (pin output line + (at 12.7 -5.08 180) + (length 2.54) + (name "SDO" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "11" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - (polyline - (pts - (xy 0 0) (xy 0 2.54) + (pin input line + (at 12.7 -7.62 180) + (length 2.54) + (name "SDI" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (stroke - (width 0) - (type default) + (number "12" + (effects + (font + (size 1.27 1.27) + ) + ) ) - (fill - (type none) + ) + (pin output line + (at 12.7 5.08 180) + (length 2.54) + (name "~{FAULT}" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "13" + (effects + (font + (size 1.27 1.27) + ) + ) ) ) - ) - (symbol "+3.3V_1_1" (pin power_in line - (at 0 0 90) - (length 0) - (name "" + (at 2.54 -15.24 90) + (length 2.54) + (name "DGND" (effects (font (size 1.27 1.27) ) ) ) - (number "1" + (number "14" (effects (font (size 1.27 1.27) @@ -5674,13 +6483,12 @@ ) (embedded_fonts no) ) - (symbol "power:+3V3" - (power global) + (symbol "Switch:SW_Push" (pin_numbers (hide yes) ) (pin_names - (offset 0) + (offset 1.016) (hide yes) ) (exclude_from_sim no) @@ -5688,19 +6496,19 @@ (on_board yes) (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "#PWR" - (at 0 -3.81 0) + (property "Reference" "SW" + (at 1.27 2.54 0) (show_name no) (do_not_autoplace no) - (hide yes) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "+3V3" - (at 0 3.556 0) + (property "Value" "SW_Push" + (at 0 -1.524 0) (show_name no) (do_not_autoplace no) (effects @@ -5710,7 +6518,7 @@ ) ) (property "Footprint" "" - (at 0 0 0) + (at 0 5.08 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -5721,7 +6529,7 @@ ) ) (property "Datasheet" "" - (at 0 0 0) + (at 0 5.08 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -5731,7 +6539,7 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3V3\"" + (property "Description" "Push button switch, generic, two pins" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -5742,7 +6550,7 @@ ) ) ) - (property "ki_keywords" "global power" + (property "ki_keywords" "switch normally-open pushbutton push-button" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -5753,11 +6561,10 @@ ) ) ) - (symbol "+3V3_0_1" - (polyline - (pts - (xy -0.762 1.27) (xy 0 2.54) - ) + (symbol "SW_Push_0_1" + (circle + (center -2.032 0) + (radius 0.508) (stroke (width 0) (type default) @@ -5768,8 +6575,19 @@ ) (polyline (pts - (xy 0 2.54) (xy 0.762 1.27) + (xy 0 1.27) (xy 0 3.048) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) ) + ) + (circle + (center 2.032 0) + (radius 0.508) (stroke (width 0) (type default) @@ -5780,7 +6598,7 @@ ) (polyline (pts - (xy 0 0) (xy 0 2.54) + (xy 2.54 1.27) (xy -2.54 1.27) ) (stroke (width 0) @@ -5790,12 +6608,10 @@ (type none) ) ) - ) - (symbol "+3V3_1_1" - (pin power_in line - (at 0 0 90) - (length 0) - (name "" + (pin passive line + (at -5.08 0 0) + (length 2.54) + (name "1" (effects (font (size 1.27 1.27) @@ -5810,14 +6626,28 @@ ) ) ) + (pin passive line + (at 5.08 0 180) + (length 2.54) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) ) (embedded_fonts no) ) - (symbol "power:+5V" - (power global) - (pin_numbers - (hide yes) - ) + (symbol "Transistor_FET:Q_NMOS_GSD" (pin_names (offset 0) (hide yes) @@ -5827,29 +6657,30 @@ (on_board yes) (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "#PWR" - (at 0 -3.81 0) + (property "Reference" "Q" + (at 5.08 1.905 0) (show_name no) (do_not_autoplace no) - (hide yes) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "+5V" - (at 0 3.556 0) + (property "Value" "Q_NMOS_GSD" + (at 5.08 0 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) (property "Footprint" "" - (at 0 0 0) + (at 5.08 2.54 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -5870,7 +6701,7 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+5V\"" + (property "Description" "N-MOSFET transistor, gate/source/drain" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -5881,7 +6712,7 @@ ) ) ) - (property "ki_keywords" "global power" + (property "ki_keywords" "transistor NMOS N-MOS N-MOSFET" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -5892,10 +6723,22 @@ ) ) ) - (symbol "+5V_0_1" + (symbol "Q_NMOS_GSD_0_1" (polyline (pts - (xy -0.762 1.27) (xy 0 2.54) + (xy 0.254 1.905) (xy 0.254 -1.905) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0.254 0) (xy -2.54 0) ) (stroke (width 0) @@ -5907,7 +6750,43 @@ ) (polyline (pts - (xy 0 2.54) (xy 0.762 1.27) + (xy 0.762 2.286) (xy 0.762 1.27) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0.762 0.508) (xy 0.762 -0.508) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0.762 -1.27) (xy 0.762 -2.286) + ) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0.762 -1.778) (xy 3.302 -1.778) (xy 3.302 1.778) (xy 0.762 1.778) ) (stroke (width 0) @@ -5919,7 +6798,88 @@ ) (polyline (pts - (xy 0 0) (xy 0 2.54) + (xy 1.016 0) (xy 2.032 0.381) (xy 2.032 -0.381) (xy 1.016 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (circle + (center 1.651 0) + (radius 2.794) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.54 2.54) (xy 2.54 1.778) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (circle + (center 2.54 1.778) + (radius 0.254) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (circle + (center 2.54 -1.778) + (radius 0.254) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + (polyline + (pts + (xy 2.54 -2.54) (xy 2.54 0) (xy 0.762 0) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 2.921 0.381) (xy 3.683 0.381) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 3.302 0.381) (xy 2.921 -0.254) (xy 3.683 -0.254) (xy 3.302 0.381) ) (stroke (width 0) @@ -5930,11 +6890,11 @@ ) ) ) - (symbol "+5V_1_1" - (pin power_in line - (at 0 0 90) - (length 0) - (name "" + (symbol "Q_NMOS_GSD_1_1" + (pin input line + (at -5.08 0 0) + (length 2.54) + (name "G" (effects (font (size 1.27 1.27) @@ -5949,10 +6909,46 @@ ) ) ) + (pin passive line + (at 2.54 -5.08 90) + (length 2.54) + (name "S" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 2.54 5.08 270) + (length 2.54) + (name "D" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) ) (embedded_fonts no) ) - (symbol "power:GND" + (symbol "power:+3.3V" (power global) (pin_numbers (hide yes) @@ -5967,7 +6963,7 @@ (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) (property "Reference" "#PWR" - (at 0 -6.35 0) + (at 0 -3.81 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -5977,8 +6973,8 @@ ) ) ) - (property "Value" "GND" - (at 0 -3.81 0) + (property "Value" "+3.3V" + (at 0 3.556 0) (show_name no) (do_not_autoplace no) (effects @@ -6009,7 +7005,7 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -6031,10 +7027,34 @@ ) ) ) - (symbol "GND_0_1" + (symbol "+3.3V_0_1" (polyline (pts - (xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) ) (stroke (width 0) @@ -6045,9 +7065,9 @@ ) ) ) - (symbol "GND_1_1" + (symbol "+3.3V_1_1" (pin power_in line - (at 0 0 270) + (at 0 0 90) (length 0) (name "" (effects @@ -6067,7 +7087,7 @@ ) (embedded_fonts no) ) - (symbol "power:PWR_FLAG" + (symbol "power:+3V3" (power global) (pin_numbers (hide yes) @@ -6081,8 +7101,8 @@ (on_board yes) (in_pos_files yes) (duplicate_pin_numbers_are_jumpers no) - (property "Reference" "#FLG" - (at 0 1.905 0) + (property "Reference" "#PWR" + (at 0 -3.81 0) (show_name no) (do_not_autoplace no) (hide yes) @@ -6092,8 +7112,8 @@ ) ) ) - (property "Value" "PWR_FLAG" - (at 0 3.81 0) + (property "Value" "+3V3" + (at 0 3.556 0) (show_name no) (do_not_autoplace no) (effects @@ -6124,7 +7144,7 @@ ) ) ) - (property "Description" "Special symbol for telling ERC where power comes from" + (property "Description" "Power symbol creates a global label with name \"+3V3\"" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -6135,7 +7155,7 @@ ) ) ) - (property "ki_keywords" "flag power" + (property "ki_keywords" "global power" (at 0 0 0) (show_name no) (do_not_autoplace no) @@ -6146,8 +7166,46 @@ ) ) ) - (symbol "PWR_FLAG_0_0" - (pin power_out line + (symbol "+3V3_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+3V3_1_1" + (pin power_in line (at 0 0 90) (length 0) (name "" @@ -6166,10 +7224,115 @@ ) ) ) - (symbol "PWR_FLAG_0_1" + (embedded_fonts no) + ) + (symbol "power:+5V" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "+5V" + (at 0 3.556 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+5V\"" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "+5V_0_1" (polyline (pts - (xy 0 0) (xy 0 1.27) (xy -1.016 1.905) (xy 0 2.54) (xy 1.016 1.905) (xy 0 1.27) + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) ) (stroke (width 0) @@ -6180,97 +7343,359 @@ ) ) ) + (symbol "+5V_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) (embedded_fonts no) ) - ) - (rectangle - (start 177.8 166.37) - (end 397.51 321.31) - (stroke - (width 0) - (type default) - ) - (fill - (type none) - ) - (uuid "31e4e172-ccdc-4146-bd5e-c28956302490") - ) - (rectangle - (start 242.57 327.66) - (end 397.51 403.86) - (stroke - (width 0) - (type default) - ) - (fill - (type none) - ) - (uuid "44be9436-831c-4ea8-9206-fe4a5a79e96a") - ) - (rectangle - (start 21.59 165.1) - (end 170.18 321.31) - (stroke - (width 0) - (type default) - ) - (fill - (type none) - ) - (uuid "5d76651e-8bbf-4470-956b-a3922500fd3b") - ) - (rectangle - (start 17.78 17.78) - (end 166.37 116.84) - (stroke - (width 0) - (type default) - ) - (fill - (type none) - ) - (uuid "66ec703b-2f02-46e9-b78f-d7f2ea883f80") - ) - (rectangle - (start 406.4 15.24) - (end 577.85 185.42) - (stroke - (width 0) - (type default) - ) - (fill - (type none) - ) - (uuid "6e83839b-b290-44fa-a8b5-c4f2a0fc679f") - ) - (rectangle - (start 19.05 327.66) - (end 234.95 403.86) - (stroke - (width 0) - (type default) - ) - (fill - (type none) - ) - (uuid "aa627733-0edf-4475-a424-10f1fb5f007f") - ) - (rectangle - (start 406.4 190.5) - (end 577.85 302.26) - (stroke - (width 0) - (type default) - ) - (fill - (type none) - ) - (uuid "b4cf411d-e0bd-47cc-8faf-fb531ddfe1e9") - ) - (rectangle - (start 177.8 17.78) - (end 396.24 160.02) - (stroke + (symbol "power:GND" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#PWR" + (at 0 -6.35 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "GND" + (at 0 -3.81 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "GND_1_1" + (pin power_in line + (at 0 0 270) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) + (symbol "power:PWR_FLAG" + (power global) + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (duplicate_pin_numbers_are_jumpers no) + (property "Reference" "#FLG" + (at 0 1.905 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "PWR_FLAG" + (at 0 3.81 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Special symbol for telling ERC where power comes from" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "ki_keywords" "flag power" + (at 0 0 0) + (show_name no) + (do_not_autoplace no) + (hide yes) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (symbol "PWR_FLAG_0_0" + (pin power_out line + (at 0 0 90) + (length 0) + (name "" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (symbol "PWR_FLAG_0_1" + (polyline + (pts + (xy 0 0) (xy 0 1.27) (xy -1.016 1.905) (xy 0 2.54) (xy 1.016 1.905) (xy 0 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (embedded_fonts no) + ) + ) + (rectangle + (start 177.8 166.37) + (end 397.51 321.31) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "31e4e172-ccdc-4146-bd5e-c28956302490") + ) + (rectangle + (start 242.57 327.66) + (end 397.51 403.86) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "44be9436-831c-4ea8-9206-fe4a5a79e96a") + ) + (rectangle + (start 17.78 224.79) + (end 166.37 321.31) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "5d76651e-8bbf-4470-956b-a3922500fd3b") + ) + (rectangle + (start 17.78 17.78) + (end 166.37 116.84) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "66ec703b-2f02-46e9-b78f-d7f2ea883f80") + ) + (rectangle + (start 406.4 19.05) + (end 577.85 200.66) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "6e83839b-b290-44fa-a8b5-c4f2a0fc679f") + ) + (rectangle + (start 405.13 205.74) + (end 576.58 356.87) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "845b0753-d9ba-4ac2-95f7-399f69425069") + ) + (rectangle + (start 19.05 327.66) + (end 234.95 403.86) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "aa627733-0edf-4475-a424-10f1fb5f007f") + ) + (rectangle + (start 17.78 120.65) + (end 166.37 220.98) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + (uuid "b4cf411d-e0bd-47cc-8faf-fb531ddfe1e9") + ) + (rectangle + (start 177.8 17.78) + (end 396.24 160.02) + (stroke (width 0) (type default) ) @@ -6279,9 +7704,20 @@ ) (uuid "c9786061-df0f-40c8-8b31-3784852b74ba") ) + (text "The CT must be a voltage-output type with an integral burden resistor;\na current-output CT whose burden can be disconnected develops dangerous voltages on an open secondary." + (exclude_from_sim no) + (at 245.618 338.328 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + (uuid "02b8114e-5153-49ac-8345-cb326829a0d4") + ) (text "TEMPERATURE" (exclude_from_sim no) - (at 410.718 21.844 0) + (at 410.718 25.654 0) (effects (font (size 2.54 2.54) @@ -6294,7 +7730,7 @@ ) (text "DISPLAY" (exclude_from_sim no) - (at 410.972 197.104 0) + (at 24.13 128.524 0) (effects (font (size 2.54 2.54) @@ -6342,4223 +7778,5697 @@ ) (uuid "87d65604-cb43-4ddc-9112-564b37404c91") ) - (text "KNOWN ACCEPTED ERC VIOLATION: U3.SDO and U4.SDO both sit on SPI_MISO.\nThe KiCad symbol types these pins \"output\", but the MAX31856 tri-states SDO\nwhenever its CS is de-asserted, so the shared bus is correct. Separate CS lines\n(TC1_CS / TC2_CS) guarantee only one device drives at a time. Exclude in ERC." - (exclude_from_sim no) - (at 410.718 30.48 0) - (effects - (font - (size 1.6 1.6) - ) - (justify left) - ) - (uuid "8a0be164-57e9-4df8-8916-7b4e7db1e202") + (text "POWER" + (exclude_from_sim no) + (at 22.606 24.384 0) + (effects + (font + (size 2.54 2.54) + (thickness 0.508) + (bold yes) + ) + (justify left) + ) + (uuid "a4f70b81-f8a4-432f-89b5-dfe3aa4171ce") + ) + (text "AUX" + (exclude_from_sim no) + (at 24.384 231.14 0) + (effects + (font + (size 2.54 2.54) + (thickness 0.508) + (bold yes) + ) + (justify left) + ) + (uuid "c5606c85-2343-4743-8d50-f92051310752") + ) + (text "HEATER" + (exclude_from_sim no) + (at 181.864 172.212 0) + (effects + (font + (size 2.54 2.54) + (thickness 0.508) + (bold yes) + ) + (justify left) + ) + (uuid "d4de13cc-fc72-42bf-bdea-8a1e942300b5") + ) + (text "CONTROLLER" + (exclude_from_sim no) + (at 182.626 24.13 0) + (effects + (font + (size 2.54 2.54) + (thickness 0.508) + (bold yes) + ) + (justify left) + ) + (uuid "e6c4cbc4-6fd7-4d91-9a3e-c4eded551781") + ) + (text "SUPERVISOR" + (exclude_from_sim no) + (at 411.226 213.36 0) + (effects + (font + (size 2.54 2.54) + (thickness 0.508) + (bold yes) + ) + (justify left) + ) + (uuid "fbdb5f42-342a-4f4a-aef7-b6b326cb83c3") + ) + (text "All are 1.5 x 1.5 mm SMD pads on the TOP copper layer only,\nso the whole board can be probed without turning it over. Do not move any of\nthem to the bottom layer during placement." + (exclude_from_sim no) + (at 21.59 338.328 0) + (effects + (font + (size 1.6 1.6) + ) + (justify left) + ) + (uuid "feeb594e-85aa-46a5-9130-93d3e40b2080") + ) + (junction + (at 293.37 60.96) + (diameter 0) + (color 0 0 0 0) + (uuid "0414ca95-a931-4048-b981-8fe8dc26c420") + ) + (junction + (at 323.85 228.6) + (diameter 0) + (color 0 0 0 0) + (uuid "09cf6988-c71a-4cf7-a768-608265a7799f") + ) + (junction + (at 140.97 48.26) + (diameter 0) + (color 0 0 0 0) + (uuid "15590a87-c60f-459b-bb0e-aee2c8743848") + ) + (junction + (at 481.33 71.12) + (diameter 0) + (color 0 0 0 0) + (uuid "1869fcb9-e1c2-46ae-a882-12057202cd88") + ) + (junction + (at 247.65 236.22) + (diameter 0) + (color 0 0 0 0) + (uuid "1beda7de-137e-481b-b968-200da7f12646") + ) + (junction + (at 481.33 143.51) + (diameter 0) + (color 0 0 0 0) + (uuid "20c1416a-8f63-4f8a-a9a0-795eae689f95") + ) + (junction + (at 514.35 44.45) + (diameter 0) + (color 0 0 0 0) + (uuid "2e422741-27ea-493b-8c1b-2808c7140ffb") + ) + (junction + (at 127 176.53) + (diameter 0) + (color 0 0 0 0) + (uuid "3a43d836-3666-4ad2-ad4c-65f632de09f0") + ) + (junction + (at 90.17 74.93) + (diameter 0) + (color 0 0 0 0) + (uuid "3ab4d804-00d6-4bdb-aa4e-5a8495d87eb0") + ) + (junction + (at 31.75 171.45) + (diameter 0) + (color 0 0 0 0) + (uuid "3c7ca92f-6144-464b-a9bc-ba57b47d2fdd") + ) + (junction + (at 281.94 228.6) + (diameter 0) + (color 0 0 0 0) + (uuid "3dc042a9-9b11-4147-9e56-8127f1c129f2") + ) + (junction + (at 298.45 60.96) + (diameter 0) + (color 0 0 0 0) + (uuid "425e7b3e-9912-4162-a388-9ce908f89d33") + ) + (junction + (at 132.08 173.99) + (diameter 0) + (color 0 0 0 0) + (uuid "44e52a5b-7061-4277-8c3d-981744fd35b6") + ) + (junction + (at 485.14 90.17) + (diameter 0) + (color 0 0 0 0) + (uuid "4774663e-e689-4aab-9536-dbabdbc1b0e3") + ) + (junction + (at 127 48.26) + (diameter 0) + (color 0 0 0 0) + (uuid "4ae10354-e880-45c4-be91-d850284b28df") + ) + (junction + (at 514.35 162.56) + (diameter 0) + (color 0 0 0 0) + (uuid "50aeae00-542f-4773-a8b9-d86b525c5776") + ) + (junction + (at 488.95 146.05) + (diameter 0) + (color 0 0 0 0) + (uuid "51cf48a0-6bf8-405f-9160-7f39a0cebead") + ) + (junction + (at 241.3 81.28) + (diameter 0) + (color 0 0 0 0) + (uuid "5415f384-f99c-4ecd-8288-9c0259fd1991") + ) + (junction + (at 274.32 365.76) + (diameter 0) + (color 0 0 0 0) + (uuid "5aa4bf0b-1c94-4644-afa6-17a715a2ffed") + ) + (junction + (at 514.35 90.17) + (diameter 0) + (color 0 0 0 0) + (uuid "6319a8fd-e9aa-4dbc-b50b-c6533b52fa0e") + ) + (junction + (at 287.02 71.12) + (diameter 0) + (color 0 0 0 0) + (uuid "6b238717-13a5-46ba-aa75-548ae1ed836d") + ) + (junction + (at 488.95 73.66) + (diameter 0) + (color 0 0 0 0) + (uuid "6fae12f6-bd5e-47f0-af73-31d80c3a2588") + ) + (junction + (at 519.43 116.84) + (diameter 0) + (color 0 0 0 0) + (uuid "70a1b96d-7e54-4bec-85c8-df069e0c6754") + ) + (junction + (at 471.17 71.12) + (diameter 0) + (color 0 0 0 0) + (uuid "70ea2637-78ea-45c8-9bea-9e94350fec06") + ) + (junction + (at 102.87 293.37) + (diameter 0) + (color 0 0 0 0) + (uuid "74196ad1-fa29-47d7-81cd-cf8ee377998f") + ) + (junction + (at 336.55 217.17) + (diameter 0) + (color 0 0 0 0) + (uuid "765eeebe-374d-4da4-bc50-3d4f7a21e7a3") + ) + (junction + (at 471.17 151.13) + (diameter 0) + (color 0 0 0 0) + (uuid "79c9ea7a-52ea-4e42-9c5b-1cd7e27017c4") + ) + (junction + (at 471.17 143.51) + (diameter 0) + (color 0 0 0 0) + (uuid "7adc1969-bf3d-497a-ab8b-d453b51dc9cd") + ) + (junction + (at 471.17 78.74) + (diameter 0) + (color 0 0 0 0) + (uuid "7cc69abb-cfae-41e4-8573-20c5fdaf4ec5") + ) + (junction + (at 308.61 228.6) + (diameter 0) + (color 0 0 0 0) + (uuid "849003a4-fb5a-4802-8b6f-7facadb72f0e") + ) + (junction + (at 566.42 256.54) + (diameter 0) + (color 0 0 0 0) + (uuid "87f83948-b413-4248-b86b-fa4091ad966c") + ) + (junction + (at 76.2 171.45) + (diameter 0) + (color 0 0 0 0) + (uuid "96327422-1fd2-4310-98ca-a5c78c6136de") + ) + (junction + (at 77.47 48.26) + (diameter 0) + (color 0 0 0 0) + (uuid "9e421b3e-a8d2-4993-bd42-606f540b0b95") ) - (text "POWER" - (exclude_from_sim no) - (at 22.606 24.384 0) - (effects - (font - (size 2.54 2.54) - (thickness 0.508) - (bold yes) - ) - (justify left) - ) - (uuid "a4f70b81-f8a4-432f-89b5-dfe3aa4171ce") + (junction + (at 38.1 107.95) + (diameter 0) + (color 0 0 0 0) + (uuid "a05bc065-cb98-476c-a0fd-6cc2478b1821") ) - (text "AUX" - (exclude_from_sim no) - (at 26.924 172.466 0) - (effects - (font - (size 2.54 2.54) - (thickness 0.508) - (bold yes) - ) - (justify left) - ) - (uuid "c5606c85-2343-4743-8d50-f92051310752") + (junction + (at 336.55 199.39) + (diameter 0) + (color 0 0 0 0) + (uuid "a0ab809b-d4ba-42f2-ab18-3af3f730d7f0") ) - (text "HEATER" - (exclude_from_sim no) - (at 181.864 172.212 0) - (effects - (font - (size 2.54 2.54) - (thickness 0.508) - (bold yes) - ) - (justify left) - ) - (uuid "d4de13cc-fc72-42bf-bdea-8a1e942300b5") + (junction + (at 524.51 116.84) + (diameter 0) + (color 0 0 0 0) + (uuid "a2c6bff8-ad69-4596-ab6b-14c221ba114b") ) - (text "CONTROLLER" - (exclude_from_sim no) - (at 182.626 24.13 0) - (effects - (font - (size 2.54 2.54) - (thickness 0.508) - (bold yes) - ) - (justify left) - ) - (uuid "e6c4cbc4-6fd7-4d91-9a3e-c4eded551781") + (junction + (at 40.64 176.53) + (diameter 0) + (color 0 0 0 0) + (uuid "ad4e1836-a9ee-4ebd-bfcd-3ff7842a5780") ) - (text "All are 1.5 x 1.5 mm SMD pads on the TOP copper layer only,\nso the whole board can be probed without turning it over. Do not move any of\nthem to the bottom layer during placement." - (exclude_from_sim no) - (at 21.59 338.328 0) - (effects - (font - (size 1.6 1.6) - ) - (justify left) - ) - (uuid "feeb594e-85aa-46a5-9130-93d3e40b2080") + (junction + (at 308.61 238.76) + (diameter 0) + (color 0 0 0 0) + (uuid "b41a7304-db50-4fa0-a7d2-e56bd4902415") ) (junction - (at 293.37 60.96) + (at 330.2 364.49) (diameter 0) (color 0 0 0 0) - (uuid "0414ca95-a931-4048-b981-8fe8dc26c420") + (uuid "ba357e27-04e3-4e16-a708-a6ddbd5199e4") ) (junction - (at 472.44 144.78) + (at 256.54 267.97) (diameter 0) (color 0 0 0 0) - (uuid "078a7b0c-982f-486f-8e52-e5ac01d7d80e") + (uuid "bd9806ec-c670-488e-b48e-1f57d8c338ca") ) (junction - (at 514.35 54.61) + (at 308.61 210.82) (diameter 0) (color 0 0 0 0) - (uuid "08c9f083-1ebf-474c-96f2-d3ecca562dc1") + (uuid "c2344d49-8f23-4e0f-b8d6-ace9f4f6393a") ) (junction - (at 323.85 228.6) + (at 93.98 251.46) (diameter 0) (color 0 0 0 0) - (uuid "09cf6988-c71a-4cf7-a768-608265a7799f") + (uuid "c38dc850-a894-4b2d-a765-70bde0e65547") ) (junction - (at 140.97 48.26) + (at 69.85 300.99) (diameter 0) (color 0 0 0 0) - (uuid "15590a87-c60f-459b-bb0e-aee2c8743848") + (uuid "c450698d-cde5-4908-9d18-c7704520f422") ) (junction - (at 481.33 67.31) + (at 544.83 261.62) (diameter 0) (color 0 0 0 0) - (uuid "1869fcb9-e1c2-46ae-a882-12057202cd88") + (uuid "c5fe60b2-2279-4c17-915f-5b6744419a10") ) (junction - (at 247.65 236.22) + (at 83.82 48.26) (diameter 0) (color 0 0 0 0) - (uuid "1beda7de-137e-481b-b968-200da7f12646") + (uuid "cc07c62a-350a-4b7b-bfd8-e3d6b0752565") ) (junction - (at 481.33 144.78) + (at 259.08 236.22) (diameter 0) (color 0 0 0 0) - (uuid "2ff132fd-fd23-40e7-a0df-e566cb5957cf") + (uuid "cf3b9103-0c64-4259-b000-e1f25b3b226a") ) (junction - (at 520.7 254) + (at 519.43 44.45) (diameter 0) (color 0 0 0 0) - (uuid "3a43d836-3666-4ad2-ad4c-65f632de09f0") + (uuid "d1675d2b-db15-4e6d-a5c2-c938e8350644") ) (junction - (at 90.17 74.93) + (at 514.35 116.84) (diameter 0) (color 0 0 0 0) - (uuid "3ab4d804-00d6-4bdb-aa4e-5a8495d87eb0") + (uuid "d2c6ba7c-7cfe-406e-8b9b-9bb1abc4b511") ) (junction - (at 425.45 248.92) + (at 67.31 261.62) (diameter 0) (color 0 0 0 0) - (uuid "3c7ca92f-6144-464b-a9bc-ba57b47d2fdd") + (uuid "db1a32a5-0a31-4831-9c5e-8d7d164e3962") ) (junction - (at 281.94 228.6) + (at 485.14 162.56) (diameter 0) (color 0 0 0 0) - (uuid "3dc042a9-9b11-4147-9e56-8127f1c129f2") + (uuid "e2e224b8-a201-4645-8e9d-37c526fa71cd") ) (junction - (at 298.45 60.96) + (at 95.25 48.26) (diameter 0) (color 0 0 0 0) - (uuid "425e7b3e-9912-4162-a388-9ce908f89d33") + (uuid "e67c895c-76f8-4617-bd41-fd8a74736a2f") + ) + (junction + (at 524.51 44.45) + (diameter 0) + (color 0 0 0 0) + (uuid "e8ca9a40-479b-4ec1-ae4d-ce29b6298d20") + ) + (junction + (at 491.49 229.87) + (diameter 0) + (color 0 0 0 0) + (uuid "fe3ac270-53c5-4ecb-9c81-8ea45f1b5354") + ) + (no_connect + (at 313.69 104.14) + (uuid "06b493c1-0e13-4f4f-925a-05bf1963f7ba") + ) + (no_connect + (at 473.71 279.4) + (uuid "125ee007-8820-4511-b421-c452d65431a8") + ) + (no_connect + (at 473.71 274.32) + (uuid "1583d634-6c6e-401d-8002-82bff7911eab") + ) + (no_connect + (at 283.21 111.76) + (uuid "18199a6e-26b6-4cfb-8f17-3851b2c4012c") + ) + (no_connect + (at 473.71 294.64) + (uuid "30b7aadc-2b5a-475a-ae0e-953934b8c933") + ) + (no_connect + (at 313.69 96.52) + (uuid "3f1c359a-92d6-4d73-bac6-f19c0139ccd3") + ) + (no_connect + (at 313.69 114.3) + (uuid "43ef9186-0efe-4e87-bc30-6efe318ef13a") + ) + (no_connect + (at 283.21 114.3) + (uuid "462eeaf5-9400-4bd8-bb8a-ffee65bc2f8b") + ) + (no_connect + (at 313.69 121.92) + (uuid "480498d9-2e62-498b-ab5c-a14d1bf6eb49") + ) + (no_connect + (at 473.71 261.62) + (uuid "5be54097-e206-4046-9d36-80dd5d3b8fec") + ) + (no_connect + (at 313.69 101.6) + (uuid "6631d052-33d7-4b82-89a7-a738e83ffd54") + ) + (no_connect + (at 283.21 121.92) + (uuid "687c4280-ccb5-41d4-9a8e-e8d5d3e8894f") + ) + (no_connect + (at 529.59 66.04) + (uuid "6928b797-a3e3-41ff-8358-71c0bf31b769") + ) + (no_connect + (at 313.69 99.06) + (uuid "69d886d5-1b86-4fce-bdaa-832298c84b8b") + ) + (no_connect + (at 509.27 279.4) + (uuid "72755197-829a-4bb7-a690-f3309a8f4bcd") + ) + (no_connect + (at 473.71 256.54) + (uuid "77f7b485-118c-46c0-8668-cf8bdec0808b") + ) + (no_connect + (at 313.69 127) + (uuid "7bd91869-d8c4-4e31-ab8f-958e44ea0d3f") + ) + (no_connect + (at 283.21 119.38) + (uuid "8a0dc4c0-83f1-4dcf-abde-448adef732f9") + ) + (no_connect + (at 473.71 266.7) + (uuid "954f0167-25dd-486f-89b6-8e7d7ae6cde1") + ) + (no_connect + (at 473.71 271.78) + (uuid "9862a994-f9d1-44c5-9470-c86725c16f71") + ) + (no_connect + (at 283.21 109.22) + (uuid "a9c259fa-908c-4454-8f3c-ad292e01e4ef") + ) + (no_connect + (at 313.69 111.76) + (uuid "ca07804d-ae68-463f-9d9f-5ea29869bf4b") + ) + (no_connect + (at 529.59 138.43) + (uuid "cb0b59fc-88b7-483c-903b-9067d2ce6250") + ) + (no_connect + (at 313.69 119.38) + (uuid "ce24b1b3-23d7-448c-87c5-7d455039846e") + ) + (no_connect + (at 509.27 289.56) + (uuid "ce3b4378-9603-46b2-ba88-49418824170c") + ) + (no_connect + (at 283.21 93.98) + (uuid "d357d7a9-f804-4d87-a799-4503f97fe5c3") + ) + (no_connect + (at 313.69 109.22) + (uuid "e33eb4b6-05b5-409d-9664-73d9acf00d98") + ) + (no_connect + (at 473.71 264.16) + (uuid "e95f05aa-53e2-4993-93eb-451bce463411") + ) + (no_connect + (at 509.27 281.94) + (uuid "edf3dafb-3720-45b1-ae3d-30b845cce244") + ) + (no_connect + (at 283.21 99.06) + (uuid "eefbf447-388c-49f2-9c94-ac6a2d9557bb") + ) + (no_connect + (at 283.21 116.84) + (uuid "f0cfe13b-048a-44dc-ba14-7407456803e3") + ) + (no_connect + (at 473.71 276.86) + (uuid "fd4081b8-46b4-420f-a9f7-c964019b77be") + ) + (wire + (pts + (xy 326.39 83.82) (xy 313.69 83.82) + ) + (stroke + (width 0) + (type default) + ) + (uuid "00769e5e-7219-46c8-9c99-c41400ba1f5b") + ) + (wire + (pts + (xy 271.78 104.14) (xy 283.21 104.14) + ) + (stroke + (width 0) + (type default) + ) + (uuid "019649c0-8804-49f9-a4cb-006c587f7324") + ) + (wire + (pts + (xy 80.01 77.47) (xy 80.01 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "020c4cf3-a6dd-4169-af36-a047142f4547") + ) + (wire + (pts + (xy 539.75 153.67) (xy 529.59 153.67) + ) + (stroke + (width 0) + (type default) + ) + (uuid "02faf9dd-6a4f-43e6-b532-1d81890154e5") + ) + (wire + (pts + (xy 69.85 300.99) (xy 80.01 300.99) + ) + (stroke + (width 0) + (type default) + ) + (uuid "03f19341-504f-45e0-bf01-31fc73aa4b25") ) - (junction - (at 525.78 251.46) - (diameter 0) - (color 0 0 0 0) - (uuid "44e52a5b-7061-4277-8c3d-981744fd35b6") + (wire + (pts + (xy 509.27 287.02) (xy 532.13 287.02) + ) + (stroke + (width 0) + (type default) + ) + (uuid "04686755-994f-4255-8f2b-f750eb5d9b13") ) - (junction - (at 485.14 86.36) - (diameter 0) - (color 0 0 0 0) - (uuid "4774663e-e689-4aab-9536-dbabdbc1b0e3") + (wire + (pts + (xy 90.17 72.39) (xy 90.17 74.93) + ) + (stroke + (width 0) + (type default) + ) + (uuid "052fa192-b21d-4201-89e2-0013988c37e6") ) - (junction - (at 127 48.26) - (diameter 0) - (color 0 0 0 0) - (uuid "4ae10354-e880-45c4-be91-d850284b28df") + (wire + (pts + (xy 509.27 266.7) (xy 532.13 266.7) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0582d7e2-4760-4e66-ae01-216e9037ea13") ) - (junction - (at 241.3 81.28) - (diameter 0) - (color 0 0 0 0) - (uuid "5415f384-f99c-4ecd-8288-9c0259fd1991") + (wire + (pts + (xy 102.87 293.37) (xy 120.65 293.37) + ) + (stroke + (width 0) + (type default) + ) + (uuid "09f63a4b-2663-4f98-ac61-75721f17a3d6") ) - (junction - (at 472.44 152.4) - (diameter 0) - (color 0 0 0 0) - (uuid "54f492e7-857b-451f-97ce-bca003842974") + (wire + (pts + (xy 213.36 393.7) (xy 218.44 393.7) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0e199a93-d1db-4c86-ae6c-79003b685366") ) - (junction - (at 326.39 365.76) - (diameter 0) - (color 0 0 0 0) - (uuid "5aa4bf0b-1c94-4644-afa6-17a715a2ffed") + (wire + (pts + (xy 463.55 78.74) (xy 471.17 78.74) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0f7d6e71-ade4-4ae8-bd6c-7c8ff3c66e4e") ) - (junction - (at 487.68 147.32) - (diameter 0) - (color 0 0 0 0) - (uuid "5d649ea7-a978-412a-b2ce-897e81f1532d") + (wire + (pts + (xy 40.64 168.91) (xy 40.64 180.34) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0fce9ee2-3a27-4216-bd19-7845fadbd9b4") ) - (junction - (at 514.35 86.36) - (diameter 0) - (color 0 0 0 0) - (uuid "6319a8fd-e9aa-4dbc-b50b-c6533b52fa0e") + (wire + (pts + (xy 323.85 217.17) (xy 336.55 217.17) + ) + (stroke + (width 0) + (type default) + ) + (uuid "10b5a0a8-76a7-4729-8ccc-29c09f0dbf10") ) - (junction - (at 287.02 71.12) - (diameter 0) - (color 0 0 0 0) - (uuid "6b238717-13a5-46ba-aa75-548ae1ed836d") + (wire + (pts + (xy 95.25 48.26) (xy 100.33 48.26) + ) + (stroke + (width 0) + (type default) + ) + (uuid "120d6647-58e9-4f46-8b2e-66d9d39e40bb") ) - (junction - (at 488.95 69.85) - (diameter 0) - (color 0 0 0 0) - (uuid "6fae12f6-bd5e-47f0-af73-31d80c3a2588") + (wire + (pts + (xy 132.08 173.99) (xy 147.32 173.99) + ) + (stroke + (width 0) + (type default) + ) + (uuid "133d9afb-a58f-4d7e-9712-a5e9813a21b5") ) - (junction - (at 471.17 67.31) - (diameter 0) - (color 0 0 0 0) - (uuid "70ea2637-78ea-45c8-9bea-9e94350fec06") + (wire + (pts + (xy 506.73 45.72) (xy 506.73 44.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "13fe7cde-8c98-41fb-a7cb-a271fd5a7e56") ) - (junction - (at 102.87 242.57) - (diameter 0) - (color 0 0 0 0) - (uuid "74196ad1-fa29-47d7-81cd-cf8ee377998f") + (wire + (pts + (xy 270.51 228.6) (xy 281.94 228.6) + ) + (stroke + (width 0) + (type default) + ) + (uuid "14473b6e-3b8d-4559-a3f3-7539544d1d9d") ) - (junction - (at 336.55 217.17) - (diameter 0) - (color 0 0 0 0) - (uuid "765eeebe-374d-4da4-bc50-3d4f7a21e7a3") + (wire + (pts + (xy 471.17 78.74) (xy 478.79 78.74) + ) + (stroke + (width 0) + (type default) + ) + (uuid "14597b9c-d203-4b32-b0b1-9c01f8fed857") ) - (junction - (at 471.17 74.93) - (diameter 0) - (color 0 0 0 0) - (uuid "7cc69abb-cfae-41e4-8573-20c5fdaf4ec5") + (wire + (pts + (xy 48.26 173.99) (xy 50.8 173.99) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1485edf3-2be1-432d-890b-2ad19a3291a2") ) - (junction - (at 514.35 113.03) - (diameter 0) - (color 0 0 0 0) - (uuid "842c201d-18b0-433d-9f8d-ab9214b64c51") + (wire + (pts + (xy 514.35 90.17) (xy 514.35 92.71) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1614a27a-1b72-477f-bb76-df7c69a6369a") ) - (junction - (at 469.9 248.92) - (diameter 0) - (color 0 0 0 0) - (uuid "96327422-1fd2-4310-98ca-a5c78c6136de") + (wire + (pts + (xy 323.85 219.71) (xy 323.85 217.17) + ) + (stroke + (width 0) + (type default) + ) + (uuid "16cbaef1-f821-4dd7-9906-d1463619a086") ) - (junction - (at 77.47 48.26) - (diameter 0) - (color 0 0 0 0) - (uuid "9e421b3e-a8d2-4993-bd42-606f540b0b95") + (wire + (pts + (xy 281.94 228.6) (xy 308.61 228.6) + ) + (stroke + (width 0) + (type default) + ) + (uuid "195e5b7f-8e65-40ac-af9e-fdd34a58adbe") ) - (junction - (at 38.1 107.95) - (diameter 0) - (color 0 0 0 0) - (uuid "a05bc065-cb98-476c-a0fd-6cc2478b1821") + (wire + (pts + (xy 107.95 55.88) (xy 107.95 57.15) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1c8c64a2-3bd7-454e-b89e-5f31d6ba3008") ) - (junction - (at 336.55 199.39) - (diameter 0) - (color 0 0 0 0) - (uuid "a0ab809b-d4ba-42f2-ab18-3af3f730d7f0") + (wire + (pts + (xy 514.35 162.56) (xy 519.43 162.56) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1cd600b9-3569-44a6-891d-4d86b4ebbab5") ) - (junction - (at 524.51 113.03) - (diameter 0) - (color 0 0 0 0) - (uuid "a266d5cb-6a4a-4e32-9d6d-08cdaa44c496") + (wire + (pts + (xy 241.3 81.28) (xy 283.21 81.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1e21e1ea-25a3-49e1-9d45-4d77e08f02ef") + ) + (wire + (pts + (xy 259.08 236.22) (xy 247.65 236.22) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1e65fe7c-fd4e-4eef-bd01-078711df007f") ) - (junction - (at 256.54 287.02) - (diameter 0) - (color 0 0 0 0) - (uuid "a6a59616-77d3-427c-a72a-28d614ce865f") + (wire + (pts + (xy 127 170.18) (xy 127 176.53) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1f14a67c-fbaf-46a9-ba4f-a55ac0c1ca01") ) - (junction - (at 434.34 254) - (diameter 0) - (color 0 0 0 0) - (uuid "ad4e1836-a9ee-4ebd-bfcd-3ff7842a5780") + (wire + (pts + (xy 88.9 72.39) (xy 90.17 72.39) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1f26fd2c-d5c0-4514-b025-710c76a2b36c") ) - (junction - (at 514.35 163.83) - (diameter 0) - (color 0 0 0 0) - (uuid "b4ce72fc-f6e6-454f-a3b5-9757d2c06df9") + (wire + (pts + (xy 344.17 60.96) (xy 356.87 60.96) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2053b6bb-8671-4965-9d25-fe1f78927aa4") ) - (junction - (at 284.48 365.76) - (diameter 0) - (color 0 0 0 0) - (uuid "ba357e27-04e3-4e16-a708-a6ddbd5199e4") + (wire + (pts + (xy 326.39 81.28) (xy 313.69 81.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "208e7cef-7032-4435-8df1-9641ad087b4d") ) - (junction - (at 93.98 200.66) - (diameter 0) - (color 0 0 0 0) - (uuid "c38dc850-a894-4b2d-a765-70bde0e65547") + (wire + (pts + (xy 241.3 81.28) (xy 241.3 80.01) + ) + (stroke + (width 0) + (type default) + ) + (uuid "209ecdd1-ac90-4d87-bb53-0ae3f40adc4d") ) - (junction - (at 69.85 250.19) - (diameter 0) - (color 0 0 0 0) - (uuid "c450698d-cde5-4908-9d18-c7704520f422") + (wire + (pts + (xy 38.1 106.68) (xy 38.1 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "21e772ce-efe0-465f-bda2-4310cdad4149") ) - (junction - (at 514.35 40.64) - (diameter 0) - (color 0 0 0 0) - (uuid "c702c29b-9214-44b3-8956-20bab43038d3") + (wire + (pts + (xy 509.27 284.48) (xy 532.13 284.48) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2235e925-3ef5-499d-ab7e-f13f97b2820d") ) - (junction - (at 256.54 265.43) - (diameter 0) - (color 0 0 0 0) - (uuid "c8f6824f-c7d9-4d01-9a4b-6a84582c7605") + (wire + (pts + (xy 444.5 146.05) (xy 452.12 146.05) + ) + (stroke + (width 0) + (type default) + ) + (uuid "224cce31-c0b6-4c25-a98a-121115446793") ) - (junction - (at 519.43 113.03) - (diameter 0) - (color 0 0 0 0) - (uuid "c975e94f-6710-45be-b044-9d9ff3daf85e") + (wire + (pts + (xy 62.23 261.62) (xy 67.31 261.62) + ) + (stroke + (width 0) + (type default) + ) + (uuid "22a75948-2f13-4e9d-88de-a0928409d31e") ) - (junction - (at 83.82 48.26) - (diameter 0) - (color 0 0 0 0) - (uuid "cc07c62a-350a-4b7b-bfd8-e3d6b0752565") + (wire + (pts + (xy 140.97 44.45) (xy 140.97 48.26) + ) + (stroke + (width 0) + (type default) + ) + (uuid "22bc5a41-acbb-4117-8223-f31bf2945a28") ) - (junction - (at 259.08 236.22) - (diameter 0) - (color 0 0 0 0) - (uuid "cf3b9103-0c64-4259-b000-e1f25b3b226a") + (wire + (pts + (xy 298.45 60.96) (xy 298.45 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "22c723a0-ad9a-46d3-aaf0-3ae8e4f4f609") ) - (junction - (at 519.43 40.64) - (diameter 0) - (color 0 0 0 0) - (uuid "d1675d2b-db15-4e6d-a5c2-c938e8350644") + (wire + (pts + (xy 488.95 146.05) (xy 504.19 146.05) + ) + (stroke + (width 0) + (type default) + ) + (uuid "235665e2-a454-415f-aef0-24bee0d9d97e") ) - (junction - (at 67.31 210.82) - (diameter 0) - (color 0 0 0 0) - (uuid "db1a32a5-0a31-4831-9c5e-8d7d164e3962") + (wire + (pts + (xy 542.29 325.12) (xy 560.07 325.12) + ) + (stroke + (width 0) + (type default) + ) + (uuid "237fd93a-5a3f-4f81-aa59-52676519bdf6") ) - (junction - (at 308.61 210.82) - (diameter 0) - (color 0 0 0 0) - (uuid "e5dd89b8-a4ab-4a30-9a02-34e21cfdc6b4") + (wire + (pts + (xy 542.29 261.62) (xy 544.83 261.62) + ) + (stroke + (width 0) + (type default) + ) + (uuid "238c6e0e-877a-409d-8617-9ae6c42541eb") ) - (junction - (at 95.25 48.26) - (diameter 0) - (color 0 0 0 0) - (uuid "e67c895c-76f8-4617-bd41-fd8a74736a2f") + (wire + (pts + (xy 481.33 143.51) (xy 481.33 153.67) + ) + (stroke + (width 0) + (type default) + ) + (uuid "245d70f2-63e1-4945-a5cf-7d45215c617b") ) - (junction - (at 524.51 40.64) - (diameter 0) - (color 0 0 0 0) - (uuid "e8ca9a40-479b-4ec1-ae4d-ce29b6298d20") + (wire + (pts + (xy 78.74 256.54) (xy 78.74 251.46) + ) + (stroke + (width 0) + (type default) + ) + (uuid "24c62b4f-020a-491f-95bc-ff614e77e998") ) - (no_connect - (at 313.69 104.14) - (uuid "06b493c1-0e13-4f4f-925a-05bf1963f7ba") + (wire + (pts + (xy 248.92 110.49) (xy 233.68 110.49) + ) + (stroke + (width 0) + (type default) + ) + (uuid "25a9f0a4-c916-49c6-ac01-da42b9cbe364") ) - (no_connect - (at 506.73 154.94) - (uuid "08f22084-761d-40cd-b9d1-171e3a735678") + (wire + (pts + (xy 463.55 71.12) (xy 471.17 71.12) + ) + (stroke + (width 0) + (type default) + ) + (uuid "25dc0459-1911-414f-95d9-668456977f3c") ) - (no_connect - (at 313.69 124.46) - (uuid "09f435f2-d093-4f5e-a919-3bfd5e68bcee") + (wire + (pts + (xy 514.35 90.17) (xy 519.43 90.17) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2745acdc-37f8-4b10-a859-c7faae491b28") ) - (no_connect - (at 313.69 114.3) - (uuid "43ef9186-0efe-4e87-bc30-6efe318ef13a") + (wire + (pts + (xy 80.01 72.39) (xy 81.28 72.39) + ) + (stroke + (width 0) + (type default) + ) + (uuid "278f4854-2d6f-47ef-9970-362e29495e8c") ) - (no_connect - (at 313.69 121.92) - (uuid "480498d9-2e62-498b-ab5c-a14d1bf6eb49") + (wire + (pts + (xy 308.61 228.6) (xy 323.85 228.6) + ) + (stroke + (width 0) + (type default) + ) + (uuid "27a6d603-a768-4f87-82d5-044c4f68e713") ) - (no_connect - (at 313.69 101.6) - (uuid "6631d052-33d7-4b82-89a7-a738e83ffd54") + (wire + (pts + (xy 463.55 281.94) (xy 473.71 281.94) + ) + (stroke + (width 0) + (type default) + ) + (uuid "28173080-0394-4880-a6d0-77f107092258") ) - (no_connect - (at 313.69 99.06) - (uuid "69d886d5-1b86-4fce-bdaa-832298c84b8b") + (wire + (pts + (xy 64.77 86.36) (xy 53.34 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2925ddd4-f823-4aad-b319-a1f6e95a79f1") ) - (no_connect - (at 313.69 127) - (uuid "7bd91869-d8c4-4e31-ab8f-958e44ea0d3f") + (wire + (pts + (xy 93.98 248.92) (xy 93.98 251.46) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2a70510a-a9b8-4c32-9dd0-017df1a5c249") ) - (no_connect - (at 313.69 106.68) - (uuid "9347bad6-866f-4637-a1fb-e36dbd431f28") + (wire + (pts + (xy 95.25 48.26) (xy 95.25 49.53) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2b608eff-3d01-418d-aa25-d4a3e1510550") ) - (no_connect - (at 506.73 77.47) - (uuid "a3386506-da15-44f9-a9dd-cbfec4518376") + (wire + (pts + (xy 308.61 199.39) (xy 336.55 199.39) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2d23f476-2949-4dd1-82f4-84d6c3a1d5b4") ) - (no_connect - (at 313.69 111.76) - (uuid "ca07804d-ae68-463f-9d9f-5ea29869bf4b") + (wire + (pts + (xy 147.32 168.91) (xy 146.05 168.91) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2de5f5a1-3ed6-4c45-af8b-e37b09380af0") ) - (no_connect - (at 313.69 119.38) - (uuid "ce24b1b3-23d7-448c-87c5-7d455039846e") + (wire + (pts + (xy 204.47 392.43) (xy 204.47 393.7) + ) + (stroke + (width 0) + (type default) + ) + (uuid "3078378c-c054-453f-a769-6c06ad50b04a") ) - (no_connect - (at 283.21 93.98) - (uuid "d357d7a9-f804-4d87-a799-4503f97fe5c3") + (wire + (pts + (xy 325.12 364.49) (xy 330.2 364.49) + ) + (stroke + (width 0) + (type default) + ) + (uuid "31847753-8ca5-445d-a68d-0c84ec57e20f") ) - (no_connect - (at 313.69 109.22) - (uuid "e33eb4b6-05b5-409d-9664-73d9acf00d98") + (wire + (pts + (xy 31.75 171.45) (xy 50.8 171.45) + ) + (stroke + (width 0) + (type default) + ) + (uuid "318dfc6a-7694-4dc9-be70-765cfd579f06") ) (wire (pts - (xy 326.39 83.82) (xy 313.69 83.82) + (xy 491.49 229.87) (xy 491.49 248.92) ) (stroke (width 0) (type default) ) - (uuid "00769e5e-7219-46c8-9c99-c41400ba1f5b") + (uuid "3193f91e-74bb-4e11-a4d1-757dd5bfb962") ) (wire (pts - (xy 529.59 139.7) (xy 541.02 139.7) + (xy 471.17 143.51) (xy 481.33 143.51) ) (stroke (width 0) (type default) ) - (uuid "015bd176-a565-4a95-bc8e-0d469c6881ca") + (uuid "33139164-476a-462a-9a89-0222c6aff83f") ) (wire (pts - (xy 271.78 104.14) (xy 283.21 104.14) + (xy 514.35 161.29) (xy 514.35 162.56) ) (stroke (width 0) (type default) ) - (uuid "019649c0-8804-49f9-a4cb-006c587f7324") + (uuid "3579a3e3-4063-4ae6-98df-bd36d1529bd6") ) (wire (pts - (xy 80.01 77.47) (xy 80.01 76.2) + (xy 219.71 81.28) (xy 241.3 81.28) ) (stroke (width 0) (type default) ) - (uuid "020c4cf3-a6dd-4169-af36-a047142f4547") + (uuid "35d2c548-610c-43b1-a216-821630109ff0") ) (wire (pts - (xy 69.85 250.19) (xy 80.01 250.19) + (xy 271.78 106.68) (xy 283.21 106.68) ) (stroke (width 0) (type default) ) - (uuid "03f19341-504f-45e0-bf01-31fc73aa4b25") + (uuid "37d4b2fb-ee6a-45fe-8e9b-be2bcb64b130") ) (wire (pts - (xy 90.17 72.39) (xy 90.17 74.93) + (xy 31.75 171.45) (xy 31.75 180.34) ) (stroke (width 0) (type default) ) - (uuid "052fa192-b21d-4201-89e2-0013988c37e6") + (uuid "3817cdeb-06c7-4703-bc56-1e36856d5c51") ) (wire (pts - (xy 102.87 242.57) (xy 120.65 242.57) + (xy 481.33 143.51) (xy 504.19 143.51) ) (stroke (width 0) (type default) ) - (uuid "09f63a4b-2663-4f98-ac61-75721f17a3d6") + (uuid "38b1e70c-64e2-4a63-9c49-7b81206d56cf") ) (wire (pts - (xy 463.55 74.93) (xy 471.17 74.93) + (xy 452.12 143.51) (xy 455.93 143.51) ) (stroke (width 0) (type default) ) - (uuid "0f7d6e71-ade4-4ae8-bd6c-7c8ff3c66e4e") + (uuid "38c787ac-22bd-4f12-a8dd-7455fa72a047") ) (wire (pts - (xy 434.34 246.38) (xy 434.34 257.81) + (xy 243.84 267.97) (xy 256.54 267.97) ) (stroke (width 0) (type default) ) - (uuid "0fce9ee2-3a27-4216-bd19-7845fadbd9b4") + (uuid "39ca6306-e3e4-455d-a8d5-613d95a990e9") ) (wire (pts - (xy 323.85 217.17) (xy 336.55 217.17) + (xy 118.11 288.29) (xy 118.11 283.21) ) (stroke (width 0) (type default) ) - (uuid "10b5a0a8-76a7-4729-8ccc-29c09f0dbf10") + (uuid "39d190b8-b269-4e1f-aa2d-667d52cf6a6d") ) (wire (pts - (xy 95.25 48.26) (xy 100.33 48.26) + (xy 506.73 118.11) (xy 506.73 116.84) ) (stroke (width 0) (type default) ) - (uuid "120d6647-58e9-4f46-8b2e-66d9d39e40bb") + (uuid "3b173399-378e-4f28-9a94-cfaf3334fcc3") ) (wire (pts - (xy 256.54 265.43) (xy 262.89 265.43) + (xy 241.3 91.44) (xy 241.3 90.17) ) (stroke (width 0) (type default) ) - (uuid "13133f8e-36ae-4881-82f4-257214a7f581") + (uuid "3bd9b9cf-d56c-4ba6-9e7d-0010b67ae8c0") ) (wire (pts - (xy 525.78 251.46) (xy 541.02 251.46) + (xy 326.39 88.9) (xy 313.69 88.9) ) (stroke (width 0) (type default) ) - (uuid "133d9afb-a58f-4d7e-9712-a5e9813a21b5") + (uuid "3d502882-d6af-4309-a2a6-96cfee75f938") ) (wire (pts - (xy 506.73 41.91) (xy 506.73 40.64) + (xy 87.63 295.91) (xy 87.63 293.37) ) (stroke (width 0) (type default) ) - (uuid "13fe7cde-8c98-41fb-a7cb-a271fd5a7e56") + (uuid "3e287fe8-8ade-43ff-8d45-61590ec238cd") ) (wire (pts - (xy 270.51 228.6) (xy 281.94 228.6) + (xy 137.16 171.45) (xy 137.16 162.56) ) (stroke (width 0) (type default) ) - (uuid "14473b6e-3b8d-4559-a3f3-7539544d1d9d") + (uuid "3ea07d24-fee9-42f0-87f4-4594c550434f") ) (wire (pts - (xy 471.17 74.93) (xy 478.79 74.93) + (xy 519.43 116.84) (xy 524.51 116.84) ) (stroke (width 0) (type default) ) - (uuid "14597b9c-d203-4b32-b0b1-9c01f8fed857") + (uuid "3f86176d-9352-45b1-9ccf-9dfb3422a029") ) (wire (pts - (xy 441.96 251.46) (xy 444.5 251.46) + (xy 524.51 44.45) (xy 524.51 45.72) ) (stroke (width 0) (type default) ) - (uuid "1485edf3-2be1-432d-890b-2ad19a3291a2") + (uuid "3f93c2ec-766b-46af-9810-9c41f95e5238") ) (wire (pts - (xy 514.35 86.36) (xy 514.35 88.9) + (xy 292.1 210.82) (xy 308.61 210.82) ) (stroke (width 0) (type default) ) - (uuid "1614a27a-1b72-477f-bb76-df7c69a6369a") + (uuid "42ff5aa4-ad16-4b20-a8ed-df183937d717") ) (wire (pts - (xy 323.85 219.71) (xy 323.85 217.17) + (xy 317.5 364.49) (xy 311.15 364.49) ) (stroke (width 0) (type default) ) - (uuid "16cbaef1-f821-4dd7-9906-d1463619a086") + (uuid "44366d80-6cb9-4a19-9d7a-0e43643862b5") ) (wire (pts - (xy 281.94 228.6) (xy 323.85 228.6) + (xy 514.35 44.45) (xy 514.35 43.18) ) (stroke (width 0) (type default) ) - (uuid "195e5b7f-8e65-40ac-af9e-fdd34a58adbe") + (uuid "45be7a98-e550-4e5c-a9a1-da434044206a") ) (wire (pts - (xy 107.95 55.88) (xy 107.95 57.15) + (xy 519.43 44.45) (xy 519.43 58.42) ) (stroke (width 0) (type default) ) - (uuid "1c8c64a2-3bd7-454e-b89e-5f31d6ba3008") + (uuid "45e02073-bb94-4222-9f0b-ec7e3ef84191") ) (wire (pts - (xy 241.3 81.28) (xy 283.21 81.28) + (xy 524.51 116.84) (xy 524.51 118.11) ) (stroke (width 0) (type default) ) - (uuid "1e21e1ea-25a3-49e1-9d45-4d77e08f02ef") + (uuid "46b17d4b-0dd8-4a3f-87f8-b2fd300f293c") ) (wire (pts - (xy 478.79 152.4) (xy 472.44 152.4) + (xy 271.78 96.52) (xy 283.21 96.52) ) (stroke (width 0) (type default) ) - (uuid "1e304b86-9d22-4ccf-bdc8-55f529a79cc0") + (uuid "46fccf9f-e26f-41fe-84fb-e625a0a0da6a") ) (wire (pts - (xy 259.08 236.22) (xy 247.65 236.22) + (xy 48.26 177.8) (xy 48.26 173.99) ) (stroke (width 0) (type default) ) - (uuid "1e65fe7c-fd4e-4eef-bd01-078711df007f") + (uuid "47f99878-e94b-4b59-ad55-9668657f6a1b") ) (wire (pts - (xy 520.7 247.65) (xy 520.7 254) + (xy 344.17 63.5) (xy 356.87 63.5) ) (stroke (width 0) (type default) ) - (uuid "1f14a67c-fbaf-46a9-ba4f-a55ac0c1ca01") + (uuid "48a7fb1d-7921-4574-bdf3-b6d51859b499") ) (wire (pts - (xy 88.9 72.39) (xy 90.17 72.39) + (xy 40.64 176.53) (xy 50.8 176.53) ) (stroke (width 0) (type default) ) - (uuid "1f26fd2c-d5c0-4514-b025-710c76a2b36c") + (uuid "49848005-08b3-4f84-9d26-0f2ed110027c") ) (wire (pts - (xy 344.17 60.96) (xy 356.87 60.96) + (xy 506.73 116.84) (xy 514.35 116.84) ) (stroke (width 0) (type default) ) - (uuid "2053b6bb-8671-4965-9d25-fe1f78927aa4") + (uuid "49d5cfe9-1d06-478f-8226-2ee2a6af158c") ) (wire (pts - (xy 326.39 81.28) (xy 313.69 81.28) + (xy 223.52 110.49) (xy 220.98 110.49) ) (stroke (width 0) (type default) ) - (uuid "208e7cef-7032-4435-8df1-9641ad087b4d") + (uuid "4aad7fb9-44fd-4cd7-93c3-7ff371da72bf") ) (wire (pts - (xy 241.3 81.28) (xy 241.3 80.01) + (xy 519.43 116.84) (xy 519.43 130.81) ) (stroke (width 0) (type default) ) - (uuid "209ecdd1-ac90-4d87-bb53-0ae3f40adc4d") + (uuid "4fc3fac2-a89e-4a4e-bca2-2f276546a981") ) (wire (pts - (xy 38.1 106.68) (xy 38.1 107.95) + (xy 514.35 88.9) (xy 514.35 90.17) ) (stroke (width 0) (type default) ) - (uuid "21e772ce-efe0-465f-bda2-4310cdad4149") + (uuid "51fe8b44-e407-4c3d-8857-fe0ecf1980f1") ) (wire (pts - (xy 62.23 210.82) (xy 67.31 210.82) + (xy 471.17 71.12) (xy 481.33 71.12) ) (stroke (width 0) (type default) ) - (uuid "22a75948-2f13-4e9d-88de-a0928409d31e") + (uuid "52073a5f-6882-4460-a72c-143cb88e1295") ) (wire (pts - (xy 140.97 44.45) (xy 140.97 48.26) + (xy 120.65 288.29) (xy 118.11 288.29) ) (stroke (width 0) (type default) ) - (uuid "22bc5a41-acbb-4117-8223-f31bf2945a28") + (uuid "54a1a166-5117-46d4-bf53-bf1d388f8780") ) (wire (pts - (xy 298.45 60.96) (xy 298.45 76.2) + (xy 566.42 256.54) (xy 574.04 256.54) ) (stroke (width 0) (type default) ) - (uuid "22c723a0-ad9a-46d3-aaf0-3ae8e4f4f609") + (uuid "559ef29e-e1f0-4976-932d-e61ac2f51624") ) (wire (pts - (xy 78.74 205.74) (xy 78.74 200.66) + (xy 481.33 161.29) (xy 481.33 162.56) ) (stroke (width 0) (type default) ) - (uuid "24c62b4f-020a-491f-95bc-ff614e77e998") + (uuid "59a0e760-5394-4aeb-8ecf-667acd84c6b3") ) (wire (pts - (xy 271.78 109.22) (xy 283.21 109.22) + (xy 111.76 248.92) (xy 111.76 245.11) ) (stroke (width 0) (type default) ) - (uuid "255496d8-3b4d-435b-8b4a-f85709162ab7") + (uuid "5a2cbc6b-343c-4520-a0d8-ff7bacf38b29") ) (wire (pts - (xy 248.92 110.49) (xy 233.68 110.49) + (xy 46.99 50.8) (xy 48.26 50.8) ) (stroke (width 0) (type default) ) - (uuid "25a9f0a4-c916-49c6-ac01-da42b9cbe364") + (uuid "5abe34a9-0739-4b2e-a02a-08e5ef9f2145") ) (wire (pts - (xy 463.55 67.31) (xy 471.17 67.31) + (xy 147.32 171.45) (xy 137.16 171.45) ) (stroke (width 0) (type default) ) - (uuid "25dc0459-1911-414f-95d9-668456977f3c") + (uuid "5aff74e0-fba8-4b8c-9889-1d065cab093e") ) (wire (pts - (xy 514.35 86.36) (xy 519.43 86.36) + (xy 293.37 60.96) (xy 293.37 62.23) ) (stroke (width 0) (type default) ) - (uuid "2745acdc-37f8-4b10-a859-c7faae491b28") + (uuid "5b26f104-e536-4ab2-89cb-5776502006ef") ) (wire (pts - (xy 80.01 72.39) (xy 81.28 72.39) + (xy 308.61 200.66) (xy 308.61 199.39) ) (stroke (width 0) (type default) ) - (uuid "278f4854-2d6f-47ef-9970-362e29495e8c") + (uuid "5ccf8fc2-c1bc-44cd-a696-fc144d1eec93") ) (wire (pts - (xy 64.77 86.36) (xy 53.34 86.36) + (xy 292.1 363.22) (xy 284.48 363.22) ) (stroke (width 0) (type default) ) - (uuid "2925ddd4-f823-4aad-b319-a1f6e95a79f1") + (uuid "5da30df1-758a-4102-b890-37334ba332f8") ) (wire (pts - (xy 93.98 198.12) (xy 93.98 200.66) + (xy 115.57 48.26) (xy 127 48.26) ) (stroke (width 0) (type default) ) - (uuid "2a70510a-a9b8-4c32-9dd0-017df1a5c249") + (uuid "5e544ea6-1398-411c-9da7-f560297b0105") ) (wire (pts - (xy 95.25 48.26) (xy 95.25 49.53) + (xy 326.39 116.84) (xy 313.69 116.84) ) (stroke (width 0) (type default) ) - (uuid "2b608eff-3d01-418d-aa25-d4a3e1510550") + (uuid "5f58ac5e-277c-4781-bff7-31ad563b04c2") ) (wire (pts - (xy 308.61 199.39) (xy 336.55 199.39) + (xy 90.17 77.47) (xy 90.17 74.93) ) (stroke (width 0) (type default) ) - (uuid "2d23f476-2949-4dd1-82f4-84d6c3a1d5b4") + (uuid "602dc5b8-400a-4400-8c4f-ee9adf981899") ) (wire (pts - (xy 541.02 246.38) (xy 539.75 246.38) + (xy 234.95 236.22) (xy 247.65 236.22) ) (stroke (width 0) (type default) ) - (uuid "2de5f5a1-3ed6-4c45-af8b-e37b09380af0") + (uuid "62f5148f-1594-47b2-8040-7d905aa6f28b") ) (wire (pts - (xy 481.33 144.78) (xy 481.33 153.67) + (xy 77.47 48.26) (xy 77.47 68.58) ) (stroke (width 0) (type default) ) - (uuid "2f3eb0e9-4e3a-45d1-b243-2ffa1fe9b4c5") + (uuid "62f725c0-e813-4d03-96f6-39fcf81bfe06") ) (wire (pts - (xy 279.4 365.76) (xy 284.48 365.76) + (xy 544.83 252.73) (xy 544.83 261.62) ) (stroke (width 0) (type default) ) - (uuid "31847753-8ca5-445d-a68d-0c84ec57e20f") + (uuid "64c24a59-c360-4c26-aa4d-6172d0dc9325") ) (wire (pts - (xy 425.45 248.92) (xy 444.5 248.92) + (xy 519.43 44.45) (xy 524.51 44.45) ) (stroke (width 0) (type default) ) - (uuid "318dfc6a-7694-4dc9-be70-765cfd579f06") + (uuid "64f0e7e7-5152-4d7d-a859-4635c40f643d") ) (wire (pts - (xy 441.96 147.32) (xy 448.31 147.32) + (xy 256.54 267.97) (xy 262.89 267.97) ) (stroke (width 0) (type default) ) - (uuid "36141bc8-cf40-4402-a99e-eea73db94012") + (uuid "6527d14d-4737-4295-b64d-9a8622b09e1d") ) (wire (pts - (xy 271.78 106.68) (xy 283.21 106.68) + (xy 127 48.26) (xy 140.97 48.26) ) (stroke (width 0) (type default) ) - (uuid "37d4b2fb-ee6a-45fe-8e9b-be2bcb64b130") + (uuid "65d4370f-d8bf-4d5a-8c10-3c086eac99f2") ) (wire (pts - (xy 425.45 248.92) (xy 425.45 257.81) + (xy 336.55 199.39) (xy 336.55 217.17) ) (stroke (width 0) (type default) ) - (uuid "3817cdeb-06c7-4703-bc56-1e36856d5c51") + (uuid "66af0ea6-2faa-4912-8a29-265ee55554d7") ) (wire (pts - (xy 245.11 287.02) (xy 256.54 287.02) + (xy 271.78 101.6) (xy 283.21 101.6) ) (stroke (width 0) (type default) ) - (uuid "39ca6306-e3e4-455d-a8d5-613d95a990e9") + (uuid "673b604b-f7f9-45b5-93c3-e6c52429a7d0") ) (wire (pts - (xy 118.11 237.49) (xy 118.11 232.41) + (xy 53.34 68.58) (xy 68.58 68.58) ) (stroke (width 0) (type default) ) - (uuid "39d190b8-b269-4e1f-aa2d-667d52cf6a6d") + (uuid "677bcf61-d1c6-4df2-a1fb-f03140efa988") ) (wire (pts - (xy 271.78 99.06) (xy 283.21 99.06) + (xy 102.87 290.83) (xy 102.87 293.37) ) (stroke (width 0) (type default) ) - (uuid "3a662922-4ae2-4dbb-9ab2-100b6f6a4aa0") + (uuid "67a7af9d-a159-4dba-bf46-de0fc14e8e40") ) (wire (pts - (xy 241.3 91.44) (xy 241.3 90.17) + (xy 87.63 293.37) (xy 102.87 293.37) ) (stroke (width 0) (type default) ) - (uuid "3bd9b9cf-d56c-4ba6-9e7d-0010b67ae8c0") + (uuid "67a82b90-1b16-4d10-8c87-853c3cd4afaf") ) (wire (pts - (xy 326.39 88.9) (xy 313.69 88.9) + (xy 59.69 48.26) (xy 68.58 48.26) ) (stroke (width 0) (type default) ) - (uuid "3d502882-d6af-4309-a2a6-96cfee75f938") + (uuid "6a4c0da4-b965-436e-84ee-235bc5e5f209") ) (wire (pts - (xy 87.63 245.11) (xy 87.63 242.57) + (xy 271.78 127) (xy 283.21 127) ) (stroke (width 0) (type default) ) - (uuid "3e287fe8-8ade-43ff-8d45-61590ec238cd") + (uuid "6abb2668-346f-4a5b-97cb-efb9bbf00b9c") ) (wire (pts - (xy 530.86 248.92) (xy 530.86 240.03) + (xy 485.14 162.56) (xy 488.95 162.56) ) (stroke (width 0) (type default) ) - (uuid "3ea07d24-fee9-42f0-87f4-4594c550434f") + (uuid "6ae16c69-de50-4139-b6ea-db71b88d9e1e") ) (wire (pts - (xy 524.51 40.64) (xy 524.51 41.91) + (xy 132.08 170.18) (xy 132.08 173.99) ) (stroke (width 0) (type default) ) - (uuid "3f93c2ec-766b-46af-9810-9c41f95e5238") + (uuid "6e6460d5-e5ea-418b-9e65-a0ae2d5cb405") ) (wire (pts - (xy 297.18 210.82) (xy 308.61 210.82) + (xy 38.1 107.95) (xy 38.1 109.22) ) (stroke (width 0) (type default) ) - (uuid "42ff5aa4-ad16-4b20-a8ed-df183937d717") + (uuid "6fff6915-bbde-48f3-8dc6-a1d9f745122c") ) (wire (pts - (xy 271.78 365.76) (xy 265.43 365.76) + (xy 481.33 162.56) (xy 485.14 162.56) ) (stroke (width 0) (type default) ) - (uuid "44366d80-6cb9-4a19-9d7a-0e43643862b5") + (uuid "70e51092-edf2-4e88-962f-8bf91d9268f3") ) (wire (pts - (xy 514.35 55.88) (xy 514.35 54.61) + (xy 287.02 62.23) (xy 287.02 60.96) ) (stroke (width 0) (type default) ) - (uuid "45bb83ae-88df-47d4-b718-ba85f568db9f") + (uuid "710119a0-a01e-435c-9c32-fdc46c8e8efc") ) (wire (pts - (xy 514.35 40.64) (xy 514.35 39.37) + (xy 452.12 146.05) (xy 452.12 143.51) ) (stroke (width 0) (type default) ) - (uuid "45be7a98-e550-4e5c-a9a1-da434044206a") + (uuid "71165b6d-b3ee-4ae6-8b03-69d31559ce15") ) (wire (pts - (xy 519.43 40.64) (xy 519.43 54.61) + (xy 207.01 243.84) (xy 208.28 243.84) ) (stroke (width 0) (type default) ) - (uuid "45e02073-bb94-4222-9f0b-ec7e3ef84191") + (uuid "7350afc1-c104-41e6-899d-7d10e4304954") ) (wire (pts - (xy 448.31 149.86) (xy 448.31 152.4) + (xy 274.32 365.76) (xy 274.32 367.03) ) (stroke (width 0) (type default) ) - (uuid "465e6f80-aee7-4253-a7a3-575095009a71") + (uuid "7362d118-36ea-4e4b-bbfe-16cb05253bcc") ) (wire (pts - (xy 271.78 96.52) (xy 283.21 96.52) + (xy 452.12 78.74) (xy 455.93 78.74) ) (stroke (width 0) (type default) ) - (uuid "46fccf9f-e26f-41fe-84fb-e625a0a0da6a") + (uuid "75c417d7-d51e-48c5-925d-bd104f670358") ) (wire (pts - (xy 441.96 149.86) (xy 448.31 149.86) + (xy 452.12 76.2) (xy 444.5 76.2) ) (stroke (width 0) (type default) ) - (uuid "4742d1e7-2cc8-4d11-9122-419d69f0b2c9") + (uuid "76f2f3bf-220b-477c-8f78-6e0e2283a855") ) (wire (pts - (xy 441.96 255.27) (xy 441.96 251.46) + (xy 68.58 182.88) (xy 68.58 176.53) ) (stroke (width 0) (type default) ) - (uuid "47f99878-e94b-4b59-ad55-9668657f6a1b") + (uuid "76f4eee8-0f88-4152-bf91-03d439cb4e09") ) (wire (pts - (xy 245.11 265.43) (xy 256.54 265.43) + (xy 308.61 238.76) (xy 308.61 241.3) ) (stroke (width 0) (type default) ) - (uuid "48493eb6-5f3a-4f38-bbff-e95d5cd91879") + (uuid "773eb0ec-29bb-4770-a21a-de5fab052bfd") ) (wire (pts - (xy 344.17 63.5) (xy 356.87 63.5) + (xy 218.44 393.7) (xy 218.44 392.43) ) (stroke (width 0) (type default) ) - (uuid "48a7fb1d-7921-4574-bdf3-b6d51859b499") + (uuid "790a08a9-19f0-411c-9756-36199e461e1a") ) (wire (pts - (xy 434.34 254) (xy 444.5 254) + (xy 60.96 300.99) (xy 69.85 300.99) ) (stroke (width 0) (type default) ) - (uuid "49848005-08b3-4f84-9d26-0f2ed110027c") + (uuid "7b2cd5c0-5ca0-4d7c-a646-500e18595803") ) (wire (pts - (xy 223.52 110.49) (xy 220.98 110.49) + (xy 499.11 231.14) (xy 499.11 229.87) ) (stroke (width 0) (type default) ) - (uuid "4aad7fb9-44fd-4cd7-93c3-7ff371da72bf") + (uuid "7b54f360-e999-49d1-8d07-878b48d8ba09") ) (wire (pts - (xy 326.39 96.52) (xy 313.69 96.52) + (xy 127 48.26) (xy 127 50.8) ) (stroke (width 0) (type default) ) - (uuid "4aee3a3a-4ec7-4629-b662-822373784a51") + (uuid "7c3bd450-0f8c-4a1c-81d9-22093f96053f") ) (wire (pts - (xy 256.54 264.16) (xy 256.54 265.43) + (xy 336.55 199.39) (xy 339.09 199.39) ) (stroke (width 0) (type default) ) - (uuid "4bc32582-1c7d-4a6f-9e39-01fc07a80611") + (uuid "7d7c0f46-83e2-48a1-9bbd-8ca738ef8164") ) (wire (pts - (xy 514.35 85.09) (xy 514.35 86.36) + (xy 31.75 168.91) (xy 31.75 171.45) ) (stroke (width 0) (type default) ) - (uuid "51fe8b44-e407-4c3d-8857-fe0ecf1980f1") + (uuid "7d9ac675-9b8f-4b18-890f-da6c28740556") ) (wire (pts - (xy 471.17 67.31) (xy 481.33 67.31) + (xy 49.53 261.62) (xy 54.61 261.62) ) (stroke (width 0) (type default) ) - (uuid "52073a5f-6882-4460-a72c-143cb88e1295") + (uuid "7efa403a-85fb-49d0-8aa9-5be3a3bd2720") ) (wire (pts - (xy 270.51 270.51) (xy 270.51 281.94) + (xy 452.12 148.59) (xy 452.12 151.13) ) (stroke (width 0) (type default) ) - (uuid "52ff73e7-367d-49e3-98ed-2b85078dd8ce") + (uuid "81f88c47-3e4e-459d-8823-1892aca781f8") ) (wire (pts - (xy 120.65 237.49) (xy 118.11 237.49) + (xy 463.55 287.02) (xy 473.71 287.02) ) (stroke (width 0) (type default) ) - (uuid "54a1a166-5117-46d4-bf53-bf1d388f8780") + (uuid "8285b80d-5876-4e03-b708-995a24548266") ) (wire (pts - (xy 519.43 113.03) (xy 519.43 132.08) + (xy 118.11 173.99) (xy 132.08 173.99) ) (stroke (width 0) (type default) ) - (uuid "59f53ac6-d4bf-4dfe-b80e-bc17b008a3a2") + (uuid "831d1abc-3a6b-45dc-a3af-5ebc51fd3542") ) (wire (pts - (xy 111.76 198.12) (xy 111.76 194.31) + (xy 452.12 73.66) (xy 452.12 71.12) ) (stroke (width 0) (type default) ) - (uuid "5a2cbc6b-343c-4520-a0d8-ff7bacf38b29") + (uuid "83bef126-c749-44e3-9f85-eb5676cdf926") ) (wire (pts - (xy 46.99 50.8) (xy 48.26 50.8) + (xy 349.25 53.34) (xy 356.87 53.34) ) (stroke (width 0) (type default) ) - (uuid "5abe34a9-0739-4b2e-a02a-08e5ef9f2145") + (uuid "83f58857-a28f-431e-b7ae-8213321c7df5") ) (wire (pts - (xy 478.79 147.32) (xy 478.79 152.4) + (xy 313.69 124.46) (xy 328.93 124.46) ) (stroke (width 0) (type default) ) - (uuid "5ad1356b-d548-4d6e-b729-917ccc1fba54") + (uuid "858e26bd-7a5b-4bc0-9483-ed52989e307e") ) (wire (pts - (xy 541.02 248.92) (xy 530.86 248.92) + (xy 491.49 226.06) (xy 491.49 229.87) ) (stroke (width 0) (type default) ) - (uuid "5aff74e0-fba8-4b8c-9889-1d065cab093e") + (uuid "872167ec-c7d3-4ea4-baae-bef0acf49f97") ) (wire (pts - (xy 293.37 60.96) (xy 293.37 62.23) + (xy 53.34 76.2) (xy 80.01 76.2) ) (stroke (width 0) (type default) ) - (uuid "5b26f104-e536-4ab2-89cb-5776502006ef") + (uuid "87c1e3c8-6a83-463e-b04e-4347340d621e") ) (wire (pts - (xy 524.51 113.03) (xy 524.51 115.57) + (xy 488.95 90.17) (xy 488.95 88.9) ) (stroke (width 0) (type default) ) - (uuid "5bbbe83d-67ec-426e-8cd8-9b9b7880966c") + (uuid "88a4966a-3c83-4c26-8170-a1938498a6e1") ) (wire (pts - (xy 308.61 200.66) (xy 308.61 199.39) + (xy 514.35 44.45) (xy 514.35 58.42) ) (stroke (width 0) (type default) ) - (uuid "5ccf8fc2-c1bc-44cd-a696-fc144d1eec93") + (uuid "890944e7-7266-42f0-8f7b-3e98c6b35d10") ) (wire (pts - (xy 344.17 363.22) (xy 336.55 363.22) + (xy 67.31 261.62) (xy 71.12 261.62) ) (stroke (width 0) (type default) ) - (uuid "5da30df1-758a-4102-b890-37334ba332f8") + (uuid "8b313351-f551-45d6-9575-d2a868299109") ) (wire (pts - (xy 115.57 48.26) (xy 127 48.26) + (xy 509.27 269.24) (xy 532.13 269.24) ) (stroke (width 0) (type default) ) - (uuid "5e544ea6-1398-411c-9da7-f560297b0105") + (uuid "8b7550ba-08fc-4a27-9f40-df57e8d7aeb1") ) (wire (pts - (xy 326.39 116.84) (xy 313.69 116.84) + (xy 76.2 68.58) (xy 77.47 68.58) ) (stroke (width 0) (type default) ) - (uuid "5f58ac5e-277c-4781-bff7-31ad563b04c2") + (uuid "8d8ced31-2a98-46db-a0bc-dc84c61bf2f4") ) (wire (pts - (xy 90.17 77.47) (xy 90.17 74.93) + (xy 509.27 264.16) (xy 532.13 264.16) ) (stroke (width 0) (type default) ) - (uuid "602dc5b8-400a-4400-8c4f-ee9adf981899") + (uuid "8dacd0f5-1353-46fc-99d1-54fb49aadddb") ) (wire (pts - (xy 539.75 62.23) (xy 529.59 62.23) + (xy 452.12 151.13) (xy 455.93 151.13) ) (stroke (width 0) (type default) ) - (uuid "61c295ae-4d1e-4a3a-9812-e63928df35f7") + (uuid "8dc9d3b4-2b18-4887-9af6-4677952e0362") ) (wire (pts - (xy 481.33 144.78) (xy 504.19 144.78) + (xy 496.57 76.2) (xy 504.19 76.2) ) (stroke (width 0) (type default) ) - (uuid "62121a99-0b2f-4092-97e2-774ee1ab9ded") + (uuid "8f83ab79-b61c-4ba8-aa46-a9100982d751") ) (wire (pts - (xy 234.95 236.22) (xy 247.65 236.22) + (xy 452.12 71.12) (xy 455.93 71.12) ) (stroke (width 0) (type default) ) - (uuid "62f5148f-1594-47b2-8040-7d905aa6f28b") + (uuid "92932a72-410b-4d23-935e-d3d56de5d3a8") ) (wire (pts - (xy 77.47 48.26) (xy 77.47 68.58) + (xy 271.78 91.44) (xy 283.21 91.44) ) (stroke (width 0) (type default) ) - (uuid "62f725c0-e813-4d03-96f6-39fcf81bfe06") + (uuid "92a036d1-e3b3-4d9b-99b6-b11fedfe1a38") ) (wire (pts - (xy 519.43 40.64) (xy 524.51 40.64) + (xy 463.55 292.1) (xy 473.71 292.1) ) (stroke (width 0) (type default) ) - (uuid "64f0e7e7-5152-4d7d-a859-4635c40f643d") + (uuid "9315ba9d-944d-4bac-b1fa-8970727cd3a8") ) (wire (pts - (xy 256.54 287.02) (xy 262.89 287.02) + (xy 339.09 50.8) (xy 356.87 50.8) ) (stroke (width 0) (type default) ) - (uuid "6527d14d-4737-4295-b64d-9a8622b09e1d") + (uuid "9485b048-d47e-4fec-aa7e-888baf4de6f2") ) (wire (pts - (xy 127 48.26) (xy 140.97 48.26) + (xy 488.95 162.56) (xy 488.95 161.29) ) (stroke (width 0) (type default) ) - (uuid "65d4370f-d8bf-4d5a-8c10-3c086eac99f2") + (uuid "9528ea90-3645-4baa-a250-6e894d2b2cfc") ) (wire (pts - (xy 271.78 114.3) (xy 283.21 114.3) + (xy 463.55 143.51) (xy 471.17 143.51) ) (stroke (width 0) (type default) ) - (uuid "65e27e33-2351-4e58-8bae-feee812f2002") + (uuid "95d6d0f3-55c5-46ae-a51c-4272318038e9") ) (wire (pts - (xy 336.55 199.39) (xy 336.55 217.17) + (xy 524.51 116.84) (xy 532.13 116.84) ) (stroke (width 0) (type default) ) - (uuid "66af0ea6-2faa-4912-8a29-265ee55554d7") + (uuid "9613e7db-0e20-4a55-b7f8-95afb81d9ea1") ) (wire (pts - (xy 241.3 82.55) (xy 241.3 81.28) + (xy 46.99 48.26) (xy 52.07 48.26) ) (stroke (width 0) (type default) ) - (uuid "66c9d1b1-05e9-49a5-ba04-b6c42a3ee45b") + (uuid "990cea5a-8494-43ff-bfa8-ea1791fae361") ) (wire (pts - (xy 271.78 101.6) (xy 283.21 101.6) + (xy 287.02 71.12) (xy 293.37 71.12) ) (stroke (width 0) (type default) ) - (uuid "673b604b-f7f9-45b5-93c3-e6c52429a7d0") + (uuid "99a67402-7474-4232-b8bf-301887769713") ) (wire (pts - (xy 53.34 68.58) (xy 68.58 68.58) + (xy 298.45 58.42) (xy 298.45 60.96) ) (stroke (width 0) (type default) ) - (uuid "677bcf61-d1c6-4df2-a1fb-f03140efa988") + (uuid "99feb39c-445d-4c61-a3c7-8b36c0c043dd") ) (wire (pts - (xy 102.87 240.03) (xy 102.87 242.57) + (xy 481.33 71.12) (xy 481.33 81.28) ) (stroke (width 0) (type default) ) - (uuid "67a7af9d-a159-4dba-bf46-de0fc14e8e40") + (uuid "9d064736-ca17-45c9-b85c-3bafaf39edc1") ) (wire (pts - (xy 87.63 242.57) (xy 102.87 242.57) + (xy 539.75 76.2) (xy 529.59 76.2) ) (stroke (width 0) (type default) ) - (uuid "67a82b90-1b16-4d10-8c87-853c3cd4afaf") + (uuid "9d245077-9442-4e9d-b2bf-3d3145c5252b") ) (wire (pts - (xy 59.69 48.26) (xy 68.58 48.26) + (xy 270.51 241.3) (xy 270.51 262.89) ) (stroke (width 0) (type default) ) - (uuid "6a4c0da4-b965-436e-84ee-235bc5e5f209") + (uuid "9d398dd7-7604-4574-841d-d7c2def55eeb") ) (wire (pts - (xy 271.78 127) (xy 283.21 127) + (xy 330.2 364.49) (xy 339.09 364.49) ) (stroke (width 0) (type default) ) - (uuid "6abb2668-346f-4a5b-97cb-efb9bbf00b9c") + (uuid "9d69c8f1-6f7d-4190-bac9-1669673ac020") ) (wire (pts - (xy 519.43 109.22) (xy 519.43 113.03) + (xy 485.14 162.56) (xy 485.14 163.83) ) (stroke (width 0) (type default) ) - (uuid "6c9ba276-03a0-46d5-98a6-0d85187110c0") + (uuid "9f160d8d-e56b-48c7-8dd7-30e39388713a") ) (wire (pts - (xy 525.78 247.65) (xy 525.78 251.46) + (xy 488.95 146.05) (xy 488.95 153.67) ) (stroke (width 0) (type default) ) - (uuid "6e6460d5-e5ea-418b-9e65-a0ae2d5cb405") + (uuid "a0fb388c-f2e2-410e-a024-48c39f3c5b22") ) (wire (pts - (xy 529.59 142.24) (xy 541.02 142.24) + (xy 519.43 90.17) (xy 519.43 88.9) ) (stroke (width 0) (type default) ) - (uuid "6e9520eb-f840-4194-83a7-81a47770f8a6") + (uuid "a21cf901-e0b3-4ff6-9cd7-f687dfbb52e5") ) (wire (pts - (xy 38.1 107.95) (xy 38.1 109.22) + (xy 190.5 243.84) (xy 199.39 243.84) ) (stroke (width 0) (type default) ) - (uuid "6fff6915-bbde-48f3-8dc6-a1d9f745122c") + (uuid "a23cefd4-cd6f-44d6-a75e-35d3c5c4f54e") ) (wire (pts - (xy 519.43 163.83) (xy 514.35 163.83) + (xy 485.14 90.17) (xy 485.14 91.44) ) (stroke (width 0) (type default) ) - (uuid "70abe247-3a25-4027-becf-27944eb2e3e9") + (uuid "a290d311-1095-4b52-bb9e-378a1227cf17") ) (wire (pts - (xy 287.02 62.23) (xy 287.02 60.96) + (xy 274.32 365.76) (xy 292.1 365.76) ) (stroke (width 0) (type default) ) - (uuid "710119a0-a01e-435c-9c32-fdc46c8e8efc") + (uuid "a2968b95-c685-4ee1-bdaa-d11738e3c460") ) (wire (pts - (xy 207.01 243.84) (xy 208.28 243.84) + (xy 509.27 271.78) (xy 532.13 271.78) ) (stroke (width 0) (type default) ) - (uuid "7350afc1-c104-41e6-899d-7d10e4304954") + (uuid "a3706cb2-9468-4ea2-89a3-325a420eb840") ) (wire (pts - (xy 326.39 365.76) (xy 326.39 367.03) + (xy 488.95 73.66) (xy 488.95 81.28) ) (stroke (width 0) (type default) ) - (uuid "7362d118-36ea-4e4b-bbfe-16cb05253bcc") + (uuid "a3990d52-9ea1-4daf-8d5b-9a3b0faa427f") ) (wire (pts - (xy 452.12 74.93) (xy 455.93 74.93) + (xy 519.43 44.45) (xy 519.43 43.18) ) (stroke (width 0) (type default) ) - (uuid "75c417d7-d51e-48c5-925d-bd104f670358") + (uuid "a437aec5-69d5-46a8-8ceb-75b8483d72f7") ) (wire (pts - (xy 452.12 72.39) (xy 444.5 72.39) + (xy 336.55 226.06) (xy 339.09 226.06) ) (stroke (width 0) (type default) ) - (uuid "76f2f3bf-220b-477c-8f78-6e0e2283a855") + (uuid "a76326eb-f897-44fc-90d0-491e2597e9b7") ) (wire (pts - (xy 462.28 260.35) (xy 462.28 254) + (xy 308.61 236.22) (xy 308.61 238.76) ) (stroke (width 0) (type default) ) - (uuid "76f4eee8-0f88-4152-bf91-03d439cb4e09") + (uuid "ab18c363-b6e8-416f-926a-d331eaaaa4fd") ) (wire (pts - (xy 60.96 250.19) (xy 69.85 250.19) + (xy 64.77 88.9) (xy 53.34 88.9) ) (stroke (width 0) (type default) ) - (uuid "7b2cd5c0-5ca0-4d7c-a646-500e18595803") + (uuid "abd4b933-da94-4c39-85d6-8b9d08ba16b8") ) (wire (pts - (xy 127 48.26) (xy 127 50.8) + (xy 313.69 106.68) (xy 326.39 106.68) ) (stroke (width 0) (type default) ) - (uuid "7c3bd450-0f8c-4a1c-81d9-22093f96053f") + (uuid "ac8c7ccc-5022-467c-ae83-9d827e4fb5b1") ) (wire (pts - (xy 506.73 115.57) (xy 506.73 113.03) + (xy 256.54 266.7) (xy 256.54 267.97) ) (stroke (width 0) (type default) ) - (uuid "7c6c530a-3ddd-4332-abbf-b29c92a1ca2f") + (uuid "acba24af-f0cf-446b-b9a1-0f3f62340e0f") ) (wire (pts - (xy 336.55 199.39) (xy 339.09 199.39) + (xy 539.75 73.66) (xy 529.59 73.66) ) (stroke (width 0) (type default) ) - (uuid "7d7c0f46-83e2-48a1-9bbd-8ca738ef8164") + (uuid "ad183890-f43a-49fa-a3c6-e5bca614c7c7") ) (wire (pts - (xy 425.45 246.38) (xy 425.45 248.92) + (xy 64.77 83.82) (xy 53.34 83.82) ) (stroke (width 0) (type default) ) - (uuid "7d9ac675-9b8f-4b18-890f-da6c28740556") + (uuid "ad3c6830-1e30-46ee-bf79-401f6e12e7b7") ) (wire (pts - (xy 448.31 144.78) (xy 454.66 144.78) + (xy 326.39 93.98) (xy 313.69 93.98) ) (stroke (width 0) (type default) ) - (uuid "7ddb6d2b-9afb-4f66-949f-d2f6a733b4d9") + (uuid "af3da747-74e9-41b2-b0b7-06a3df253cb7") ) (wire (pts - (xy 49.53 210.82) (xy 54.61 210.82) + (xy 344.17 58.42) (xy 356.87 58.42) ) (stroke (width 0) (type default) ) - (uuid "7efa403a-85fb-49d0-8aa9-5be3a3bd2720") + (uuid "afe64c89-39ca-4f27-887a-f03f0b70bbe0") ) (wire (pts - (xy 514.35 113.03) (xy 514.35 132.08) + (xy 444.5 73.66) (xy 452.12 73.66) ) (stroke (width 0) (type default) ) - (uuid "82c700a7-6bad-4f9c-91c0-10c24e573090") + (uuid "b0705a8b-bb8a-4cdb-bb39-9d7e4fa2ea3d") ) (wire (pts - (xy 511.81 251.46) (xy 525.78 251.46) + (xy 478.79 73.66) (xy 488.95 73.66) ) (stroke (width 0) (type default) ) - (uuid "831d1abc-3a6b-45dc-a3af-5ebc51fd3542") + (uuid "b0825e96-da60-4010-bc97-27d584e98797") ) (wire (pts - (xy 452.12 69.85) (xy 452.12 67.31) + (xy 539.75 146.05) (xy 529.59 146.05) ) (stroke (width 0) (type default) ) - (uuid "83bef126-c749-44e3-9f85-eb5676cdf926") + (uuid "b2e4c36a-a138-4677-989b-75d14b7e6b8a") ) (wire (pts - (xy 349.25 53.34) (xy 356.87 53.34) + (xy 478.79 151.13) (xy 478.79 146.05) ) (stroke (width 0) (type default) ) - (uuid "83f58857-a28f-431e-b7ae-8213321c7df5") + (uuid "b317e15d-1513-4fce-87db-59e42a15eb17") ) (wire (pts - (xy 270.51 241.3) (xy 270.51 260.35) + (xy 488.95 73.66) (xy 504.19 73.66) ) (stroke (width 0) (type default) ) - (uuid "8505ed63-2177-498c-9d06-c810e9fcb77c") + (uuid "b3781a46-912d-4645-a38e-dc4cd280f859") ) (wire (pts - (xy 53.34 76.2) (xy 80.01 76.2) + (xy 99.06 111.76) (xy 99.06 109.22) ) (stroke (width 0) (type default) ) - (uuid "87c1e3c8-6a83-463e-b04e-4347340d621e") + (uuid "b43c3923-b311-408d-93ce-11650dabbaa5") ) (wire (pts - (xy 488.95 86.36) (xy 488.95 85.09) + (xy 336.55 196.85) (xy 336.55 193.04) ) (stroke (width 0) (type default) ) - (uuid "88a4966a-3c83-4c26-8170-a1938498a6e1") + (uuid "b5689a0a-83ad-4653-b81a-569188276d39") ) (wire (pts - (xy 462.28 152.4) (xy 472.44 152.4) + (xy 271.78 86.36) (xy 283.21 86.36) ) (stroke (width 0) (type default) ) - (uuid "89166850-6537-47f0-b0dc-4edb3eb492e3") + (uuid "b5c108c0-1a32-429f-b0f8-2652b54139c6") ) (wire (pts - (xy 487.68 147.32) (xy 487.68 153.67) + (xy 509.27 259.08) (xy 532.13 259.08) ) (stroke (width 0) (type default) ) - (uuid "8a8e05eb-feb0-42ec-9fd0-94d8abfa91a1") + (uuid "b77424a3-c3db-4813-9dd7-8718d7fa9fa0") ) (wire (pts - (xy 67.31 210.82) (xy 71.12 210.82) + (xy 544.83 261.62) (xy 560.07 261.62) ) (stroke (width 0) (type default) ) - (uuid "8b313351-f551-45d6-9575-d2a868299109") + (uuid "ba537f83-5951-446e-afa4-683330f73834") ) (wire (pts - (xy 233.68 81.28) (xy 241.3 81.28) + (xy 118.11 176.53) (xy 127 176.53) ) (stroke (width 0) (type default) ) - (uuid "8ba2d7f1-d3f0-4cea-9db7-94889e86cd9d") + (uuid "ba595be2-8a3e-48dc-8e47-46286d4ecc13") ) (wire (pts - (xy 76.2 68.58) (xy 77.47 68.58) + (xy 509.27 274.32) (xy 532.13 274.32) ) (stroke (width 0) (type default) ) - (uuid "8d8ced31-2a98-46db-a0bc-dc84c61bf2f4") + (uuid "ba5bdc6b-4d12-4673-a775-c2781703a54d") ) (wire (pts - (xy 496.57 72.39) (xy 504.19 72.39) + (xy 326.39 86.36) (xy 313.69 86.36) ) (stroke (width 0) (type default) ) - (uuid "8f83ab79-b61c-4ba8-aa46-a9100982d751") + (uuid "bb8101aa-84c8-45b1-a00b-ae82d2af4ff3") ) (wire (pts - (xy 478.79 147.32) (xy 487.68 147.32) + (xy 542.29 327.66) (xy 560.07 327.66) ) (stroke (width 0) (type default) ) - (uuid "8fb826b7-291f-4e3e-9b5c-56875fba38a9") + (uuid "bbcf6087-f6ca-4823-b023-11ede02162b5") ) (wire (pts - (xy 496.57 149.86) (xy 504.19 149.86) + (xy 509.27 276.86) (xy 532.13 276.86) ) (stroke (width 0) (type default) ) - (uuid "91377625-dcfe-4ea6-96cf-9ee23f265bdc") + (uuid "be0813d6-2c47-4383-82d4-80a01ab7c0e9") ) (wire (pts - (xy 452.12 67.31) (xy 455.93 67.31) + (xy 506.73 44.45) (xy 514.35 44.45) ) (stroke (width 0) (type default) ) - (uuid "92932a72-410b-4d23-935e-d3d56de5d3a8") + (uuid "bf7663c2-08ee-4835-aced-87377e6f2eca") ) (wire (pts - (xy 271.78 91.44) (xy 283.21 91.44) + (xy 53.34 73.66) (xy 80.01 73.66) ) (stroke (width 0) (type default) ) - (uuid "92a036d1-e3b3-4d9b-99b6-b11fedfe1a38") + (uuid "c0d3b5ca-aac2-4bcf-8264-d8d964ca377b") ) (wire (pts - (xy 339.09 50.8) (xy 356.87 50.8) + (xy 323.85 228.6) (xy 339.09 228.6) ) (stroke (width 0) (type default) ) - (uuid "9485b048-d47e-4fec-aa7e-888baf4de6f2") + (uuid "c253accb-5db5-4055-8611-ea520b22e1c4") ) (wire (pts - (xy 223.52 81.28) (xy 220.98 81.28) + (xy 241.3 82.55) (xy 241.3 81.28) ) (stroke (width 0) (type default) ) - (uuid "9834dd9a-33be-4682-8500-f6c339a43fd6") + (uuid "c4472fea-01ae-43fa-8cdb-f9aa7aca83de") ) (wire (pts - (xy 46.99 48.26) (xy 52.07 48.26) + (xy 478.79 78.74) (xy 478.79 73.66) ) (stroke (width 0) (type default) ) - (uuid "990cea5a-8494-43ff-bfa8-ea1791fae361") + (uuid "c4802249-feb9-468b-b590-e6e000a2f30b") ) (wire (pts - (xy 524.51 113.03) (xy 519.43 113.03) + (xy 287.02 69.85) (xy 287.02 71.12) ) (stroke (width 0) (type default) ) - (uuid "994f19db-2635-47d0-95f4-a7ae4a127216") + (uuid "c59e342f-0889-45ce-8359-dac28a3ac25b") ) (wire (pts - (xy 287.02 71.12) (xy 293.37 71.12) + (xy 542.29 320.04) (xy 560.07 320.04) ) (stroke (width 0) (type default) ) - (uuid "99a67402-7474-4232-b8bf-301887769713") + (uuid "c676b7a2-7582-4b34-936d-9b1dea2c2e50") ) (wire (pts - (xy 298.45 58.42) (xy 298.45 60.96) + (xy 539.75 148.59) (xy 529.59 148.59) ) (stroke (width 0) (type default) ) - (uuid "99feb39c-445d-4c61-a3c7-8b36c0c043dd") + (uuid "c6ccb929-7e62-4e9f-8ad7-a25d8475b3b5") ) (wire (pts - (xy 472.44 144.78) (xy 481.33 144.78) + (xy 514.35 162.56) (xy 514.35 165.1) ) (stroke (width 0) (type default) ) - (uuid "9b0b4f1f-92b2-4be1-bdcc-d4455cafcb34") + (uuid "c99385ac-be01-4af1-9d64-551206809d43") ) (wire (pts - (xy 481.33 67.31) (xy 481.33 77.47) + (xy 67.31 261.62) (xy 67.31 264.16) ) (stroke (width 0) (type default) ) - (uuid "9d064736-ca17-45c9-b85c-3bafaf39edc1") + (uuid "c9f50a8c-70e9-4513-88d7-005f451c977d") ) (wire (pts - (xy 539.75 72.39) (xy 529.59 72.39) + (xy 293.37 71.12) (xy 293.37 69.85) ) (stroke (width 0) (type default) ) - (uuid "9d245077-9442-4e9d-b2bf-3d3145c5252b") + (uuid "cae8362b-f145-431b-ba6f-8239851a4f92") ) (wire (pts - (xy 284.48 365.76) (xy 293.37 365.76) + (xy 78.74 111.76) (xy 78.74 109.22) ) (stroke (width 0) (type default) ) - (uuid "9d69c8f1-6f7d-4190-bac9-1669673ac020") + (uuid "cb7de995-06d9-4545-9331-186e328cc976") ) (wire (pts - (xy 519.43 86.36) (xy 519.43 85.09) + (xy 514.35 116.84) (xy 514.35 115.57) ) (stroke (width 0) (type default) ) - (uuid "a21cf901-e0b3-4ff6-9cd7-f687dfbb52e5") + (uuid "cd823293-3e95-410a-9775-592c1c22618b") ) (wire (pts - (xy 190.5 243.84) (xy 199.39 243.84) + (xy 76.2 171.45) (xy 76.2 168.91) ) (stroke (width 0) (type default) ) - (uuid "a23cefd4-cd6f-44d6-a75e-35d3c5c4f54e") + (uuid "ce26b1af-aeab-4a3a-a3aa-e0a42327b55a") ) (wire (pts - (xy 485.14 86.36) (xy 485.14 87.63) + (xy 68.58 176.53) (xy 66.04 176.53) ) (stroke (width 0) (type default) ) - (uuid "a290d311-1095-4b52-bb9e-378a1227cf17") + (uuid "d124f972-da02-4c7a-926a-b656d7c5d5ea") ) (wire (pts - (xy 326.39 365.76) (xy 344.17 365.76) + (xy 539.75 81.28) (xy 529.59 81.28) ) (stroke (width 0) (type default) ) - (uuid "a2968b95-c685-4ee1-bdaa-d11738e3c460") + (uuid "d3615660-6fb5-4299-bdd1-ac1eda24a01b") ) (wire (pts - (xy 488.95 69.85) (xy 488.95 77.47) + (xy 88.9 77.47) (xy 90.17 77.47) ) (stroke (width 0) (type default) ) - (uuid "a3990d52-9ea1-4daf-8d5b-9a3b0faa427f") + (uuid "d3a54af7-3555-4b18-86fa-bc05b9bd35df") ) (wire (pts - (xy 519.43 40.64) (xy 519.43 39.37) + (xy 509.27 261.62) (xy 534.67 261.62) ) (stroke (width 0) (type default) ) - (uuid "a437aec5-69d5-46a8-8ceb-75b8483d72f7") + (uuid "d3afd20e-fac4-403d-acca-6c55741881cb") ) (wire (pts - (xy 336.55 226.06) (xy 339.09 226.06) + (xy 139.7 111.76) (xy 139.7 109.22) ) (stroke (width 0) (type default) ) - (uuid "a76326eb-f897-44fc-90d0-491e2597e9b7") + (uuid "d3e2f8d4-6d25-43b6-9381-592c5a21f8b4") ) (wire (pts - (xy 532.13 115.57) (xy 532.13 113.03) + (xy 463.55 284.48) (xy 473.71 284.48) ) (stroke (width 0) (type default) ) - (uuid "a8f05e65-d222-46d8-91e3-29d52338224b") + (uuid "d41e572d-caa2-413e-be78-ae001f3314db") ) (wire (pts - (xy 64.77 88.9) (xy 53.34 88.9) + (xy 80.01 73.66) (xy 80.01 72.39) ) (stroke (width 0) (type default) ) - (uuid "abd4b933-da94-4c39-85d6-8b9d08ba16b8") + (uuid "d7b1aa4a-87e6-4522-af44-40c7f5438e3e") ) (wire (pts - (xy 448.31 147.32) (xy 448.31 144.78) + (xy 293.37 60.96) (xy 298.45 60.96) ) (stroke (width 0) (type default) ) - (uuid "ac2a1df0-074b-41f0-bb5c-453bd487f043") + (uuid "d7cbc3ba-83d0-4278-b1ac-1698fd80e9e9") ) (wire (pts - (xy 313.69 106.68) (xy 316.23 106.68) + (xy 336.55 196.85) (xy 339.09 196.85) ) (stroke (width 0) (type default) ) - (uuid "ac8c7ccc-5022-467c-ae83-9d827e4fb5b1") + (uuid "da264527-9b93-4cf5-a3d4-be01a6f14dcc") ) (wire (pts - (xy 256.54 285.75) (xy 256.54 287.02) + (xy 30.48 107.95) (xy 38.1 107.95) ) (stroke (width 0) (type default) ) - (uuid "acba24af-f0cf-446b-b9a1-0f3f62340e0f") + (uuid "da9d91ed-8ecc-452f-b319-f70589a73208") ) (wire (pts - (xy 539.75 69.85) (xy 529.59 69.85) + (xy 116.84 248.92) (xy 111.76 248.92) ) (stroke (width 0) (type default) ) - (uuid "ad183890-f43a-49fa-a3c6-e5bca614c7c7") + (uuid "dacd326b-3935-4e68-8389-29b887335524") ) (wire (pts - (xy 64.77 83.82) (xy 53.34 83.82) + (xy 119.38 111.76) (xy 119.38 109.22) ) (stroke (width 0) (type default) ) - (uuid "ad3c6830-1e30-46ee-bf79-401f6e12e7b7") + (uuid "dace0c36-a8e8-4d51-aefa-4a718ee3dd04") ) (wire (pts - (xy 326.39 93.98) (xy 313.69 93.98) + (xy 532.13 118.11) (xy 532.13 116.84) ) (stroke (width 0) (type default) ) - (uuid "af3da747-74e9-41b2-b0b7-06a3df253cb7") + (uuid "db341ea8-95cf-409c-9403-b8a128f8f4bb") ) (wire (pts - (xy 344.17 58.42) (xy 356.87 58.42) + (xy 326.39 91.44) (xy 313.69 91.44) ) (stroke (width 0) (type default) ) - (uuid "afe64c89-39ca-4f27-887a-f03f0b70bbe0") + (uuid "db560a9b-4bf7-4144-9a17-7584c34853d7") ) (wire (pts - (xy 444.5 69.85) (xy 452.12 69.85) + (xy 199.39 393.7) (xy 204.47 393.7) ) (stroke (width 0) (type default) ) - (uuid "b0705a8b-bb8a-4cdb-bb39-9d7e4fa2ea3d") + (uuid "dc762e4c-5ed7-47dc-ba7a-63408ac3a13b") ) (wire (pts - (xy 478.79 69.85) (xy 488.95 69.85) + (xy 287.02 72.39) (xy 287.02 71.12) ) (stroke (width 0) (type default) ) - (uuid "b0825e96-da60-4010-bc97-27d584e98797") + (uuid "dd1558d1-1568-4bd8-a3cf-a0a66e5a16d4") ) (wire (pts - (xy 271.78 121.92) (xy 283.21 121.92) + (xy 69.85 300.99) (xy 69.85 303.53) ) (stroke (width 0) (type default) ) - (uuid "b36b514d-8381-464b-9af6-21fb8956fab3") + (uuid "dd90a464-c03c-468e-965c-e7ec7f19768f") ) (wire (pts - (xy 488.95 69.85) (xy 504.19 69.85) + (xy 478.79 146.05) (xy 488.95 146.05) ) (stroke (width 0) (type default) ) - (uuid "b3781a46-912d-4645-a38e-dc4cd280f859") + (uuid "de62aaf7-43dd-43e7-982d-d5cfe43f8257") ) (wire (pts - (xy 99.06 111.76) (xy 99.06 109.22) + (xy 542.29 330.2) (xy 560.07 330.2) ) (stroke (width 0) (type default) ) - (uuid "b43c3923-b311-408d-93ce-11650dabbaa5") + (uuid "df67a17a-8a8d-4cc1-8da0-70b1a3b6d9b4") ) (wire (pts - (xy 336.55 196.85) (xy 336.55 193.04) + (xy 481.33 71.12) (xy 504.19 71.12) ) (stroke (width 0) (type default) ) - (uuid "b5689a0a-83ad-4653-b81a-569188276d39") + (uuid "e0dd5a1b-5c03-465d-a25e-6804444fcf2d") ) (wire (pts - (xy 271.78 86.36) (xy 283.21 86.36) + (xy 524.51 44.45) (xy 532.13 44.45) ) (stroke (width 0) (type default) ) - (uuid "b5c108c0-1a32-429f-b0f8-2652b54139c6") + (uuid "e181a224-4a1e-44c5-9609-c316212997e5") ) (wire (pts - (xy 511.81 254) (xy 520.7 254) + (xy 308.61 208.28) (xy 308.61 210.82) ) (stroke (width 0) (type default) ) - (uuid "ba595be2-8a3e-48dc-8e47-46286d4ecc13") + (uuid "e18fd790-abf9-4181-b8cc-fa68ae7e411c") ) (wire (pts - (xy 326.39 86.36) (xy 313.69 86.36) + (xy 83.82 48.26) (xy 95.25 48.26) ) (stroke (width 0) (type default) ) - (uuid "bb8101aa-84c8-45b1-a00b-ae82d2af4ff3") + (uuid "e36af734-2b7a-4a74-b21f-a0353c4ed285") ) (wire (pts - (xy 506.73 113.03) (xy 514.35 113.03) + (xy 349.25 45.72) (xy 349.25 53.34) ) (stroke (width 0) (type default) ) - (uuid "bde9be37-f411-4856-b084-35deb2348704") + (uuid "e3990102-0b52-4430-b0d1-577c999ee6e7") ) (wire (pts - (xy 506.73 40.64) (xy 514.35 40.64) + (xy 539.75 151.13) (xy 529.59 151.13) ) (stroke (width 0) (type default) ) - (uuid "bf7663c2-08ee-4835-aced-87377e6f2eca") + (uuid "e3ce1cfd-c744-4dcb-bb7e-26b208c4ca70") ) (wire (pts - (xy 271.78 119.38) (xy 283.21 119.38) + (xy 463.55 151.13) (xy 471.17 151.13) ) (stroke (width 0) (type default) ) - (uuid "c05dea8c-619d-4801-b7f2-8d7d6c075ec6") + (uuid "e3e94487-43f6-4010-bf7b-43f9b9c2eca6") ) (wire (pts - (xy 53.34 73.66) (xy 80.01 73.66) + (xy 463.55 289.56) (xy 473.71 289.56) ) (stroke (width 0) (type default) ) - (uuid "c0d3b5ca-aac2-4bcf-8264-d8d964ca377b") + (uuid "e581a600-7a0c-4b51-99b6-0d65d8a7d2de") ) (wire (pts - (xy 323.85 228.6) (xy 339.09 228.6) + (xy 287.02 60.96) (xy 293.37 60.96) ) (stroke (width 0) (type default) ) - (uuid "c253accb-5db5-4055-8611-ea520b22e1c4") + (uuid "e58a965a-cbf6-4b82-a7fc-32f968e1e6d3") ) (wire (pts - (xy 478.79 74.93) (xy 478.79 69.85) + (xy 220.98 110.49) (xy 220.98 113.03) ) (stroke (width 0) (type default) ) - (uuid "c4802249-feb9-468b-b590-e6e000a2f30b") + (uuid "e5f7ba07-a93c-475d-8765-bca923505c37") ) (wire (pts - (xy 287.02 69.85) (xy 287.02 71.12) + (xy 271.78 124.46) (xy 283.21 124.46) ) (stroke (width 0) (type default) ) - (uuid "c59e342f-0889-45ce-8359-dac28a3ac25b") + (uuid "e71fe69d-d171-4260-bbb7-2dcfca11488a") ) (wire (pts - (xy 67.31 210.82) (xy 67.31 213.36) + (xy 532.13 45.72) (xy 532.13 44.45) ) (stroke (width 0) (type default) ) - (uuid "c9f50a8c-70e9-4513-88d7-005f451c977d") + (uuid "e7b8dc4c-dfe0-4915-8f44-98103aed1d9a") ) (wire (pts - (xy 293.37 71.12) (xy 293.37 69.85) + (xy 323.85 227.33) (xy 323.85 228.6) ) (stroke (width 0) (type default) ) - (uuid "cae8362b-f145-431b-ba6f-8239851a4f92") + (uuid "e9409c8d-792d-4925-9b5b-8ebdbeebbeef") ) (wire (pts - (xy 78.74 111.76) (xy 78.74 109.22) + (xy 270.51 228.6) (xy 270.51 231.14) ) (stroke (width 0) (type default) ) - (uuid "cb7de995-06d9-4545-9331-186e328cc976") + (uuid "e9a2e256-d420-4794-a5f2-3960b452e85c") ) (wire (pts - (xy 271.78 111.76) (xy 283.21 111.76) + (xy 274.32 364.49) (xy 274.32 365.76) ) (stroke (width 0) (type default) ) - (uuid "ce0ef6ec-4a4b-49e6-9e2a-f56d646cfcc6") + (uuid "e9d1f6d2-d17d-48fa-bcf8-8b15cf3a2eb5") ) (wire (pts - (xy 469.9 248.92) (xy 469.9 246.38) + (xy 140.97 48.26) (xy 140.97 50.8) ) (stroke (width 0) (type default) ) - (uuid "ce26b1af-aeab-4a3a-a3aa-e0a42327b55a") + (uuid "e9eb360d-2fe2-4320-9ae6-91bd232eabd4") ) (wire (pts - (xy 462.28 254) (xy 459.74 254) + (xy 491.49 229.87) (xy 499.11 229.87) ) (stroke (width 0) (type default) ) - (uuid "d124f972-da02-4c7a-926a-b656d7c5d5ea") + (uuid "ec8d37f4-acba-4a23-89cc-f60ef7c5c454") ) (wire (pts - (xy 529.59 152.4) (xy 541.02 152.4) + (xy 485.14 90.17) (xy 488.95 90.17) ) (stroke (width 0) (type default) ) - (uuid "d298d92b-3577-43f4-bc7c-8db7650e8a4e") + (uuid "eca98d7a-8f96-4a5a-9b37-05e5158a9d9c") ) (wire (pts - (xy 539.75 77.47) (xy 529.59 77.47) + (xy 66.04 171.45) (xy 76.2 171.45) ) (stroke (width 0) (type default) ) - (uuid "d3615660-6fb5-4299-bdd1-ac1eda24a01b") + (uuid "ed48069f-2d89-4aa7-b4e0-ad9a9b097bff") ) (wire (pts - (xy 88.9 77.47) (xy 90.17 77.47) + (xy 514.35 116.84) (xy 514.35 130.81) ) (stroke (width 0) (type default) ) - (uuid "d3a54af7-3555-4b18-86fa-bc05b9bd35df") + (uuid "ee1b15e1-757a-4042-88fc-dfe7d619aa9d") ) (wire (pts - (xy 532.13 113.03) (xy 524.51 113.03) + (xy 471.17 151.13) (xy 478.79 151.13) ) (stroke (width 0) (type default) ) - (uuid "d3c969fd-45fe-49b1-be80-8384f37fdfaf") + (uuid "ee54779b-ed5a-4a49-8f1c-b51e01f9be31") ) (wire (pts - (xy 139.7 111.76) (xy 139.7 109.22) + (xy 509.27 256.54) (xy 566.42 256.54) ) (stroke (width 0) (type default) ) - (uuid "d3e2f8d4-6d25-43b6-9381-592c5a21f8b4") + (uuid "ee76ea13-7b66-4735-8ae2-15b30308619c") ) (wire (pts - (xy 80.01 73.66) (xy 80.01 72.39) + (xy 30.48 106.68) (xy 30.48 107.95) ) (stroke (width 0) (type default) ) - (uuid "d7b1aa4a-87e6-4522-af44-40c7f5438e3e") + (uuid "ef2fc04c-ca48-4342-a74e-56e63e9d1772") ) (wire (pts - (xy 293.37 60.96) (xy 298.45 60.96) + (xy 292.1 238.76) (xy 308.61 238.76) ) (stroke (width 0) (type default) ) - (uuid "d7cbc3ba-83d0-4278-b1ac-1698fd80e9e9") + (uuid "ef3c8fed-ea04-4288-83c2-b3b87ba23cce") ) (wire (pts - (xy 336.55 196.85) (xy 339.09 196.85) + (xy 78.74 251.46) (xy 93.98 251.46) ) (stroke (width 0) (type default) ) - (uuid "da264527-9b93-4cf5-a3d4-be01a6f14dcc") + (uuid "ef404b6e-e9df-4b49-825c-7740a62c842f") ) (wire (pts - (xy 30.48 107.95) (xy 38.1 107.95) + (xy 539.75 68.58) (xy 529.59 68.58) ) (stroke (width 0) (type default) ) - (uuid "da9d91ed-8ecc-452f-b319-f70589a73208") + (uuid "ef503ce9-377e-43a1-ae89-5f5b680b4a1a") ) (wire (pts - (xy 116.84 198.12) (xy 111.76 198.12) + (xy 339.09 54.61) (xy 339.09 50.8) ) (stroke (width 0) (type default) ) - (uuid "dacd326b-3935-4e68-8389-29b887335524") + (uuid "ef786c33-dca2-492a-80e4-24e4b49977ad") ) (wire (pts - (xy 119.38 111.76) (xy 119.38 109.22) + (xy 77.47 48.26) (xy 83.82 48.26) ) (stroke (width 0) (type default) ) - (uuid "dace0c36-a8e8-4d51-aefa-4a718ee3dd04") + (uuid "efdf6720-1c08-454e-87cf-ec79b7053cfe") ) (wire (pts - (xy 326.39 91.44) (xy 313.69 91.44) + (xy 80.01 77.47) (xy 81.28 77.47) ) (stroke (width 0) (type default) ) - (uuid "db560a9b-4bf7-4144-9a17-7584c34853d7") + (uuid "f0d20f4e-d907-43f8-b45a-e7d7f250f87a") ) (wire (pts - (xy 287.02 72.39) (xy 287.02 71.12) + (xy 271.78 88.9) (xy 283.21 88.9) ) (stroke (width 0) (type default) ) - (uuid "dd1558d1-1568-4bd8-a3cf-a0a66e5a16d4") + (uuid "f1f82f8c-1358-4230-84e6-077312d27544") ) (wire (pts - (xy 69.85 250.19) (xy 69.85 252.73) + (xy 519.43 116.84) (xy 519.43 115.57) ) (stroke (width 0) (type default) ) - (uuid "dd90a464-c03c-468e-965c-e7ec7f19768f") + (uuid "f2181389-6de8-41a8-99eb-9d25f978d712") ) (wire (pts - (xy 448.31 152.4) (xy 454.66 152.4) + (xy 452.12 148.59) (xy 444.5 148.59) ) (stroke (width 0) (type default) ) - (uuid "e03bf069-2b70-4fff-8285-10ea4fc3a868") + (uuid "f244fb62-7e8e-4065-b94c-4776c24426bc") ) (wire (pts - (xy 481.33 67.31) (xy 504.19 67.31) + (xy 344.17 55.88) (xy 356.87 55.88) ) (stroke (width 0) (type default) ) - (uuid "e0dd5a1b-5c03-465d-a25e-6804444fcf2d") + (uuid "f2b6925a-0813-4033-93a2-76a78db159f8") ) (wire (pts - (xy 524.51 40.64) (xy 532.13 40.64) + (xy 48.26 50.8) (xy 48.26 53.34) ) (stroke (width 0) (type default) ) - (uuid "e181a224-4a1e-44c5-9609-c316212997e5") + (uuid "f40121ea-5327-4a52-87b9-c240aed1ad41") ) (wire (pts - (xy 308.61 208.28) (xy 308.61 210.82) + (xy 481.33 88.9) (xy 481.33 90.17) ) (stroke (width 0) (type default) ) - (uuid "e18fd790-abf9-4181-b8cc-fa68ae7e411c") + (uuid "f41d9088-000a-4f39-a806-97d3eda82b5b") ) (wire (pts - (xy 83.82 48.26) (xy 95.25 48.26) + (xy 481.33 90.17) (xy 485.14 90.17) ) (stroke (width 0) (type default) ) - (uuid "e36af734-2b7a-4a74-b21f-a0353c4ed285") + (uuid "f481908e-41c5-4bd4-86ea-0c85b7f12871") ) (wire (pts - (xy 349.25 45.72) (xy 349.25 53.34) + (xy 308.61 210.82) (xy 308.61 213.36) ) (stroke (width 0) (type default) ) - (uuid "e3990102-0b52-4430-b0d1-577c999ee6e7") + (uuid "f5091864-7cd0-4fff-8788-5376020ea749") ) (wire (pts - (xy 287.02 60.96) (xy 293.37 60.96) + (xy 330.2 364.49) (xy 330.2 365.76) ) (stroke (width 0) (type default) ) - (uuid "e58a965a-cbf6-4b82-a7fc-32f968e1e6d3") + (uuid "f55c9738-9426-4f7c-ae21-dbb9d3a67ce2") ) (wire (pts - (xy 220.98 110.49) (xy 220.98 113.03) + (xy 539.75 78.74) (xy 529.59 78.74) ) (stroke (width 0) (type default) ) - (uuid "e5f7ba07-a93c-475d-8765-bca923505c37") + (uuid "f57488ef-d3de-4f80-ba1d-4e04c22cd2f3") ) (wire (pts - (xy 271.78 124.46) (xy 283.21 124.46) + (xy 262.89 236.22) (xy 259.08 236.22) ) (stroke (width 0) (type default) ) - (uuid "e71fe69d-d171-4260-bbb7-2dcfca11488a") + (uuid "f6104544-23ea-45ed-b82b-c25db204a30d") ) (wire (pts - (xy 514.35 109.22) (xy 514.35 113.03) + (xy 76.2 48.26) (xy 77.47 48.26) ) (stroke (width 0) (type default) ) - (uuid "e76ea1a3-b0b2-4dee-bb0c-2a6dfd71d8a4") + (uuid "f83c4e82-2b25-47c6-8d9a-c94279c0eebb") ) (wire (pts - (xy 532.13 41.91) (xy 532.13 40.64) + (xy 452.12 76.2) (xy 452.12 78.74) ) (stroke (width 0) (type default) ) - (uuid "e7b8dc4c-dfe0-4915-8f44-98103aed1d9a") + (uuid "f923732c-a437-4d76-976a-3d743109dba9") ) (wire (pts - (xy 323.85 227.33) (xy 323.85 228.6) + (xy 93.98 251.46) (xy 116.84 251.46) ) (stroke (width 0) (type default) ) - (uuid "e9409c8d-792d-4925-9b5b-8ebdbeebbeef") + (uuid "f9df595c-fbb4-4035-96c3-2ad76b5b8788") ) (wire (pts - (xy 529.59 147.32) (xy 541.02 147.32) + (xy 212.09 96.52) (xy 212.09 97.79) ) (stroke (width 0) (type default) ) - (uuid "e991d30d-c98e-433c-9214-bbe542aee368") + (uuid "fa08d3f2-934e-46da-bff8-8a916b850769") ) (wire (pts - (xy 270.51 228.6) (xy 270.51 231.14) + (xy 539.75 140.97) (xy 529.59 140.97) ) (stroke (width 0) (type default) ) - (uuid "e9a2e256-d420-4794-a5f2-3960b452e85c") + (uuid "fabd7def-5f13-4201-81ea-904867034575") ) (wire (pts - (xy 326.39 364.49) (xy 326.39 365.76) + (xy 519.43 162.56) (xy 519.43 161.29) ) (stroke (width 0) (type default) ) - (uuid "e9d1f6d2-d17d-48fa-bcf8-8b15cf3a2eb5") + (uuid "fb1a1e2e-e687-4041-8522-c0323b644ef1") ) (wire (pts - (xy 140.97 48.26) (xy 140.97 50.8) + (xy 127 176.53) (xy 147.32 176.53) ) (stroke (width 0) (type default) ) - (uuid "e9eb360d-2fe2-4320-9ae6-91bd232eabd4") + (uuid "fb2a3d3b-7719-4ed9-bcd0-f201da0c3865") ) (wire (pts - (xy 485.14 86.36) (xy 488.95 86.36) + (xy 336.55 217.17) (xy 336.55 226.06) ) (stroke (width 0) (type default) ) - (uuid "eca98d7a-8f96-4a5a-9b37-05e5158a9d9c") + (uuid "fbc1fc2b-7129-4949-9a5c-4f9d88292f9b") ) (wire (pts - (xy 459.74 248.92) (xy 469.9 248.92) + (xy 91.44 74.93) (xy 90.17 74.93) ) (stroke (width 0) (type default) ) - (uuid "ed48069f-2d89-4aa7-b4e0-ad9a9b097bff") + (uuid "fbd74ad5-1e5d-4e0c-8ba3-9629c231769a") ) (wire (pts - (xy 30.48 106.68) (xy 30.48 107.95) + (xy 215.9 243.84) (xy 229.87 243.84) ) (stroke (width 0) (type default) ) - (uuid "ef2fc04c-ca48-4342-a74e-56e63e9d1772") + (uuid "fc14a632-06a5-418b-a4c1-b272150d9ec3") ) (wire (pts - (xy 78.74 200.66) (xy 93.98 200.66) + (xy 77.47 44.45) (xy 77.47 48.26) ) (stroke (width 0) (type default) ) - (uuid "ef404b6e-e9df-4b49-825c-7740a62c842f") + (uuid "fc23d55d-cb96-4905-8260-3e7dba026be4") ) (wire (pts - (xy 539.75 64.77) (xy 529.59 64.77) + (xy 76.2 171.45) (xy 76.2 175.26) ) (stroke (width 0) (type default) ) - (uuid "ef503ce9-377e-43a1-ae89-5f5b680b4a1a") + (uuid "fc7f21fe-3370-4cbb-b6d1-97bc3ecfebe5") ) (wire (pts - (xy 339.09 54.61) (xy 339.09 50.8) + (xy 496.57 148.59) (xy 504.19 148.59) ) (stroke (width 0) (type default) ) - (uuid "ef786c33-dca2-492a-80e4-24e4b49977ad") + (uuid "fd3825b3-b04b-4823-9a0d-c38845de8461") ) (wire (pts - (xy 77.47 48.26) (xy 83.82 48.26) + (xy 64.77 81.28) (xy 53.34 81.28) ) (stroke (width 0) (type default) ) - (uuid "efdf6720-1c08-454e-87cf-ec79b7053cfe") + (uuid "fde99411-e745-45ad-9e88-8a28a9f28267") ) (wire (pts - (xy 80.01 77.47) (xy 81.28 77.47) + (xy 187.96 81.28) (xy 204.47 81.28) ) (stroke (width 0) (type default) ) - (uuid "f0d20f4e-d907-43f8-b45a-e7d7f250f87a") + (uuid "fde9d54b-f315-4339-b3a3-ab11d17ba701") ) (wire (pts - (xy 514.35 40.64) (xy 514.35 54.61) + (xy 83.82 48.26) (xy 83.82 49.53) ) (stroke (width 0) (type default) ) - (uuid "f1a56b0b-cbb6-4fc6-ae1e-449694f32bda") + (uuid "ff2d0013-802b-4280-ae55-996edd4b4898") + ) + (label "ALARM" + (at 271.78 104.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "0015f49b-2684-4da9-aada-fccb1a46be08") + ) + (label "TC2_CS" + (at 151.13 358.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "00a5dd04-d642-4e94-bf9d-2471d6ae4f95") + ) + (label "ENC_B" + (at 40.64 173.99 270) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "011f978e-0008-4fb8-abb5-0a72ded049c3") + ) + (label "HEAT_EN" + (at 74.93 374.65 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "02ddb1e0-94dd-4648-a204-eff9b7db7a27") + ) + (label "ESP32_IO0" + (at 90.17 392.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "0367622a-4465-4905-8236-335c9d45b7fa") + ) + (label "TC2_SCK" + (at 105.41 358.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "03f78a22-0f08-41bb-b523-c4ecbca1bb6e") + ) + (label "SUPERVISOR_TX" + (at 560.07 330.2 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "053d81bf-0a4a-4fd7-80b9-aaea10d5b31e") + ) + (label "TC1_SCK" + (at 539.75 76.2 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "0ce234fa-44f9-4919-b172-2f0e29220589") + ) + (label "TC2_MISO" + (at 135.89 358.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "0f012142-2b81-4a54-9aeb-93547faa81f1") + ) + (label "TC1_MOSI" + (at 44.45 358.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "108ccd95-d9c0-437c-a4c6-c4e7ee33f0fa") + ) + (label "TC2_MOSI" + (at 120.65 358.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "12cc33a6-1ac2-4619-a34f-69ada7b4a72b") + ) + (label "TC2_SCK" + (at 539.75 148.59 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "14905746-57f0-4277-aac0-51c60195660b") + ) + (label "SUPERVISOR_TX" + (at 123.19 392.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "17e345e5-89a9-450d-b91f-4076944a7e03") + ) + (label "TC2_P" + (at 39.37 392.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "180782c4-992e-49aa-9f40-56d1751b700d") + ) + (label "SUPERVISOR_RESET" + (at 560.07 320.04 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "19681d34-8051-4bad-a8b2-671f4552cc07") + ) + (label "ESP32_IO0" + (at 271.78 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "1bccdf1a-b7ec-4dba-a4f8-81640b56eaaa") + ) + (label "TC1_SCK" + (at 29.21 358.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "1dc05d79-bc87-4c8d-a539-c42bcdb218aa") + ) + (label "ESP32_EN" + (at 74.93 392.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "1eec9e34-6b05-4458-a7e3-0ef1499adcb7") + ) + (label "+5V" + (at 99.06 111.76 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "20387752-96af-43ac-a8c9-c21fe928dde6") + ) + (label "CT_IN" + (at 284.48 363.22 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "2657c9ef-b7f0-4501-8f22-89a4156e8065") + ) + (label "SUPERVISOR_TX" + (at 328.93 124.46 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "26e32046-79cb-4d83-830f-fd48cb514f98") ) - (wire - (pts - (xy 271.78 88.9) (xy 283.21 88.9) - ) - (stroke - (width 0) - (type default) + (label "SSR" + (at 271.78 96.52 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f1f82f8c-1358-4230-84e6-077312d27544") + (uuid "27630410-d45e-4add-9c5d-4fc770a9c413") ) - (wire - (pts - (xy 344.17 55.88) (xy 356.87 55.88) - ) - (stroke - (width 0) - (type default) + (label "VBUS" + (at 139.7 111.76 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f2b6925a-0813-4033-93a2-76a78db159f8") + (uuid "283e11ed-1ef4-4d48-bbd2-f9fdfaac8369") ) - (wire - (pts - (xy 514.35 163.83) (xy 514.35 166.37) + (label "TC2_CS" + (at 463.55 284.48 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "286a5524-9918-4a9f-abac-70c0c8a6c0eb") + ) + (label "EXP_IO42" + (at 326.39 116.84 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "f36fe134-6e4a-4921-9937-eab174b16834") + (uuid "2e9c5bfb-745f-4c89-93a0-89c9c825e41b") ) - (wire - (pts - (xy 519.43 162.56) (xy 519.43 163.83) + (label "TC1_MISO" + (at 532.13 271.78 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (stroke - (width 0) - (type default) + (uuid "31db7d27-1c52-43a3-8746-f3662e6291dd") + ) + (label "TC1_N" + (at 31.75 392.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f3b8d92c-67f8-49bf-a504-70ba52db8ac6") + (uuid "32e46539-8071-4bfa-9185-93f01b2effd0") ) - (wire - (pts - (xy 48.26 50.8) (xy 48.26 53.34) + (label "LID_SENSE" + (at 326.39 106.68 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (stroke - (width 0) - (type default) + (uuid "37b27e87-f770-46df-8855-99e3a40478d7") + ) + (label "ENC_A" + (at 271.78 127 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f40121ea-5327-4a52-87b9-c240aed1ad41") + (uuid "39f5270b-2df7-4ae8-a29f-26851c1322ca") ) - (wire - (pts - (xy 481.33 85.09) (xy 481.33 86.36) + (label "SSR" + (at 49.53 261.62 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "3a64cd45-c132-466d-973e-377f7e9a00ea") + ) + (label "ALARM" + (at 120.65 374.65 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f41d9088-000a-4f39-a806-97d3eda82b5b") + (uuid "3bbfbeae-f25a-41ed-bc9d-4d4a555cbcf7") ) - (wire - (pts - (xy 481.33 86.36) (xy 485.14 86.36) + (label "I2C_SCL" + (at 44.45 374.65 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "3ce5c392-a095-47d2-9c87-98f00ac80983") + ) + (label "TC1_FAULT" + (at 532.13 264.16 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "f481908e-41c5-4bd4-86ea-0c85b7f12871") + (uuid "3e490726-b967-4bb1-a010-c19091dca916") ) - (wire - (pts - (xy 308.61 210.82) (xy 308.61 213.36) + (label "TC2_P" + (at 452.12 143.51 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (stroke - (width 0) - (type default) + (uuid "3fd22e4d-ca93-40ba-9396-332a9b1ea9f2") + ) + (label "TC2_SCK" + (at 463.55 292.1 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f5091864-7cd0-4fff-8788-5376020ea749") + (uuid "4615ed22-7b2b-4405-8503-d6a9cdb174ac") ) - (wire - (pts - (xy 284.48 365.76) (xy 284.48 367.03) + (label "SUPERVISOR_RESET" + (at 140.97 392.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "47b4a4a3-9ee7-45ac-ad6d-fd201f11f930") + ) + (label "HEAT_EN_DC" + (at 237.49 236.22 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f55c9738-9426-4f7c-ae21-dbb9d3a67ce2") + (uuid "49cc3176-ed9f-4c74-9173-fa1ced951d1b") ) - (wire - (pts - (xy 539.75 74.93) (xy 529.59 74.93) + (label "SSR" + (at 59.69 374.65 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "4e5d9040-0d2b-47bc-83ef-d73dfee33a27") + ) + (label "GND" + (at 78.74 111.76 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f57488ef-d3de-4f80-ba1d-4e04c22cd2f3") + (uuid "53852ebd-69a1-4c24-b270-20b64ca37f7c") ) - (wire - (pts - (xy 262.89 236.22) (xy 259.08 236.22) + (label "EXP_IO2" + (at 344.17 60.96 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "54cd0dce-1968-43d8-9e04-9a55ee855874") + ) + (label "USB_DP" + (at 326.39 93.98 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "f6104544-23ea-45ed-b82b-c25db204a30d") + (uuid "5794554a-867b-43a4-9f88-87398c9b3a4b") ) - (wire - (pts - (xy 529.59 149.86) (xy 541.02 149.86) + (label "ENC_A" + (at 135.89 374.65 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "592a6926-6d9c-4fda-b557-a833627353c5") + ) + (label "LID_SENSE" + (at 292.1 210.82 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f71ae659-dd1a-438b-ae2e-9f15623a3884") + (uuid "5e9a97ea-3ca6-4ba7-8805-67665f6c87de") ) - (wire - (pts - (xy 514.35 162.56) (xy 514.35 163.83) + (label "TC1_P" + (at 24.13 392.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "5f4a7558-fee0-4159-820a-250619c86134") + ) + (label "CURR_SENSE" + (at 271.78 88.9 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f7e2474b-7982-4125-bf70-2a2d48925611") + (uuid "5f8705c1-1f58-469a-9427-ba0f258274eb") ) - (wire - (pts - (xy 76.2 48.26) (xy 77.47 48.26) - ) - (stroke - (width 0) - (type default) + (label "TC2_FAULT" + (at 463.55 281.94 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f83c4e82-2b25-47c6-8d9a-c94279c0eebb") + (uuid "5fc80a5e-90d8-480d-bb8f-0433f4042893") ) - (wire - (pts - (xy 452.12 72.39) (xy 452.12 74.93) - ) - (stroke - (width 0) - (type default) + (label "UART_RXD0" + (at 326.39 83.82 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "f923732c-a437-4d76-976a-3d743109dba9") + (uuid "64451608-12fe-4a50-bcca-223733c3e50b") ) - (wire - (pts - (xy 271.78 116.84) (xy 283.21 116.84) - ) - (stroke - (width 0) - (type default) + (label "LID_SWITCH" + (at 322.58 199.39 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "f956955a-0314-4a4b-9c3b-a915a3ad6fdd") + (uuid "646c5660-2d98-4946-be8d-f891f7577488") ) - (wire - (pts - (xy 93.98 200.66) (xy 116.84 200.66) - ) - (stroke - (width 0) - (type default) + (label "I2C_SDA" + (at 271.78 106.68 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "f9df595c-fbb4-4035-96c3-2ad76b5b8788") + (uuid "64e316ef-ab7b-4a25-9ea2-2707e661b111") ) - (wire - (pts - (xy 220.98 81.28) (xy 220.98 83.82) - ) - (stroke - (width 0) - (type default) + (label "UART_TXD0" + (at 344.17 55.88 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "fa08d3f2-934e-46da-bff8-8a916b850769") + (uuid "697e66d0-8ea8-49ab-92a0-1bfe0257dc97") ) - (wire - (pts - (xy 520.7 254) (xy 541.02 254) - ) - (stroke - (width 0) - (type default) + (label "EXP_IO42" + (at 344.17 63.5 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "fb2a3d3b-7719-4ed9-bcd0-f201da0c3865") + (uuid "69d4d196-935f-48b2-b0f8-733b4b6ad975") ) - (wire - (pts - (xy 336.55 217.17) (xy 336.55 226.06) - ) - (stroke - (width 0) - (type default) + (label "TC1_N" + (at 496.57 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "fbc1fc2b-7129-4949-9a5c-4f9d88292f9b") + (uuid "729ce56b-02d9-4aa8-8635-af7f4567d17c") ) - (wire - (pts - (xy 91.44 74.93) (xy 90.17 74.93) - ) - (stroke - (width 0) - (type default) + (label "USB_CC2" + (at 53.34 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "fbd74ad5-1e5d-4e0c-8ba3-9629c231769a") + (uuid "745ae5de-9e9b-4e23-a0ac-6849bfc32600") ) - (wire - (pts - (xy 215.9 243.84) (xy 229.87 243.84) - ) - (stroke - (width 0) - (type default) + (label "TC2_FAULT" + (at 539.75 140.97 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "fc14a632-06a5-418b-a4c1-b272150d9ec3") + (uuid "75645d28-3090-49e9-bbf2-762ce312b1c6") ) - (wire - (pts - (xy 77.47 44.45) (xy 77.47 48.26) - ) - (stroke - (width 0) - (type default) + (label "TC2_MISO" + (at 463.55 287.02 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "fc23d55d-cb96-4905-8260-3e7dba026be4") + (uuid "763a443c-5efc-4ec6-8307-e88b57a4edf9") ) - (wire - (pts - (xy 469.9 248.92) (xy 469.9 252.73) - ) - (stroke - (width 0) - (type default) + (label "I2C_SCL" + (at 326.39 88.9 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "fc7f21fe-3370-4cbb-b6d1-97bc3ecfebe5") + (uuid "78e0e2bd-fc5d-4635-8c62-8df2cdd83295") ) - (wire - (pts - (xy 462.28 144.78) (xy 472.44 144.78) + (label "TC1_MOSI" + (at 539.75 81.28 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (stroke - (width 0) - (type default) + (uuid "8236e7cf-dc5a-4820-a14c-d9c31912c33c") + ) + (label "COIL_FEEDBACK" + (at 532.13 259.08 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "fcd03658-6a32-4d48-a711-45b603dac08f") + (uuid "84d3b929-18b6-4979-b9ed-096a038c125c") ) - (wire - (pts - (xy 487.68 147.32) (xy 504.19 147.32) + (label "EXP_IO2" + (at 271.78 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "84e75121-3e6c-4dc1-b76f-7aa864727e77") + ) + (label "ENC_BTN" + (at 166.37 374.65 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (uuid "fd703bb7-a1d7-4a5e-8abc-39f200e5a36c") + (uuid "85c20811-910f-463b-8d68-b7a01cfe3d3f") ) - (wire - (pts - (xy 529.59 154.94) (xy 541.02 154.94) + (label "COIL_PERMIT" + (at 532.13 276.86 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (stroke - (width 0) - (type default) + (uuid "87b8da1b-e153-4b2e-bec3-b99472057c2e") + ) + (label "SSR_DRV" + (at 109.22 251.46 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "fdb8e3ff-fc11-427f-bc8c-974b75a67f47") + (uuid "8abe2e23-b6f9-4b51-843e-45ee29953191") ) - (wire - (pts - (xy 64.77 81.28) (xy 53.34 81.28) + (label "VBUS" + (at 53.34 68.58 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "8b4ab166-04b6-40d3-88d6-642767b61eb4") + ) + (label "TC1_CS" + (at 539.75 73.66 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "fde99411-e745-45ad-9e88-8a28a9f28267") + (uuid "8c6e922f-3485-489b-90de-52580fefe211") ) - (wire - (pts - (xy 83.82 48.26) (xy 83.82 49.53) + (label "TC2_MOSI" + (at 463.55 289.56 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) ) - (stroke - (width 0) - (type default) + (uuid "8fb2d7d8-e4b0-40c5-b568-7c2e330f6a84") + ) + (label "TC2_MISO" + (at 539.75 151.13 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) ) - (uuid "ff2d0013-802b-4280-ae55-996edd4b4898") + (uuid "927f8544-4963-43d9-9c02-86fcbf1fe143") ) - (label "ALARM" - (at 271.78 104.14 0) + (label "ENC_B" + (at 151.13 374.65 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "0015f49b-2684-4da9-aada-fccb1a46be08") + (uuid "93b3e01d-2c55-4227-8645-36fd32bbe911") ) - (label "ENC_B" - (at 434.34 251.46 270) + (label "TC2_MOSI" + (at 539.75 153.67 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "011f978e-0008-4fb8-abb5-0a72ded049c3") + (uuid "94925024-554d-4c3d-b98e-6d1da35d98f7") ) - (label "HEAT_EN" - (at 106.68 374.65 0) + (label "PUMP_NODE" + (at 90.17 374.65 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "02ddb1e0-94dd-4648-a204-eff9b7db7a27") + (uuid "94c876e0-a2fa-4784-b019-5d793558c0d7") ) - (label "MCU_IO0" - (at 121.92 392.43 0) + (label "COIL_PERMIT" + (at 106.68 392.43 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "0367622a-4465-4905-8236-335c9d45b7fa") + (uuid "97122f4c-c636-447f-aa02-61e0d6e972d5") ) - (label "GND" - (at 76.2 356.87 0) + (label "ENC_BTN" + (at 66.04 171.45 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "09cd038a-76f8-4c7b-af9d-d94910b8eea3") + (uuid "972101d7-e6c8-4a49-8ede-993be6b7caf6") ) - (label "SPI_SCK" - (at 539.75 72.39 180) + (label "USB_DP" + (at 64.77 86.36 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "0ce234fa-44f9-4919-b172-2f0e29220589") + (uuid "9ac8c073-2001-4c12-82b1-b27ec8476a5e") ) - (label "SPI_MOSI" - (at 121.92 356.87 0) + (label "V_IN" + (at 46.99 48.26 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "108ccd95-d9c0-437c-a4c6-c4e7ee33f0fa") + (uuid "9c062996-0281-4f56-b848-1a586a0cb246") ) - (label "TC2_DRDY" - (at 541.02 139.7 180) + (label "TC1_N" + (at 452.12 76.2 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "196f7019-4a1c-4739-92f5-32a060cd0cd9") + (uuid "9e1bc210-fe48-4871-aed8-3992df36048b") ) - (label "MCU_IO0" - (at 271.78 86.36 0) + (label "TC1_FAULT" + (at 539.75 68.58 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "9ff4644d-b86a-4cad-be79-6d3d5d26f0a9") + ) + (label "HEAT_EN" + (at 271.78 101.6 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "1bccdf1a-b7ec-4dba-a4f8-81640b56eaaa") + (uuid "a86e8fc3-77c2-460b-84f1-111f8de64ab8") ) - (label "SPI_SCK" - (at 106.68 356.87 0) + (label "I2C_SDA" + (at 118.11 176.53 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "1dc05d79-bc87-4c8d-a539-c42bcdb218aa") + (uuid "a9429f73-e530-4c6c-9b7f-3d792a2d84fc") ) - (label "MCU_EN" - (at 106.68 392.43 0) + (label "SUPERVISOR_RESET" + (at 187.96 81.28 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "1eec9e34-6b05-4458-a7e3-0ef1499adcb7") + (uuid "aa737177-daf8-465b-b115-a43825ff7ae8") ) - (label "+5V" - (at 99.06 111.76 0) + (label "TC2_N" + (at 46.99 392.43 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "20387752-96af-43ac-a8c9-c21fe928dde6") + (uuid "acca9425-807e-422f-b73d-66af3b610d1a") ) - (label "SPI_MOSI" - (at 541.02 154.94 180) + (label "GND" + (at 50.8 173.99 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "20de6424-26d5-4088-9802-bf8565317b2f") + (uuid "aeb99455-a965-49e6-aab9-46d6f2bc56ee") ) - (label "CT_IN" - (at 336.55 363.22 0) + (label "CURR_SENSE" + (at 59.69 392.43 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "2657c9ef-b7f0-4501-8f22-89a4156e8065") + (uuid "b04dee0c-7d5f-4422-8686-a6dd86d6bb88") ) - (label "+5V" - (at 30.48 356.87 0) + (label "USB_DN" + (at 326.39 91.44 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "2762aedf-2beb-468a-a01f-2a2deff669e2") + (uuid "b3078613-038c-4013-9e47-3d7071e0e242") ) - (label "SSR1" - (at 271.78 96.52 0) + (label "UART_RXD0" + (at 344.17 58.42 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "27630410-d45e-4add-9c5d-4fc770a9c413") + (uuid "b44d57bc-823b-4015-a158-154b8d9a6079") ) - (label "VBUS" - (at 139.7 111.76 0) + (label "TC1_SCK" + (at 532.13 269.24 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "283e11ed-1ef4-4d48-bbd2-f9fdfaac8369") + (uuid "b451fec1-17ae-49a5-aa82-2887c665c8dd") ) - (label "TC2_TP" - (at 496.57 144.78 0) + (label "SW_CLK" + (at 560.07 325.12 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "b56cc4a1-dcff-44eb-8233-15ba0870b853") + ) + (label "SW_DIO" + (at 560.07 327.66 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "ba6b0c75-0ca7-4dbe-87c1-8b6af2f11958") + ) + (label "TC1_CS" + (at 74.93 358.14 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "28d570ac-bfe3-4637-8503-3781a190f103") + (uuid "ba72ac44-6a9f-42f2-86e2-47e01e660925") ) - (label "TC1_FAULT" - (at 245.11 265.43 0) + (label "COIL_RTN1" + (at 270.51 255.27 90) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "295e55d9-b70c-438e-b8cc-3bc5cad80a88") + (uuid "bcb6a360-3568-4685-8640-61d06bbe1c5e") ) - (label "SPI_MISO" - (at 541.02 152.4 180) + (label "USB_DN" + (at 64.77 81.28 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "2a4ec124-af7a-4868-a449-9c9fed8a7815") + (uuid "be0e7fc4-2539-455f-888b-2df97245763c") ) - (label "TC1_DRDY" - (at 271.78 121.92 0) + (label "TC2_N" + (at 452.12 148.59 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "2cebb86a-b1ed-46ed-9952-7f71f95a5b79") + (uuid "be977d03-914d-4726-a17f-3edafe41e0cc") ) - (label "TC2_CS" - (at 167.64 356.87 0) + (label "SUPERVISOR_TX" + (at 560.07 261.62 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "bf6509d0-6414-4642-8d41-04557d9ad943") + ) + (label "ESP32_EN" + (at 271.78 81.28 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "2d10e2e1-aa7b-4dbb-b7b9-ad69877dbe5d") + (uuid "bf79dc01-4511-4c5e-b173-68393eb5fd03") ) - (label "EXP_IO42" - (at 326.39 116.84 180) + (label "SW_CLK" + (at 532.13 287.02 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "2e9c5bfb-745f-4c89-93a0-89c9c825e41b") + (uuid "c190d2fd-d7a4-4ba5-98c5-7a6bed5245bf") ) - (label "TC1_N" - (at 45.72 392.43 0) + (label "TC2_TN" + (at 496.57 146.05 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "32e46539-8071-4bfa-9185-93f01b2effd0") + (uuid "c245d68c-f9f9-44d7-895b-71dd55703958") ) - (label "VBUS" - (at 91.44 356.87 0) + (label "TC2_N" + (at 496.57 148.59 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "3466d749-85c7-457b-884a-b9ac6565b775") + (uuid "c3547ba2-9a39-4716-98a2-b2a66732577e") ) - (label "LID_SENSE" - (at 316.23 106.68 0) + (label "I2C_SDA" + (at 29.21 374.65 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "37b27e87-f770-46df-8855-99e3a40478d7") + (uuid "c4262538-2193-46c4-aaeb-c288d8335e26") ) - (label "TC2_P" - (at 60.96 392.43 0) + (label "COIL_FEEDBACK" + (at 166.37 392.43 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "38ca5720-61cb-41ff-b771-2288ba82051a") + (uuid "c4e61bdb-12ec-4120-a6a9-352d69b44a17") ) - (label "ENC_A" - (at 271.78 127 0) + (label "V_FUSED" + (at 60.96 48.26 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "39f5270b-2df7-4ae8-a29f-26851c1322ca") + (uuid "c55ff280-5051-4e71-b486-f884191377b0") ) - (label "SSR1" - (at 49.53 210.82 0) + (label "TC2_TP" + (at 496.57 143.51 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "3a64cd45-c132-466d-973e-377f7e9a00ea") + (uuid "ca1a571d-1308-4f19-9f54-181852edac6c") ) - (label "ALARM" - (at 167.64 374.65 0) + (label "TC1_FAULT" + (at 90.17 358.14 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "3bbfbeae-f25a-41ed-bc9d-4d4a555cbcf7") + (uuid "cc7bad64-3488-4c67-869c-af3bbfdaaa2d") ) - (label "I2C_SCL" - (at 60.96 374.65 0) + (label "TC1_MOSI" + (at 532.13 274.32 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "3ce5c392-a095-47d2-9c87-98f00ac80983") + (uuid "cce6a24a-210c-48ef-b317-0ca3c5872db5") ) - (label "SSR2" - (at 271.78 99.06 0) + (label "CT_IN" + (at 311.15 364.49 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "4035e66b-4412-490c-8ac3-b47cde8fcc33") + (uuid "cefc34f6-494b-46fc-9111-8cb7eb1e0b01") ) - (label "HEAT_EN_DC" - (at 237.49 236.22 0) + (label "TC1_TN" + (at 496.57 73.66 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "49cc3176-ed9f-4c74-9173-fa1ced951d1b") + (uuid "cf451629-c5ce-4f1a-a0ba-0b0da4b4ec92") ) - (label "COIL_DRV" - (at 152.4 374.65 0) + (label "SW_DIO" + (at 532.13 284.48 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "4c62d294-7991-444b-967e-55d3592ba6d6") + (uuid "d1052ed4-7b3e-4775-8fcf-39c4c0a994d0") ) - (label "SSR1" - (at 76.2 374.65 0) + (label "CURR_SENSE" + (at 325.12 364.49 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "4e5d9040-0d2b-47bc-83ef-d73dfee33a27") + (uuid "d1a33498-8a88-4fa3-b033-a0da57ece74b") ) - (label "TC2_CS" - (at 271.78 109.22 0) + (label "ALARM_DRV" + (at 116.84 293.37 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "4f15d1a0-7d5b-4476-898f-dc4a1956acec") + (uuid "d1ad5407-5869-4cd6-b23e-f6fe25633e78") ) - (label "GND" - (at 78.74 111.76 0) + (label "PUMP_NODE" + (at 217.17 243.84 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "53852ebd-69a1-4c24-b270-20b64ca37f7c") + (uuid "d2e8348d-9090-467c-b992-e1bf128c058e") ) - (label "EXP_IO2" - (at 344.17 60.96 0) + (label "ENC_BTN" + (at 271.78 124.46 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "54cd0dce-1968-43d8-9e04-9a55ee855874") + (uuid "d305a5a7-5ebc-49dc-b5c2-ccfefdc422a0") ) - (label "USB_DP" - (at 326.39 93.98 180) + (label "ENC_B" + (at 326.39 86.36 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "5794554a-867b-43a4-9f88-87398c9b3a4b") + (uuid "d3ca8e6f-154c-4b3b-9485-5500abf631e6") ) - (label "ENC_A" - (at 182.88 374.65 0) + (label "COIL_PERMIT" + (at 243.84 267.97 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "592a6926-6d9c-4fda-b557-a833627353c5") + (uuid "da2e6b28-860b-4b94-af39-872e8639f88e") ) - (label "LID_SENSE" - (at 297.18 210.82 0) + (label "USB_CC1" + (at 53.34 73.66 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "5e9a97ea-3ca6-4ba7-8805-67665f6c87de") + (uuid "dc765dce-a9f1-45a6-aafb-eba72e1eaf6c") ) - (label "TC1_P" - (at 30.48 392.43 0) + (label "TC2_CS" + (at 539.75 146.05 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "e02d97b9-4724-4823-9963-fd616660fade") + ) + (label "ALARM" + (at 53.34 300.99 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "e047ac61-fcae-45ee-839f-d67d45b028e4") + ) + (label "TC1_CS" + (at 532.13 266.7 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "e3fdc24d-fd3a-462d-8ede-940ed2a5a3f5") + ) + (label "UART_TXD0" + (at 326.39 81.28 180) + (effects + (font + (size 1.27 1.27) + ) + (justify right bottom) + ) + (uuid "e52fd31a-72b0-404d-813b-79515a7a3242") + ) + (label "COIL_DRV" + (at 330.2 228.6 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "5f4a7558-fee0-4159-820a-250619c86134") + (uuid "e54a6f0e-ae36-41b3-8e7c-5ee073b97245") ) - (label "CURR_SENSE" - (at 271.78 88.9 0) + (label "TC1_TP" + (at 496.57 71.12 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "5f8705c1-1f58-469a-9427-ba0f258274eb") + (uuid "e6ffc115-7f6a-4a7b-83b5-731584e128d9") ) - (label "UART_RXD0" - (at 326.39 83.82 180) + (label "ENC_A" + (at 31.75 173.99 270) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "64451608-12fe-4a50-bcca-223733c3e50b") + (uuid "e75b255d-f3f5-42a0-bdbe-7a2d285734e8") ) - (label "LID_SWITCH" - (at 322.58 199.39 180) + (label "HEAT_EN_DC" + (at 105.41 374.65 0) (effects (font (size 1.27 1.27) ) - (justify right bottom) + (justify left bottom) ) - (uuid "646c5660-2d98-4946-be8d-f891f7577488") + (uuid "e8430dae-d98c-4061-98fe-65969f3e2199") ) - (label "I2C_SDA" - (at 271.78 106.68 0) + (label "I2C_SCL" + (at 118.11 173.99 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "ec7fd654-0f3f-45d9-9618-0f1c128b5866") + ) + (label "TC2_FAULT" + (at 166.37 358.14 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left bottom) + ) + (uuid "eef9c15b-b1b1-4af1-923a-73a1aa138859") + ) + (label "TC1_MISO" + (at 59.69 358.14 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "64e316ef-ab7b-4a25-9ea2-2707e661b111") + (uuid "ef3586a2-a93f-49cc-8ac8-e71eaa4d2aae") ) - (label "TC2_DRDY" - (at 326.39 96.52 180) + (label "TC1_P" + (at 452.12 71.12 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "67744d71-81ca-4bd6-97ac-774fb8820ae0") + (uuid "f094d0ee-9c36-4226-a874-0fa049109d94") ) - (label "GND" - (at 60.96 356.87 0) + (label "USB_DN" + (at 64.77 83.82 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "68621178-2067-4a28-b83f-b2d9112ae850") + (uuid "f128b59b-c722-41e7-aabf-19a7d2408d34") ) - (label "UART_TXD0" - (at 344.17 55.88 0) + (label "ESP32_IO0" + (at 248.92 110.49 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "697e66d0-8ea8-49ab-92a0-1bfe0257dc97") + (uuid "f5fd8e53-bd5c-41a9-b9d7-d70cc3b76d59") ) - (label "EXP_IO42" - (at 344.17 63.5 0) + (label "VBIAS" + (at 284.48 365.76 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "69d4d196-935f-48b2-b0f8-733b4b6ad975") + (uuid "f9ac1bb1-b722-46d9-a05a-5339f0306ec8") ) - (label "TC2_TN" - (at 496.57 147.32 0) + (label "V_IN" + (at 119.38 111.76 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "72118901-04bc-4342-9b8c-44df68457a47") + (uuid "fb21c827-9364-405f-afe8-10f32a5711c0") ) - (label "TC1_TN" - (at 496.57 72.39 0) + (label "TC1_MISO" + (at 539.75 78.74 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) ) - (uuid "729ce56b-02d9-4aa8-8635-af7f4567d17c") + (uuid "fb65c5df-5094-482b-bbb9-70199e8ff2f6") ) - (label "USB_CC2" - (at 53.34 76.2 0) + (label "HEAT_EN" + (at 190.5 243.84 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "745ae5de-9e9b-4e23-a0ac-6849bfc32600") + (uuid "fc0c08e8-5023-443e-8168-1c246b2b5f54") ) - (label "I2C_SCL" - (at 326.39 88.9 180) + (label "USB_DP" + (at 64.77 88.9 180) (effects (font (size 1.27 1.27) ) (justify right bottom) ) - (uuid "78e0e2bd-fc5d-4635-8c62-8df2cdd83295") + (uuid "fc12361d-980a-4ebb-9f6c-9bd4ce057f7a") ) - (label "TC1_DRDY" - (at 182.88 356.87 0) + (label "COIL_FEEDBACK" + (at 292.1 238.76 0) (effects (font (size 1.27 1.27) ) (justify left bottom) ) - (uuid "8000e46d-91bf-43f1-a63e-8118fdbfad89") + (uuid "fc2611e6-754f-454c-ad07-1440d4ee65fe") ) - (label "SPI_SCK" - (at 271.78 116.84 0) + (label "SUPERVISOR_RESET" + (at 574.04 256.54 180) (effects (font (size 1.27 1.27) ) - (justify left bottom) + (justify right bottom) + ) + (uuid "ffa9e80e-0a4d-486e-9236-c0db64b5150e") + ) + (symbol + (lib_id "power:+3.3V") + (at 31.75 161.29 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "020cb5fd-cdac-4d3e-8c4a-b49808f301e8") + (property "Reference" "#PWR026" + (at 31.75 165.1 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "+3.3V" + (at 31.75 156.21 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 31.75 161.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 31.75 161.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 31.75 161.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "1c5e22e0-4ed2-4c0d-ab12-04b06113d64e") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "#PWR026") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:LED") + (at 281.94 224.79 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "02309ad1-af89-44eb-bce6-128caeb48261") + (property "Reference" "D7" + (at 279.4 224.79 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "COIL" + (at 284.48 224.79 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "LED_SMD:LED_0603_1608Metric" + (at 281.94 224.79 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 281.94 224.79 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 281.94 224.79 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C2286" + (at 281.94 224.79 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "19c0c929-da8d-4987-8d68-c592430c0aff") + ) + (pin "2" + (uuid "705f9f34-9596-4e06-87dc-31763dfa2cef") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "D7") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Connector:TestPoint") + (at 29.21 374.65 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "03ba48d6-dea5-4695-911a-ed722e7f4809") + (property "Reference" "TP15" + (at 29.21 367.792 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "I2C_SDA" + (at 29.21 369.57 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 29.21 374.65 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 29.21 374.65 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 29.21 374.65 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) ) - (uuid "813dcbef-8ebe-492d-8dcb-f0e99faa0e68") - ) - (label "SPI_MOSI" - (at 539.75 77.47 180) - (effects - (font - (size 1.27 1.27) - ) - (justify right bottom) + (pin "1" + (uuid "47e95739-9496-42e2-b8b1-4b6073090296") ) - (uuid "8236e7cf-dc5a-4820-a14c-d9c31912c33c") - ) - (label "EXP_IO2" - (at 271.78 91.44 0) - (effects - (font - (size 1.27 1.27) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "TP15") + (unit 1) + ) ) - (justify left bottom) ) - (uuid "84e75121-3e6c-4dc1-b76f-7aa864727e77") ) - (label "ENC_BTN" - (at 213.36 374.65 0) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "Device:C") + (at 499.11 234.95 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "05d7d812-7319-49d1-932b-1df7e73bfc40") + (property "Reference" "C14" + (at 499.745 232.41 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) ) - (justify left bottom) ) - (uuid "85c20811-910f-463b-8d68-b7a01cfe3d3f") - ) - (label "SPI_MISO" - (at 271.78 119.38 0) - (effects - (font - (size 1.27 1.27) + (property "Value" "100nF" + (at 499.745 237.49 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) ) - (justify left bottom) ) - (uuid "89c701ae-9cfe-4ea6-8f8c-da9ebfbcb3c5") - ) - (label "SSR1_DRV" - (at 109.22 200.66 180) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 499.11 234.95 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "8abe2e23-b6f9-4b51-843e-45ee29953191") - ) - (label "TC2_FAULT" - (at 541.02 142.24 180) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 499.11 234.95 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "8b4a4aa7-5f1a-4976-8f04-ea2ec66d26ba") - ) - (label "VBUS" - (at 53.34 68.58 0) - (effects - (font - (size 1.27 1.27) + (property "Description" "" + (at 499.11 234.95 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "8b4ab166-04b6-40d3-88d6-642767b61eb4") - ) - (label "TC1_CS" - (at 539.75 69.85 180) - (effects - (font - (size 1.27 1.27) + (property "LCSC" "C1525" + (at 499.11 234.95 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "8c6e922f-3485-489b-90de-52580fefe211") - ) - (label "ENC_B" - (at 198.12 374.65 0) - (effects - (font - (size 1.27 1.27) + (pin "1" + (uuid "8b9a6a94-e98e-4fc3-b855-62ee22b960b5") + ) + (pin "2" + (uuid "02b09c3c-6c53-414a-91d2-053b91e862dd") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "C14") + (unit 1) + ) ) - (justify left bottom) ) - (uuid "93b3e01d-2c55-4227-8645-36fd32bbe911") ) - (label "PUMP_NODE" - (at 121.92 374.65 0) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "power:GND") + (at 344.17 372.11 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "06646c41-5d1a-40e5-95b1-717aef9d2f19") + (property "Reference" "#PWR052" + (at 344.17 378.46 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "94c876e0-a2fa-4784-b019-5d793558c0d7") - ) - (label "ENC_BTN" - (at 459.74 248.92 0) - (effects - (font - (size 1.27 1.27) + (property "Value" "GND" + (at 344.17 377.19 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "972101d7-e6c8-4a49-8ede-993be6b7caf6") - ) - (label "TC2_N" - (at 76.2 392.43 0) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "" + (at 344.17 372.11 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "9821635f-b084-40ce-a9d6-b89d579642d5") - ) - (label "USB_DP" - (at 64.77 86.36 180) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 344.17 372.11 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "9ac8c073-2001-4c12-82b1-b27ec8476a5e") - ) - (label "SPI_MOSI" - (at 271.78 114.3 0) - (effects - (font - (size 1.27 1.27) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 344.17 372.11 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "9b4ef9e8-d5af-4624-8c7a-9e810954b198") - ) - (label "V_IN" - (at 46.99 48.26 0) - (effects - (font - (size 1.27 1.27) + (pin "1" + (uuid "ec26a6d1-8f73-43c3-a117-2605d2f6d6a9") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "#PWR052") + (unit 1) + ) ) - (justify left bottom) ) - (uuid "9c062996-0281-4f56-b848-1a586a0cb246") ) - (label "TC1_N" - (at 452.12 72.39 180) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "Device:R") + (at 127 166.37 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "0860280d-6ba9-40e5-bcad-1876705f1e86") + (property "Reference" "R8" + (at 129.032 166.37 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "9e1bc210-fe48-4871-aed8-3992df36048b") - ) - (label "TC1_FAULT" - (at 539.75 64.77 180) - (effects - (font - (size 1.27 1.27) + (property "Value" "4.7k" + (at 127 166.37 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "9ff4644d-b86a-4cad-be79-6d3d5d26f0a9") - ) - (label "COIL_RTN2" - (at 270.51 280.67 90) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 127 166.37 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "a5148b98-a661-44bb-af57-e9f1599145b5") - ) - (label "HEAT_EN" - (at 271.78 101.6 0) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 127 166.37 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "a86e8fc3-77c2-460b-84f1-111f8de64ab8") - ) - (label "I2C_SDA" - (at 511.81 254 0) - (effects - (font - (size 1.27 1.27) + (property "Description" "" + (at 127 166.37 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "a9429f73-e530-4c6c-9b7f-3d792a2d84fc") - ) - (label "GND" - (at 444.5 251.46 180) - (effects - (font - (size 1.27 1.27) + (property "LCSC" "C25900" + (at 127 166.37 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "aeb99455-a965-49e6-aab9-46d6f2bc56ee") - ) - (label "CURR_SENSE" - (at 91.44 392.43 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left bottom) + (pin "1" + (uuid "557fb279-e4e3-40b3-ba5c-22628c135175") ) - (uuid "b04dee0c-7d5f-4422-8686-a6dd86d6bb88") - ) - (label "TC1_CS" - (at 271.78 111.76 0) - (effects - (font - (size 1.27 1.27) + (pin "2" + (uuid "c5ee6c8d-86e3-4916-a096-a51b104d3dab") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "R8") + (unit 1) + ) ) - (justify left bottom) ) - (uuid "b1a54830-af92-4ff3-adfc-3e0b1a3feec1") ) - (label "USB_DM" - (at 326.39 91.44 180) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "power:+3.3V") + (at 40.64 161.29 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "0916ded6-218e-4f13-b538-4a5bf593f625") + (property "Reference" "#PWR025" + (at 40.64 165.1 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "b3078613-038c-4013-9e47-3d7071e0e242") - ) - (label "TC2_TN" - (at 496.57 149.86 0) - (effects - (font - (size 1.27 1.27) + (property "Value" "+3.3V" + (at 40.64 156.21 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "b3781c3c-52b1-4215-84e9-446978838dd9") - ) - (label "UART_RXD0" - (at 344.17 58.42 0) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "" + (at 40.64 161.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "b44d57bc-823b-4015-a158-154b8d9a6079") - ) - (label "TC1_DRDY" - (at 539.75 62.23 180) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 40.64 161.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "b4664726-3749-4a86-bf2d-c2b13957d251") - ) - (label "TC1_CS" - (at 152.4 356.87 0) - (effects - (font - (size 1.27 1.27) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 40.64 161.29 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "ba72ac44-6a9f-42f2-86e2-47e01e660925") - ) - (label "SPI_SCK" - (at 541.02 149.86 180) - (effects - (font - (size 1.27 1.27) + (pin "1" + (uuid "f4631e44-6452-4ca1-a6ff-e63faa26ea31") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "#PWR025") + (unit 1) + ) ) - (justify right bottom) ) - (uuid "bc34774f-972b-4c63-a873-793adc7bd5eb") ) - (label "COIL_RTN1" - (at 270.51 257.81 90) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "Device:R") + (at 538.48 261.62 90) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "0e2fa75f-36d4-495e-8fed-d347c0e72dad") + (property "Reference" "R6" + (at 538.48 259.588 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "bcb6a360-3568-4685-8640-61d06bbe1c5e") - ) - (label "USB_DM" - (at 64.77 81.28 180) - (effects - (font - (size 1.27 1.27) + (property "Value" "220R" + (at 538.48 261.62 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "be0e7fc4-2539-455f-888b-2df97245763c") - ) - (label "MCU_EN" - (at 271.78 81.28 0) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 538.48 261.62 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "bf79dc01-4511-4c5e-b173-68393eb5fd03") - ) - (label "TC2_FAULT" - (at 30.48 374.65 0) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 538.48 261.62 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "c0edda53-068e-4430-aecd-c4631a22b3f1") - ) - (label "TC2_N" - (at 454.66 152.4 180) - (effects - (font - (size 1.27 1.27) + (property "Description" "" + (at 538.48 261.62 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "c1651126-ca4d-45bf-a9a6-7b5df526e11a") - ) - (label "I2C_SDA" - (at 45.72 374.65 0) - (effects - (font - (size 1.27 1.27) + (property "LCSC" "C25076" + (at 538.48 261.62 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "c4262538-2193-46c4-aaeb-c288d8335e26") - ) - (label "V_FUSED" - (at 60.96 48.26 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left bottom) + (pin "1" + (uuid "ec4b92a6-2ee7-44f6-b871-42416398bb7e") ) - (uuid "c55ff280-5051-4e71-b486-f884191377b0") - ) - (label "TC2_P" - (at 454.66 144.78 180) - (effects - (font - (size 1.27 1.27) - ) - (justify right bottom) + (pin "2" + (uuid "436e5941-c805-470e-8060-e49f8754e904") ) - (uuid "c88fb32f-885b-4400-b026-93b0f0649165") - ) - (label "TC1_FAULT" - (at 213.36 356.87 0) - (effects - (font - (size 1.27 1.27) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "R6") + (unit 1) + ) ) - (justify left bottom) ) - (uuid "cc7bad64-3488-4c67-869c-af3bbfdaaa2d") ) - (label "CT_IN" - (at 265.43 365.76 0) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "Device:C") + (at 31.75 184.15 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "0e8d4150-f0d2-4bdc-8676-9c0befd5628e") + (property "Reference" "C20" + (at 32.385 181.61 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) ) - (justify left bottom) ) - (uuid "cefc34f6-494b-46fc-9111-8cb7eb1e0b01") - ) - (label "TC1_TN" - (at 496.57 69.85 0) - (effects - (font - (size 1.27 1.27) + (property "Value" "100nF" + (at 32.385 186.69 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) ) - (justify left bottom) ) - (uuid "cf451629-c5ce-4f1a-a0ba-0b0da4b4ec92") - ) - (label "CURR_SENSE" - (at 279.4 365.76 0) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 31.75 184.15 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "d1a33498-8a88-4fa3-b033-a0da57ece74b") - ) - (label "ALARM_DRV" - (at 116.84 242.57 180) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 31.75 184.15 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "d1ad5407-5869-4cd6-b23e-f6fe25633e78") - ) - (label "PUMP_NODE" - (at 217.17 243.84 0) - (effects - (font - (size 1.27 1.27) + (property "Description" "" + (at 31.75 184.15 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "d2e8348d-9090-467c-b992-e1bf128c058e") - ) - (label "ENC_BTN" - (at 271.78 124.46 0) - (effects - (font - (size 1.27 1.27) + (property "LCSC" "C1525" + (at 31.75 184.15 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "d305a5a7-5ebc-49dc-b5c2-ccfefdc422a0") - ) - (label "ENC_B" - (at 326.39 86.36 180) - (effects - (font - (size 1.27 1.27) - ) - (justify right bottom) + (pin "1" + (uuid "3de8492d-fd31-4def-8885-5805c9e9f107") ) - (uuid "d3ca8e6f-154c-4b3b-9485-5500abf631e6") - ) - (label "TC2_FAULT" - (at 245.11 287.02 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left bottom) + (pin "2" + (uuid "b9d69a4d-3f05-4a74-b43a-18b434f519d6") ) - (uuid "da2e6b28-860b-4b94-af39-872e8639f88e") - ) - (label "SSR2" - (at 91.44 374.65 0) - (effects - (font - (size 1.27 1.27) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "C20") + (unit 1) + ) ) - (justify left bottom) ) - (uuid "dace3539-2f78-48c1-bd23-0f81f79e9257") ) - (label "USB_CC1" - (at 53.34 73.66 0) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "Device:R") + (at 259.08 240.03 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "0ed6f317-6796-4bb1-86bf-61532521fbb4") + (property "Reference" "R20" + (at 261.112 240.03 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "dc765dce-a9f1-45a6-aafb-eba72e1eaf6c") - ) - (label "ALARM" - (at 53.34 250.19 180) - (effects - (font - (size 1.27 1.27) + (property "Value" "47k" + (at 259.08 240.03 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "e047ac61-fcae-45ee-839f-d67d45b028e4") - ) - (label "UART_TXD0" - (at 326.39 81.28 180) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 259.08 240.03 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "e52fd31a-72b0-404d-813b-79515a7a3242") - ) - (label "COIL_DRV" - (at 330.2 228.6 0) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 259.08 240.03 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "e54a6f0e-ae36-41b3-8e7c-5ee073b97245") - ) - (label "TC2_DRDY" - (at 198.12 356.87 0) - (effects - (font - (size 1.27 1.27) + (property "Description" "" + (at 259.08 240.03 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "e63599f1-11aa-49ae-9d6d-55e9885f7794") - ) - (label "TC1_TP" - (at 496.57 67.31 0) - (effects - (font - (size 1.27 1.27) + (property "LCSC" "C25792" + (at 259.08 240.03 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "e6ffc115-7f6a-4a7b-83b5-731584e128d9") - ) - (label "ENC_A" - (at 425.45 251.46 270) - (effects - (font - (size 1.27 1.27) + (pin "1" + (uuid "2ef95b08-6e63-4009-8975-705676b04275") + ) + (pin "2" + (uuid "4a5ebae1-b428-4226-a4b3-5b00dd86cc17") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "R20") + (unit 1) + ) ) - (justify right bottom) ) - (uuid "e75b255d-f3f5-42a0-bdbe-7a2d285734e8") ) - (label "HEAT_EN_DC" - (at 137.16 374.65 0) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "power:GND") + (at 83.82 57.15 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "0ee4e1f2-aeff-4b53-9bd4-c8d0e6f9af47") + (property "Reference" "#PWR05" + (at 83.82 63.5 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "e8430dae-d98c-4061-98fe-65969f3e2199") - ) - (label "I2C_SCL" - (at 511.81 251.46 0) - (effects - (font - (size 1.27 1.27) + (property "Value" "GND" + (at 83.82 62.23 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "ec7fd654-0f3f-45d9-9618-0f1c128b5866") - ) - (label "SPI_MISO" - (at 137.16 356.87 0) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "" + (at 83.82 57.15 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "ef3586a2-a93f-49cc-8ac8-e71eaa4d2aae") - ) - (label "TC1_P" - (at 452.12 67.31 180) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 83.82 57.15 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "f094d0ee-9c36-4226-a874-0fa049109d94") - ) - (label "USB_DM" - (at 64.77 83.82 180) - (effects - (font - (size 1.27 1.27) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 83.82 57.15 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "f128b59b-c722-41e7-aabf-19a7d2408d34") - ) - (label "TC2_CS" - (at 541.02 147.32 180) - (effects - (font - (size 1.27 1.27) + (pin "1" + (uuid "8ee63f7e-dc47-43ae-93be-2656eb37ed38") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "#PWR05") + (unit 1) + ) ) - (justify right bottom) ) - (uuid "f18399fe-cd7f-4021-ad12-322e9ff4be66") ) - (label "MCU_IO0" - (at 248.92 110.49 180) - (effects - (font - (size 1.27 1.27) + (symbol + (lib_id "Device:C") + (at 566.42 260.35 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "0f3d0cde-d424-466f-b803-7f970b216823") + (property "Reference" "C15" + (at 567.055 257.81 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) ) - (justify right bottom) ) - (uuid "f5fd8e53-bd5c-41a9-b9d7-d70cc3b76d59") - ) - (label "VBIAS" - (at 336.55 365.76 0) - (effects - (font - (size 1.27 1.27) + (property "Value" "100nF" + (at 567.055 262.89 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + (justify left) ) - (justify left bottom) ) - (uuid "f9ac1bb1-b722-46d9-a05a-5339f0306ec8") - ) - (label "V_IN" - (at 119.38 111.76 0) - (effects - (font - (size 1.27 1.27) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 566.42 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "fb21c827-9364-405f-afe8-10f32a5711c0") - ) - (label "SPI_MISO" - (at 539.75 74.93 180) - (effects - (font - (size 1.27 1.27) + (property "Datasheet" "" + (at 566.42 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "fb65c5df-5094-482b-bbb9-70199e8ff2f6") - ) - (label "HEAT_EN" - (at 190.5 243.84 0) - (effects - (font - (size 1.27 1.27) + (property "Description" "" + (at 566.42 260.35 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify left bottom) ) - (uuid "fc0c08e8-5023-443e-8168-1c246b2b5f54") - ) - (label "USB_DP" - (at 64.77 88.9 180) - (effects - (font - (size 1.27 1.27) + (property "LCSC" "C1525" + (at 566.42 260.35 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) ) - (justify right bottom) ) - (uuid "fc12361d-980a-4ebb-9f6c-9bd4ce057f7a") - ) - (label "+3V3" - (at 45.72 356.87 0) - (effects - (font - (size 1.27 1.27) + (pin "1" + (uuid "adffacc7-f189-4c6e-8e96-79070f2bfd0a") + ) + (pin "2" + (uuid "5e89bb38-262d-4d76-8ace-e9046e2655c3") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "C15") + (unit 1) + ) ) - (justify left bottom) ) - (uuid "fe6e9b76-efb1-44d6-a87a-6ab9e745936f") ) (symbol - (lib_id "Connector:TestPoint") - (at 60.96 392.43 0) + (lib_id "power:GND") + (at 532.13 53.34 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -10566,9 +13476,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "00adba66-1376-432a-a10c-d1c4c7c69923") - (property "Reference" "TP29" - (at 60.96 385.572 0) + (fields_autoplaced yes) + (uuid "142d24a3-d217-4327-b203-2d3f2d9eeaf5") + (property "Reference" "#PWR064" + (at 532.13 59.69 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -10577,8 +13489,8 @@ ) ) ) - (property "Value" "TC2_P" - (at 60.96 387.35 0) + (property "Value" "GND" + (at 532.13 58.42 0) (show_name no) (do_not_autoplace no) (effects @@ -10587,8 +13499,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 60.96 392.43 0) + (property "Footprint" "" + (at 532.13 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10599,7 +13511,7 @@ ) ) (property "Datasheet" "" - (at 60.96 392.43 0) + (at 532.13 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10609,8 +13521,9 @@ ) ) ) - (property "Description" "" - (at 60.96 392.43 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 532.13 53.34 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -10620,20 +13533,20 @@ ) ) (pin "1" - (uuid "90030e03-d61b-4c81-a8bf-123a781a59b9") + (uuid "aa737af0-5b8a-412d-a584-0d6bcb203dd6") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP29") + (reference "#PWR064") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 425.45 238.76 0) + (lib_id "Device:R") + (at 459.74 71.12 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -10641,11 +13554,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "020cb5fd-cdac-4d3e-8c4a-b49808f301e8") - (property "Reference" "#PWR026" - (at 425.45 242.57 0) - (hide yes) + (uuid "15e7f11e-276a-42b1-89fc-15ad7725f530") + (property "Reference" "R4" + (at 459.74 69.088 90) (show_name no) (do_not_autoplace no) (effects @@ -10654,8 +13565,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 425.45 233.68 0) + (property "Value" "100R" + (at 459.74 71.12 90) (show_name no) (do_not_autoplace no) (effects @@ -10664,8 +13575,8 @@ ) ) ) - (property "Footprint" "" - (at 425.45 238.76 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 459.74 71.12 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10676,7 +13587,7 @@ ) ) (property "Datasheet" "" - (at 425.45 238.76 0) + (at 459.74 71.12 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10686,8 +13597,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 425.45 238.76 0) + (property "Description" "" + (at 459.74 71.12 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25076" + (at 459.74 71.12 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10698,20 +13619,23 @@ ) ) (pin "1" - (uuid "1c5e22e0-4ed2-4c0d-ab12-04b06113d64e") + (uuid "1f05c8a1-b9b5-4396-8d8d-071dfaab248d") + ) + (pin "2" + (uuid "1294bce1-d817-4bad-9624-f5c38fcf5cc5") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR026") + (reference "R4") (unit 1) ) ) ) ) (symbol - (lib_id "Device:LED") - (at 281.94 224.79 90) + (lib_id "Device:C") + (at 140.97 54.61 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -10719,29 +13643,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "02309ad1-af89-44eb-bce6-128caeb48261") - (property "Reference" "D7" - (at 279.4 224.79 0) + (uuid "174ce40b-db46-409a-9fa5-2d5f70d1b8cc") + (property "Reference" "C4" + (at 141.605 52.07 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "COIL" - (at 284.48 224.79 0) + (property "Value" "100nF" + (at 141.605 57.15 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "LED_SMD:LED_0603_1608Metric" - (at 281.94 224.79 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 140.97 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10752,7 +13678,7 @@ ) ) (property "Datasheet" "" - (at 281.94 224.79 0) + (at 140.97 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10763,7 +13689,7 @@ ) ) (property "Description" "" - (at 281.94 224.79 0) + (at 140.97 54.61 0) (show_name no) (do_not_autoplace no) (effects @@ -10772,8 +13698,8 @@ ) ) ) - (property "LCSC" "C2286" - (at 281.94 224.79 0) + (property "LCSC" "C1525" + (at 140.97 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10784,23 +13710,23 @@ ) ) (pin "1" - (uuid "19c0c929-da8d-4987-8d68-c592430c0aff") + (uuid "277088b5-954c-46bb-bd97-eb34e7160918") ) (pin "2" - (uuid "705f9f34-9596-4e06-87dc-31763dfa2cef") + (uuid "7eccb325-3b6d-438b-ba2b-7c5e35739551") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "D7") + (reference "C4") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 45.72 374.65 0) + (lib_id "power:GND") + (at 491.49 302.26 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -10808,9 +13734,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "03ba48d6-dea5-4695-911a-ed722e7f4809") - (property "Reference" "TP15" - (at 45.72 367.792 0) + (fields_autoplaced yes) + (uuid "18264ec0-8c2e-4b0a-98c6-ad4b809bd59b") + (property "Reference" "#PWR022" + (at 491.49 308.61 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -10819,8 +13747,8 @@ ) ) ) - (property "Value" "I2C_SDA" - (at 45.72 369.57 0) + (property "Value" "GND" + (at 491.49 307.34 0) (show_name no) (do_not_autoplace no) (effects @@ -10829,8 +13757,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 45.72 374.65 0) + (property "Footprint" "" + (at 491.49 302.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10841,7 +13769,7 @@ ) ) (property "Datasheet" "" - (at 45.72 374.65 0) + (at 491.49 302.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10851,8 +13779,9 @@ ) ) ) - (property "Description" "" - (at 45.72 374.65 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 491.49 302.26 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -10862,20 +13791,20 @@ ) ) (pin "1" - (uuid "47e95739-9496-42e2-b8b1-4b6073090296") + (uuid "2150148e-c50a-47db-a6e5-37fd6f9d6021") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP15") + (reference "#PWR022") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 298.45 373.38 0) + (lib_id "Connector:Screw_Terminal_01x02") + (at 121.92 248.92 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -10883,11 +13812,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "06646c41-5d1a-40e5-95b1-717aef9d2f19") - (property "Reference" "#PWR052" - (at 298.45 379.73 0) - (hide yes) + (uuid "19404298-16e8-4cfa-b0ee-a87e45e2497a") + (property "Reference" "J6" + (at 121.92 246.38 0) (show_name no) (do_not_autoplace no) (effects @@ -10896,8 +13823,8 @@ ) ) ) - (property "Value" "GND" - (at 298.45 378.46 0) + (property "Value" "SSR CTRL" + (at 121.92 254 0) (show_name no) (do_not_autoplace no) (effects @@ -10906,8 +13833,8 @@ ) ) ) - (property "Footprint" "" - (at 298.45 373.38 0) + (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (at 121.92 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10918,7 +13845,7 @@ ) ) (property "Datasheet" "" - (at 298.45 373.38 0) + (at 121.92 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10928,8 +13855,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 298.45 373.38 0) + (property "Description" "" + (at 121.92 248.92 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C474881" + (at 121.92 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10940,20 +13877,23 @@ ) ) (pin "1" - (uuid "ec26a6d1-8f73-43c3-a117-2605d2f6d6a9") + (uuid "cb8d667a-89e6-47f8-a88a-92baee524340") + ) + (pin "2" + (uuid "e810c7bc-cbd0-45d9-b5e7-4f06af40bcf3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR052") + (reference "J6") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 520.7 243.84 0) + (lib_id "Connector:TestPoint") + (at 90.17 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -10961,9 +13901,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "0860280d-6ba9-40e5-bcad-1876705f1e86") - (property "Reference" "R8" - (at 522.732 243.84 90) + (uuid "1a4e3a6a-f969-403a-8a63-045dca112a9c") + (property "Reference" "TP33" + (at 90.17 385.572 0) (show_name no) (do_not_autoplace no) (effects @@ -10972,8 +13912,8 @@ ) ) ) - (property "Value" "4.7k" - (at 520.7 243.84 90) + (property "Value" "ESP32_IO0" + (at 90.17 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -10982,8 +13922,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 520.7 243.84 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 90.17 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -10994,7 +13934,7 @@ ) ) (property "Datasheet" "" - (at 520.7 243.84 0) + (at 90.17 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11005,7 +13945,7 @@ ) ) (property "Description" "" - (at 520.7 243.84 0) + (at 90.17 392.43 0) (show_name no) (do_not_autoplace no) (effects @@ -11014,8 +13954,32 @@ ) ) ) - (property "LCSC" "C25900" - (at 520.7 243.84 0) + (pin "1" + (uuid "0af67704-3d29-4455-990c-b5502891ca25") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "TP33") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+3.3V") + (at 132.08 162.56 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "1b3b2115-86d0-4ada-8892-7da483e25c21") + (property "Reference" "#PWR059" + (at 132.08 166.37 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11025,24 +13989,64 @@ ) ) ) - (pin "1" - (uuid "557fb279-e4e3-40b3-ba5c-22628c135175") + (property "Value" "+3.3V" + (at 132.08 157.48 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) ) - (pin "2" - (uuid "c5ee6c8d-86e3-4916-a096-a51b104d3dab") + (property "Footprint" "" + (at 132.08 162.56 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 132.08 162.56 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 132.08 162.56 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "f131574e-f09a-4842-96e7-c8b3e092934b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R8") + (reference "#PWR059") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 434.34 238.76 0) + (lib_id "Device:C") + (at 330.2 369.57 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11050,31 +14054,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "0916ded6-218e-4f13-b538-4a5bf593f625") - (property "Reference" "#PWR025" - (at 434.34 242.57 0) - (hide yes) + (uuid "204431dd-bf28-4758-b7ea-72deeb967da2") + (property "Reference" "C25" + (at 330.835 367.03 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "+3.3V" - (at 434.34 233.68 0) + (property "Value" "220nF" + (at 330.835 372.11 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "" - (at 434.34 238.76 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 330.2 369.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11085,7 +14089,7 @@ ) ) (property "Datasheet" "" - (at 434.34 238.76 0) + (at 330.2 369.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11095,8 +14099,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 434.34 238.76 0) + (property "Description" "" + (at 330.2 369.57 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C16772" + (at 330.2 369.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11107,20 +14121,23 @@ ) ) (pin "1" - (uuid "f4631e44-6452-4ca1-a6ff-e63faa26ea31") + (uuid "1dcec847-c9f3-415f-9700-e6abaffe56bb") + ) + (pin "2" + (uuid "f81c6109-096c-4071-8c12-ce08ca6530d2") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR025") + (reference "C25") (unit 1) ) ) ) ) (symbol - (lib_id "Sensor_Temperature:MAX31856") - (at 516.89 147.32 0) + (lib_id "Connector:TestPoint") + (at 106.68 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11128,31 +14145,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "0e3603f9-2b09-4cea-a29d-ed61f79d69d7") - (property "Reference" "U4" - (at 509.27 133.35 0) + (uuid "21389f5f-96fa-4ecd-8a33-a1428f801b2b") + (property "Reference" "TP34" + (at 106.68 385.572 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify right) ) ) - (property "Value" "MAX31856" - (at 530.86 133.35 0) + (property "Value" "COIL_PERMIT" + (at 106.68 387.35 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify right) ) ) - (property "Footprint" "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" - (at 516.89 147.32 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 106.68 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11163,7 +14178,7 @@ ) ) (property "Datasheet" "" - (at 516.89 147.32 0) + (at 106.68 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11174,18 +14189,7 @@ ) ) (property "Description" "" - (at 516.89 147.32 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C2653162" - (at 516.89 147.32 0) - (hide yes) + (at 106.68 392.43 0) (show_name no) (do_not_autoplace no) (effects @@ -11195,51 +14199,12 @@ ) ) (pin "1" - (uuid "60a56fc2-c003-471c-8e2b-e7dacc246dd8") - ) - (pin "2" - (uuid "0527693b-32f7-416f-9075-ace5fae804ba") - ) - (pin "3" - (uuid "fc9df4e7-253a-442b-b077-6534c27d7c6c") - ) - (pin "4" - (uuid "2ea812f4-d275-4f61-8659-3f24275ce8e2") - ) - (pin "5" - (uuid "63dfdcd9-d49f-42cf-9133-a039df19e3f9") - ) - (pin "6" - (uuid "33aba3c2-ca40-40f6-81cb-155811aeb63b") - ) - (pin "7" - (uuid "4b9cb44e-6751-4212-874d-d728625797dc") - ) - (pin "8" - (uuid "628557ef-d621-4bfd-879d-07c854202b73") - ) - (pin "9" - (uuid "43169238-4b72-431c-b65d-8ca87945e053") - ) - (pin "10" - (uuid "f3a1d760-99ec-4429-bc5e-856e03c81552") - ) - (pin "11" - (uuid "5af892c4-1cdb-4409-977e-4bab8723d8a4") - ) - (pin "12" - (uuid "cfc15842-33bd-42c0-8347-311762baf93f") - ) - (pin "13" - (uuid "84ea81e2-7a72-4bf4-a0a3-5ddc8178145d") - ) - (pin "14" - (uuid "82db1e20-c76d-42e5-ab13-0fafe4036bfb") + (uuid "955bf972-bcba-4e52-ac06-9f8b8856820e") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "U4") + (reference "TP34") (unit 1) ) ) @@ -11247,7 +14212,7 @@ ) (symbol (lib_id "Device:C") - (at 425.45 261.62 0) + (at 532.13 121.92 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11255,9 +14220,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "0e8d4150-f0d2-4bdc-8676-9c0befd5628e") - (property "Reference" "C20" - (at 426.085 259.08 0) + (uuid "22c0438b-3843-44a3-b1d7-5fe4fe7fbdcf") + (property "Reference" "C27" + (at 532.765 119.38 0) (show_name no) (do_not_autoplace no) (effects @@ -11267,8 +14232,8 @@ (justify left) ) ) - (property "Value" "100nF" - (at 426.085 264.16 0) + (property "Value" "10uF" + (at 532.765 124.46 0) (show_name no) (do_not_autoplace no) (effects @@ -11278,8 +14243,8 @@ (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 425.45 261.62 0) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" + (at 532.13 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11290,7 +14255,7 @@ ) ) (property "Datasheet" "" - (at 425.45 261.62 0) + (at 532.13 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11301,7 +14266,7 @@ ) ) (property "Description" "" - (at 425.45 261.62 0) + (at 532.13 121.92 0) (show_name no) (do_not_autoplace no) (effects @@ -11310,8 +14275,8 @@ ) ) ) - (property "LCSC" "C1525" - (at 425.45 261.62 0) + (property "LCSC" "C15850" + (at 532.13 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11322,23 +14287,23 @@ ) ) (pin "1" - (uuid "3de8492d-fd31-4def-8885-5805c9e9f107") + (uuid "1c4ef3db-ed38-4d85-aa5b-2db0f9313a13") ) (pin "2" - (uuid "b9d69a4d-3f05-4a74-b43a-18b434f519d6") + (uuid "07886fd0-2b6b-41e0-8b6a-0e925c125442") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C20") + (reference "C27") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 259.08 240.03 0) + (lib_id "Device:C") + (at 506.73 121.92 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11346,29 +14311,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "0ed6f317-6796-4bb1-86bf-61532521fbb4") - (property "Reference" "R20" - (at 261.112 240.03 90) + (uuid "242b824c-5f5e-426a-ada7-80214cb35100") + (property "Reference" "C19" + (at 507.365 119.38 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "47k" - (at 259.08 240.03 90) + (property "Value" "100nF" + (at 507.365 124.46 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 259.08 240.03 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 506.73 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11379,7 +14346,7 @@ ) ) (property "Datasheet" "" - (at 259.08 240.03 0) + (at 506.73 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11390,7 +14357,7 @@ ) ) (property "Description" "" - (at 259.08 240.03 0) + (at 506.73 121.92 0) (show_name no) (do_not_autoplace no) (effects @@ -11399,8 +14366,8 @@ ) ) ) - (property "LCSC" "C25792" - (at 259.08 240.03 0) + (property "LCSC" "C1525" + (at 506.73 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11410,24 +14377,24 @@ ) ) ) - (pin "1" - (uuid "2ef95b08-6e63-4009-8975-705676b04275") - ) (pin "2" - (uuid "4a5ebae1-b428-4226-a4b3-5b00dd86cc17") + (uuid "6a3a7365-9595-4ebd-9e08-119606a75977") + ) + (pin "1" + (uuid "4dfde518-bd47-4213-bc73-217a396b65fe") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R20") + (reference "C19") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 83.82 57.15 0) + (lib_id "Device:R") + (at 69.85 307.34 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11435,11 +14402,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "0ee4e1f2-aeff-4b53-9bd4-c8d0e6f9af47") - (property "Reference" "#PWR05" - (at 83.82 63.5 0) - (hide yes) + (uuid "26338c36-647b-4cc7-92c7-ba21de6fb1dc") + (property "Reference" "R23" + (at 71.882 307.34 90) (show_name no) (do_not_autoplace no) (effects @@ -11448,8 +14413,8 @@ ) ) ) - (property "Value" "GND" - (at 83.82 62.23 0) + (property "Value" "10k" + (at 69.85 307.34 90) (show_name no) (do_not_autoplace no) (effects @@ -11458,8 +14423,8 @@ ) ) ) - (property "Footprint" "" - (at 83.82 57.15 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 69.85 307.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11470,7 +14435,7 @@ ) ) (property "Datasheet" "" - (at 83.82 57.15 0) + (at 69.85 307.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11480,8 +14445,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 83.82 57.15 0) + (property "Description" "" + (at 69.85 307.34 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25744" + (at 69.85 307.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11492,20 +14467,23 @@ ) ) (pin "1" - (uuid "8ee63f7e-dc47-43ae-93be-2656eb37ed38") + (uuid "46823650-7827-4c6b-8348-36143e1b74e2") + ) + (pin "2" + (uuid "e390d7f1-eb36-4159-8432-e90a62ee1e4c") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR05") + (reference "R23") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 198.12 356.87 0) + (lib_id "Device:R") + (at 308.61 245.11 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11513,9 +14491,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "10406339-5c06-4550-8a14-f68ee18e4a61") - (property "Reference" "TP12" - (at 198.12 350.012 0) + (uuid "27d3a768-5d83-4034-96c2-8794e28e568a") + (property "Reference" "R33" + (at 310.642 245.11 90) (show_name no) (do_not_autoplace no) (effects @@ -11524,8 +14502,8 @@ ) ) ) - (property "Value" "TC2_DRDY" - (at 198.12 351.79 0) + (property "Value" "18k" + (at 308.61 245.11 90) (show_name no) (do_not_autoplace no) (effects @@ -11534,8 +14512,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 198.12 356.87 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 308.61 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11546,7 +14524,7 @@ ) ) (property "Datasheet" "" - (at 198.12 356.87 0) + (at 308.61 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11557,7 +14535,7 @@ ) ) (property "Description" "" - (at 198.12 356.87 0) + (at 308.61 245.11 0) (show_name no) (do_not_autoplace no) (effects @@ -11567,20 +14545,23 @@ ) ) (pin "1" - (uuid "e62975b0-2d3b-404d-8177-b9c0aa44e8df") + (uuid "1854bbd6-19e8-4693-986e-5255b0271aaf") + ) + (pin "2" + (uuid "53fd42a9-c19c-40c9-9d10-2fcf9f39b72e") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP12") + (reference "R33") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 182.88 356.87 0) + (lib_id "Device:R") + (at 93.98 237.49 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11588,9 +14569,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "13a9561c-9a2f-45dd-9ebd-6450072f4b34") - (property "Reference" "TP11" - (at 182.88 350.012 0) + (uuid "2a9d7d50-9b4a-457f-98c7-0073d14e7f56") + (property "Reference" "R15" + (at 96.012 237.49 90) (show_name no) (do_not_autoplace no) (effects @@ -11599,8 +14580,8 @@ ) ) ) - (property "Value" "TC1_DRDY" - (at 182.88 351.79 0) + (property "Value" "1k" + (at 93.98 237.49 90) (show_name no) (do_not_autoplace no) (effects @@ -11609,8 +14590,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 182.88 356.87 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 93.98 237.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11621,7 +14602,7 @@ ) ) (property "Datasheet" "" - (at 182.88 356.87 0) + (at 93.98 237.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11632,7 +14613,18 @@ ) ) (property "Description" "" - (at 182.88 356.87 0) + (at 93.98 237.49 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C11702" + (at 93.98 237.49 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -11642,12 +14634,15 @@ ) ) (pin "1" - (uuid "212d170c-863c-4910-a84b-387ee0786236") + (uuid "d71ce038-4ed6-41e0-809e-d909a00af68b") + ) + (pin "2" + (uuid "02347166-54e9-4e68-bea9-72db2f073914") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP11") + (reference "R15") (unit 1) ) ) @@ -11655,7 +14650,7 @@ ) (symbol (lib_id "power:GND") - (at 532.13 49.53 0) + (at 506.73 125.73 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11664,9 +14659,9 @@ (in_pos_files yes) (dnp no) (fields_autoplaced yes) - (uuid "142d24a3-d217-4327-b203-2d3f2d9eeaf5") - (property "Reference" "#PWR064" - (at 532.13 55.88 0) + (uuid "2af2fa03-d2b2-44cf-826d-465dbdecd226") + (property "Reference" "#PWR079" + (at 506.73 132.08 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11677,7 +14672,7 @@ ) ) (property "Value" "GND" - (at 532.13 54.61 0) + (at 506.73 130.81 0) (show_name no) (do_not_autoplace no) (effects @@ -11687,7 +14682,7 @@ ) ) (property "Footprint" "" - (at 532.13 49.53 0) + (at 506.73 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11698,7 +14693,7 @@ ) ) (property "Datasheet" "" - (at 532.13 49.53 0) + (at 506.73 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11709,7 +14704,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 532.13 49.53 0) + (at 506.73 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11720,12 +14715,12 @@ ) ) (pin "1" - (uuid "aa737af0-5b8a-412d-a584-0d6bcb203dd6") + (uuid "5db65fa6-11f0-443a-8727-76ae6d003b8d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR064") + (reference "#PWR079") (unit 1) ) ) @@ -11733,7 +14728,7 @@ ) (symbol (lib_id "Device:R") - (at 459.74 67.31 90) + (at 58.42 261.62 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11741,9 +14736,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "15e7f11e-276a-42b1-89fc-15ad7725f530") - (property "Reference" "R4" - (at 459.74 65.278 90) + (uuid "2c7b9496-f6c1-4901-b36e-a2b31a7f36d6") + (property "Reference" "R13" + (at 58.42 259.588 90) (show_name no) (do_not_autoplace no) (effects @@ -11753,7 +14748,7 @@ ) ) (property "Value" "100R" - (at 459.74 67.31 90) + (at 58.42 261.62 90) (show_name no) (do_not_autoplace no) (effects @@ -11763,7 +14758,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 459.74 67.31 0) + (at 58.42 261.62 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11774,7 +14769,7 @@ ) ) (property "Datasheet" "" - (at 459.74 67.31 0) + (at 58.42 261.62 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11785,7 +14780,7 @@ ) ) (property "Description" "" - (at 459.74 67.31 0) + (at 58.42 261.62 0) (show_name no) (do_not_autoplace no) (effects @@ -11795,7 +14790,7 @@ ) ) (property "LCSC" "C25076" - (at 459.74 67.31 0) + (at 58.42 261.62 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11806,23 +14801,23 @@ ) ) (pin "1" - (uuid "1f05c8a1-b9b5-4396-8d8d-071dfaab248d") + (uuid "e34c4a0d-1ba7-4a47-a72d-7f3223b86d58") ) (pin "2" - (uuid "1294bce1-d817-4bad-9624-f5c38fcf5cc5") + (uuid "b7cf1c1f-e373-4057-a4e5-4ea54e82439c") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R4") + (reference "R13") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 532.13 119.38 0) + (lib_id "Transistor_FET:Q_NMOS_GSD") + (at 76.2 261.62 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11830,9 +14825,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "17066cb4-1886-41b3-b68c-32caaa2b3092") - (property "Reference" "C19" - (at 532.765 116.84 0) + (uuid "2d7fb491-203b-47d1-b082-820c9c9f8e79") + (property "Reference" "Q1" + (at 81.28 259.715 0) (show_name no) (do_not_autoplace no) (effects @@ -11842,8 +14837,8 @@ (justify left) ) ) - (property "Value" "10uF" - (at 532.765 121.92 0) + (property "Value" "AO3400A" + (at 81.28 261.62 0) (show_name no) (do_not_autoplace no) (effects @@ -11853,8 +14848,8 @@ (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" - (at 532.13 119.38 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23" + (at 76.2 261.62 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11865,7 +14860,7 @@ ) ) (property "Datasheet" "" - (at 532.13 119.38 0) + (at 76.2 261.62 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11876,7 +14871,7 @@ ) ) (property "Description" "" - (at 532.13 119.38 0) + (at 76.2 261.62 0) (show_name no) (do_not_autoplace no) (effects @@ -11885,8 +14880,8 @@ ) ) ) - (property "LCSC" "C15850" - (at 532.13 119.38 0) + (property "LCSC" "C20917" + (at 76.2 261.62 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11897,23 +14892,26 @@ ) ) (pin "1" - (uuid "9b104bdf-0e74-43fd-be9e-45396e770086") + (uuid "64ce99af-cac7-4700-985e-d4b0a89de8ec") ) (pin "2" - (uuid "ab4395f4-cb86-456e-81f9-c2f757652031") + (uuid "54b4d765-2ded-495c-b835-66a3efb1d078") + ) + (pin "3" + (uuid "58557a43-1021-46f7-ba42-79e7bdff3222") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C19") + (reference "Q1") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 140.97 54.61 0) + (lib_id "power:GND") + (at 339.09 54.61 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -11921,31 +14919,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "174ce40b-db46-409a-9fa5-2d5f70d1b8cc") - (property "Reference" "C4" - (at 141.605 52.07 0) + (fields_autoplaced yes) + (uuid "2dd6de5d-2c79-414a-a763-07ee9f2dac3c") + (property "Reference" "#PWR070" + (at 339.09 60.96 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "100nF" - (at 141.605 57.15 0) + (property "Value" "GND" + (at 339.09 59.69 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 140.97 54.61 0) + (property "Footprint" "" + (at 339.09 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11956,7 +14954,7 @@ ) ) (property "Datasheet" "" - (at 140.97 54.61 0) + (at 339.09 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11966,18 +14964,8 @@ ) ) ) - (property "Description" "" - (at 140.97 54.61 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C1525" - (at 140.97 54.61 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 339.09 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -11988,23 +14976,20 @@ ) ) (pin "1" - (uuid "277088b5-954c-46bb-bd97-eb34e7160918") - ) - (pin "2" - (uuid "7eccb325-3b6d-438b-ba2b-7c5e35739551") + (uuid "b85d1e5e-d45c-40c7-89c4-306d820fb634") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C4") + (reference "#PWR070") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Screw_Terminal_01x02") - (at 121.92 198.12 0) + (lib_id "power:+3.3V") + (at 241.3 72.39 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12012,19 +14997,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "19404298-16e8-4cfa-b0ee-a87e45e2497a") - (property "Reference" "J6" - (at 121.92 195.58 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Value" "SSR1 CTRL" - (at 121.92 203.2 0) + (fields_autoplaced yes) + (uuid "312884e0-655c-4782-b128-68cf9188a773") + (property "Reference" "#PWR066" + (at 241.3 76.2 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -12033,9 +15010,8 @@ ) ) ) - (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (at 121.92 198.12 0) - (hide yes) + (property "Value" "+3.3V" + (at 241.3 67.31 0) (show_name no) (do_not_autoplace no) (effects @@ -12044,8 +15020,8 @@ ) ) ) - (property "Datasheet" "" - (at 121.92 198.12 0) + (property "Footprint" "" + (at 241.3 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12055,8 +15031,9 @@ ) ) ) - (property "Description" "" - (at 121.92 198.12 0) + (property "Datasheet" "" + (at 241.3 72.39 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -12065,8 +15042,8 @@ ) ) ) - (property "LCSC" "C474881" - (at 121.92 198.12 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 241.3 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12077,15 +15054,12 @@ ) ) (pin "1" - (uuid "cb8d667a-89e6-47f8-a88a-92baee524340") - ) - (pin "2" - (uuid "e810c7bc-cbd0-45d9-b5e7-4f06af40bcf3") + (uuid "6c0222b9-0491-4a95-a36a-1a61e06620d3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "J6") + (reference "#PWR066") (unit 1) ) ) @@ -12093,7 +15067,7 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 121.92 392.43 0) + (at 74.93 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12101,9 +15075,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "1a4e3a6a-f969-403a-8a63-045dca112a9c") - (property "Reference" "TP33" - (at 121.92 385.572 0) + (uuid "318dccf0-d69b-4f53-ab9d-9139beceffbc") + (property "Reference" "TP19" + (at 74.93 367.792 0) (show_name no) (do_not_autoplace no) (effects @@ -12112,8 +15086,8 @@ ) ) ) - (property "Value" "MCU_IO0" - (at 121.92 387.35 0) + (property "Value" "HEAT_EN" + (at 74.93 369.57 0) (show_name no) (do_not_autoplace no) (effects @@ -12123,7 +15097,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 121.92 392.43 0) + (at 74.93 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12134,7 +15108,7 @@ ) ) (property "Datasheet" "" - (at 121.92 392.43 0) + (at 74.93 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12145,7 +15119,7 @@ ) ) (property "Description" "" - (at 121.92 392.43 0) + (at 74.93 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -12155,20 +15129,20 @@ ) ) (pin "1" - (uuid "0af67704-3d29-4455-990c-b5502891ca25") + (uuid "04aefd9d-5f3e-405e-9f75-217154631d80") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP33") + (reference "TP19") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 525.78 240.03 0) + (lib_id "Device:R") + (at 274.32 370.84 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12176,11 +15150,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "1b3b2115-86d0-4ada-8892-7da483e25c21") - (property "Reference" "#PWR059" - (at 525.78 243.84 0) - (hide yes) + (uuid "3296a42d-7708-44da-9f27-f55acf086dfe") + (property "Reference" "R25" + (at 276.352 370.84 90) (show_name no) (do_not_autoplace no) (effects @@ -12189,8 +15161,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 525.78 234.95 0) + (property "Value" "10k" + (at 274.32 370.84 90) (show_name no) (do_not_autoplace no) (effects @@ -12199,8 +15171,8 @@ ) ) ) - (property "Footprint" "" - (at 525.78 240.03 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 274.32 370.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12211,7 +15183,7 @@ ) ) (property "Datasheet" "" - (at 525.78 240.03 0) + (at 274.32 370.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12221,8 +15193,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 525.78 240.03 0) + (property "Description" "" + (at 274.32 370.84 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25744" + (at 274.32 370.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12233,12 +15215,15 @@ ) ) (pin "1" - (uuid "f131574e-f09a-4842-96e7-c8b3e092934b") + (uuid "d8575e77-ec4c-4b1b-93aa-b42838dff7a8") + ) + (pin "2" + (uuid "b619777d-fde2-4932-8e1f-6398c66299e4") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR059") + (reference "R25") (unit 1) ) ) @@ -12246,7 +15231,7 @@ ) (symbol (lib_id "power:GND") - (at 532.13 123.19 0) + (at 69.85 311.15 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12255,9 +15240,9 @@ (in_pos_files yes) (dnp no) (fields_autoplaced yes) - (uuid "1b8d7898-5fce-4661-888f-de91ea18f78b") - (property "Reference" "#PWR046" - (at 532.13 129.54 0) + (uuid "32ae1f98-0d9a-439e-96df-0e89570d90b9") + (property "Reference" "#PWR032" + (at 69.85 317.5 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12268,7 +15253,7 @@ ) ) (property "Value" "GND" - (at 532.13 128.27 0) + (at 69.85 316.23 0) (show_name no) (do_not_autoplace no) (effects @@ -12278,7 +15263,7 @@ ) ) (property "Footprint" "" - (at 532.13 123.19 0) + (at 69.85 311.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12289,7 +15274,7 @@ ) ) (property "Datasheet" "" - (at 532.13 123.19 0) + (at 69.85 311.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12300,7 +15285,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 532.13 123.19 0) + (at 69.85 311.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12311,12 +15296,12 @@ ) ) (pin "1" - (uuid "07c602d7-e529-411a-8a1c-fcd67d6abf8e") + (uuid "a240f809-4e8d-4c11-8304-446e91a1652a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR046") + (reference "#PWR032") (unit 1) ) ) @@ -12324,7 +15309,7 @@ ) (symbol (lib_id "Device:C") - (at 284.48 370.84 0) + (at 481.33 157.48 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12332,9 +15317,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "204431dd-bf28-4758-b7ea-72deeb967da2") - (property "Reference" "C25" - (at 285.115 368.3 0) + (uuid "32c14177-6f20-40ce-84fc-0e307754b0fb") + (property "Reference" "C17" + (at 481.965 154.94 0) (show_name no) (do_not_autoplace no) (effects @@ -12344,8 +15329,8 @@ (justify left) ) ) - (property "Value" "220nF" - (at 285.115 373.38 0) + (property "Value" "100pF" + (at 481.965 160.02 0) (show_name no) (do_not_autoplace no) (effects @@ -12356,7 +15341,7 @@ ) ) (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 284.48 370.84 0) + (at 481.33 157.48 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12367,7 +15352,7 @@ ) ) (property "Datasheet" "" - (at 284.48 370.84 0) + (at 481.33 157.48 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12378,7 +15363,7 @@ ) ) (property "Description" "" - (at 284.48 370.84 0) + (at 481.33 157.48 0) (show_name no) (do_not_autoplace no) (effects @@ -12387,8 +15372,8 @@ ) ) ) - (property "LCSC" "C16772" - (at 284.48 370.84 0) + (property "LCSC" "C26409" + (at 481.33 157.48 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12399,23 +15384,23 @@ ) ) (pin "1" - (uuid "1dcec847-c9f3-415f-9700-e6abaffe56bb") + (uuid "c78475dc-2b21-420d-9e4c-2df3bef8ea09") ) (pin "2" - (uuid "f81c6109-096c-4071-8c12-ce08ca6530d2") + (uuid "a75a395d-12e9-440e-899a-caff1089a3d9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C25") + (reference "C17") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 69.85 256.54 0) + (lib_id "Transistor_FET:Q_NMOS_GSD") + (at 85.09 300.99 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12423,29 +15408,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "26338c36-647b-4cc7-92c7-ba21de6fb1dc") - (property "Reference" "R23" - (at 71.882 256.54 90) + (uuid "3301693c-7eb6-4965-a063-5d0fb0f45076") + (property "Reference" "Q4" + (at 90.17 299.085 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "10k" - (at 69.85 256.54 90) + (property "Value" "AO3400A" + (at 90.17 300.99 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 69.85 256.54 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23" + (at 85.09 300.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12456,7 +15443,7 @@ ) ) (property "Datasheet" "" - (at 69.85 256.54 0) + (at 85.09 300.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12467,7 +15454,7 @@ ) ) (property "Description" "" - (at 69.85 256.54 0) + (at 85.09 300.99 0) (show_name no) (do_not_autoplace no) (effects @@ -12476,8 +15463,8 @@ ) ) ) - (property "LCSC" "C25744" - (at 69.85 256.54 0) + (property "LCSC" "C20917" + (at 85.09 300.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12488,23 +15475,26 @@ ) ) (pin "1" - (uuid "46823650-7827-4c6b-8348-36143e1b74e2") + (uuid "0c64cac9-38c6-46a3-b716-c72a5c74d1de") ) (pin "2" - (uuid "e390d7f1-eb36-4159-8432-e90a62ee1e4c") + (uuid "fca37fd1-67cf-4120-88ae-dfb5c20b74cd") + ) + (pin "3" + (uuid "d88ac63b-fe56-4e1e-8b57-5ff9103ba409") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R23") + (reference "Q4") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 519.43 109.22 0) + (lib_id "Connector:TestPoint") + (at 44.45 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12512,11 +15502,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "29b316cf-61f9-4a2c-a107-2f5d72833b13") - (property "Reference" "#PWR023" - (at 519.43 113.03 0) - (hide yes) + (uuid "34b262da-bfea-4f2b-9a04-fb876ae3d712") + (property "Reference" "TP7" + (at 44.45 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -12525,8 +15513,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 519.43 104.14 0) + (property "Value" "TC1_MOSI" + (at 44.45 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -12535,8 +15523,8 @@ ) ) ) - (property "Footprint" "" - (at 519.43 109.22 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 44.45 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12547,7 +15535,7 @@ ) ) (property "Datasheet" "" - (at 519.43 109.22 0) + (at 44.45 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12557,9 +15545,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 519.43 109.22 0) - (hide yes) + (property "Description" "" + (at 44.45 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -12569,20 +15556,20 @@ ) ) (pin "1" - (uuid "7bd3e69f-5eef-4836-9e97-68024e46ecef") + (uuid "0bd6f675-3b4a-46db-a737-b61be37a7e5d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR023") + (reference "TP7") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 93.98 186.69 0) + (lib_id "power:GND") + (at 287.02 72.39 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12590,9 +15577,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "2a9d7d50-9b4a-457f-98c7-0073d14e7f56") - (property "Reference" "R15" - (at 96.012 186.69 90) + (fields_autoplaced yes) + (uuid "34df4e37-4123-4111-8465-71c20998fa0f") + (property "Reference" "#PWR057" + (at 287.02 78.74 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -12601,8 +15590,8 @@ ) ) ) - (property "Value" "1k" - (at 93.98 186.69 90) + (property "Value" "GND" + (at 287.02 77.47 0) (show_name no) (do_not_autoplace no) (effects @@ -12611,8 +15600,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 93.98 186.69 0) + (property "Footprint" "" + (at 287.02 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12623,7 +15612,7 @@ ) ) (property "Datasheet" "" - (at 93.98 186.69 0) + (at 287.02 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12633,18 +15622,8 @@ ) ) ) - (property "Description" "" - (at 93.98 186.69 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C11702" - (at 93.98 186.69 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 287.02 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12655,23 +15634,20 @@ ) ) (pin "1" - (uuid "d71ce038-4ed6-41e0-809e-d909a00af68b") - ) - (pin "2" - (uuid "02347166-54e9-4e68-bea9-72db2f073914") + (uuid "c32f05d1-1039-4a1b-a154-26b493a2e316") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R15") + (reference "#PWR057") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 58.42 210.82 90) + (lib_id "Connector:Screw_Terminal_01x02") + (at 344.17 226.06 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12679,9 +15655,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "2c7b9496-f6c1-4901-b36e-a2b31a7f36d6") - (property "Reference" "R13" - (at 58.42 208.788 90) + (uuid "35048995-2b9f-4748-9232-7c27df555002") + (property "Reference" "J8" + (at 344.17 223.52 0) (show_name no) (do_not_autoplace no) (effects @@ -12690,8 +15666,8 @@ ) ) ) - (property "Value" "100R" - (at 58.42 210.82 90) + (property "Value" "CONTACTOR COIL 5V" + (at 344.17 231.14 0) (show_name no) (do_not_autoplace no) (effects @@ -12700,8 +15676,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 58.42 210.82 0) + (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (at 344.17 226.06 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12712,7 +15688,7 @@ ) ) (property "Datasheet" "" - (at 58.42 210.82 0) + (at 344.17 226.06 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12723,7 +15699,7 @@ ) ) (property "Description" "" - (at 58.42 210.82 0) + (at 344.17 226.06 0) (show_name no) (do_not_autoplace no) (effects @@ -12732,8 +15708,8 @@ ) ) ) - (property "LCSC" "C25076" - (at 58.42 210.82 0) + (property "LCSC" "C474881" + (at 344.17 226.06 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12744,23 +15720,23 @@ ) ) (pin "1" - (uuid "e34c4a0d-1ba7-4a47-a72d-7f3223b86d58") + (uuid "f8b87786-80cd-4b88-8409-076c67d9b948") ) (pin "2" - (uuid "b7cf1c1f-e373-4057-a4e5-4ea54e82439c") + (uuid "41de0bc3-acf9-4686-8ab8-430af1bbf10e") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R13") + (reference "J8") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 487.68 157.48 0) + (lib_id "Device:RotaryEncoder_Switch") + (at 58.42 173.99 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12768,31 +15744,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "2cdcf8c0-8e32-4d9b-81ad-9ff7ae04b6a4") - (property "Reference" "C16" - (at 488.315 154.94 0) + (uuid "36485909-9d6f-4245-8e20-98a2e3041944") + (property "Reference" "SW3" + (at 58.42 167.386 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "100pF" - (at 488.315 160.02 0) + (property "Value" "ENCODER" + (at 58.42 180.594 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 487.68 157.48 0) + (property "Footprint" "Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm" + (at 58.42 173.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12803,7 +15777,7 @@ ) ) (property "Datasheet" "" - (at 487.68 157.48 0) + (at 58.42 173.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12814,7 +15788,7 @@ ) ) (property "Description" "" - (at 487.68 157.48 0) + (at 58.42 173.99 0) (show_name no) (do_not_autoplace no) (effects @@ -12823,8 +15797,8 @@ ) ) ) - (property "LCSC" "C26409" - (at 487.68 157.48 0) + (property "LCSC" "C7275025" + (at 58.42 173.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12834,24 +15808,33 @@ ) ) ) - (pin "1" - (uuid "637d2eb3-9147-4819-987e-f26b0e170d26") + (pin "A" + (uuid "764cae2d-9aea-4fde-b5b0-66818364de17") ) - (pin "2" - (uuid "fc6b64df-23e8-4e76-9109-09597b5dffe7") + (pin "B" + (uuid "e998d749-c8e9-42ce-acd9-223c72b16dce") + ) + (pin "C" + (uuid "bceaf5ad-76bb-463c-bc39-f7807130b920") + ) + (pin "S1" + (uuid "3e021455-eeb5-4c7a-945c-1ff83d4bb366") + ) + (pin "S2" + (uuid "29476bcd-dbce-465a-bc1d-099b15f1879e") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C16") + (reference "SW3") (unit 1) ) ) ) ) (symbol - (lib_id "Transistor_FET:Q_NMOS_GSD") - (at 76.2 210.82 0) + (lib_id "Connector:TestPoint") + (at 105.41 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12859,31 +15842,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "2d7fb491-203b-47d1-b082-820c9c9f8e79") - (property "Reference" "Q1" - (at 81.28 208.915 0) + (uuid "36ce296a-dcd5-4f6d-a449-8a72c797f031") + (property "Reference" "TP21" + (at 105.41 367.792 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "AO3400A" - (at 81.28 210.82 0) + (property "Value" "HEAT_EN_DC" + (at 105.41 369.57 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Package_TO_SOT_SMD:SOT-23" - (at 76.2 210.82 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 105.41 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12894,7 +15875,7 @@ ) ) (property "Datasheet" "" - (at 76.2 210.82 0) + (at 105.41 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12905,18 +15886,7 @@ ) ) (property "Description" "" - (at 76.2 210.82 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C20917" - (at 76.2 210.82 0) - (hide yes) + (at 105.41 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -12926,26 +15896,20 @@ ) ) (pin "1" - (uuid "64ce99af-cac7-4700-985e-d4b0a89de8ec") - ) - (pin "2" - (uuid "54b4d765-2ded-495c-b835-66a3efb1d078") - ) - (pin "3" - (uuid "58557a43-1021-46f7-ba42-79e7bdff3222") + (uuid "8b607e3c-3402-4698-b334-a0141e4bace3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "Q1") + (reference "TP21") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 339.09 54.61 0) + (lib_id "Device:R") + (at 308.61 204.47 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -12953,11 +15917,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "2dd6de5d-2c79-414a-a763-07ee9f2dac3c") - (property "Reference" "#PWR070" - (at 339.09 60.96 0) - (hide yes) + (uuid "37fb3a4b-2563-4a12-8927-aa95cf0d8534") + (property "Reference" "R30" + (at 310.642 204.47 90) (show_name no) (do_not_autoplace no) (effects @@ -12966,8 +15928,8 @@ ) ) ) - (property "Value" "GND" - (at 339.09 59.69 0) + (property "Value" "10k" + (at 308.61 204.47 90) (show_name no) (do_not_autoplace no) (effects @@ -12976,8 +15938,8 @@ ) ) ) - (property "Footprint" "" - (at 339.09 54.61 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 308.61 204.47 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12988,7 +15950,7 @@ ) ) (property "Datasheet" "" - (at 339.09 54.61 0) + (at 308.61 204.47 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -12998,9 +15960,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 339.09 54.61 0) - (hide yes) + (property "Description" "" + (at 308.61 204.47 0) (show_name no) (do_not_autoplace no) (effects @@ -13010,20 +15971,23 @@ ) ) (pin "1" - (uuid "b85d1e5e-d45c-40c7-89c4-306d820fb634") + (uuid "76eab812-a293-4dc7-8a0c-dd9769c4831a") + ) + (pin "2" + (uuid "b0c6b579-db05-4f8c-a226-e6800097658c") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR070") + (reference "R30") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 241.3 72.39 0) + (lib_id "Connector:Screw_Terminal_01x02") + (at 439.42 76.2 180) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13031,11 +15995,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "312884e0-655c-4782-b128-68cf9188a773") - (property "Reference" "#PWR066" - (at 241.3 76.2 0) - (hide yes) + (uuid "3852952b-844a-4a0b-a786-803839e3e502") + (property "Reference" "J3" + (at 439.42 78.74 0) (show_name no) (do_not_autoplace no) (effects @@ -13044,8 +16006,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 241.3 67.31 0) + (property "Value" "TC1 KILN (K)" + (at 439.42 71.12 0) (show_name no) (do_not_autoplace no) (effects @@ -13054,8 +16016,8 @@ ) ) ) - (property "Footprint" "" - (at 241.3 72.39 0) + (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (at 439.42 76.2 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13066,7 +16028,7 @@ ) ) (property "Datasheet" "" - (at 241.3 72.39 0) + (at 439.42 76.2 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13076,8 +16038,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 241.3 72.39 0) + (property "Description" "" + (at 439.42 76.2 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C474881" + (at 439.42 76.2 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13088,12 +16060,15 @@ ) ) (pin "1" - (uuid "6c0222b9-0491-4a95-a36a-1a61e06620d3") + (uuid "455306e2-f4b1-43ce-a7ac-aefc946552c5") + ) + (pin "2" + (uuid "a3419bbc-f06d-46d8-a809-fa9433371bcc") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR066") + (reference "J3") (unit 1) ) ) @@ -13101,7 +16076,7 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 106.68 374.65 0) + (at 105.41 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13109,9 +16084,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "318dccf0-d69b-4f53-ab9d-9139beceffbc") - (property "Reference" "TP19" - (at 106.68 367.792 0) + (uuid "3882768a-12e3-4533-9df3-7d581dc5eecd") + (property "Reference" "TP10" + (at 105.41 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -13120,8 +16095,8 @@ ) ) ) - (property "Value" "HEAT_EN" - (at 106.68 369.57 0) + (property "Value" "TC2_SCK" + (at 105.41 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -13131,7 +16106,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 106.68 374.65 0) + (at 105.41 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13142,7 +16117,7 @@ ) ) (property "Datasheet" "" - (at 106.68 374.65 0) + (at 105.41 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13153,7 +16128,7 @@ ) ) (property "Description" "" - (at 106.68 374.65 0) + (at 105.41 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -13163,20 +16138,20 @@ ) ) (pin "1" - (uuid "04aefd9d-5f3e-405e-9f75-217154631d80") + (uuid "e560d01c-12fb-4f1b-98a8-487d5c9d9ab9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP19") + (reference "TP10") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 326.39 370.84 0) + (lib_id "power:GND") + (at 532.13 125.73 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13184,9 +16159,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "3296a42d-7708-44da-9f27-f55acf086dfe") - (property "Reference" "R25" - (at 328.422 370.84 90) + (fields_autoplaced yes) + (uuid "389c2054-5af2-4a36-af76-346f0e78e6aa") + (property "Reference" "#PWR081" + (at 532.13 132.08 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -13195,8 +16172,8 @@ ) ) ) - (property "Value" "10k" - (at 326.39 370.84 90) + (property "Value" "GND" + (at 532.13 130.81 0) (show_name no) (do_not_autoplace no) (effects @@ -13205,8 +16182,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 326.39 370.84 0) + (property "Footprint" "" + (at 532.13 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13217,7 +16194,7 @@ ) ) (property "Datasheet" "" - (at 326.39 370.84 0) + (at 532.13 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13227,18 +16204,8 @@ ) ) ) - (property "Description" "" - (at 326.39 370.84 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C25744" - (at 326.39 370.84 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 532.13 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13249,23 +16216,20 @@ ) ) (pin "1" - (uuid "d8575e77-ec4c-4b1b-93aa-b42838dff7a8") - ) - (pin "2" - (uuid "b619777d-fde2-4932-8e1f-6398c66299e4") + (uuid "8e12820f-a564-40f3-8485-a7b945237f7b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R25") + (reference "#PWR081") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 69.85 260.35 0) + (lib_id "Switch:SW_Push") + (at 228.6 110.49 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13273,21 +16237,20 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "32ae1f98-0d9a-439e-96df-0e89570d90b9") - (property "Reference" "#PWR032" - (at 69.85 266.7 0) - (hide yes) + (uuid "3a1fa904-f175-46fb-a7f4-b90010f54b5d") + (property "Reference" "SW2" + (at 229.87 107.95 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "GND" - (at 69.85 265.43 0) + (property "Value" "BOOT" + (at 228.6 112.014 0) (show_name no) (do_not_autoplace no) (effects @@ -13296,8 +16259,8 @@ ) ) ) - (property "Footprint" "" - (at 69.85 260.35 0) + (property "Footprint" "Button_Switch_THT:SW_PUSH_6mm_H5mm" + (at 228.6 110.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13308,7 +16271,7 @@ ) ) (property "Datasheet" "" - (at 69.85 260.35 0) + (at 228.6 110.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13318,8 +16281,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 69.85 260.35 0) + (property "Description" "" + (at 228.6 110.49 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C111609" + (at 228.6 110.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13330,20 +16303,23 @@ ) ) (pin "1" - (uuid "a240f809-4e8d-4c11-8304-446e91a1652a") + (uuid "f523999b-d6f7-4744-816d-9f3352000bd5") + ) + (pin "2" + (uuid "1076350a-3f43-453d-8ed0-9fd6b5a2adbd") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR032") + (reference "SW2") (unit 1) ) ) ) ) (symbol - (lib_id "Transistor_FET:Q_NMOS_GSD") - (at 85.09 250.19 0) + (lib_id "Device:D") + (at 323.85 223.52 270) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13351,31 +16327,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "3301693c-7eb6-4965-a063-5d0fb0f45076") - (property "Reference" "Q4" - (at 90.17 248.285 0) + (uuid "3a8633cc-3228-448d-8836-24c35d249308") + (property "Reference" "D6" + (at 326.39 223.52 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "AO3400A" - (at 90.17 250.19 0) + (property "Value" "1N4148W" + (at 321.31 223.52 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Package_TO_SOT_SMD:SOT-23" - (at 85.09 250.19 0) + (property "Footprint" "Diode_SMD:D_SOD-123" + (at 323.85 223.52 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13386,7 +16360,7 @@ ) ) (property "Datasheet" "" - (at 85.09 250.19 0) + (at 323.85 223.52 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13397,7 +16371,7 @@ ) ) (property "Description" "" - (at 85.09 250.19 0) + (at 323.85 223.52 0) (show_name no) (do_not_autoplace no) (effects @@ -13406,8 +16380,8 @@ ) ) ) - (property "LCSC" "C20917" - (at 85.09 250.19 0) + (property "LCSC" "C2099" + (at 323.85 223.52 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13418,26 +16392,23 @@ ) ) (pin "1" - (uuid "0c64cac9-38c6-46a3-b716-c72a5c74d1de") + (uuid "e65edf3d-3de0-4efc-b1ae-cfdb6a4d2aa3") ) (pin "2" - (uuid "fca37fd1-67cf-4120-88ae-dfb5c20b74cd") - ) - (pin "3" - (uuid "d88ac63b-fe56-4e1e-8b57-5ff9103ba409") + (uuid "5a16d332-3d3f-4018-94de-43deb6b4f4d3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "Q4") + (reference "D6") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 121.92 356.87 0) + (lib_id "Device:C") + (at 471.17 74.93 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13445,29 +16416,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "34b262da-bfea-4f2b-9a04-fb876ae3d712") - (property "Reference" "TP7" - (at 121.92 350.012 0) + (uuid "488a5a36-ac38-48ab-a39b-4d9fb924fa86") + (property "Reference" "C8" + (at 473.075 72.39 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "SPI_MOSI" - (at 121.92 351.79 0) + (property "Value" "10nF" + (at 473.075 77.47 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 121.92 356.87 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 471.17 74.93 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13478,7 +16451,7 @@ ) ) (property "Datasheet" "" - (at 121.92 356.87 0) + (at 471.17 74.93 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13489,7 +16462,18 @@ ) ) (property "Description" "" - (at 121.92 356.87 0) + (at 471.17 74.93 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C15195" + (at 471.17 74.93 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -13499,20 +16483,23 @@ ) ) (pin "1" - (uuid "0bd6f675-3b4a-46db-a737-b61be37a7e5d") + (uuid "e0af5bf5-7602-4c05-92e7-f1f7cc6f9c26") + ) + (pin "2" + (uuid "8592c9bd-a769-4103-ae61-0cbc4e28d2aa") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP7") + (reference "C8") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 287.02 72.39 0) + (lib_id "Device:R") + (at 40.64 165.1 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13520,11 +16507,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "34df4e37-4123-4111-8465-71c20998fa0f") - (property "Reference" "#PWR057" - (at 287.02 78.74 0) - (hide yes) + (uuid "491dccb6-f66b-4115-bae8-e4c00ebf7f63") + (property "Reference" "R11" + (at 42.672 165.1 90) (show_name no) (do_not_autoplace no) (effects @@ -13533,8 +16518,8 @@ ) ) ) - (property "Value" "GND" - (at 287.02 77.47 0) + (property "Value" "10k" + (at 40.64 165.1 90) (show_name no) (do_not_autoplace no) (effects @@ -13543,8 +16528,8 @@ ) ) ) - (property "Footprint" "" - (at 287.02 72.39 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 40.64 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13555,7 +16540,7 @@ ) ) (property "Datasheet" "" - (at 287.02 72.39 0) + (at 40.64 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13565,8 +16550,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 287.02 72.39 0) + (property "Description" "" + (at 40.64 165.1 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25744" + (at 40.64 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13577,20 +16572,23 @@ ) ) (pin "1" - (uuid "c32f05d1-1039-4a1b-a154-26b493a2e316") + (uuid "b88df505-7fcd-40da-92ad-224637f73827") + ) + (pin "2" + (uuid "4e1523fa-8b40-46ce-9c51-359e6a45eac1") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR057") + (reference "R11") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Screw_Terminal_01x02") - (at 344.17 226.06 0) + (lib_id "power:+3.3V") + (at 76.2 161.29 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13598,9 +16596,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "35048995-2b9f-4748-9232-7c27df555002") - (property "Reference" "J8" - (at 344.17 223.52 0) + (fields_autoplaced yes) + (uuid "493d6b06-f669-4b80-908e-37fc4a72fef6") + (property "Reference" "#PWR024" + (at 76.2 165.1 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -13609,8 +16609,8 @@ ) ) ) - (property "Value" "CONTACTOR COIL 5V" - (at 344.17 231.14 0) + (property "Value" "+3.3V" + (at 76.2 156.21 0) (show_name no) (do_not_autoplace no) (effects @@ -13619,8 +16619,8 @@ ) ) ) - (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (at 344.17 226.06 0) + (property "Footprint" "" + (at 76.2 161.29 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13631,7 +16631,7 @@ ) ) (property "Datasheet" "" - (at 344.17 226.06 0) + (at 76.2 161.29 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13641,18 +16641,8 @@ ) ) ) - (property "Description" "" - (at 344.17 226.06 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C474881" - (at 344.17 226.06 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 76.2 161.29 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13663,23 +16653,20 @@ ) ) (pin "1" - (uuid "f8b87786-80cd-4b88-8409-076c67d9b948") - ) - (pin "2" - (uuid "41de0bc3-acf9-4686-8ab8-430af1bbf10e") + (uuid "80af8553-0f59-47f2-9964-51e417da4ada") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "J8") + (reference "#PWR024") (unit 1) ) ) ) ) (symbol - (lib_id "Device:RotaryEncoder_Switch") - (at 452.12 251.46 0) + (lib_id "Device:C") + (at 241.3 86.36 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13687,29 +16674,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "36485909-9d6f-4245-8e20-98a2e3041944") - (property "Reference" "SW3" - (at 452.12 244.856 0) + (uuid "498d4779-913d-40b0-b2ff-1468a052e447") + (property "Reference" "C7" + (at 241.935 83.82 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "ENCODER" - (at 452.12 258.064 0) + (property "Value" "1uF" + (at 241.935 88.9 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm" - (at 452.12 251.46 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 241.3 86.36 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13720,7 +16709,7 @@ ) ) (property "Datasheet" "" - (at 452.12 251.46 0) + (at 241.3 86.36 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13731,7 +16720,7 @@ ) ) (property "Description" "" - (at 452.12 251.46 0) + (at 241.3 86.36 0) (show_name no) (do_not_autoplace no) (effects @@ -13740,8 +16729,8 @@ ) ) ) - (property "LCSC" "C7275025" - (at 452.12 251.46 0) + (property "LCSC" "C52923" + (at 241.3 86.36 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13751,25 +16740,16 @@ ) ) ) - (pin "A" - (uuid "764cae2d-9aea-4fde-b5b0-66818364de17") - ) - (pin "B" - (uuid "e998d749-c8e9-42ce-acd9-223c72b16dce") - ) - (pin "C" - (uuid "bceaf5ad-76bb-463c-bc39-f7807130b920") - ) - (pin "S1" - (uuid "3e021455-eeb5-4c7a-945c-1ff83d4bb366") + (pin "1" + (uuid "465e4135-8bb4-4df9-850b-2ba860c38b95") ) - (pin "S2" - (uuid "29476bcd-dbce-465a-bc1d-099b15f1879e") + (pin "2" + (uuid "e05b8779-3db0-4fee-85f6-246a42132246") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "SW3") + (reference "C7") (unit 1) ) ) @@ -13777,7 +16757,7 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 137.16 374.65 0) + (at 199.39 393.7 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13785,9 +16765,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "36ce296a-dcd5-4f6d-a449-8a72c797f031") - (property "Reference" "TP21" - (at 137.16 367.792 0) + (uuid "4b995369-c15f-4a64-a927-8ec47eb5ba5f") + (property "Reference" "TP1" + (at 199.39 386.842 0) (show_name no) (do_not_autoplace no) (effects @@ -13796,8 +16776,8 @@ ) ) ) - (property "Value" "HEAT_EN_DC" - (at 137.16 369.57 0) + (property "Value" "+5V" + (at 199.39 388.62 0) (show_name no) (do_not_autoplace no) (effects @@ -13807,7 +16787,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 137.16 374.65 0) + (at 199.39 393.7 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13818,7 +16798,7 @@ ) ) (property "Datasheet" "" - (at 137.16 374.65 0) + (at 199.39 393.7 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13829,7 +16809,7 @@ ) ) (property "Description" "" - (at 137.16 374.65 0) + (at 199.39 393.7 0) (show_name no) (do_not_autoplace no) (effects @@ -13839,20 +16819,20 @@ ) ) (pin "1" - (uuid "8b607e3c-3402-4698-b334-a0141e4bace3") + (uuid "ceff4e94-5c13-41e0-ad88-ed15f9b50883") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP21") + (reference "TP1") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Screw_Terminal_01x02") - (at 436.88 149.86 180) + (lib_id "Connector:TestPoint") + (at 59.69 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13860,9 +16840,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "37cf04d4-222b-4fbb-bd2b-a52627732b4d") - (property "Reference" "J4" - (at 436.88 152.4 0) + (uuid "4d3ecb7c-62b1-4e48-9eb5-c1673964d347") + (property "Reference" "TP17" + (at 59.69 367.792 0) (show_name no) (do_not_autoplace no) (effects @@ -13871,8 +16851,8 @@ ) ) ) - (property "Value" "TC2 CASE (K)" - (at 436.88 144.78 0) + (property "Value" "SSR" + (at 59.69 369.57 0) (show_name no) (do_not_autoplace no) (effects @@ -13881,8 +16861,8 @@ ) ) ) - (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (at 436.88 149.86 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 59.69 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13893,7 +16873,7 @@ ) ) (property "Datasheet" "" - (at 436.88 149.86 0) + (at 59.69 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13904,18 +16884,7 @@ ) ) (property "Description" "" - (at 436.88 149.86 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C474881" - (at 436.88 149.86 0) - (hide yes) + (at 59.69 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -13925,23 +16894,20 @@ ) ) (pin "1" - (uuid "900fb85d-a3a0-4759-b95d-6ab87524100f") - ) - (pin "2" - (uuid "fbe6d646-3f8a-4e47-b961-d13c1f0d6ff8") + (uuid "bcf58c24-98df-4e48-8dfd-70083b733925") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "J4") + (reference "TP17") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 308.61 204.47 0) + (lib_id "Connector:Screw_Terminal_01x02") + (at 297.18 363.22 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -13949,9 +16915,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "37fb3a4b-2563-4a12-8927-aa95cf0d8534") - (property "Reference" "R30" - (at 310.642 204.47 90) + (uuid "4d46b63a-4232-40c9-8531-949dd1bf29d4") + (property "Reference" "J10" + (at 297.18 360.68 0) (show_name no) (do_not_autoplace no) (effects @@ -13960,8 +16926,8 @@ ) ) ) - (property "Value" "10k" - (at 308.61 204.47 90) + (property "Value" "CT 30A/1V" + (at 297.18 368.3 0) (show_name no) (do_not_autoplace no) (effects @@ -13970,8 +16936,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 308.61 204.47 0) + (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (at 297.18 363.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13982,7 +16948,7 @@ ) ) (property "Datasheet" "" - (at 308.61 204.47 0) + (at 297.18 363.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -13993,7 +16959,18 @@ ) ) (property "Description" "" - (at 308.61 204.47 0) + (at 297.18 363.22 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C474881" + (at 297.18 363.22 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -14003,23 +16980,23 @@ ) ) (pin "1" - (uuid "76eab812-a293-4dc7-8a0c-dd9769c4831a") + (uuid "7c9ed35a-d556-43fc-9c65-3846d93776ba") ) (pin "2" - (uuid "b0c6b579-db05-4f8c-a226-e6800097658c") + (uuid "e730f468-5c76-4104-8626-a955808e8d7e") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R30") + (reference "J10") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Screw_Terminal_01x02") - (at 439.42 72.39 180) + (lib_id "Connector:TestPoint") + (at 44.45 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14027,9 +17004,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "3852952b-844a-4a0b-a786-803839e3e502") - (property "Reference" "J3" - (at 439.42 74.93 0) + (uuid "4f644575-e878-488b-b544-9b3048b3d2d0") + (property "Reference" "TP16" + (at 44.45 367.792 0) (show_name no) (do_not_autoplace no) (effects @@ -14038,8 +17015,8 @@ ) ) ) - (property "Value" "TC1 KILN (K)" - (at 439.42 67.31 0) + (property "Value" "I2C_SCL" + (at 44.45 369.57 0) (show_name no) (do_not_autoplace no) (effects @@ -14048,8 +17025,8 @@ ) ) ) - (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (at 439.42 72.39 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 44.45 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14060,7 +17037,7 @@ ) ) (property "Datasheet" "" - (at 439.42 72.39 0) + (at 44.45 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14071,18 +17048,7 @@ ) ) (property "Description" "" - (at 439.42 72.39 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C474881" - (at 439.42 72.39 0) - (hide yes) + (at 44.45 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -14092,23 +17058,20 @@ ) ) (pin "1" - (uuid "455306e2-f4b1-43ce-a7ac-aefc946552c5") - ) - (pin "2" - (uuid "a3419bbc-f06d-46d8-a809-fa9433371bcc") + (uuid "80bb16b8-594e-47d9-a9a6-8f7681f02294") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "J3") + (reference "TP16") (unit 1) ) ) ) ) (symbol - (lib_id "Switch:SW_Push") - (at 228.6 110.49 0) + (lib_id "power:+5V") + (at 102.87 283.21 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14116,20 +17079,21 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "3a1fa904-f175-46fb-a7f4-b90010f54b5d") - (property "Reference" "SW2" - (at 229.87 107.95 0) + (fields_autoplaced yes) + (uuid "4fc3bff9-bdd5-41d8-8628-08e3f6566105") + (property "Reference" "#PWR034" + (at 102.87 287.02 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "BOOT" - (at 228.6 112.014 0) + (property "Value" "+5V" + (at 102.87 278.13 0) (show_name no) (do_not_autoplace no) (effects @@ -14138,8 +17102,8 @@ ) ) ) - (property "Footprint" "Button_Switch_THT:SW_PUSH_6mm_H5mm" - (at 228.6 110.49 0) + (property "Footprint" "" + (at 102.87 283.21 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14150,7 +17114,7 @@ ) ) (property "Datasheet" "" - (at 228.6 110.49 0) + (at 102.87 283.21 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14160,18 +17124,8 @@ ) ) ) - (property "Description" "" - (at 228.6 110.49 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C111609" - (at 228.6 110.49 0) + (property "Description" "Power symbol creates a global label with name \"+5V\"" + (at 102.87 283.21 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14182,23 +17136,20 @@ ) ) (pin "1" - (uuid "f523999b-d6f7-4744-816d-9f3352000bd5") - ) - (pin "2" - (uuid "1076350a-3f43-453d-8ed0-9fd6b5a2adbd") + (uuid "e95410a9-042b-4a75-9e19-dfd06f780dc7") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "SW2") + (reference "#PWR034") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 524.51 119.38 0) + (lib_id "power:GND") + (at 514.35 165.1 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14206,31 +17157,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "3a201181-5360-45af-9e20-aed53aeb9d45") - (property "Reference" "C18" - (at 525.145 116.84 0) + (fields_autoplaced yes) + (uuid "50d01a2d-d8fe-4084-8fda-ca1a63d81088") + (property "Reference" "#PWR044" + (at 514.35 171.45 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "100nF" - (at 525.145 121.92 0) + (property "Value" "GND" + (at 514.35 170.18 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 524.51 119.38 0) + (property "Footprint" "" + (at 514.35 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14241,7 +17192,7 @@ ) ) (property "Datasheet" "" - (at 524.51 119.38 0) + (at 514.35 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14251,18 +17202,8 @@ ) ) ) - (property "Description" "" - (at 524.51 119.38 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C1525" - (at 524.51 119.38 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 514.35 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14273,53 +17214,53 @@ ) ) (pin "1" - (uuid "b47b5a32-3a99-48d1-aa73-a22b69751f56") - ) - (pin "2" - (uuid "e99e71a4-6397-4513-bf2c-86b89af5c5ab") + (uuid "b29ac723-af00-41f3-90cb-045e1b77412f") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C18") + (reference "#PWR044") (unit 1) ) ) ) ) (symbol - (lib_id "Device:D") - (at 323.85 223.52 270) + (lib_id "Connector:Conn_ARM_SWD_TagConnect_TC2030") + (at 534.67 325.12 0) (unit 1) (body_style 1) (exclude_from_sim no) - (in_bom yes) + (in_bom no) (on_board yes) (in_pos_files yes) (dnp no) - (uuid "3a8633cc-3228-448d-8836-24c35d249308") - (property "Reference" "D6" - (at 326.39 223.52 0) + (fields_autoplaced yes) + (uuid "515d9668-9686-49e6-b1ca-e5169fa78832") + (property "Reference" "J4" + (at 528.32 323.85 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify right) ) ) - (property "Value" "1N4148W" - (at 321.31 223.52 0) + (property "Value" "Conn_ARM_SWD_TagConnect_TC2030" + (at 528.32 326.39 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify right) ) ) - (property "Footprint" "Diode_SMD:D_SOD-123" - (at 323.85 223.52 0) + (property "Footprint" "Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical" + (at 534.67 342.9 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14329,8 +17270,8 @@ ) ) ) - (property "Datasheet" "" - (at 323.85 223.52 0) + (property "Datasheet" "https://www.tag-connect.com/wp-content/uploads/bsk-pdf-manager/TC2030-CTX_1.pdf" + (at 534.67 340.36 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14340,18 +17281,8 @@ ) ) ) - (property "Description" "" - (at 323.85 223.52 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C2099" - (at 323.85 223.52 0) + (property "Description" "Tag-Connect ARM Cortex SWD JTAG connector, 6 pin" + (at 534.67 325.12 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14361,24 +17292,36 @@ ) ) ) + (pin "4" + (uuid "0a0dab82-f789-4e43-a2e7-bd045c5f6300") + ) (pin "1" - (uuid "e65edf3d-3de0-4efc-b1ae-cfdb6a4d2aa3") + (uuid "c4a14f9e-447a-4503-91b5-72c821b3628b") ) (pin "2" - (uuid "5a16d332-3d3f-4018-94de-43deb6b4f4d3") + (uuid "4f99488c-e630-4dc1-b1df-cf90338b5c8c") + ) + (pin "5" + (uuid "72239171-87f8-4611-a90f-f1560dcba1df") + ) + (pin "3" + (uuid "1cfd725f-a359-49d8-b8fc-ae4f9b005f94") + ) + (pin "6" + (uuid "9e0681a0-b1b0-4ee2-82e2-b230bb968ce3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "D6") + (reference "J4") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 487.68 161.29 0) + (lib_id "Device:R") + (at 67.31 267.97 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14386,11 +17329,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "3c70ea71-6f1f-4879-a9ab-09a76bc864fc") - (property "Reference" "#PWR048" - (at 487.68 167.64 0) - (hide yes) + (uuid "523f474c-03ad-4648-8a06-189ef3cbdab6") + (property "Reference" "R14" + (at 69.342 267.97 90) (show_name no) (do_not_autoplace no) (effects @@ -14399,8 +17340,19 @@ ) ) ) - (property "Value" "GND" - (at 487.68 166.37 0) + (property "Value" "10k" + (at 67.31 267.97 90) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 67.31 267.97 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -14409,8 +17361,8 @@ ) ) ) - (property "Footprint" "" - (at 487.68 161.29 0) + (property "Datasheet" "" + (at 67.31 267.97 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14420,9 +17372,8 @@ ) ) ) - (property "Datasheet" "" - (at 487.68 161.29 0) - (hide yes) + (property "Description" "" + (at 67.31 267.97 0) (show_name no) (do_not_autoplace no) (effects @@ -14431,8 +17382,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 487.68 161.29 0) + (property "LCSC" "C25744" + (at 67.31 267.97 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14443,20 +17394,23 @@ ) ) (pin "1" - (uuid "c62bc0f8-d7ac-4ac7-814a-04696076e66b") + (uuid "6560f189-6133-4d20-8d47-03900cc0ba88") + ) + (pin "2" + (uuid "73ef6a60-1553-4c96-ba5f-013c30a4ab27") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR048") + (reference "R14") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 30.48 374.65 0) + (lib_id "Device:R") + (at 203.2 243.84 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14464,9 +17418,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "417c3cea-d0bb-4ff9-9616-a5367059fcdc") - (property "Reference" "TP14" - (at 30.48 367.792 0) + (uuid "5290bec0-3568-422d-a6a5-aafe25303629") + (property "Reference" "R19" + (at 203.2 241.808 90) (show_name no) (do_not_autoplace no) (effects @@ -14475,8 +17429,8 @@ ) ) ) - (property "Value" "TC2_FAULT" - (at 30.48 369.57 0) + (property "Value" "100R" + (at 203.2 243.84 90) (show_name no) (do_not_autoplace no) (effects @@ -14485,8 +17439,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 30.48 374.65 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 203.2 243.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14497,7 +17451,7 @@ ) ) (property "Datasheet" "" - (at 30.48 374.65 0) + (at 203.2 243.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14508,7 +17462,18 @@ ) ) (property "Description" "" - (at 30.48 374.65 0) + (at 203.2 243.84 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25076" + (at 203.2 243.84 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -14518,20 +17483,23 @@ ) ) (pin "1" - (uuid "1e95b2db-1716-4966-8ca6-41833af30af6") + (uuid "ea215843-17aa-4987-9f46-3041cadfa793") + ) + (pin "2" + (uuid "5e165e1a-c8ca-45d0-9306-1c6b887bd5c7") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP14") + (reference "R19") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 471.17 71.12 0) + (lib_id "Device:Fuse") + (at 55.88 48.26 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14539,31 +17507,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "488a5a36-ac38-48ab-a39b-4d9fb924fa86") - (property "Reference" "C8" - (at 473.075 68.58 0) + (uuid "5429eaf5-0aca-45db-b7c7-7c4b38ba126c") + (property "Reference" "F1" + (at 55.88 46.228 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "10nF" - (at 473.075 73.66 0) + (property "Value" "PTC 1.5A" + (at 55.88 50.165 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 471.17 71.12 0) + (property "Footprint" "Fuse:Fuse_1206_3216Metric" + (at 55.88 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14574,7 +17540,7 @@ ) ) (property "Datasheet" "" - (at 471.17 71.12 0) + (at 55.88 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14585,7 +17551,7 @@ ) ) (property "Description" "" - (at 471.17 71.12 0) + (at 55.88 48.26 0) (show_name no) (do_not_autoplace no) (effects @@ -14594,8 +17560,8 @@ ) ) ) - (property "LCSC" "C15195" - (at 471.17 71.12 0) + (property "LCSC" "C20802" + (at 55.88 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14606,15 +17572,15 @@ ) ) (pin "1" - (uuid "e0af5bf5-7602-4c05-92e7-f1f7cc6f9c26") + (uuid "a5a4a310-073b-44ea-9b9d-6afced942daa") ) (pin "2" - (uuid "8592c9bd-a769-4103-ae61-0cbc4e28d2aa") + (uuid "e7758ba8-4b9a-4df2-9a17-4b5610f056f5") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C8") + (reference "F1") (unit 1) ) ) @@ -14622,7 +17588,7 @@ ) (symbol (lib_id "Device:R") - (at 434.34 242.57 0) + (at 57.15 300.99 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14630,9 +17596,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "491dccb6-f66b-4115-bae8-e4c00ebf7f63") - (property "Reference" "R11" - (at 436.372 242.57 90) + (uuid "559d7b59-4fcf-43b2-a6b5-eaffd4d52363") + (property "Reference" "R22" + (at 57.15 298.958 90) (show_name no) (do_not_autoplace no) (effects @@ -14641,8 +17607,8 @@ ) ) ) - (property "Value" "10k" - (at 434.34 242.57 90) + (property "Value" "100R" + (at 57.15 300.99 90) (show_name no) (do_not_autoplace no) (effects @@ -14652,7 +17618,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 434.34 242.57 0) + (at 57.15 300.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14663,7 +17629,7 @@ ) ) (property "Datasheet" "" - (at 434.34 242.57 0) + (at 57.15 300.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14674,7 +17640,7 @@ ) ) (property "Description" "" - (at 434.34 242.57 0) + (at 57.15 300.99 0) (show_name no) (do_not_autoplace no) (effects @@ -14683,8 +17649,8 @@ ) ) ) - (property "LCSC" "C25744" - (at 434.34 242.57 0) + (property "LCSC" "C25076" + (at 57.15 300.99 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14695,23 +17661,23 @@ ) ) (pin "1" - (uuid "b88df505-7fcd-40da-92ad-224637f73827") + (uuid "34872a02-5260-4538-91ba-9990f1f4d901") ) (pin "2" - (uuid "4e1523fa-8b40-46ce-9c51-359e6a45eac1") + (uuid "efd7f2ad-44f7-40e4-986d-0b155b1b481b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R11") + (reference "R22") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 469.9 238.76 0) + (lib_id "power:PWR_FLAG") + (at 119.38 109.22 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14719,10 +17685,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "493d6b06-f669-4b80-908e-37fc4a72fef6") - (property "Reference" "#PWR024" - (at 469.9 242.57 0) + (uuid "55acc299-0df6-44ac-8fb6-c9806f0cef51") + (property "Reference" "#FLG03" + (at 119.38 107.315 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14732,8 +17697,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 469.9 233.68 0) + (property "Value" "PWR_FLAG" + (at 119.38 105.41 0) (show_name no) (do_not_autoplace no) (effects @@ -14743,7 +17708,7 @@ ) ) (property "Footprint" "" - (at 469.9 238.76 0) + (at 119.38 109.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14754,7 +17719,7 @@ ) ) (property "Datasheet" "" - (at 469.9 238.76 0) + (at 119.38 109.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14764,9 +17729,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 469.9 238.76 0) - (hide yes) + (property "Description" "" + (at 119.38 109.22 0) (show_name no) (do_not_autoplace no) (effects @@ -14776,20 +17740,20 @@ ) ) (pin "1" - (uuid "80af8553-0f59-47f2-9964-51e417da4ada") + (uuid "a62be3da-3dfc-4dd5-8218-1026a2e14288") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR024") + (reference "#FLG03") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 241.3 86.36 0) + (lib_id "power:+3.3V") + (at 256.54 259.08 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14797,31 +17761,30 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "498d4779-913d-40b0-b2ff-1468a052e447") - (property "Reference" "C7" - (at 241.935 83.82 0) + (uuid "570a9e46-be94-4857-a9e4-2804ec5833a0") + (property "Reference" "#PWR071" + (at 256.54 262.89 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "1uF" - (at 241.935 88.9 0) + (property "Value" "+3.3V" + (at 256.54 255.524 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 241.3 86.36 0) + (property "Footprint" "" + (at 256.54 259.08 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14832,7 +17795,7 @@ ) ) (property "Datasheet" "" - (at 241.3 86.36 0) + (at 256.54 259.08 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14842,18 +17805,8 @@ ) ) ) - (property "Description" "" - (at 241.3 86.36 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C52923" - (at 241.3 86.36 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 256.54 259.08 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14864,23 +17817,20 @@ ) ) (pin "1" - (uuid "465e4135-8bb4-4df9-850b-2ba860c38b95") - ) - (pin "2" - (uuid "e05b8779-3db0-4fee-85f6-246a42132246") + (uuid "96c5b2ca-cb55-4056-9232-85826bc24c07") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C7") + (reference "#PWR071") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 30.48 356.87 0) + (lib_id "power:GND") + (at 48.26 53.34 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14888,9 +17838,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "4b995369-c15f-4a64-a927-8ec47eb5ba5f") - (property "Reference" "TP1" - (at 30.48 350.012 0) + (fields_autoplaced yes) + (uuid "5978444f-a0a0-4ada-8cde-dda93e1d41e0") + (property "Reference" "#PWR011" + (at 48.26 59.69 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -14899,8 +17851,8 @@ ) ) ) - (property "Value" "+5V" - (at 30.48 351.79 0) + (property "Value" "GND" + (at 48.26 58.42 0) (show_name no) (do_not_autoplace no) (effects @@ -14909,8 +17861,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 30.48 356.87 0) + (property "Footprint" "" + (at 48.26 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14921,7 +17873,7 @@ ) ) (property "Datasheet" "" - (at 30.48 356.87 0) + (at 48.26 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14931,8 +17883,9 @@ ) ) ) - (property "Description" "" - (at 30.48 356.87 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 48.26 53.34 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -14942,20 +17895,20 @@ ) ) (pin "1" - (uuid "ceff4e94-5c13-41e0-ad88-ed15f9b50883") + (uuid "b0785caa-a47b-444d-9dac-36ddb18b4ab3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP1") + (reference "#PWR011") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 76.2 374.65 0) + (lib_id "power:+3.3V") + (at 218.44 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -14963,9 +17916,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "4d3ecb7c-62b1-4e48-9eb5-c1673964d347") - (property "Reference" "TP17" - (at 76.2 367.792 0) + (fields_autoplaced yes) + (uuid "59beb27b-ab75-460e-95b9-440ccd9b96ea") + (property "Reference" "#PWR037" + (at 218.44 396.24 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -14974,8 +17929,8 @@ ) ) ) - (property "Value" "SSR1" - (at 76.2 369.57 0) + (property "Value" "+3.3V" + (at 218.44 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -14984,8 +17939,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 76.2 374.65 0) + (property "Footprint" "" + (at 218.44 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -14996,7 +17951,7 @@ ) ) (property "Datasheet" "" - (at 76.2 374.65 0) + (at 218.44 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15006,8 +17961,9 @@ ) ) ) - (property "Description" "" - (at 76.2 374.65 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 218.44 392.43 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15017,20 +17973,20 @@ ) ) (pin "1" - (uuid "bcf58c24-98df-4e48-8dfd-70083b733925") + (uuid "ee80df70-ed45-41c0-8b39-da9c51333133") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP17") + (reference "#PWR037") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Screw_Terminal_01x02") - (at 349.25 363.22 0) + (lib_id "power:+5V") + (at 93.98 233.68 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15038,9 +17994,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "4d46b63a-4232-40c9-8531-949dd1bf29d4") - (property "Reference" "J10" - (at 349.25 360.68 0) + (fields_autoplaced yes) + (uuid "5a71b1c6-9b96-494f-aa2c-ce2dadff5ff4") + (property "Reference" "#PWR043" + (at 93.98 237.49 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15049,8 +18007,8 @@ ) ) ) - (property "Value" "CT 30A/1V (opt)" - (at 349.25 368.3 0) + (property "Value" "+5V" + (at 93.98 228.6 0) (show_name no) (do_not_autoplace no) (effects @@ -15059,8 +18017,8 @@ ) ) ) - (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (at 349.25 363.22 0) + (property "Footprint" "" + (at 93.98 233.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15071,7 +18029,7 @@ ) ) (property "Datasheet" "" - (at 349.25 363.22 0) + (at 93.98 233.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15081,18 +18039,8 @@ ) ) ) - (property "Description" "" - (at 349.25 363.22 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C474881" - (at 349.25 363.22 0) + (property "Description" "Power symbol creates a global label with name \"+5V\"" + (at 93.98 233.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15103,23 +18051,20 @@ ) ) (pin "1" - (uuid "7c9ed35a-d556-43fc-9c65-3846d93776ba") - ) - (pin "2" - (uuid "e730f468-5c76-4104-8626-a955808e8d7e") + (uuid "edda5a66-594d-46e5-b22c-4f07208af4f1") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "J10") + (reference "#PWR043") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 60.96 374.65 0) + (lib_id "power:GND") + (at 91.44 74.93 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15127,9 +18072,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "4f644575-e878-488b-b544-9b3048b3d2d0") - (property "Reference" "TP16" - (at 60.96 367.792 0) + (fields_autoplaced yes) + (uuid "5bb33bb2-0646-48b8-b7cd-cc034b0f7512") + (property "Reference" "#PWR03" + (at 97.79 74.93 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15138,18 +18085,19 @@ ) ) ) - (property "Value" "I2C_SCL" - (at 60.96 369.57 0) + (property "Value" "GND" + (at 95.25 74.93 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify right) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 60.96 374.65 0) + (property "Footprint" "" + (at 91.44 74.93 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15160,7 +18108,7 @@ ) ) (property "Datasheet" "" - (at 60.96 374.65 0) + (at 91.44 74.93 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15170,8 +18118,9 @@ ) ) ) - (property "Description" "" - (at 60.96 374.65 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 91.44 74.93 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15181,20 +18130,20 @@ ) ) (pin "1" - (uuid "80bb16b8-594e-47d9-a9a6-8f7681f02294") + (uuid "14ff9c8b-7420-4328-ac28-f27d8bc78516") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP16") + (reference "#PWR03") (unit 1) ) ) ) ) (symbol - (lib_id "power:+5V") - (at 102.87 232.41 0) + (lib_id "Connector:Screw_Terminal_01x02") + (at 439.42 148.59 180) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15202,11 +18151,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "4fc3bff9-bdd5-41d8-8628-08e3f6566105") - (property "Reference" "#PWR034" - (at 102.87 236.22 0) - (hide yes) + (uuid "5c9db875-727d-42ed-91de-640844aaff8a") + (property "Reference" "J7" + (at 439.42 151.13 0) (show_name no) (do_not_autoplace no) (effects @@ -15215,8 +18162,19 @@ ) ) ) - (property "Value" "+5V" - (at 102.87 227.33 0) + (property "Value" "TC2 KILN (K)" + (at 439.42 143.51 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (at 439.42 148.59 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15225,8 +18183,8 @@ ) ) ) - (property "Footprint" "" - (at 102.87 232.41 0) + (property "Datasheet" "" + (at 439.42 148.59 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15236,9 +18194,8 @@ ) ) ) - (property "Datasheet" "" - (at 102.87 232.41 0) - (hide yes) + (property "Description" "" + (at 439.42 148.59 0) (show_name no) (do_not_autoplace no) (effects @@ -15247,8 +18204,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+5V\"" - (at 102.87 232.41 0) + (property "LCSC" "C474881" + (at 439.42 148.59 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15259,12 +18216,15 @@ ) ) (pin "1" - (uuid "e95410a9-042b-4a75-9e19-dfd06f780dc7") + (uuid "8efdcdaf-ec17-455e-b86c-c5209934f0b1") + ) + (pin "2" + (uuid "6803ea08-24ad-4977-ae75-74faf04a9ae4") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR034") + (reference "J7") (unit 1) ) ) @@ -15272,7 +18232,7 @@ ) (symbol (lib_id "Device:R") - (at 67.31 217.17 0) + (at 281.94 217.17 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15280,9 +18240,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "523f474c-03ad-4648-8a06-189ef3cbdab6") - (property "Reference" "R14" - (at 69.342 217.17 90) + (uuid "5cdbaf04-eab7-4fda-99c2-f9e438ac1547") + (property "Reference" "R21" + (at 283.972 217.17 90) (show_name no) (do_not_autoplace no) (effects @@ -15291,8 +18251,8 @@ ) ) ) - (property "Value" "10k" - (at 67.31 217.17 90) + (property "Value" "1k" + (at 281.94 217.17 90) (show_name no) (do_not_autoplace no) (effects @@ -15302,7 +18262,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 67.31 217.17 0) + (at 281.94 217.17 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15313,7 +18273,7 @@ ) ) (property "Datasheet" "" - (at 67.31 217.17 0) + (at 281.94 217.17 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15324,7 +18284,7 @@ ) ) (property "Description" "" - (at 67.31 217.17 0) + (at 281.94 217.17 0) (show_name no) (do_not_autoplace no) (effects @@ -15333,8 +18293,8 @@ ) ) ) - (property "LCSC" "C25744" - (at 67.31 217.17 0) + (property "LCSC" "C11702" + (at 281.94 217.17 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15345,23 +18305,23 @@ ) ) (pin "1" - (uuid "6560f189-6133-4d20-8d47-03900cc0ba88") + (uuid "84b2d28e-7d5a-4324-9762-d2538f0297e1") ) (pin "2" - (uuid "73ef6a60-1553-4c96-ba5f-013c30a4ab27") + (uuid "fbbd3c79-a32f-4357-bd8a-bd59bef05004") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R14") + (reference "R21") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 203.2 243.84 90) + (lib_id "Connector:TestPoint") + (at 227.33 391.16 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15369,9 +18329,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "5290bec0-3568-422d-a6a5-aafe25303629") - (property "Reference" "R19" - (at 203.2 241.808 90) + (uuid "5d4f35b0-650b-4796-b970-cdef943f7dd6") + (property "Reference" "TP3" + (at 227.33 384.302 0) (show_name no) (do_not_autoplace no) (effects @@ -15380,8 +18340,8 @@ ) ) ) - (property "Value" "100R" - (at 203.2 243.84 90) + (property "Value" "GND" + (at 227.33 386.08 0) (show_name no) (do_not_autoplace no) (effects @@ -15390,8 +18350,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 203.2 243.84 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 227.33 391.16 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15402,7 +18362,7 @@ ) ) (property "Datasheet" "" - (at 203.2 243.84 0) + (at 227.33 391.16 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15413,18 +18373,7 @@ ) ) (property "Description" "" - (at 203.2 243.84 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C25076" - (at 203.2 243.84 0) - (hide yes) + (at 227.33 391.16 0) (show_name no) (do_not_autoplace no) (effects @@ -15434,23 +18383,20 @@ ) ) (pin "1" - (uuid "ea215843-17aa-4987-9f46-3041cadfa793") - ) - (pin "2" - (uuid "5e165e1a-c8ca-45d0-9306-1c6b887bd5c7") + (uuid "a63417cc-5bf3-4732-8e22-559331ecb12a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R19") + (reference "TP3") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 256.54 256.54 0) + (lib_id "Device:D_Schottky") + (at 72.39 68.58 180) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15458,10 +18404,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "52935f9e-ec85-408b-bbd0-ebd1e658a628") - (property "Reference" "#PWR072" - (at 256.54 260.35 0) - (hide yes) + (uuid "5d945569-8746-444d-bea2-1f1120629c77") + (property "Reference" "D2" + (at 72.39 71.12 0) (show_name no) (do_not_autoplace no) (effects @@ -15470,8 +18415,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 256.54 252.73 0) + (property "Value" "SS34" + (at 72.39 66.04 0) (show_name no) (do_not_autoplace no) (effects @@ -15480,8 +18425,8 @@ ) ) ) - (property "Footprint" "" - (at 256.54 256.54 0) + (property "Footprint" "Diode_SMD:D_SMA" + (at 72.39 68.58 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15492,7 +18437,7 @@ ) ) (property "Datasheet" "" - (at 256.54 256.54 0) + (at 72.39 68.58 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15502,8 +18447,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 256.54 256.54 0) + (property "Description" "" + (at 72.39 68.58 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C8678" + (at 72.39 68.58 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15514,20 +18469,23 @@ ) ) (pin "1" - (uuid "262d60d7-7081-42b4-a789-62364234784b") + (uuid "4de7bd24-2fff-4d5f-a2e5-6f4bb01f2ba0") + ) + (pin "2" + (uuid "e97ed53b-d56b-4930-87ad-1159c93e4e23") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR072") + (reference "D2") (unit 1) ) ) ) ) (symbol - (lib_id "Device:Fuse") - (at 55.88 48.26 90) + (lib_id "power:+3.3V") + (at 349.25 45.72 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15535,9 +18493,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "5429eaf5-0aca-45db-b7c7-7c4b38ba126c") - (property "Reference" "F1" - (at 55.88 46.228 90) + (fields_autoplaced yes) + (uuid "606adfa7-5d92-4912-b4f5-7328052d7ffd") + (property "Reference" "#PWR055" + (at 349.25 49.53 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15546,8 +18506,8 @@ ) ) ) - (property "Value" "PTC 1.5A" - (at 55.88 50.165 90) + (property "Value" "+3.3V" + (at 349.25 40.64 0) (show_name no) (do_not_autoplace no) (effects @@ -15556,8 +18516,8 @@ ) ) ) - (property "Footprint" "Fuse:Fuse_1206_3216Metric" - (at 55.88 48.26 0) + (property "Footprint" "" + (at 349.25 45.72 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15568,7 +18528,7 @@ ) ) (property "Datasheet" "" - (at 55.88 48.26 0) + (at 349.25 45.72 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15578,18 +18538,8 @@ ) ) ) - (property "Description" "" - (at 55.88 48.26 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C20802" - (at 55.88 48.26 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 349.25 45.72 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15600,23 +18550,20 @@ ) ) (pin "1" - (uuid "a5a4a310-073b-44ea-9b9d-6afced942daa") - ) - (pin "2" - (uuid "e7758ba8-4b9a-4df2-9a17-4b5610f056f5") + (uuid "56abf471-25b2-4098-8a5e-97e2b245627f") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "F1") + (reference "#PWR055") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 57.15 250.19 90) + (lib_id "power:+3.3V") + (at 544.83 245.11 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15624,9 +18571,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "559d7b59-4fcf-43b2-a6b5-eaffd4d52363") - (property "Reference" "R22" - (at 57.15 248.158 90) + (fields_autoplaced yes) + (uuid "620b8d03-bf91-488a-9ee1-e0a0dcde991d") + (property "Reference" "#PWR077" + (at 544.83 248.92 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15635,8 +18584,8 @@ ) ) ) - (property "Value" "100R" - (at 57.15 250.19 90) + (property "Value" "+3.3V" + (at 544.83 240.03 0) (show_name no) (do_not_autoplace no) (effects @@ -15645,8 +18594,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 57.15 250.19 0) + (property "Footprint" "" + (at 544.83 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15657,7 +18606,7 @@ ) ) (property "Datasheet" "" - (at 57.15 250.19 0) + (at 544.83 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15667,18 +18616,8 @@ ) ) ) - (property "Description" "" - (at 57.15 250.19 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C25076" - (at 57.15 250.19 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 544.83 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15689,23 +18628,20 @@ ) ) (pin "1" - (uuid "34872a02-5260-4538-91ba-9990f1f4d901") - ) - (pin "2" - (uuid "efd7f2ad-44f7-40e4-986d-0b155b1b481b") + (uuid "971f8af2-67a4-4c8c-b87b-06d12fc73793") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R22") + (reference "#PWR077") (unit 1) ) ) ) ) (symbol - (lib_id "power:PWR_FLAG") - (at 119.38 109.22 0) + (lib_id "power:GND") + (at 241.3 91.44 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15713,9 +18649,10 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "55acc299-0df6-44ac-8fb6-c9806f0cef51") - (property "Reference" "#FLG03" - (at 119.38 107.315 0) + (fields_autoplaced yes) + (uuid "626f930e-00a5-4f7d-9e43-6b667ecf5e21") + (property "Reference" "#PWR067" + (at 241.3 97.79 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15725,8 +18662,8 @@ ) ) ) - (property "Value" "PWR_FLAG" - (at 119.38 105.41 0) + (property "Value" "GND" + (at 241.3 96.52 0) (show_name no) (do_not_autoplace no) (effects @@ -15736,7 +18673,7 @@ ) ) (property "Footprint" "" - (at 119.38 109.22 0) + (at 241.3 91.44 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15747,7 +18684,7 @@ ) ) (property "Datasheet" "" - (at 119.38 109.22 0) + (at 241.3 91.44 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15757,8 +18694,9 @@ ) ) ) - (property "Description" "" - (at 119.38 109.22 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 241.3 91.44 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -15768,20 +18706,20 @@ ) ) (pin "1" - (uuid "a62be3da-3dfc-4dd5-8218-1026a2e14288") + (uuid "df2bc319-7315-4d1b-bc98-35b82118d1b4") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#FLG03") + (reference "#PWR067") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 458.47 144.78 90) + (lib_id "Device:C") + (at 524.51 121.92 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15789,29 +18727,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "568f069f-36ad-4056-8b1a-5b7d6b931f92") - (property "Reference" "R6" - (at 458.47 142.748 90) + (uuid "64b0b002-e9ff-41b7-aba2-e843fde0b23a") + (property "Reference" "C26" + (at 525.145 119.38 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "100R" - (at 458.47 144.78 90) + (property "Value" "100nF" + (at 525.145 124.46 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 458.47 144.78 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 524.51 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15822,7 +18762,7 @@ ) ) (property "Datasheet" "" - (at 458.47 144.78 0) + (at 524.51 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15833,7 +18773,7 @@ ) ) (property "Description" "" - (at 458.47 144.78 0) + (at 524.51 121.92 0) (show_name no) (do_not_autoplace no) (effects @@ -15842,8 +18782,8 @@ ) ) ) - (property "LCSC" "C25076" - (at 458.47 144.78 0) + (property "LCSC" "C1525" + (at 524.51 121.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15853,24 +18793,24 @@ ) ) ) - (pin "1" - (uuid "1f673224-bbd2-49c6-b38d-271be2e94e51") - ) (pin "2" - (uuid "640baf6c-3229-4fcb-a8e7-fc00b21f702f") + (uuid "709c3866-18b6-42e6-90f4-05aefb4e8e84") + ) + (pin "1" + (uuid "e9fa691a-19a6-4473-a314-336a6d6c91f0") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R6") + (reference "C26") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 256.54 278.13 0) + (lib_id "Connector:TestPoint") + (at 120.65 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15878,10 +18818,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "570a9e46-be94-4857-a9e4-2804ec5833a0") - (property "Reference" "#PWR071" - (at 256.54 281.94 0) - (hide yes) + (uuid "69a8b718-f639-4a3c-ab86-1974c857c27c") + (property "Reference" "TP23" + (at 120.65 367.792 0) (show_name no) (do_not_autoplace no) (effects @@ -15890,8 +18829,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 256.54 274.574 0) + (property "Value" "ALARM" + (at 120.65 369.57 0) (show_name no) (do_not_autoplace no) (effects @@ -15900,8 +18839,8 @@ ) ) ) - (property "Footprint" "" - (at 256.54 278.13 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 120.65 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15912,7 +18851,7 @@ ) ) (property "Datasheet" "" - (at 256.54 278.13 0) + (at 120.65 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15922,9 +18861,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 256.54 278.13 0) - (hide yes) + (property "Description" "" + (at 120.65 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -15934,20 +18872,20 @@ ) ) (pin "1" - (uuid "96c5b2ca-cb55-4056-9232-85826bc24c07") + (uuid "079f5382-c021-41b5-98b8-a565a0b563bf") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR071") + (reference "TP23") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 514.35 166.37 0) + (lib_id "power:+5V") + (at 336.55 193.04 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -15955,10 +18893,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "571bc57f-9baf-4a6f-8270-d5ff3e50077d") - (property "Reference" "#PWR047" - (at 514.35 172.72 0) + (uuid "69d0c958-f70d-4737-b55a-d6f6cce4ab52") + (property "Reference" "#PWR073" + (at 336.55 196.85 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15968,8 +18905,8 @@ ) ) ) - (property "Value" "GND" - (at 514.35 171.45 0) + (property "Value" "+5V" + (at 336.55 189.484 0) (show_name no) (do_not_autoplace no) (effects @@ -15979,7 +18916,7 @@ ) ) (property "Footprint" "" - (at 514.35 166.37 0) + (at 336.55 193.04 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -15990,7 +18927,7 @@ ) ) (property "Datasheet" "" - (at 514.35 166.37 0) + (at 336.55 193.04 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16000,9 +18937,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 514.35 166.37 0) - (hide yes) + (property "Description" "" + (at 336.55 193.04 0) (show_name no) (do_not_autoplace no) (effects @@ -16012,20 +18948,20 @@ ) ) (pin "1" - (uuid "3b8fd977-f3e8-4ddd-8e4c-2a7a248e548b") + (uuid "11bed520-fdfd-45b3-8b03-df8bac9c9703") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR047") + (reference "#PWR073") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 48.26 53.34 0) + (lib_id "Connector:TestPoint") + (at 166.37 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16033,11 +18969,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "5978444f-a0a0-4ada-8cde-dda93e1d41e0") - (property "Reference" "#PWR011" - (at 48.26 59.69 0) - (hide yes) + (uuid "6a9ebc65-0658-40f8-96ea-4240945197e7") + (property "Reference" "TP30" + (at 166.37 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -16046,8 +18980,8 @@ ) ) ) - (property "Value" "GND" - (at 48.26 58.42 0) + (property "Value" "TC2_FAULT" + (at 166.37 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -16056,8 +18990,8 @@ ) ) ) - (property "Footprint" "" - (at 48.26 53.34 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 166.37 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16068,7 +19002,7 @@ ) ) (property "Datasheet" "" - (at 48.26 53.34 0) + (at 166.37 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16078,9 +19012,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 48.26 53.34 0) - (hide yes) + (property "Description" "" + (at 166.37 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -16090,20 +19023,20 @@ ) ) (pin "1" - (uuid "b0785caa-a47b-444d-9dac-36ddb18b4ab3") + (uuid "fce35157-26bf-42a9-bd9b-64a75fb8ba37") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR011") + (reference "TP30") (unit 1) ) ) ) ) (symbol - (lib_id "power:+5V") - (at 93.98 182.88 0) + (lib_id "Connector:TestPoint") + (at 74.93 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16111,11 +19044,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "5a71b1c6-9b96-494f-aa2c-ce2dadff5ff4") - (property "Reference" "#PWR043" - (at 93.98 186.69 0) - (hide yes) + (uuid "6c70294b-4e8e-411d-8244-ca094c3aa425") + (property "Reference" "TP9" + (at 74.93 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -16124,8 +19055,8 @@ ) ) ) - (property "Value" "+5V" - (at 93.98 177.8 0) + (property "Value" "TC1_CS" + (at 74.93 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -16134,8 +19065,8 @@ ) ) ) - (property "Footprint" "" - (at 93.98 182.88 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 74.93 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16146,7 +19077,7 @@ ) ) (property "Datasheet" "" - (at 93.98 182.88 0) + (at 74.93 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16156,9 +19087,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+5V\"" - (at 93.98 182.88 0) - (hide yes) + (property "Description" "" + (at 74.93 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -16168,20 +19098,21 @@ ) ) (pin "1" - (uuid "edda5a66-594d-46e5-b22c-4f07208af4f1") + (uuid "4502e7bc-f87f-4401-99e4-47a56d8474f2") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR043") + (reference "TP9") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 91.44 74.93 90) + (lib_id "Diode:BAT54S") + (at 344.17 364.49 270) + (mirror x) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16189,32 +19120,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "5bb33bb2-0646-48b8-b7cd-cc034b0f7512") - (property "Reference" "#PWR03" - (at 97.79 74.93 0) - (hide yes) + (uuid "6c79d0c4-a4a2-4dc7-8c35-6643ee91ceed") + (property "Reference" "D9" + (at 339.09 361.95 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "GND" - (at 95.25 74.93 90) + (property "Value" "BAT54S" + (at 347.345 370.84 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify right) + (justify left) ) ) - (property "Footprint" "" - (at 91.44 74.93 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23" + (at 344.17 364.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16225,7 +19155,7 @@ ) ) (property "Datasheet" "" - (at 91.44 74.93 0) + (at 344.17 364.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16235,8 +19165,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 91.44 74.93 0) + (property "Description" "" + (at 344.17 364.49 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C19726" + (at 344.17 364.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16247,20 +19187,26 @@ ) ) (pin "1" - (uuid "14ff9c8b-7420-4328-ac28-f27d8bc78516") + (uuid "d0f88eb7-6e91-472a-9b28-895d1051282b") + ) + (pin "2" + (uuid "f82480d8-88d3-489c-84a5-570fd5dff1dc") + ) + (pin "3" + (uuid "495580a6-4d4d-45e4-9e76-34321698c9c8") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR03") + (reference "D9") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 281.94 217.17 0) + (lib_id "power:GND") + (at 524.51 125.73 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16268,9 +19214,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "5cdbaf04-eab7-4fda-99c2-f9e438ac1547") - (property "Reference" "R21" - (at 283.972 217.17 90) + (fields_autoplaced yes) + (uuid "6d08ed45-c30b-423e-ad76-1f2f0657b041") + (property "Reference" "#PWR080" + (at 524.51 132.08 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16279,8 +19227,8 @@ ) ) ) - (property "Value" "1k" - (at 281.94 217.17 90) + (property "Value" "GND" + (at 524.51 130.81 0) (show_name no) (do_not_autoplace no) (effects @@ -16289,8 +19237,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 281.94 217.17 0) + (property "Footprint" "" + (at 524.51 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16301,7 +19249,7 @@ ) ) (property "Datasheet" "" - (at 281.94 217.17 0) + (at 524.51 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16311,18 +19259,8 @@ ) ) ) - (property "Description" "" - (at 281.94 217.17 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C11702" - (at 281.94 217.17 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 524.51 125.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16333,23 +19271,20 @@ ) ) (pin "1" - (uuid "84b2d28e-7d5a-4324-9762-d2538f0297e1") - ) - (pin "2" - (uuid "fbbd3c79-a32f-4357-bd8a-bd59bef05004") + (uuid "13f9ee4f-31bd-40cb-a6d7-60f2abed6589") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R21") + (reference "#PWR080") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 60.96 356.87 0) + (lib_id "power:GND") + (at 524.51 53.34 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16357,9 +19292,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "5d4f35b0-650b-4796-b970-cdef943f7dd6") - (property "Reference" "TP3" - (at 60.96 350.012 0) + (fields_autoplaced yes) + (uuid "6dde3b60-3624-492c-b1e9-0a4e20a7dc12") + (property "Reference" "#PWR065" + (at 524.51 59.69 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16369,7 +19306,7 @@ ) ) (property "Value" "GND" - (at 60.96 351.79 0) + (at 524.51 58.42 0) (show_name no) (do_not_autoplace no) (effects @@ -16378,8 +19315,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 60.96 356.87 0) + (property "Footprint" "" + (at 524.51 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16390,7 +19327,7 @@ ) ) (property "Datasheet" "" - (at 60.96 356.87 0) + (at 524.51 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16400,8 +19337,9 @@ ) ) ) - (property "Description" "" - (at 60.96 356.87 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 524.51 53.34 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16411,20 +19349,20 @@ ) ) (pin "1" - (uuid "a63417cc-5bf3-4732-8e22-559331ecb12a") + (uuid "67d17446-908b-4df6-8bd8-77ec4d8b435d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP3") + (reference "#PWR065") (unit 1) ) ) ) ) (symbol - (lib_id "Device:D_Schottky") - (at 72.39 68.58 180) + (lib_id "power:+3.3V") + (at 137.16 162.56 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16432,9 +19370,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "5d945569-8746-444d-bea2-1f1120629c77") - (property "Reference" "D2" - (at 72.39 71.12 0) + (fields_autoplaced yes) + (uuid "6e651ee0-7807-4f73-8868-d86598518193") + (property "Reference" "#PWR060" + (at 137.16 166.37 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16443,8 +19383,8 @@ ) ) ) - (property "Value" "SS34" - (at 72.39 66.04 0) + (property "Value" "+3.3V" + (at 137.16 157.48 0) (show_name no) (do_not_autoplace no) (effects @@ -16453,8 +19393,8 @@ ) ) ) - (property "Footprint" "Diode_SMD:D_SMA" - (at 72.39 68.58 0) + (property "Footprint" "" + (at 137.16 162.56 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16465,7 +19405,7 @@ ) ) (property "Datasheet" "" - (at 72.39 68.58 0) + (at 137.16 162.56 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16475,18 +19415,8 @@ ) ) ) - (property "Description" "" - (at 72.39 68.58 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C8678" - (at 72.39 68.58 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 137.16 162.56 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16497,23 +19427,20 @@ ) ) (pin "1" - (uuid "4de7bd24-2fff-4d5f-a2e5-6f4bb01f2ba0") - ) - (pin "2" - (uuid "e97ed53b-d56b-4930-87ad-1159c93e4e23") + (uuid "56f37de3-4851-4a31-b553-7164b868a604") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "D2") + (reference "#PWR060") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 349.25 45.72 0) + (lib_id "Device:R") + (at 241.3 76.2 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16521,11 +19448,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "606adfa7-5d92-4912-b4f5-7328052d7ffd") - (property "Reference" "#PWR055" - (at 349.25 49.53 0) - (hide yes) + (uuid "6e749520-2256-48ed-aa1d-72cd1c1543ab") + (property "Reference" "R3" + (at 243.332 76.2 90) (show_name no) (do_not_autoplace no) (effects @@ -16534,8 +19459,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 349.25 40.64 0) + (property "Value" "10k" + (at 241.3 76.2 90) (show_name no) (do_not_autoplace no) (effects @@ -16544,8 +19469,8 @@ ) ) ) - (property "Footprint" "" - (at 349.25 45.72 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 241.3 76.2 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16556,7 +19481,7 @@ ) ) (property "Datasheet" "" - (at 349.25 45.72 0) + (at 241.3 76.2 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16566,8 +19491,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 349.25 45.72 0) + (property "Description" "" + (at 241.3 76.2 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25744" + (at 241.3 76.2 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16578,20 +19513,23 @@ ) ) (pin "1" - (uuid "56abf471-25b2-4098-8a5e-97e2b245627f") + (uuid "863f23d8-1f28-4653-b84c-ff9360f61da8") + ) + (pin "2" + (uuid "c54156f7-8c23-4bc2-bcc4-e7dba1c99886") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR055") + (reference "R3") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 241.3 91.44 0) + (lib_id "Connector:TestPoint") + (at 166.37 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16599,11 +19537,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "626f930e-00a5-4f7d-9e43-6b667ecf5e21") - (property "Reference" "#PWR067" - (at 241.3 97.79 0) - (hide yes) + (uuid "705b95df-9081-4dda-8cc1-5b58b24c1ee2") + (property "Reference" "TP26" + (at 166.37 367.792 0) (show_name no) (do_not_autoplace no) (effects @@ -16612,8 +19548,8 @@ ) ) ) - (property "Value" "GND" - (at 241.3 96.52 0) + (property "Value" "ENC_BTN" + (at 166.37 369.57 0) (show_name no) (do_not_autoplace no) (effects @@ -16622,8 +19558,8 @@ ) ) ) - (property "Footprint" "" - (at 241.3 91.44 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 166.37 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16634,7 +19570,7 @@ ) ) (property "Datasheet" "" - (at 241.3 91.44 0) + (at 166.37 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16644,9 +19580,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 241.3 91.44 0) - (hide yes) + (property "Description" "" + (at 166.37 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -16656,20 +19591,20 @@ ) ) (pin "1" - (uuid "df2bc319-7315-4d1b-bc98-35b82118d1b4") + (uuid "892020e8-76e6-4627-a2c4-6b6b59c11255") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR067") + (reference "TP26") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 167.64 374.65 0) + (lib_id "Device:C") + (at 127 54.61 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16677,29 +19612,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "69a8b718-f639-4a3c-ab86-1974c857c27c") - (property "Reference" "TP23" - (at 167.64 367.792 0) + (uuid "74970d4f-ab4f-41f7-8df3-eeadfc570866") + (property "Reference" "C3" + (at 127.635 52.07 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "ALARM" - (at 167.64 369.57 0) + (property "Value" "10uF" + (at 127.635 57.15 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 167.64 374.65 0) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" + (at 127 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16710,7 +19647,7 @@ ) ) (property "Datasheet" "" - (at 167.64 374.65 0) + (at 127 54.61 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16720,8 +19657,19 @@ ) ) ) - (property "Description" "" - (at 167.64 374.65 0) + (property "Description" "" + (at 127 54.61 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C15850" + (at 127 54.61 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16731,20 +19679,23 @@ ) ) (pin "1" - (uuid "079f5382-c021-41b5-98b8-a565a0b563bf") + (uuid "d61b5236-15e8-47ec-9033-207ec8ad35e5") + ) + (pin "2" + (uuid "99bc8429-d9f5-48f3-b675-ad93cbdf1d4a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP23") + (reference "C3") (unit 1) ) ) ) ) (symbol - (lib_id "power:+5V") - (at 336.55 193.04 0) + (lib_id "power:GND") + (at 274.32 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16752,9 +19703,10 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "69d0c958-f70d-4737-b55a-d6f6cce4ab52") - (property "Reference" "#PWR073" - (at 336.55 196.85 0) + (fields_autoplaced yes) + (uuid "75e6d13d-dc21-4549-b2d1-26b298601ded") + (property "Reference" "#PWR050" + (at 274.32 381 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16764,8 +19716,8 @@ ) ) ) - (property "Value" "+5V" - (at 336.55 189.484 0) + (property "Value" "GND" + (at 274.32 379.73 0) (show_name no) (do_not_autoplace no) (effects @@ -16775,7 +19727,7 @@ ) ) (property "Footprint" "" - (at 336.55 193.04 0) + (at 274.32 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16786,7 +19738,7 @@ ) ) (property "Datasheet" "" - (at 336.55 193.04 0) + (at 274.32 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16796,8 +19748,9 @@ ) ) ) - (property "Description" "" - (at 336.55 193.04 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 274.32 374.65 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16807,12 +19760,12 @@ ) ) (pin "1" - (uuid "11bed520-fdfd-45b3-8b03-df8bac9c9703") + (uuid "eed2be4b-890e-4852-b22f-aa049b57c98a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR073") + (reference "#PWR050") (unit 1) ) ) @@ -16820,7 +19773,7 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 91.44 374.65 0) + (at 74.93 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16828,9 +19781,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "6c125710-3e0a-40b0-b541-6e83d1e0f564") - (property "Reference" "TP18" - (at 91.44 367.792 0) + (uuid "776a7b64-a406-435b-9ac8-c79e5b6dff4e") + (property "Reference" "TP32" + (at 74.93 385.572 0) (show_name no) (do_not_autoplace no) (effects @@ -16839,8 +19792,8 @@ ) ) ) - (property "Value" "SSR2" - (at 91.44 369.57 0) + (property "Value" "ESP32_EN" + (at 74.93 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -16850,7 +19803,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 91.44 374.65 0) + (at 74.93 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16861,7 +19814,7 @@ ) ) (property "Datasheet" "" - (at 91.44 374.65 0) + (at 74.93 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16872,7 +19825,7 @@ ) ) (property "Description" "" - (at 91.44 374.65 0) + (at 74.93 392.43 0) (show_name no) (do_not_autoplace no) (effects @@ -16882,20 +19835,20 @@ ) ) (pin "1" - (uuid "68f43a5b-07f6-4611-bf70-dc730fa2cd29") + (uuid "c47ae055-2554-4dda-827f-405d544edb7d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP18") + (reference "TP32") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 152.4 356.87 0) + (lib_id "power:GND") + (at 532.13 335.28 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16903,9 +19856,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "6c70294b-4e8e-411d-8244-ca094c3aa425") - (property "Reference" "TP9" - (at 152.4 350.012 0) + (fields_autoplaced yes) + (uuid "77bcdfad-a640-4df6-b18b-6fbddb14462d") + (property "Reference" "#PWR028" + (at 532.13 341.63 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16914,8 +19869,8 @@ ) ) ) - (property "Value" "TC1_CS" - (at 152.4 351.79 0) + (property "Value" "GND" + (at 532.13 340.36 0) (show_name no) (do_not_autoplace no) (effects @@ -16924,8 +19879,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 152.4 356.87 0) + (property "Footprint" "" + (at 532.13 335.28 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16936,7 +19891,7 @@ ) ) (property "Datasheet" "" - (at 152.4 356.87 0) + (at 532.13 335.28 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -16946,8 +19901,9 @@ ) ) ) - (property "Description" "" - (at 152.4 356.87 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 532.13 335.28 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -16957,21 +19913,20 @@ ) ) (pin "1" - (uuid "4502e7bc-f87f-4401-99e4-47a56d8474f2") + (uuid "d31eacdc-d2aa-49c3-8483-b5f84f25a363") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP9") + (reference "#PWR028") (unit 1) ) ) ) ) (symbol - (lib_id "Diode:BAT54S") - (at 298.45 365.76 270) - (mirror x) + (lib_id "power:GND") + (at 499.11 238.76 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -16979,31 +19934,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "6c79d0c4-a4a2-4dc7-8c35-6643ee91ceed") - (property "Reference" "D9" - (at 293.37 363.22 0) + (fields_autoplaced yes) + (uuid "7944d38f-d38c-4f32-89b6-e29e3e2428a8") + (property "Reference" "#PWR023" + (at 499.11 245.11 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "BAT54S" - (at 301.625 372.11 0) + (property "Value" "GND" + (at 499.11 243.84 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Package_TO_SOT_SMD:SOT-23" - (at 298.45 365.76 0) + (property "Footprint" "" + (at 499.11 238.76 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17014,7 +19969,7 @@ ) ) (property "Datasheet" "" - (at 298.45 365.76 0) + (at 499.11 238.76 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17024,18 +19979,8 @@ ) ) ) - (property "Description" "" - (at 298.45 365.76 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C19726" - (at 298.45 365.76 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 499.11 238.76 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17046,26 +19991,20 @@ ) ) (pin "1" - (uuid "d0f88eb7-6e91-472a-9b28-895d1051282b") - ) - (pin "2" - (uuid "f82480d8-88d3-489c-84a5-570fd5dff1dc") - ) - (pin "3" - (uuid "495580a6-4d4d-45e4-9e76-34321698c9c8") + (uuid "aef87dea-fc36-4ce8-8ce2-eb40b360f6cb") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "D9") + (reference "#PWR023") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 524.51 49.53 0) + (lib_id "Device:R") + (at 85.09 77.47 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17073,11 +20012,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "6dde3b60-3624-492c-b1e9-0a4e20a7dc12") - (property "Reference" "#PWR065" - (at 524.51 55.88 0) - (hide yes) + (uuid "7ce1c7a2-8cc7-4225-b901-61baf681b0e4") + (property "Reference" "R2" + (at 85.09 75.438 90) (show_name no) (do_not_autoplace no) (effects @@ -17086,8 +20023,8 @@ ) ) ) - (property "Value" "GND" - (at 524.51 54.61 0) + (property "Value" "5.1k" + (at 85.09 77.47 90) (show_name no) (do_not_autoplace no) (effects @@ -17096,8 +20033,8 @@ ) ) ) - (property "Footprint" "" - (at 524.51 49.53 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 85.09 77.47 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17108,7 +20045,7 @@ ) ) (property "Datasheet" "" - (at 524.51 49.53 0) + (at 85.09 77.47 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17118,8 +20055,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 524.51 49.53 0) + (property "Description" "" + (at 85.09 77.47 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25905" + (at 85.09 77.47 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17130,20 +20077,23 @@ ) ) (pin "1" - (uuid "67d17446-908b-4df6-8bd8-77ec4d8b435d") + (uuid "d780c19e-bf8c-445c-b3bb-9373f30b5ca4") + ) + (pin "2" + (uuid "d8992f9d-61c9-4c05-83f3-5bb9f4f1e845") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR065") + (reference "R2") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 530.86 240.03 0) + (lib_id "Device:R") + (at 459.74 143.51 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17151,11 +20101,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "6e651ee0-7807-4f73-8868-d86598518193") - (property "Reference" "#PWR060" - (at 530.86 243.84 0) - (hide yes) + (uuid "7d033156-c6ea-4f30-aeb4-32ca05f2b810") + (property "Reference" "R16" + (at 459.74 141.478 90) (show_name no) (do_not_autoplace no) (effects @@ -17164,8 +20112,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 530.86 234.95 0) + (property "Value" "100R" + (at 459.74 143.51 90) (show_name no) (do_not_autoplace no) (effects @@ -17174,8 +20122,8 @@ ) ) ) - (property "Footprint" "" - (at 530.86 240.03 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 459.74 143.51 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17186,7 +20134,7 @@ ) ) (property "Datasheet" "" - (at 530.86 240.03 0) + (at 459.74 143.51 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17196,8 +20144,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 530.86 240.03 0) + (property "Description" "" + (at 459.74 143.51 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25076" + (at 459.74 143.51 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17208,20 +20166,23 @@ ) ) (pin "1" - (uuid "56f37de3-4851-4a31-b553-7164b868a604") + (uuid "efcf929a-5dba-4909-b6c8-a3297c99af91") + ) + (pin "2" + (uuid "a9d8574c-8dd3-4b6a-ac9e-bef477bfd720") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR060") + (reference "R16") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 241.3 76.2 0) + (lib_id "Connector:TestPoint") + (at 90.17 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17229,9 +20190,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "6e749520-2256-48ed-aa1d-72cd1c1543ab") - (property "Reference" "R3" - (at 243.332 76.2 90) + (uuid "7d09633c-bc8a-4ad4-af71-21c86e6983a3") + (property "Reference" "TP13" + (at 90.17 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -17240,8 +20201,8 @@ ) ) ) - (property "Value" "10k" - (at 241.3 76.2 90) + (property "Value" "TC1_FAULT" + (at 90.17 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -17250,8 +20211,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 241.3 76.2 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 90.17 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17262,7 +20223,7 @@ ) ) (property "Datasheet" "" - (at 241.3 76.2 0) + (at 90.17 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17273,18 +20234,7 @@ ) ) (property "Description" "" - (at 241.3 76.2 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C25744" - (at 241.3 76.2 0) - (hide yes) + (at 90.17 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -17294,23 +20244,20 @@ ) ) (pin "1" - (uuid "863f23d8-1f28-4653-b84c-ff9360f61da8") - ) - (pin "2" - (uuid "c54156f7-8c23-4bc2-bcc4-e7dba1c99886") + (uuid "1b8f1336-2ae4-49ed-83d1-7fa7a7f3de0b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R3") + (reference "TP13") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 213.36 374.65 0) + (lib_id "Sensor_Temperature:MAX31856") + (at 516.89 146.05 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17318,29 +20265,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "705b95df-9081-4dda-8cc1-5b58b24c1ee2") - (property "Reference" "TP26" - (at 213.36 367.792 0) + (uuid "7dd60915-db54-4045-8a23-164ea8f83fbe") + (property "Reference" "U4" + (at 508.762 160.274 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify right) ) ) - (property "Value" "ENC_BTN" - (at 213.36 369.57 0) + (property "Value" "MAX31856" + (at 530.098 160.274 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify right) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 213.36 374.65 0) + (property "Footprint" "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" + (at 516.89 146.05 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17351,7 +20300,7 @@ ) ) (property "Datasheet" "" - (at 213.36 374.65 0) + (at 516.89 146.05 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17362,7 +20311,18 @@ ) ) (property "Description" "" - (at 213.36 374.65 0) + (at 516.89 146.05 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C2653162" + (at 516.89 146.05 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -17372,20 +20332,59 @@ ) ) (pin "1" - (uuid "892020e8-76e6-4627-a2c4-6b6b59c11255") + (uuid "c2ef9d31-a83a-4523-8ef0-1a7511298af6") + ) + (pin "2" + (uuid "e558718e-993a-400f-b2a6-cf253b660d2c") + ) + (pin "3" + (uuid "47a60143-3d40-40af-b6e9-5c7c6253e593") + ) + (pin "4" + (uuid "18c0d686-1899-4663-a8fd-b82abfc11834") + ) + (pin "5" + (uuid "47660451-c1e4-42cd-97d3-dcf9fd73e31d") + ) + (pin "6" + (uuid "01e0a7bd-6396-4bbd-a379-a02d18f4eee5") + ) + (pin "7" + (uuid "598211c9-5a10-479e-a00c-b9fad334e514") + ) + (pin "8" + (uuid "60991702-74c2-4ad9-8476-6853b7023618") + ) + (pin "9" + (uuid "632390d2-9b25-42aa-8934-320a668f5019") + ) + (pin "10" + (uuid "9b20cbb1-46d8-4098-926f-707bb893944e") + ) + (pin "11" + (uuid "f04e6db7-d7a3-41b4-afbf-18bca2ebc936") + ) + (pin "12" + (uuid "892d218d-561a-4fd6-abc5-1f53ab328507") + ) + (pin "13" + (uuid "48975906-5b7a-4f8c-a4cf-78237c8eb90a") + ) + (pin "14" + (uuid "5dd0552a-c6b9-4bf2-aaad-ca19d57fb359") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP26") + (reference "U4") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 506.73 119.38 0) + (lib_id "Connector:TestPoint") + (at 90.17 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17393,32 +20392,19 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "713eebb3-7ff9-4e99-aa79-6157a983f50b") - (property "Reference" "C17" - (at 507.365 116.84 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Value" "100nF" - (at 507.365 121.92 0) + (uuid "80569b6c-648a-424b-a224-a9a8b85d133e") + (property "Reference" "TP20" + (at 90.17 367.792 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 506.73 119.38 0) - (hide yes) + (property "Value" "PUMP_NODE" + (at 90.17 369.57 0) (show_name no) (do_not_autoplace no) (effects @@ -17427,8 +20413,8 @@ ) ) ) - (property "Datasheet" "" - (at 506.73 119.38 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 90.17 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17438,8 +20424,9 @@ ) ) ) - (property "Description" "" - (at 506.73 119.38 0) + (property "Datasheet" "" + (at 90.17 374.65 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -17448,9 +20435,8 @@ ) ) ) - (property "LCSC" "C1525" - (at 506.73 119.38 0) - (hide yes) + (property "Description" "" + (at 90.17 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -17460,23 +20446,20 @@ ) ) (pin "1" - (uuid "558548ea-68a8-4b63-86c8-466343a43147") - ) - (pin "2" - (uuid "431ac00b-338f-4d40-b9ee-2e19ac10517a") + (uuid "32c2441a-9b8c-4ad2-bfc4-cb746de7bfb0") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C17") + (reference "TP20") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 127 54.61 0) + (lib_id "Connector:TestPoint") + (at 213.36 393.7 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17484,31 +20467,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "74970d4f-ab4f-41f7-8df3-eeadfc570866") - (property "Reference" "C3" - (at 127.635 52.07 0) + (uuid "80dc827b-8a31-44d0-bd68-12166fbf7fe6") + (property "Reference" "TP2" + (at 213.36 386.842 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "10uF" - (at 127.635 57.15 0) + (property "Value" "+3V3" + (at 213.36 388.62 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" - (at 127 54.61 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 213.36 393.7 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17519,7 +20500,7 @@ ) ) (property "Datasheet" "" - (at 127 54.61 0) + (at 213.36 393.7 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17530,18 +20511,7 @@ ) ) (property "Description" "" - (at 127 54.61 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C15850" - (at 127 54.61 0) - (hide yes) + (at 213.36 393.7 0) (show_name no) (do_not_autoplace no) (effects @@ -17551,23 +20521,20 @@ ) ) (pin "1" - (uuid "d61b5236-15e8-47ec-9033-207ec8ad35e5") - ) - (pin "2" - (uuid "99bc8429-d9f5-48f3-b675-ad93cbdf1d4a") + (uuid "a7c26416-71ce-43c9-be5d-a725283988a8") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C3") + (reference "TP2") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 506.73 123.19 0) + (lib_id "Connector:USB_C_Receptacle_USB2.0_14P") + (at 38.1 83.82 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17575,11 +20542,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "758702d2-97b5-4267-b21c-fea06447acf2") - (property "Reference" "#PWR044" - (at 506.73 129.54 0) - (hide yes) + (uuid "84e7568c-058f-4435-b28c-69e5d903014d") + (property "Reference" "J2" + (at 38.1 61.595 0) (show_name no) (do_not_autoplace no) (effects @@ -17588,8 +20553,8 @@ ) ) ) - (property "Value" "GND" - (at 506.73 128.27 0) + (property "Value" "USB-C" + (at 38.1 64.135 0) (show_name no) (do_not_autoplace no) (effects @@ -17598,8 +20563,8 @@ ) ) ) - (property "Footprint" "" - (at 506.73 123.19 0) + (property "Footprint" "Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12" + (at 38.1 83.82 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17610,7 +20575,7 @@ ) ) (property "Datasheet" "" - (at 506.73 123.19 0) + (at 38.1 83.82 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17620,8 +20585,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 506.73 123.19 0) + (property "Description" "" + (at 38.1 83.82 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C165948" + (at 38.1 83.82 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17631,21 +20606,63 @@ ) ) ) - (pin "1" - (uuid "53e9c5da-a1c8-472c-8705-aefdb644b81d") + (pin "A1" + (uuid "e31f1d6f-10d8-4062-a75a-20b510cfebd4") + ) + (pin "A4" + (uuid "fe43c446-7873-42f2-8626-53378d51fcce") + ) + (pin "A5" + (uuid "367381cb-6df7-41f8-8125-644b6ae766e7") + ) + (pin "A6" + (uuid "b78dfb9b-5e5d-4368-8247-ec427c3b7480") + ) + (pin "A7" + (uuid "f92309ea-67f9-4c7e-810c-a8e484bae4d8") + ) + (pin "A9" + (uuid "f78507b4-9ab8-4985-8805-58ca50a84cb9") + ) + (pin "A12" + (uuid "32da6ca2-4a39-4128-a763-c6bd1fb1aae8") + ) + (pin "B1" + (uuid "6e9ced0b-c2de-4c23-9af2-5d984bf4162f") + ) + (pin "B4" + (uuid "bca1b4c5-1835-43d5-b6ac-4b436153a01b") + ) + (pin "B5" + (uuid "df7aebf7-1a4b-4b86-9b87-5f225b4d5d25") + ) + (pin "B6" + (uuid "d3b5a0a3-bbd8-4c3e-a4dd-5124b8296102") + ) + (pin "B7" + (uuid "8a694e75-9e9b-4da9-805f-70930d79bd1e") + ) + (pin "B9" + (uuid "4f360e01-dae7-4a42-8870-b56d66b0d993") + ) + (pin "B12" + (uuid "4974e9de-202f-4267-8180-6342d151b65a") + ) + (pin "SH" + (uuid "9dfcb6d8-a2a1-462e-bb64-1c90ddd13d30") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR044") + (reference "J2") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 326.39 374.65 0) + (lib_id "Connector:TestPoint") + (at 135.89 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17653,11 +20670,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "75e6d13d-dc21-4549-b2d1-26b298601ded") - (property "Reference" "#PWR050" - (at 326.39 381 0) - (hide yes) + (uuid "85cda399-78df-4737-86ad-1f633af73a7a") + (property "Reference" "TP14" + (at 135.89 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -17666,8 +20681,8 @@ ) ) ) - (property "Value" "GND" - (at 326.39 379.73 0) + (property "Value" "TC2_MISO" + (at 135.89 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -17676,8 +20691,8 @@ ) ) ) - (property "Footprint" "" - (at 326.39 374.65 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 135.89 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17688,7 +20703,7 @@ ) ) (property "Datasheet" "" - (at 326.39 374.65 0) + (at 135.89 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17698,9 +20713,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 326.39 374.65 0) - (hide yes) + (property "Description" "" + (at 135.89 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -17710,20 +20724,20 @@ ) ) (pin "1" - (uuid "eed2be4b-890e-4852-b22f-aa049b57c98a") + (uuid "28bbdcd0-a3cc-4858-942b-eb5fb3f9ac6a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR050") + (reference "TP14") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 524.51 123.19 0) + (lib_id "Connector:TestPoint") + (at 31.75 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17731,11 +20745,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "764e0ea4-b8a1-4327-a09d-0388b5fcc1db") - (property "Reference" "#PWR045" - (at 524.51 129.54 0) - (hide yes) + (uuid "8605ad44-4be5-4f56-98fe-78fe69fcdf74") + (property "Reference" "TP28" + (at 31.75 385.572 0) (show_name no) (do_not_autoplace no) (effects @@ -17744,8 +20756,8 @@ ) ) ) - (property "Value" "GND" - (at 524.51 128.27 0) + (property "Value" "TC1_N" + (at 31.75 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -17754,8 +20766,8 @@ ) ) ) - (property "Footprint" "" - (at 524.51 123.19 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 31.75 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17766,7 +20778,7 @@ ) ) (property "Datasheet" "" - (at 524.51 123.19 0) + (at 31.75 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17776,9 +20788,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 524.51 123.19 0) - (hide yes) + (property "Description" "" + (at 31.75 392.43 0) (show_name no) (do_not_autoplace no) (effects @@ -17788,20 +20799,20 @@ ) ) (pin "1" - (uuid "ddb9843e-b079-4e06-84c3-ae0eba7064bf") + (uuid "8618f9ba-c05b-4b41-9437-600753c410c4") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR045") + (reference "TP28") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 106.68 392.43 0) + (lib_id "Connector:Screw_Terminal_01x02") + (at 344.17 196.85 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17809,9 +20820,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "776a7b64-a406-435b-9ac8-c79e5b6dff4e") - (property "Reference" "TP32" - (at 106.68 385.572 0) + (uuid "89fa6c35-0faa-4a54-a4e0-40c92583d015") + (property "Reference" "J9" + (at 344.17 194.31 0) (show_name no) (do_not_autoplace no) (effects @@ -17820,8 +20831,8 @@ ) ) ) - (property "Value" "MCU_EN" - (at 106.68 387.35 0) + (property "Value" "LID SWITCH" + (at 344.17 201.93 0) (show_name no) (do_not_autoplace no) (effects @@ -17830,8 +20841,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 106.68 392.43 0) + (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" + (at 344.17 196.85 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17842,7 +20853,7 @@ ) ) (property "Datasheet" "" - (at 106.68 392.43 0) + (at 344.17 196.85 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17853,7 +20864,18 @@ ) ) (property "Description" "" - (at 106.68 392.43 0) + (at 344.17 196.85 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C474881" + (at 344.17 196.85 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -17863,20 +20885,23 @@ ) ) (pin "1" - (uuid "c47ae055-2554-4dda-827f-405d544edb7d") + (uuid "1365206f-7d6e-4b36-98a7-855f2d7bc576") + ) + (pin "2" + (uuid "372ca247-7717-4b0e-849a-205b5f984f5d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP32") + (reference "J9") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 458.47 152.4 90) + (lib_id "power:GND") + (at 67.31 271.78 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17884,9 +20909,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "7a7f51bd-a357-4b4c-ad99-7efde148c1a0") - (property "Reference" "R7" - (at 458.47 150.368 90) + (fields_autoplaced yes) + (uuid "8ee3633a-c251-4630-9dce-1a00f7153038") + (property "Reference" "#PWR038" + (at 67.31 278.13 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -17895,8 +20922,8 @@ ) ) ) - (property "Value" "100R" - (at 458.47 152.4 90) + (property "Value" "GND" + (at 67.31 276.86 0) (show_name no) (do_not_autoplace no) (effects @@ -17905,8 +20932,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 458.47 152.4 0) + (property "Footprint" "" + (at 67.31 271.78 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17917,7 +20944,7 @@ ) ) (property "Datasheet" "" - (at 458.47 152.4 0) + (at 67.31 271.78 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17927,18 +20954,8 @@ ) ) ) - (property "Description" "" - (at 458.47 152.4 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C25076" - (at 458.47 152.4 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 67.31 271.78 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -17949,23 +20966,20 @@ ) ) (pin "1" - (uuid "a72bd815-2d31-4efe-b9de-5a95d6a4f215") - ) - (pin "2" - (uuid "6967a08d-d9d6-4b4d-b93f-03791619cec3") + (uuid "f7d575eb-25b2-472c-a63b-4f51659f10f9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R7") + (reference "#PWR038") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 85.09 77.47 90) + (lib_id "Connector:TestPoint") + (at 123.19 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -17973,9 +20987,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "7ce1c7a2-8cc7-4225-b901-61baf681b0e4") - (property "Reference" "R2" - (at 85.09 75.438 90) + (uuid "90b252f9-0209-46e9-9740-7931a375785a") + (property "Reference" "TP35" + (at 123.19 385.572 0) (show_name no) (do_not_autoplace no) (effects @@ -17984,8 +20998,8 @@ ) ) ) - (property "Value" "5.1k" - (at 85.09 77.47 90) + (property "Value" "SUPERVISOR_TX" + (at 123.19 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -17994,8 +21008,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 85.09 77.47 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 123.19 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18006,7 +21020,7 @@ ) ) (property "Datasheet" "" - (at 85.09 77.47 0) + (at 123.19 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18017,18 +21031,7 @@ ) ) (property "Description" "" - (at 85.09 77.47 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C25905" - (at 85.09 77.47 0) - (hide yes) + (at 123.19 392.43 0) (show_name no) (do_not_autoplace no) (effects @@ -18038,23 +21041,20 @@ ) ) (pin "1" - (uuid "d780c19e-bf8c-445c-b3bb-9373f30b5ca4") - ) - (pin "2" - (uuid "d8992f9d-61c9-4c05-83f3-5bb9f4f1e845") + (uuid "89c43301-98e1-4945-ac9b-9532b82a0b2e") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R2") + (reference "TP35") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 213.36 356.87 0) + (lib_id "power:GND") + (at 31.75 187.96 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18062,9 +21062,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "7d09633c-bc8a-4ad4-af71-21c86e6983a3") - (property "Reference" "TP13" - (at 213.36 350.012 0) + (fields_autoplaced yes) + (uuid "9159c2c1-c584-4376-870b-28b64eb55071") + (property "Reference" "#PWR019" + (at 31.75 194.31 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -18073,8 +21075,8 @@ ) ) ) - (property "Value" "TC1_FAULT" - (at 213.36 351.79 0) + (property "Value" "GND" + (at 31.75 193.04 0) (show_name no) (do_not_autoplace no) (effects @@ -18083,8 +21085,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 213.36 356.87 0) + (property "Footprint" "" + (at 31.75 187.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18095,7 +21097,7 @@ ) ) (property "Datasheet" "" - (at 213.36 356.87 0) + (at 31.75 187.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18105,8 +21107,9 @@ ) ) ) - (property "Description" "" - (at 213.36 356.87 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 31.75 187.96 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -18116,20 +21119,20 @@ ) ) (pin "1" - (uuid "1b8f1336-2ae4-49ed-83d1-7fa7a7f3de0b") + (uuid "97f79d99-935e-4864-bf28-bc1e7c553824") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP13") + (reference "#PWR019") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 121.92 374.65 0) + (lib_id "Device:C") + (at 481.33 85.09 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18137,29 +21140,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "80569b6c-648a-424b-a224-a9a8b85d133e") - (property "Reference" "TP20" - (at 121.92 367.792 0) + (uuid "92a66687-e21b-4c15-a8d5-5fd628a23ce6") + (property "Reference" "C9" + (at 481.965 82.55 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "PUMP_NODE" - (at 121.92 369.57 0) + (property "Value" "100pF" + (at 481.965 87.63 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 121.92 374.65 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 481.33 85.09 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18170,7 +21175,7 @@ ) ) (property "Datasheet" "" - (at 121.92 374.65 0) + (at 481.33 85.09 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18181,7 +21186,18 @@ ) ) (property "Description" "" - (at 121.92 374.65 0) + (at 481.33 85.09 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C26409" + (at 481.33 85.09 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -18191,20 +21207,23 @@ ) ) (pin "1" - (uuid "32c2441a-9b8c-4ad2-bfc4-cb746de7bfb0") + (uuid "e0ec68fd-660c-4393-8ad3-fee9315a2f81") + ) + (pin "2" + (uuid "747e8900-e321-4c9d-89fe-55a32d9256aa") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP20") + (reference "C9") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 45.72 356.87 0) + (lib_id "Device:C") + (at 293.37 66.04 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18212,29 +21231,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "80dc827b-8a31-44d0-bd68-12166fbf7fe6") - (property "Reference" "TP2" - (at 45.72 350.012 0) + (uuid "92df9b1e-e78c-418a-8feb-9dbc5f1305a2") + (property "Reference" "C6" + (at 294.005 63.5 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "+3V3" - (at 45.72 351.79 0) + (property "Value" "10uF" + (at 294.005 68.58 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 45.72 356.87 0) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" + (at 293.37 66.04 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18245,7 +21266,7 @@ ) ) (property "Datasheet" "" - (at 45.72 356.87 0) + (at 293.37 66.04 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18256,7 +21277,18 @@ ) ) (property "Description" "" - (at 45.72 356.87 0) + (at 293.37 66.04 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C15850" + (at 293.37 66.04 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -18265,21 +21297,24 @@ ) ) ) + (pin "2" + (uuid "6ef8eb50-5f3b-40ae-93ba-3116d8031222") + ) (pin "1" - (uuid "a7c26416-71ce-43c9-be5d-a725283988a8") + (uuid "82a9f87c-b6c4-45ed-b213-428741b22a1a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP2") + (reference "C6") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:USB_C_Receptacle_USB2.0_14P") - (at 38.1 83.82 0) + (lib_id "power:+3.3V") + (at 519.43 115.57 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18287,9 +21322,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "84e7568c-058f-4435-b28c-69e5d903014d") - (property "Reference" "J2" - (at 38.1 61.595 0) + (fields_autoplaced yes) + (uuid "93e70e2a-87b1-4596-a947-4638f0914c21") + (property "Reference" "#PWR045" + (at 519.43 119.38 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -18298,8 +21335,8 @@ ) ) ) - (property "Value" "USB-C" - (at 38.1 64.135 0) + (property "Value" "+3.3V" + (at 519.43 110.49 0) (show_name no) (do_not_autoplace no) (effects @@ -18308,8 +21345,8 @@ ) ) ) - (property "Footprint" "Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12" - (at 38.1 83.82 0) + (property "Footprint" "" + (at 519.43 115.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18320,7 +21357,7 @@ ) ) (property "Datasheet" "" - (at 38.1 83.82 0) + (at 519.43 115.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18330,18 +21367,8 @@ ) ) ) - (property "Description" "" - (at 38.1 83.82 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C165948" - (at 38.1 83.82 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 519.43 115.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18351,63 +21378,21 @@ ) ) ) - (pin "A1" - (uuid "e31f1d6f-10d8-4062-a75a-20b510cfebd4") - ) - (pin "A4" - (uuid "fe43c446-7873-42f2-8626-53378d51fcce") - ) - (pin "A5" - (uuid "367381cb-6df7-41f8-8125-644b6ae766e7") - ) - (pin "A6" - (uuid "b78dfb9b-5e5d-4368-8247-ec427c3b7480") - ) - (pin "A7" - (uuid "f92309ea-67f9-4c7e-810c-a8e484bae4d8") - ) - (pin "A9" - (uuid "f78507b4-9ab8-4985-8805-58ca50a84cb9") - ) - (pin "A12" - (uuid "32da6ca2-4a39-4128-a763-c6bd1fb1aae8") - ) - (pin "B1" - (uuid "6e9ced0b-c2de-4c23-9af2-5d984bf4162f") - ) - (pin "B4" - (uuid "bca1b4c5-1835-43d5-b6ac-4b436153a01b") - ) - (pin "B5" - (uuid "df7aebf7-1a4b-4b86-9b87-5f225b4d5d25") - ) - (pin "B6" - (uuid "d3b5a0a3-bbd8-4c3e-a4dd-5124b8296102") - ) - (pin "B7" - (uuid "8a694e75-9e9b-4da9-805f-70930d79bd1e") - ) - (pin "B9" - (uuid "4f360e01-dae7-4a42-8870-b56d66b0d993") - ) - (pin "B12" - (uuid "4974e9de-202f-4267-8180-6342d151b65a") - ) - (pin "SH" - (uuid "9dfcb6d8-a2a1-462e-bb64-1c90ddd13d30") + (pin "1" + (uuid "46512d68-703f-4f90-a3df-107f2619a0b9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "J2") + (reference "#PWR045") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 45.72 392.43 0) + (lib_id "Device:C") + (at 471.17 147.32 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18415,29 +21400,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "8605ad44-4be5-4f56-98fe-78fe69fcdf74") - (property "Reference" "TP28" - (at 45.72 385.572 0) + (uuid "95e51d09-57f9-43c2-b37f-ffd42ee9cdb9") + (property "Reference" "C16" + (at 473.075 144.78 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "TC1_N" - (at 45.72 387.35 0) + (property "Value" "10nF" + (at 473.075 149.86 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 45.72 392.43 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 471.17 147.32 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18448,7 +21435,7 @@ ) ) (property "Datasheet" "" - (at 45.72 392.43 0) + (at 471.17 147.32 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18459,7 +21446,18 @@ ) ) (property "Description" "" - (at 45.72 392.43 0) + (at 471.17 147.32 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C15195" + (at 471.17 147.32 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -18469,20 +21467,23 @@ ) ) (pin "1" - (uuid "8618f9ba-c05b-4b41-9437-600753c410c4") + (uuid "5b840d67-759b-4d8f-9951-323db2bbf275") + ) + (pin "2" + (uuid "9e107bb9-7b0f-4681-b64e-5b1b335934a9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP28") + (reference "C16") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:Screw_Terminal_01x02") - (at 344.17 196.85 0) + (lib_id "power:GND") + (at 566.42 264.16 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18490,9 +21491,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "89fa6c35-0faa-4a54-a4e0-40c92583d015") - (property "Reference" "J9" - (at 344.17 194.31 0) + (fields_autoplaced yes) + (uuid "974ca356-dedf-4974-a368-573fc474eada") + (property "Reference" "#PWR036" + (at 566.42 270.51 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -18501,8 +21504,8 @@ ) ) ) - (property "Value" "LID SWITCH" - (at 344.17 201.93 0) + (property "Value" "GND" + (at 566.42 269.24 0) (show_name no) (do_not_autoplace no) (effects @@ -18511,8 +21514,8 @@ ) ) ) - (property "Footprint" "TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm" - (at 344.17 196.85 0) + (property "Footprint" "" + (at 566.42 264.16 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18523,7 +21526,7 @@ ) ) (property "Datasheet" "" - (at 344.17 196.85 0) + (at 566.42 264.16 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18533,18 +21536,8 @@ ) ) ) - (property "Description" "" - (at 344.17 196.85 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C474881" - (at 344.17 196.85 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 566.42 264.16 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18555,23 +21548,20 @@ ) ) (pin "1" - (uuid "1365206f-7d6e-4b36-98a7-855f2d7bc576") - ) - (pin "2" - (uuid "372ca247-7717-4b0e-849a-205b5f984f5d") + (uuid "61b397e8-0d17-41b7-990b-fbdf54d37f26") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "J9") + (reference "#PWR036") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 481.33 161.29 0) + (lib_id "Device:C") + (at 506.73 49.53 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18579,31 +21569,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "8d00c115-307c-4ecc-8814-fe2a68dd26ff") - (property "Reference" "#PWR049" - (at 481.33 167.64 0) - (hide yes) + (uuid "97c59e01-3e02-4767-af1f-666af411dd42") + (property "Reference" "C11" + (at 507.365 46.99 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "GND" - (at 481.33 166.37 0) + (property "Value" "100nF" + (at 507.365 52.07 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "" - (at 481.33 161.29 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 506.73 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18614,7 +21604,7 @@ ) ) (property "Datasheet" "" - (at 481.33 161.29 0) + (at 506.73 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18624,8 +21614,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 481.33 161.29 0) + (property "Description" "" + (at 506.73 49.53 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C1525" + (at 506.73 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18635,21 +21635,24 @@ ) ) ) + (pin "2" + (uuid "12a7811e-60db-4513-899b-2d5bd74e539a") + ) (pin "1" - (uuid "e4729713-00b6-4a80-863e-b2f14dac1bdc") + (uuid "9d3a1905-9687-4780-a87d-ac0f5c277164") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR049") + (reference "C11") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 67.31 220.98 0) + (lib_id "power:PWR_FLAG") + (at 139.7 109.22 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18657,10 +21660,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "8ee3633a-c251-4630-9dce-1a00f7153038") - (property "Reference" "#PWR038" - (at 67.31 227.33 0) + (uuid "9866e8e0-6166-48e9-99fe-eb6dccba2930") + (property "Reference" "#FLG04" + (at 139.7 107.315 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18670,8 +21672,8 @@ ) ) ) - (property "Value" "GND" - (at 67.31 226.06 0) + (property "Value" "PWR_FLAG" + (at 139.7 105.41 0) (show_name no) (do_not_autoplace no) (effects @@ -18681,7 +21683,7 @@ ) ) (property "Footprint" "" - (at 67.31 220.98 0) + (at 139.7 109.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18692,7 +21694,7 @@ ) ) (property "Datasheet" "" - (at 67.31 220.98 0) + (at 139.7 109.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18702,9 +21704,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 67.31 220.98 0) - (hide yes) + (property "Description" "" + (at 139.7 109.22 0) (show_name no) (do_not_autoplace no) (effects @@ -18714,20 +21715,20 @@ ) ) (pin "1" - (uuid "f7d575eb-25b2-472c-a63b-4f51659f10f9") + (uuid "f32ea75f-292e-4a79-853b-af457d4e2530") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR038") + (reference "#FLG04") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 425.45 265.43 0) + (lib_id "Device:Buzzer") + (at 123.19 290.83 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18735,31 +21736,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "9159c2c1-c584-4376-870b-28b64eb55071") - (property "Reference" "#PWR019" - (at 425.45 271.78 0) - (hide yes) + (uuid "9acb4869-677e-488a-99ba-8e3a611f3bf3") + (property "Reference" "BZ1" + (at 127 289.56 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "GND" - (at 425.45 270.51 0) + (property "Value" "TMB12A05 5V" + (at 127 292.1 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "" - (at 425.45 265.43 0) + (property "Footprint" "Buzzer_Beeper:Buzzer_12x9.5RM7.6" + (at 123.19 290.83 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18770,7 +21771,7 @@ ) ) (property "Datasheet" "" - (at 425.45 265.43 0) + (at 123.19 290.83 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18780,8 +21781,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 425.45 265.43 0) + (property "Description" "" + (at 123.19 290.83 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C96093" + (at 123.19 290.83 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18792,20 +21803,23 @@ ) ) (pin "1" - (uuid "97f79d99-935e-4864-bf28-bc1e7c553824") + (uuid "92e757a2-36aa-4c89-9710-ace3af705a79") + ) + (pin "2" + (uuid "d3dbf283-04d7-46b4-8219-2e4718ca784a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR019") + (reference "BZ1") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 481.33 81.28 0) + (lib_id "Switch:SW_Push") + (at 212.09 91.44 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18813,9 +21827,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "92a66687-e21b-4c15-a8d5-5fd628a23ce6") - (property "Reference" "C9" - (at 481.965 78.74 0) + (uuid "9b15da63-f570-402a-adfa-2bc693c9ac1c") + (property "Reference" "SW1" + (at 209.55 90.17 0) (show_name no) (do_not_autoplace no) (effects @@ -18825,19 +21839,18 @@ (justify left) ) ) - (property "Value" "100pF" - (at 481.965 83.82 0) + (property "Value" "RESET" + (at 213.614 91.44 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 481.33 81.28 0) + (property "Footprint" "Button_Switch_THT:SW_PUSH_6mm_H5mm" + (at 212.09 91.44 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18848,7 +21861,7 @@ ) ) (property "Datasheet" "" - (at 481.33 81.28 0) + (at 212.09 91.44 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18859,7 +21872,7 @@ ) ) (property "Description" "" - (at 481.33 81.28 0) + (at 212.09 91.44 0) (show_name no) (do_not_autoplace no) (effects @@ -18868,8 +21881,8 @@ ) ) ) - (property "LCSC" "C26409" - (at 481.33 81.28 0) + (property "LCSC" "C111609" + (at 212.09 91.44 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18880,23 +21893,24 @@ ) ) (pin "1" - (uuid "e0ec68fd-660c-4393-8ad3-fee9315a2f81") + (uuid "c2b24e61-373b-4ce1-af0d-0447d91a16f5") ) (pin "2" - (uuid "747e8900-e321-4c9d-89fe-55a32d9256aa") + (uuid "5069153e-93e9-4076-b066-e9e4a97c3933") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C9") + (reference "SW1") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 293.37 66.04 0) + (lib_id "Diode:BAT54S") + (at 234.95 243.84 270) + (mirror x) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18904,9 +21918,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "92df9b1e-e78c-418a-8feb-9dbc5f1305a2") - (property "Reference" "C6" - (at 294.005 63.5 0) + (uuid "9ce6e574-23c6-46c6-94b7-a9c8646c7390") + (property "Reference" "D5" + (at 229.87 241.3 0) (show_name no) (do_not_autoplace no) (effects @@ -18916,8 +21930,8 @@ (justify left) ) ) - (property "Value" "10uF" - (at 294.005 68.58 0) + (property "Value" "BAT54S" + (at 238.125 250.19 0) (show_name no) (do_not_autoplace no) (effects @@ -18927,8 +21941,8 @@ (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" - (at 293.37 66.04 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23" + (at 234.95 243.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18939,7 +21953,7 @@ ) ) (property "Datasheet" "" - (at 293.37 66.04 0) + (at 234.95 243.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18950,7 +21964,7 @@ ) ) (property "Description" "" - (at 293.37 66.04 0) + (at 234.95 243.84 0) (show_name no) (do_not_autoplace no) (effects @@ -18959,8 +21973,8 @@ ) ) ) - (property "LCSC" "C15850" - (at 293.37 66.04 0) + (property "LCSC" "C19726" + (at 234.95 243.84 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -18970,24 +21984,27 @@ ) ) ) + (pin "3" + (uuid "6b5d1e59-4804-4d4e-b0bc-eefd3ec9d105") + ) (pin "2" - (uuid "6ef8eb50-5f3b-40ae-93ba-3116d8031222") + (uuid "72bced36-3c18-4fb0-a3c9-f1750e0c7d3d") ) (pin "1" - (uuid "82a9f87c-b6c4-45ed-b213-428741b22a1a") + (uuid "67d2b9ae-b95c-4c86-b38d-e9b32334d592") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C6") + (reference "D5") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 256.54 260.35 0) + (lib_id "Connector:TestPoint") + (at 24.13 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -18995,9 +22012,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "96f91f16-786a-4147-b700-a633a4c11dcf") - (property "Reference" "R28" - (at 258.572 260.35 90) + (uuid "9d5ec73c-bc3b-44fb-81a3-0939d32291c8") + (property "Reference" "TP27" + (at 24.13 385.572 0) (show_name no) (do_not_autoplace no) (effects @@ -19006,8 +22023,8 @@ ) ) ) - (property "Value" "10k" - (at 256.54 260.35 90) + (property "Value" "TC1_P" + (at 24.13 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -19016,8 +22033,8 @@ ) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 256.54 260.35 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 24.13 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19028,7 +22045,7 @@ ) ) (property "Datasheet" "" - (at 256.54 260.35 0) + (at 24.13 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19039,7 +22056,7 @@ ) ) (property "Description" "" - (at 256.54 260.35 0) + (at 24.13 392.43 0) (show_name no) (do_not_autoplace no) (effects @@ -19048,24 +22065,21 @@ ) ) ) - (pin "2" - (uuid "9e0937e6-8832-4363-bc3a-2406e567742f") - ) (pin "1" - (uuid "375eba37-d541-464d-9a8b-3c546755da6d") + (uuid "f5f93e02-57d9-4093-8168-d4e24419e6db") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R28") + (reference "TP27") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 506.73 45.72 0) + (lib_id "power:PWR_FLAG") + (at 78.74 109.22 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19073,31 +22087,30 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "97c59e01-3e02-4767-af1f-666af411dd42") - (property "Reference" "C11" - (at 507.365 43.18 0) + (uuid "9dfe751f-e7bb-4c12-b36d-f0b26f2bb981") + (property "Reference" "#FLG01" + (at 78.74 107.315 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "100nF" - (at 507.365 48.26 0) + (property "Value" "PWR_FLAG" + (at 78.74 105.41 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 506.73 45.72 0) + (property "Footprint" "" + (at 78.74 109.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19108,7 +22121,7 @@ ) ) (property "Datasheet" "" - (at 506.73 45.72 0) + (at 78.74 109.22 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19119,18 +22132,7 @@ ) ) (property "Description" "" - (at 506.73 45.72 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C1525" - (at 506.73 45.72 0) - (hide yes) + (at 78.74 109.22 0) (show_name no) (do_not_autoplace no) (effects @@ -19139,24 +22141,21 @@ ) ) ) - (pin "2" - (uuid "12a7811e-60db-4513-899b-2d5bd74e539a") - ) (pin "1" - (uuid "9d3a1905-9687-4780-a87d-ac0f5c277164") + (uuid "c4f53b7b-5482-49c1-81d8-d8b5d313a40f") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C11") + (reference "#FLG01") (unit 1) ) ) ) ) (symbol - (lib_id "power:PWR_FLAG") - (at 139.7 109.22 0) + (lib_id "Device:C") + (at 40.64 184.15 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19164,30 +22163,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9866e8e0-6166-48e9-99fe-eb6dccba2930") - (property "Reference" "#FLG04" - (at 139.7 107.315 0) - (hide yes) + (uuid "9e0e93aa-a28d-42c2-87a7-26eeb54946f3") + (property "Reference" "C21" + (at 41.275 181.61 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "PWR_FLAG" - (at 139.7 105.41 0) + (property "Value" "100nF" + (at 41.275 186.69 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "" - (at 139.7 109.22 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 40.64 184.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19198,7 +22198,7 @@ ) ) (property "Datasheet" "" - (at 139.7 109.22 0) + (at 40.64 184.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19209,7 +22209,18 @@ ) ) (property "Description" "" - (at 139.7 109.22 0) + (at 40.64 184.15 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C1525" + (at 40.64 184.15 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -19219,20 +22230,23 @@ ) ) (pin "1" - (uuid "f32ea75f-292e-4a79-853b-af457d4e2530") + (uuid "7379a2e5-1e76-4dfa-a6a0-191ca4ad7e6d") + ) + (pin "2" + (uuid "c43321d8-b5c6-49f3-a4eb-e0c56f141303") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#FLG04") + (reference "C21") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 91.44 356.87 0) + (lib_id "Device:R") + (at 459.74 151.13 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19240,9 +22254,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "986cf827-7c66-481c-b25a-a69b83bd658e") - (property "Reference" "TP5" - (at 91.44 350.012 0) + (uuid "9f2d76f0-65f9-4e69-878c-bd33add6596d") + (property "Reference" "R17" + (at 459.74 149.098 90) (show_name no) (do_not_autoplace no) (effects @@ -19251,8 +22265,8 @@ ) ) ) - (property "Value" "VBUS" - (at 91.44 351.79 0) + (property "Value" "100R" + (at 459.74 151.13 90) (show_name no) (do_not_autoplace no) (effects @@ -19261,8 +22275,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 91.44 356.87 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 459.74 151.13 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19273,7 +22287,7 @@ ) ) (property "Datasheet" "" - (at 91.44 356.87 0) + (at 459.74 151.13 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19284,7 +22298,18 @@ ) ) (property "Description" "" - (at 91.44 356.87 0) + (at 459.74 151.13 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C25076" + (at 459.74 151.13 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -19294,20 +22319,23 @@ ) ) (pin "1" - (uuid "f5acc721-ee0e-4a5b-883b-7ed22887c7c2") + (uuid "43ba3325-4045-45ff-b11e-b86b79a85178") + ) + (pin "2" + (uuid "7909dccb-c14a-43d5-baac-6927dfb6cb6e") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP5") + (reference "R17") (unit 1) ) ) ) ) (symbol - (lib_id "Device:Buzzer") - (at 123.19 240.03 0) + (lib_id "Device:R") + (at 308.61 232.41 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19315,31 +22343,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9acb4869-677e-488a-99ba-8e3a611f3bf3") - (property "Reference" "BZ1" - (at 127 238.76 0) + (uuid "9f40e584-5411-4a10-bd2b-36cb34015acb") + (property "Reference" "R32" + (at 310.642 232.41 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "TMB12A05 5V" - (at 127 241.3 0) + (property "Value" "10k" + (at 308.61 232.41 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Buzzer_Beeper:Buzzer_12x9.5RM7.6" - (at 123.19 240.03 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 308.61 232.41 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19350,7 +22376,7 @@ ) ) (property "Datasheet" "" - (at 123.19 240.03 0) + (at 308.61 232.41 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19361,18 +22387,7 @@ ) ) (property "Description" "" - (at 123.19 240.03 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C96093" - (at 123.19 240.03 0) - (hide yes) + (at 308.61 232.41 0) (show_name no) (do_not_autoplace no) (effects @@ -19382,23 +22397,23 @@ ) ) (pin "1" - (uuid "92e757a2-36aa-4c89-9710-ace3af705a79") + (uuid "b6540ef0-ff69-4765-b1f6-d9ecaccb3404") ) (pin "2" - (uuid "d3dbf283-04d7-46b4-8219-2e4718ca784a") + (uuid "a5f4a69d-3986-4382-bf0c-b383ccba2cf2") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "BZ1") + (reference "R32") (unit 1) ) ) ) ) (symbol - (lib_id "Switch:SW_Push") - (at 228.6 81.28 0) + (lib_id "power:GND") + (at 308.61 248.92 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19406,20 +22421,20 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9b15da63-f570-402a-adfa-2bc693c9ac1c") - (property "Reference" "SW1" - (at 229.87 78.74 0) + (uuid "9f7d4aae-9fed-4fa3-9031-11175a2fd953") + (property "Reference" "#PWR082" + (at 308.61 255.27 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "RESET" - (at 228.6 82.804 0) + (property "Value" "GND" + (at 308.61 252.73 0) (show_name no) (do_not_autoplace no) (effects @@ -19428,8 +22443,8 @@ ) ) ) - (property "Footprint" "Button_Switch_THT:SW_PUSH_6mm_H5mm" - (at 228.6 81.28 0) + (property "Footprint" "" + (at 308.61 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19440,7 +22455,7 @@ ) ) (property "Datasheet" "" - (at 228.6 81.28 0) + (at 308.61 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19451,7 +22466,7 @@ ) ) (property "Description" "" - (at 228.6 81.28 0) + (at 308.61 248.92 0) (show_name no) (do_not_autoplace no) (effects @@ -19460,36 +22475,21 @@ ) ) ) - (property "LCSC" "C111609" - (at 228.6 81.28 0) - (hide yes) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (pin "1" - (uuid "c2b24e61-373b-4ce1-af0d-0447d91a16f5") - ) - (pin "2" - (uuid "5069153e-93e9-4076-b066-e9e4a97c3933") - ) + (pin "1" + (uuid "55047976-2742-474f-bbf7-17ecb0740d9f") + ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "SW1") + (reference "#PWR082") (unit 1) ) ) ) ) (symbol - (lib_id "Diode:BAT54S") - (at 234.95 243.84 270) - (mirror x) + (lib_id "Device:D_Schottky") + (at 72.39 48.26 180) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19497,31 +22497,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9ce6e574-23c6-46c6-94b7-a9c8646c7390") - (property "Reference" "D5" - (at 229.87 241.3 0) + (uuid "9ff0b56c-d5bc-4583-945e-df35ef5749e2") + (property "Reference" "D1" + (at 72.39 50.8 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "BAT54S" - (at 238.125 250.19 0) + (property "Value" "SS34" + (at 72.39 45.72 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Package_TO_SOT_SMD:SOT-23" - (at 234.95 243.84 0) + (property "Footprint" "Diode_SMD:D_SMA" + (at 72.39 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19532,7 +22530,7 @@ ) ) (property "Datasheet" "" - (at 234.95 243.84 0) + (at 72.39 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19543,7 +22541,7 @@ ) ) (property "Description" "" - (at 234.95 243.84 0) + (at 72.39 48.26 0) (show_name no) (do_not_autoplace no) (effects @@ -19552,8 +22550,8 @@ ) ) ) - (property "LCSC" "C19726" - (at 234.95 243.84 0) + (property "LCSC" "C8678" + (at 72.39 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19563,27 +22561,24 @@ ) ) ) - (pin "3" - (uuid "6b5d1e59-4804-4d4e-b0bc-eefd3ec9d105") + (pin "1" + (uuid "81e0c9f7-e5b1-4e4c-a4a4-8a9d00a6ad5d") ) (pin "2" - (uuid "72bced36-3c18-4fb0-a3c9-f1750e0c7d3d") - ) - (pin "1" - (uuid "67d2b9ae-b95c-4c86-b38d-e9b32334d592") + (uuid "b0da0294-2f13-48e4-be62-6aaa41adf0f2") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "D5") + (reference "D1") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 76.2 392.43 0) + (lib_id "Device:C") + (at 76.2 179.07 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19591,29 +22586,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9d18e2ea-a418-4217-b56e-33918843be8c") - (property "Reference" "TP30" - (at 76.2 385.572 0) + (uuid "a12a6a61-106d-4474-8cf0-d87a16fb5635") + (property "Reference" "C22" + (at 76.835 176.53 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "TC2_N" - (at 76.2 387.35 0) + (property "Value" "100nF" + (at 76.835 181.61 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 76.2 392.43 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 76.2 179.07 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19624,7 +22621,7 @@ ) ) (property "Datasheet" "" - (at 76.2 392.43 0) + (at 76.2 179.07 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19635,7 +22632,18 @@ ) ) (property "Description" "" - (at 76.2 392.43 0) + (at 76.2 179.07 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C1525" + (at 76.2 179.07 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -19645,20 +22653,23 @@ ) ) (pin "1" - (uuid "f56217fb-fe82-4e9d-96f5-e9b361299a4d") + (uuid "5c5c15c0-41f2-4755-ab6b-15dea3d66f7e") + ) + (pin "2" + (uuid "4b9beeb5-8b84-44cc-9194-9f18e3ee0cea") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP30") + (reference "C22") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 481.33 157.48 0) + (lib_id "Device:R") + (at 544.83 248.92 180) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19666,31 +22677,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9d31f0ab-834c-473b-a6db-e8a21517103d") - (property "Reference" "C15" - (at 481.965 154.94 0) + (uuid "a17956d8-0551-46e1-a9e7-d2d8702eedcc") + (property "Reference" "R7" + (at 542.798 248.92 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "100pF" - (at 481.965 160.02 0) + (property "Value" "10k" + (at 544.83 248.92 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 481.33 157.48 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 544.83 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19701,7 +22710,7 @@ ) ) (property "Datasheet" "" - (at 481.33 157.48 0) + (at 544.83 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19712,7 +22721,7 @@ ) ) (property "Description" "" - (at 481.33 157.48 0) + (at 544.83 248.92 0) (show_name no) (do_not_autoplace no) (effects @@ -19721,8 +22730,8 @@ ) ) ) - (property "LCSC" "C26409" - (at 481.33 157.48 0) + (property "LCSC" "C25076" + (at 544.83 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19733,23 +22742,23 @@ ) ) (pin "1" - (uuid "fd320d16-0eff-4fdc-aef8-68af467edfdb") + (uuid "72c76da7-5158-4ddc-8604-15c00d2acf2c") ) (pin "2" - (uuid "993cc30b-1793-4454-a836-6d615f52ffc0") + (uuid "7e3f7b82-8e54-47aa-9802-78f23bb76aa0") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C15") + (reference "R7") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 30.48 392.43 0) + (lib_id "power:+3.3V") + (at 519.43 43.18 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19757,9 +22766,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9d5ec73c-bc3b-44fb-81a3-0939d32291c8") - (property "Reference" "TP27" - (at 30.48 385.572 0) + (fields_autoplaced yes) + (uuid "a1eb3c4b-534e-468d-901d-a5bd2980692d") + (property "Reference" "#PWR013" + (at 519.43 46.99 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -19768,8 +22779,8 @@ ) ) ) - (property "Value" "TC1_P" - (at 30.48 387.35 0) + (property "Value" "+3.3V" + (at 519.43 38.1 0) (show_name no) (do_not_autoplace no) (effects @@ -19778,8 +22789,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 30.48 392.43 0) + (property "Footprint" "" + (at 519.43 43.18 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19790,7 +22801,7 @@ ) ) (property "Datasheet" "" - (at 30.48 392.43 0) + (at 519.43 43.18 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19800,8 +22811,9 @@ ) ) ) - (property "Description" "" - (at 30.48 392.43 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 519.43 43.18 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -19811,20 +22823,20 @@ ) ) (pin "1" - (uuid "f5f93e02-57d9-4093-8168-d4e24419e6db") + (uuid "629dd0ed-929a-466b-86c1-5a55068bb014") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP27") + (reference "#PWR013") (unit 1) ) ) ) ) (symbol - (lib_id "power:PWR_FLAG") - (at 78.74 109.22 0) + (lib_id "power:GND") + (at 227.33 391.16 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19832,9 +22844,10 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9dfe751f-e7bb-4c12-b36d-f0b26f2bb981") - (property "Reference" "#FLG01" - (at 78.74 107.315 0) + (fields_autoplaced yes) + (uuid "a200b57c-8c34-4cab-9bea-53133d2358d5") + (property "Reference" "#PWR041" + (at 227.33 397.51 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19844,8 +22857,8 @@ ) ) ) - (property "Value" "PWR_FLAG" - (at 78.74 105.41 0) + (property "Value" "GND" + (at 227.33 396.24 0) (show_name no) (do_not_autoplace no) (effects @@ -19855,7 +22868,7 @@ ) ) (property "Footprint" "" - (at 78.74 109.22 0) + (at 227.33 391.16 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19866,7 +22879,7 @@ ) ) (property "Datasheet" "" - (at 78.74 109.22 0) + (at 227.33 391.16 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19876,8 +22889,9 @@ ) ) ) - (property "Description" "" - (at 78.74 109.22 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 227.33 391.16 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -19887,20 +22901,20 @@ ) ) (pin "1" - (uuid "c4f53b7b-5482-49c1-81d8-d8b5d313a40f") + (uuid "2d7e29e1-018e-4bb4-bf2c-a8e9eee77ea0") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#FLG01") + (reference "#PWR041") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 434.34 261.62 0) + (lib_id "MCU_ST_STM32G0:STM32G031K8Tx") + (at 491.49 276.86 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19908,9 +22922,10 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9e0e93aa-a28d-42c2-87a7-26eeb54946f3") - (property "Reference" "C21" - (at 434.975 259.08 0) + (fields_autoplaced yes) + (uuid "a24cee5d-07d6-4366-ad19-34ac50606a3a") + (property "Reference" "U5" + (at 493.8395 246.38 0) (show_name no) (do_not_autoplace no) (effects @@ -19920,8 +22935,8 @@ (justify left) ) ) - (property "Value" "100nF" - (at 434.975 264.16 0) + (property "Value" "STM32G031K8Tx" + (at 493.8395 248.92 0) (show_name no) (do_not_autoplace no) (effects @@ -19931,8 +22946,8 @@ (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 434.34 261.62 0) + (property "Footprint" "Package_QFP:LQFP-32_7x7mm_P0.8mm" + (at 476.25 299.72 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19940,10 +22955,11 @@ (font (size 1.27 1.27) ) + (justify right) ) ) - (property "Datasheet" "" - (at 434.34 261.62 0) + (property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32g031k8.pdf" + (at 491.49 276.86 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19953,18 +22969,8 @@ ) ) ) - (property "Description" "" - (at 434.34 261.62 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C1525" - (at 434.34 261.62 0) + (property "Description" "STMicroelectronics Arm Cortex-M0+ MCU, 64KB flash, 8KB RAM, 64 MHz, 1.7-3.6V, 30 GPIO, LQFP32" + (at 491.49 276.86 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -19974,24 +22980,114 @@ ) ) ) - (pin "1" - (uuid "7379a2e5-1e76-4dfa-a6a0-191ca4ad7e6d") + (pin "21" + (uuid "c6ed5d51-fda0-4d47-86dd-5679c6a19cda") + ) + (pin "23" + (uuid "abc7e88f-ac76-4721-8f8f-ce090b13e0b7") + ) + (pin "22" + (uuid "f56194d1-324c-41f8-aebc-c49697681843") + ) + (pin "15" + (uuid "e9b43cc2-b43a-4d67-a685-58ad1af34765") + ) + (pin "8" + (uuid "15e46383-0c1a-4cb1-a2a6-39761898ff3c") + ) + (pin "10" + (uuid "6cfd4fb1-3ce0-445a-8537-472db6525fff") + ) + (pin "11" + (uuid "dcfcd1c4-eda2-4745-9403-597559e2c10a") + ) + (pin "17" + (uuid "6908600c-85e1-4d4f-8bbf-298ccb1d084e") + ) + (pin "12" + (uuid "3e8b706d-88ee-4f1e-aa12-57699d0db57f") + ) + (pin "19" + (uuid "729f6c3c-57ed-4edf-a11b-65adeb9b97b5") + ) + (pin "14" + (uuid "1cbe31b7-b37c-4b06-91a5-b931f0a07d09") + ) + (pin "16" + (uuid "fc00e04e-3e34-416c-8cb6-ec5b03bee903") + ) + (pin "7" + (uuid "0541129b-2c3d-4a3f-8f07-1487f290fcbc") + ) + (pin "6" + (uuid "693be0aa-844c-4361-97fb-23ca2963ec87") + ) + (pin "5" + (uuid "9bb5c14c-2e12-40d1-9173-7a24c6a84399") + ) + (pin "20" + (uuid "89058b5c-4c81-49fc-87f0-e35e83d6ac8c") + ) + (pin "13" + (uuid "d8e16686-0bdf-44ea-986f-57fbd8bfbe47") + ) + (pin "18" + (uuid "bded9fd3-7234-4070-8b85-12b7f48afd22") + ) + (pin "9" + (uuid "bb591d07-7032-4691-b33c-7d7b163bebc9") + ) + (pin "24" + (uuid "e9fe0475-bbdd-4ec1-88f3-0a9417005b5b") + ) + (pin "25" + (uuid "24b33b00-a58b-4c65-b6c1-be46d233f6d3") + ) + (pin "31" + (uuid "8d0cb11b-a102-4c62-9f9b-e6ea559440da") + ) + (pin "30" + (uuid "02cf519a-2705-45b3-8ca7-2381e030fdc0") + ) + (pin "32" + (uuid "19a2527e-24f5-4363-81e0-14a4e63afbd2") + ) + (pin "4" + (uuid "5fc1ae92-4cc4-4578-bd15-a5e83c6f9984") + ) + (pin "3" + (uuid "b3bd3713-312b-4329-8711-c2a7dd581ea5") ) (pin "2" - (uuid "c43321d8-b5c6-49f3-a4eb-e0c56f141303") + (uuid "aa2dc007-197b-47a8-909e-4c198b63bc90") + ) + (pin "1" + (uuid "daf75f29-75ee-414d-a399-245a6daf0bba") + ) + (pin "28" + (uuid "189c98b0-e8d3-4c48-b7a9-f1d098f4ab41") + ) + (pin "29" + (uuid "032cfdac-fcbf-44f5-86cb-3a74ae47bb9c") + ) + (pin "27" + (uuid "889744fb-961d-4283-9766-5aee753795dc") + ) + (pin "26" + (uuid "29b8ab15-73fd-4ef2-bbc0-7ab73da54674") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C21") + (reference "U5") (unit 1) ) ) ) ) (symbol - (lib_id "Device:D_Schottky") - (at 72.39 48.26 180) + (lib_id "Device:C") + (at 247.65 240.03 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -19999,29 +23095,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "9ff0b56c-d5bc-4583-945e-df35ef5749e2") - (property "Reference" "D1" - (at 72.39 50.8 0) + (uuid "a37ff629-c731-4830-967d-0953fcf07a41") + (property "Reference" "C24" + (at 248.285 237.49 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "SS34" - (at 72.39 45.72 0) + (property "Value" "3.3uF" + (at 248.285 242.57 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "Diode_SMD:D_SMA" - (at 72.39 48.26 0) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" + (at 247.65 240.03 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20032,7 +23130,7 @@ ) ) (property "Datasheet" "" - (at 72.39 48.26 0) + (at 247.65 240.03 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20043,7 +23141,7 @@ ) ) (property "Description" "" - (at 72.39 48.26 0) + (at 247.65 240.03 0) (show_name no) (do_not_autoplace no) (effects @@ -20052,8 +23150,8 @@ ) ) ) - (property "LCSC" "C8678" - (at 72.39 48.26 0) + (property "LCSC" "C159781" + (at 247.65 240.03 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20063,24 +23161,24 @@ ) ) ) - (pin "1" - (uuid "81e0c9f7-e5b1-4e4c-a4a4-8a9d00a6ad5d") - ) (pin "2" - (uuid "b0da0294-2f13-48e4-be62-6aaa41adf0f2") + (uuid "1648ea46-2163-41db-b052-e9fe4ede8ccd") + ) + (pin "1" + (uuid "629f7cf9-d645-4ed3-bed7-eb759bab8e07") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "D1") + (reference "C24") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 469.9 256.54 0) + (lib_id "Connector:TestPoint") + (at 151.13 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20088,31 +23186,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "a12a6a61-106d-4474-8cf0-d87a16fb5635") - (property "Reference" "C22" - (at 470.535 254 0) + (uuid "a3c87345-b0a6-4482-8430-d7c658bb7dfd") + (property "Reference" "TP25" + (at 151.13 367.792 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "100nF" - (at 470.535 259.08 0) + (property "Value" "ENC_B" + (at 151.13 369.57 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 469.9 256.54 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 151.13 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20123,7 +23219,7 @@ ) ) (property "Datasheet" "" - (at 469.9 256.54 0) + (at 151.13 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20134,18 +23230,7 @@ ) ) (property "Description" "" - (at 469.9 256.54 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C1525" - (at 469.9 256.54 0) - (hide yes) + (at 151.13 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -20155,23 +23240,20 @@ ) ) (pin "1" - (uuid "5c5c15c0-41f2-4755-ab6b-15dea3d66f7e") - ) - (pin "2" - (uuid "4b9beeb5-8b84-44cc-9194-9f18e3ee0cea") + (uuid "ac9c6934-bfcd-4917-a0cd-328d461e0e25") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C22") + (reference "TP25") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 519.43 39.37 0) + (lib_id "power:+5V") + (at 204.47 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20180,9 +23262,9 @@ (in_pos_files yes) (dnp no) (fields_autoplaced yes) - (uuid "a1eb3c4b-534e-468d-901d-a5bd2980692d") - (property "Reference" "#PWR013" - (at 519.43 43.18 0) + (uuid "a74962a3-5a62-419c-858d-58c4eef19caa") + (property "Reference" "#PWR014" + (at 204.47 396.24 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20192,8 +23274,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 519.43 34.29 0) + (property "Value" "+5V" + (at 204.47 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -20203,7 +23285,7 @@ ) ) (property "Footprint" "" - (at 519.43 39.37 0) + (at 204.47 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20214,7 +23296,7 @@ ) ) (property "Datasheet" "" - (at 519.43 39.37 0) + (at 204.47 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20224,8 +23306,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 519.43 39.37 0) + (property "Description" "Power symbol creates a global label with name \"+5V\"" + (at 204.47 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20236,20 +23318,20 @@ ) ) (pin "1" - (uuid "629dd0ed-929a-466b-86c1-5a55068bb014") + (uuid "0d5668b1-3cd9-4ea0-ad16-67ab36b548f4") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR013") + (reference "#PWR014") (unit 1) ) ) ) ) (symbol - (lib_id "Device:C") - (at 247.65 240.03 0) + (lib_id "Device:R") + (at 132.08 166.37 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20257,31 +23339,29 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "a37ff629-c731-4830-967d-0953fcf07a41") - (property "Reference" "C24" - (at 248.285 237.49 0) + (uuid "a8a6fc8c-bdec-4920-9998-3f1c229299b8") + (property "Reference" "R9" + (at 134.112 166.37 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "3.3uF" - (at 248.285 242.57 0) + (property "Value" "4.7k" + (at 132.08 166.37 90) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" - (at 247.65 240.03 0) + (property "Footprint" "Resistor_SMD:R_0402_1005Metric" + (at 132.08 166.37 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20292,7 +23372,7 @@ ) ) (property "Datasheet" "" - (at 247.65 240.03 0) + (at 132.08 166.37 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20303,7 +23383,7 @@ ) ) (property "Description" "" - (at 247.65 240.03 0) + (at 132.08 166.37 0) (show_name no) (do_not_autoplace no) (effects @@ -20312,8 +23392,8 @@ ) ) ) - (property "LCSC" "C159781" - (at 247.65 240.03 0) + (property "LCSC" "C25900" + (at 132.08 166.37 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20323,16 +23403,16 @@ ) ) ) - (pin "2" - (uuid "1648ea46-2163-41db-b052-e9fe4ede8ccd") - ) (pin "1" - (uuid "629f7cf9-d645-4ed3-bed7-eb759bab8e07") + (uuid "fdc04597-edb4-41f3-9f68-2f2c3e60550c") + ) + (pin "2" + (uuid "53a758e2-c94b-4d74-9f5c-3ecea867cd40") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C24") + (reference "R9") (unit 1) ) ) @@ -20340,7 +23420,7 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 198.12 374.65 0) + (at 151.13 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20348,9 +23428,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "a3c87345-b0a6-4482-8430-d7c658bb7dfd") - (property "Reference" "TP25" - (at 198.12 367.792 0) + (uuid "a99fcb5c-940b-4643-bbc2-0c83d45a4d2d") + (property "Reference" "TP18" + (at 151.13 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -20359,8 +23439,8 @@ ) ) ) - (property "Value" "ENC_B" - (at 198.12 369.57 0) + (property "Value" "TC2_CS" + (at 151.13 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -20370,7 +23450,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 198.12 374.65 0) + (at 151.13 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20381,7 +23461,7 @@ ) ) (property "Datasheet" "" - (at 198.12 374.65 0) + (at 151.13 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20392,7 +23472,7 @@ ) ) (property "Description" "" - (at 198.12 374.65 0) + (at 151.13 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -20402,12 +23482,12 @@ ) ) (pin "1" - (uuid "ac9c6934-bfcd-4917-a0cd-328d461e0e25") + (uuid "f41ffeda-0edc-41de-8f86-3cfab189bb99") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP25") + (reference "TP18") (unit 1) ) ) @@ -20415,7 +23495,7 @@ ) (symbol (lib_id "Device:R") - (at 525.78 243.84 0) + (at 85.09 72.39 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20423,9 +23503,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "a8a6fc8c-bdec-4920-9998-3f1c229299b8") - (property "Reference" "R9" - (at 527.812 243.84 90) + (uuid "a9ca25f6-22d9-4d6d-8c59-cbb9f096217e") + (property "Reference" "R1" + (at 85.09 70.358 90) (show_name no) (do_not_autoplace no) (effects @@ -20434,8 +23514,8 @@ ) ) ) - (property "Value" "4.7k" - (at 525.78 243.84 90) + (property "Value" "5.1k" + (at 85.09 72.39 90) (show_name no) (do_not_autoplace no) (effects @@ -20445,7 +23525,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 525.78 243.84 0) + (at 85.09 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20456,7 +23536,7 @@ ) ) (property "Datasheet" "" - (at 525.78 243.84 0) + (at 85.09 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20467,7 +23547,7 @@ ) ) (property "Description" "" - (at 525.78 243.84 0) + (at 85.09 72.39 0) (show_name no) (do_not_autoplace no) (effects @@ -20476,8 +23556,8 @@ ) ) ) - (property "LCSC" "C25900" - (at 525.78 243.84 0) + (property "LCSC" "C25905" + (at 85.09 72.39 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20488,23 +23568,23 @@ ) ) (pin "1" - (uuid "fdc04597-edb4-41f3-9f68-2f2c3e60550c") + (uuid "afee6520-ea62-4bbc-afc9-4a2d59709e75") ) (pin "2" - (uuid "53a758e2-c94b-4d74-9f5c-3ecea867cd40") + (uuid "ab9cac00-401d-41f6-8873-b8f022c87622") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R9") + (reference "R1") (unit 1) ) ) ) ) (symbol - (lib_id "Device:R") - (at 85.09 72.39 90) + (lib_id "Regulator_Linear:AMS1117-3.3") + (at 107.95 48.26 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20512,9 +23592,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "a9ca25f6-22d9-4d6d-8c59-cbb9f096217e") - (property "Reference" "R1" - (at 85.09 70.358 90) + (uuid "a9d67c96-666c-4e8e-92d7-fafc637047be") + (property "Reference" "U2" + (at 104.14 45.085 0) (show_name no) (do_not_autoplace no) (effects @@ -20523,18 +23603,19 @@ ) ) ) - (property "Value" "5.1k" - (at 85.09 72.39 90) + (property "Value" "AMS1117-3.3" + (at 107.95 45.085 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 85.09 72.39 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" + (at 107.95 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20545,7 +23626,7 @@ ) ) (property "Datasheet" "" - (at 85.09 72.39 0) + (at 107.95 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20556,7 +23637,7 @@ ) ) (property "Description" "" - (at 85.09 72.39 0) + (at 107.95 48.26 0) (show_name no) (do_not_autoplace no) (effects @@ -20565,8 +23646,8 @@ ) ) ) - (property "LCSC" "C25905" - (at 85.09 72.39 0) + (property "LCSC" "C6186" + (at 107.95 48.26 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20577,23 +23658,26 @@ ) ) (pin "1" - (uuid "afee6520-ea62-4bbc-afc9-4a2d59709e75") + (uuid "62f096ba-fec3-48c0-8bed-a1ae17386d40") ) (pin "2" - (uuid "ab9cac00-401d-41f6-8873-b8f022c87622") + (uuid "7dec5f09-d815-4a15-bf0f-4131a1d4f095") + ) + (pin "3" + (uuid "300dee68-6190-4e16-8560-7798fd20b15a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "R1") + (reference "U2") (unit 1) ) ) ) ) (symbol - (lib_id "Regulator_Linear:AMS1117-3.3") - (at 107.95 48.26 0) + (lib_id "Device:C") + (at 488.95 157.48 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20601,19 +23685,20 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "a9d67c96-666c-4e8e-92d7-fafc637047be") - (property "Reference" "U2" - (at 104.14 45.085 0) + (uuid "aa2e14ae-72a4-467f-a08f-682df49676cd") + (property "Reference" "C18" + (at 489.585 154.94 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Value" "AMS1117-3.3" - (at 107.95 45.085 0) + (property "Value" "100pF" + (at 489.585 160.02 0) (show_name no) (do_not_autoplace no) (effects @@ -20623,8 +23708,8 @@ (justify left) ) ) - (property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2" - (at 107.95 48.26 0) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" + (at 488.95 157.48 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20635,7 +23720,7 @@ ) ) (property "Datasheet" "" - (at 107.95 48.26 0) + (at 488.95 157.48 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20646,7 +23731,7 @@ ) ) (property "Description" "" - (at 107.95 48.26 0) + (at 488.95 157.48 0) (show_name no) (do_not_autoplace no) (effects @@ -20655,8 +23740,8 @@ ) ) ) - (property "LCSC" "C6186" - (at 107.95 48.26 0) + (property "LCSC" "C26409" + (at 488.95 157.48 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20667,18 +23752,15 @@ ) ) (pin "1" - (uuid "62f096ba-fec3-48c0-8bed-a1ae17386d40") + (uuid "019e74f8-7523-4a53-adc0-eaccd088d4a2") ) (pin "2" - (uuid "7dec5f09-d815-4a15-bf0f-4131a1d4f095") - ) - (pin "3" - (uuid "300dee68-6190-4e16-8560-7798fd20b15a") + (uuid "7b2ba131-67ee-4ad3-be75-329e6cf352a9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "U2") + (reference "C18") (unit 1) ) ) @@ -20767,7 +23849,7 @@ (uuid "1fc08bc4-f3bf-443f-98a5-4feba5f6992d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "C5") (unit 1) @@ -20845,7 +23927,7 @@ (uuid "63bbe692-72f0-4f8c-b011-ff06fa3c83a0") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "R31") (unit 1) @@ -20855,7 +23937,7 @@ ) (symbol (lib_id "power:GND") - (at 506.73 49.53 0) + (at 506.73 53.34 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -20866,7 +23948,7 @@ (fields_autoplaced yes) (uuid "ac075ed5-0dd1-4993-a7d5-cc2bc1081eb8") (property "Reference" "#PWR063" - (at 506.73 55.88 0) + (at 506.73 59.69 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20877,7 +23959,7 @@ ) ) (property "Value" "GND" - (at 506.73 54.61 0) + (at 506.73 58.42 0) (show_name no) (do_not_autoplace no) (effects @@ -20887,7 +23969,7 @@ ) ) (property "Footprint" "" - (at 506.73 49.53 0) + (at 506.73 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20898,7 +23980,7 @@ ) ) (property "Datasheet" "" - (at 506.73 49.53 0) + (at 506.73 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20909,7 +23991,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 506.73 49.53 0) + (at 506.73 53.34 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -20923,7 +24005,7 @@ (uuid "aceb1f5b-7002-410c-95e3-1e6ed9c1349b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR063") (unit 1) @@ -21001,7 +24083,7 @@ (uuid "d706deb0-98f6-4006-b83d-c67148460286") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR010") (unit 1) @@ -21011,7 +24093,7 @@ ) (symbol (lib_id "power:GND") - (at 270.51 292.1 0) + (at 270.51 273.05 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21021,7 +24103,7 @@ (dnp no) (uuid "ac183dfe-1fcf-4ee1-bed8-6392c0f397ac") (property "Reference" "#PWR015" - (at 270.51 298.45 0) + (at 270.51 279.4 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21032,7 +24114,7 @@ ) ) (property "Value" "GND" - (at 270.51 295.91 0) + (at 270.51 276.86 0) (show_name no) (do_not_autoplace no) (effects @@ -21042,7 +24124,7 @@ ) ) (property "Footprint" "" - (at 270.51 292.1 0) + (at 270.51 273.05 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21053,7 +24135,7 @@ ) ) (property "Datasheet" "" - (at 270.51 292.1 0) + (at 270.51 273.05 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21064,7 +24146,7 @@ ) ) (property "Description" "" - (at 270.51 292.1 0) + (at 270.51 273.05 0) (show_name no) (do_not_autoplace no) (effects @@ -21077,7 +24159,7 @@ (uuid "05bcbc08-461f-493e-8ae7-08707e671ea9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR015") (unit 1) @@ -21085,92 +24167,9 @@ ) ) ) - (symbol - (lib_id "Transistor_FET:Q_NMOS_GSD") - (at 267.97 265.43 0) - (unit 1) - (body_style 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (in_pos_files yes) - (dnp no) - (uuid "acbd0f43-bf65-493c-bcb2-ca4032a4bad3") - (property "Reference" "Q6" - (at 273.05 263.525 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Value" "AO3400A" - (at 273.05 265.43 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Footprint" "Package_TO_SOT_SMD:SOT-23" - (at 267.97 265.43 0) - (hide yes) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Datasheet" "" - (at 267.97 265.43 0) - (hide yes) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Description" "" - (at 267.97 265.43 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (pin "1" - (uuid "88d5e408-d204-4d3e-aedd-9506f5ee51ef") - ) - (pin "2" - (uuid "1505a8fe-9fd0-4e3f-8a47-b87b0db9a499") - ) - (pin "3" - (uuid "532a3fb6-b434-4e56-af24-83b71f0d833c") - ) - (instances - (project "kilncontrol" - (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "Q6") - (unit 1) - ) - ) - ) - ) (symbol (lib_id "Connector:TestPoint") - (at 91.44 392.43 0) + (at 59.69 392.43 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21180,7 +24179,7 @@ (dnp no) (uuid "acf5bc9a-e871-4e6a-80ed-96fc0045dfbf") (property "Reference" "TP31" - (at 91.44 385.572 0) + (at 59.69 385.572 0) (show_name no) (do_not_autoplace no) (effects @@ -21190,7 +24189,7 @@ ) ) (property "Value" "CURR_SENSE" - (at 91.44 387.35 0) + (at 59.69 387.35 0) (show_name no) (do_not_autoplace no) (effects @@ -21200,7 +24199,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 91.44 392.43 0) + (at 59.69 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21211,7 +24210,7 @@ ) ) (property "Datasheet" "" - (at 91.44 392.43 0) + (at 59.69 392.43 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21222,7 +24221,7 @@ ) ) (property "Description" "" - (at 91.44 392.43 0) + (at 59.69 392.43 0) (show_name no) (do_not_autoplace no) (effects @@ -21235,7 +24234,7 @@ (uuid "609e8d07-0ee4-4ba5-a478-abfa496afb91") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "TP31") (unit 1) @@ -21313,7 +24312,7 @@ (uuid "60fddc5d-f54f-4777-b90b-3ba324a6f9ef") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR016") (unit 1) @@ -21391,7 +24390,7 @@ (uuid "0eb32527-4652-49bb-b7b8-7a64614fc097") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR06") (unit 1) @@ -21400,8 +24399,8 @@ ) ) (symbol - (lib_id "Connector:TestPoint") - (at 167.64 356.87 0) + (lib_id "Diode:BAT54C") + (at 212.09 81.28 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21409,9 +24408,10 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "b2e87d7a-3345-42e9-90c6-bb08498098e2") - (property "Reference" "TP10" - (at 167.64 350.012 0) + (fields_autoplaced yes) + (uuid "b2063f59-e583-4de1-a038-77fe20adc954") + (property "Reference" "D4" + (at 212.09 74.93 0) (show_name no) (do_not_autoplace no) (effects @@ -21420,8 +24420,8 @@ ) ) ) - (property "Value" "TC2_CS" - (at 167.64 351.79 0) + (property "Value" "BAT54C" + (at 212.09 77.47 0) (show_name no) (do_not_autoplace no) (effects @@ -21430,8 +24430,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 167.64 356.87 0) + (property "Footprint" "Package_TO_SOT_SMD:SOT-23" + (at 213.995 78.105 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21439,10 +24439,11 @@ (font (size 1.27 1.27) ) + (justify left) ) ) - (property "Datasheet" "" - (at 167.64 356.87 0) + (property "Datasheet" "http://www.diodes.com/_files/datasheets/ds11005.pdf" + (at 210.058 81.28 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21452,8 +24453,9 @@ ) ) ) - (property "Description" "" - (at 167.64 356.87 0) + (property "Description" "dual schottky barrier diode, common cathode" + (at 212.09 81.28 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -21462,13 +24464,19 @@ ) ) ) + (pin "2" + (uuid "5ac2aa67-7eec-4f90-b403-7b81eb5d77ff") + ) + (pin "3" + (uuid "a813ed8f-cb1e-4272-83ce-703d07416316") + ) (pin "1" - (uuid "bda978bf-0fc3-4c9b-9f14-a9e8c92b0e22") + (uuid "5d48d03f-232d-4726-80b5-7d675c2d1ea2") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP10") + (reference "D4") (unit 1) ) ) @@ -21476,7 +24484,7 @@ ) (symbol (lib_id "Device:C") - (at 524.51 45.72 0) + (at 524.51 49.53 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21486,7 +24494,7 @@ (dnp no) (uuid "b36ba817-34a0-4f27-bcd8-584786b3b47e") (property "Reference" "C12" - (at 525.145 43.18 0) + (at 525.145 46.99 0) (show_name no) (do_not_autoplace no) (effects @@ -21497,7 +24505,7 @@ ) ) (property "Value" "100nF" - (at 525.145 48.26 0) + (at 525.145 52.07 0) (show_name no) (do_not_autoplace no) (effects @@ -21508,7 +24516,7 @@ ) ) (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 524.51 45.72 0) + (at 524.51 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21519,7 +24527,7 @@ ) ) (property "Datasheet" "" - (at 524.51 45.72 0) + (at 524.51 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21530,7 +24538,7 @@ ) ) (property "Description" "" - (at 524.51 45.72 0) + (at 524.51 49.53 0) (show_name no) (do_not_autoplace no) (effects @@ -21540,7 +24548,7 @@ ) ) (property "LCSC" "C1525" - (at 524.51 45.72 0) + (at 524.51 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21557,7 +24565,7 @@ (uuid "6ec35ff0-abf1-4718-b30d-dd85fc893944") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "C12") (unit 1) @@ -21567,7 +24575,7 @@ ) (symbol (lib_id "power:+5V") - (at 111.76 194.31 0) + (at 111.76 245.11 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21578,7 +24586,7 @@ (fields_autoplaced yes) (uuid "b4fd4421-6149-4732-9b51-2cf45c75d655") (property "Reference" "#PWR040" - (at 111.76 198.12 0) + (at 111.76 248.92 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21589,7 +24597,7 @@ ) ) (property "Value" "+5V" - (at 111.76 189.23 0) + (at 111.76 240.03 0) (show_name no) (do_not_autoplace no) (effects @@ -21599,7 +24607,7 @@ ) ) (property "Footprint" "" - (at 111.76 194.31 0) + (at 111.76 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21610,7 +24618,7 @@ ) ) (property "Datasheet" "" - (at 111.76 194.31 0) + (at 111.76 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21621,7 +24629,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"+5V\"" - (at 111.76 194.31 0) + (at 111.76 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21635,7 +24643,7 @@ (uuid "54d00ddc-047d-4a85-8b75-08b06c9eb9bc") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR040") (unit 1) @@ -21645,7 +24653,7 @@ ) (symbol (lib_id "power:+5V") - (at 118.11 232.41 0) + (at 118.11 283.21 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21656,7 +24664,7 @@ (fields_autoplaced yes) (uuid "b51fa533-d62c-4235-b5d8-a8a5ec1862b5") (property "Reference" "#PWR035" - (at 118.11 236.22 0) + (at 118.11 287.02 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21667,7 +24675,7 @@ ) ) (property "Value" "+5V" - (at 118.11 227.33 0) + (at 118.11 278.13 0) (show_name no) (do_not_autoplace no) (effects @@ -21677,7 +24685,7 @@ ) ) (property "Footprint" "" - (at 118.11 232.41 0) + (at 118.11 283.21 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21688,7 +24696,7 @@ ) ) (property "Datasheet" "" - (at 118.11 232.41 0) + (at 118.11 283.21 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21699,7 +24707,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"+5V\"" - (at 118.11 232.41 0) + (at 118.11 283.21 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21713,7 +24721,7 @@ (uuid "c050d463-52bd-409c-8411-7388becf5802") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR035") (unit 1) @@ -21807,7 +24815,7 @@ (uuid "b3ed1e8f-a2a1-4ff0-926d-e2ffb3dfc37b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "Q3") (unit 1) @@ -21816,8 +24824,8 @@ ) ) (symbol - (lib_id "Connector:TestPoint") - (at 152.4 374.65 0) + (lib_id "power:+3.3V") + (at 514.35 115.57 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21825,9 +24833,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "b84e3f8b-1c4f-425a-9e29-3c7a7cea7276") - (property "Reference" "TP22" - (at 152.4 367.792 0) + (fields_autoplaced yes) + (uuid "b8244b3e-d128-469a-81b5-efc387aa6931") + (property "Reference" "#PWR042" + (at 514.35 119.38 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -21836,8 +24846,8 @@ ) ) ) - (property "Value" "COIL_DRV" - (at 152.4 369.57 0) + (property "Value" "+3.3V" + (at 514.35 110.49 0) (show_name no) (do_not_autoplace no) (effects @@ -21846,8 +24856,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 152.4 374.65 0) + (property "Footprint" "" + (at 514.35 115.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21858,7 +24868,7 @@ ) ) (property "Datasheet" "" - (at 152.4 374.65 0) + (at 514.35 115.57 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21868,8 +24878,9 @@ ) ) ) - (property "Description" "" - (at 152.4 374.65 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 514.35 115.57 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -21879,12 +24890,12 @@ ) ) (pin "1" - (uuid "72fd2221-bfcc-48d4-8d59-604759c783c5") + (uuid "711abe86-f8d6-4274-a027-8cf24291c32b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP22") + (reference "#PWR042") (unit 1) ) ) @@ -21892,7 +24903,7 @@ ) (symbol (lib_id "Device:R") - (at 459.74 74.93 90) + (at 459.74 78.74 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21902,7 +24913,7 @@ (dnp no) (uuid "bb28ea10-965b-49b5-aa8f-79a57e8378f4") (property "Reference" "R5" - (at 459.74 72.898 90) + (at 459.74 76.708 90) (show_name no) (do_not_autoplace no) (effects @@ -21912,7 +24923,7 @@ ) ) (property "Value" "100R" - (at 459.74 74.93 90) + (at 459.74 78.74 90) (show_name no) (do_not_autoplace no) (effects @@ -21922,7 +24933,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 459.74 74.93 0) + (at 459.74 78.74 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21933,7 +24944,7 @@ ) ) (property "Datasheet" "" - (at 459.74 74.93 0) + (at 459.74 78.74 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21944,7 +24955,7 @@ ) ) (property "Description" "" - (at 459.74 74.93 0) + (at 459.74 78.74 0) (show_name no) (do_not_autoplace no) (effects @@ -21954,7 +24965,7 @@ ) ) (property "LCSC" "C25076" - (at 459.74 74.93 0) + (at 459.74 78.74 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -21971,7 +24982,7 @@ (uuid "d6de7410-ed34-4cef-b275-ae275eb586c2") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "R5") (unit 1) @@ -21981,7 +24992,7 @@ ) (symbol (lib_id "power:+3.3V") - (at 520.7 240.03 0) + (at 127 162.56 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -21992,7 +25003,7 @@ (fields_autoplaced yes) (uuid "bb51042e-21d1-4f48-8123-fbc6fa3e297f") (property "Reference" "#PWR058" - (at 520.7 243.84 0) + (at 127 166.37 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22003,7 +25014,7 @@ ) ) (property "Value" "+3.3V" - (at 520.7 234.95 0) + (at 127 157.48 0) (show_name no) (do_not_autoplace no) (effects @@ -22013,7 +25024,7 @@ ) ) (property "Footprint" "" - (at 520.7 240.03 0) + (at 127 162.56 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22024,7 +25035,7 @@ ) ) (property "Datasheet" "" - (at 520.7 240.03 0) + (at 127 162.56 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22035,7 +25046,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 520.7 240.03 0) + (at 127 162.56 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22049,7 +25060,7 @@ (uuid "0288bde2-33e3-4809-b5e6-e013a4c20a9f") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR058") (unit 1) @@ -22140,7 +25151,7 @@ (uuid "99f47b64-d960-4cd1-bc23-b11b6d6625fe") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "C2") (unit 1) @@ -22218,7 +25229,7 @@ (uuid "6281a421-9790-4377-ad9b-c9abd402320d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR04") (unit 1) @@ -22228,7 +25239,7 @@ ) (symbol (lib_id "power:GND") - (at 87.63 255.27 0) + (at 87.63 306.07 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22239,7 +25250,7 @@ (fields_autoplaced yes) (uuid "bf4a1ae4-483d-4c34-b12a-51e760239431") (property "Reference" "#PWR033" - (at 87.63 261.62 0) + (at 87.63 312.42 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22250,7 +25261,7 @@ ) ) (property "Value" "GND" - (at 87.63 260.35 0) + (at 87.63 311.15 0) (show_name no) (do_not_autoplace no) (effects @@ -22260,7 +25271,7 @@ ) ) (property "Footprint" "" - (at 87.63 255.27 0) + (at 87.63 306.07 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22271,7 +25282,7 @@ ) ) (property "Datasheet" "" - (at 87.63 255.27 0) + (at 87.63 306.07 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22282,7 +25293,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 87.63 255.27 0) + (at 87.63 306.07 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22296,7 +25307,7 @@ (uuid "9ab80d5e-344c-4481-a0a9-5ed860d3a122") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR033") (unit 1) @@ -22306,7 +25317,7 @@ ) (symbol (lib_id "power:+3.3V") - (at 326.39 356.87 0) + (at 274.32 356.87 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22317,7 +25328,7 @@ (fields_autoplaced yes) (uuid "c00273a0-2892-4535-bbe7-4a5fb415d755") (property "Reference" "#PWR053" - (at 326.39 360.68 0) + (at 274.32 360.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22328,7 +25339,7 @@ ) ) (property "Value" "+3.3V" - (at 326.39 351.79 0) + (at 274.32 351.79 0) (show_name no) (do_not_autoplace no) (effects @@ -22338,7 +25349,7 @@ ) ) (property "Footprint" "" - (at 326.39 356.87 0) + (at 274.32 356.87 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22349,7 +25360,7 @@ ) ) (property "Datasheet" "" - (at 326.39 356.87 0) + (at 274.32 356.87 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22360,7 +25371,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 326.39 356.87 0) + (at 274.32 356.87 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22374,7 +25385,7 @@ (uuid "ae901177-448e-48de-836d-3a8670bdc1df") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR053") (unit 1) @@ -22384,7 +25395,7 @@ ) (symbol (lib_id "Device:R") - (at 326.39 360.68 0) + (at 274.32 360.68 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22394,7 +25405,7 @@ (dnp no) (uuid "c00c0283-800e-4fe2-854f-e479c68d6969") (property "Reference" "R24" - (at 328.422 360.68 90) + (at 276.352 360.68 90) (show_name no) (do_not_autoplace no) (effects @@ -22404,7 +25415,7 @@ ) ) (property "Value" "10k" - (at 326.39 360.68 90) + (at 274.32 360.68 90) (show_name no) (do_not_autoplace no) (effects @@ -22414,7 +25425,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 326.39 360.68 0) + (at 274.32 360.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22425,7 +25436,7 @@ ) ) (property "Datasheet" "" - (at 326.39 360.68 0) + (at 274.32 360.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22436,7 +25447,7 @@ ) ) (property "Description" "" - (at 326.39 360.68 0) + (at 274.32 360.68 0) (show_name no) (do_not_autoplace no) (effects @@ -22446,7 +25457,7 @@ ) ) (property "LCSC" "C25744" - (at 326.39 360.68 0) + (at 274.32 360.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22463,7 +25474,7 @@ (uuid "c303aec2-ee31-4307-b5ea-036a215069e9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "R24") (unit 1) @@ -22541,7 +25552,7 @@ (uuid "097d921c-feb4-487d-9850-7862beffa985") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR09") (unit 1) @@ -22551,7 +25562,7 @@ ) (symbol (lib_id "Device:D") - (at 102.87 236.22 270) + (at 102.87 287.02 270) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22561,7 +25572,7 @@ (dnp no) (uuid "c1ab2e62-0cc5-49a2-ad28-87105eef74c9") (property "Reference" "D8" - (at 105.41 236.22 0) + (at 105.41 287.02 0) (show_name no) (do_not_autoplace no) (effects @@ -22571,7 +25582,7 @@ ) ) (property "Value" "1N4148W" - (at 100.33 236.22 0) + (at 100.33 287.02 0) (show_name no) (do_not_autoplace no) (effects @@ -22581,7 +25592,7 @@ ) ) (property "Footprint" "Diode_SMD:D_SOD-123" - (at 102.87 236.22 0) + (at 102.87 287.02 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22592,7 +25603,7 @@ ) ) (property "Datasheet" "" - (at 102.87 236.22 0) + (at 102.87 287.02 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22603,7 +25614,7 @@ ) ) (property "Description" "" - (at 102.87 236.22 0) + (at 102.87 287.02 0) (show_name no) (do_not_autoplace no) (effects @@ -22613,7 +25624,7 @@ ) ) (property "LCSC" "C2099" - (at 102.87 236.22 0) + (at 102.87 287.02 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22630,7 +25641,7 @@ (uuid "41e4dd3f-0252-4e97-ad4c-64c21775f688") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "D8") (unit 1) @@ -22640,7 +25651,7 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 106.68 356.87 0) + (at 29.21 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22650,7 +25661,7 @@ (dnp no) (uuid "c1e06905-9b1a-4d3e-b0e3-5c589284f90b") (property "Reference" "TP6" - (at 106.68 350.012 0) + (at 29.21 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -22659,8 +25670,8 @@ ) ) ) - (property "Value" "SPI_SCK" - (at 106.68 351.79 0) + (property "Value" "TC1_SCK" + (at 29.21 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -22670,7 +25681,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 106.68 356.87 0) + (at 29.21 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22681,7 +25692,7 @@ ) ) (property "Datasheet" "" - (at 106.68 356.87 0) + (at 29.21 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22692,7 +25703,7 @@ ) ) (property "Description" "" - (at 106.68 356.87 0) + (at 29.21 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -22705,7 +25716,7 @@ (uuid "24c26310-05d0-4b85-8ed3-ea19520e6d5b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "TP6") (unit 1) @@ -22715,7 +25726,7 @@ ) (symbol (lib_id "Device:R") - (at 425.45 242.57 0) + (at 31.75 165.1 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22725,7 +25736,7 @@ (dnp no) (uuid "c4329922-ce4a-4d51-9ae2-c78b30dd11eb") (property "Reference" "R10" - (at 427.482 242.57 90) + (at 33.782 165.1 90) (show_name no) (do_not_autoplace no) (effects @@ -22735,7 +25746,7 @@ ) ) (property "Value" "10k" - (at 425.45 242.57 90) + (at 31.75 165.1 90) (show_name no) (do_not_autoplace no) (effects @@ -22745,7 +25756,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 425.45 242.57 0) + (at 31.75 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22756,7 +25767,7 @@ ) ) (property "Datasheet" "" - (at 425.45 242.57 0) + (at 31.75 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22767,7 +25778,7 @@ ) ) (property "Description" "" - (at 425.45 242.57 0) + (at 31.75 165.1 0) (show_name no) (do_not_autoplace no) (effects @@ -22777,7 +25788,7 @@ ) ) (property "LCSC" "C25744" - (at 425.45 242.57 0) + (at 31.75 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22794,7 +25805,7 @@ (uuid "2c87577c-befd-4077-a0a6-b2847786d7f3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "R10") (unit 1) @@ -22802,9 +25813,84 @@ ) ) ) + (symbol + (lib_id "Connector:TestPoint") + (at 39.37 392.43 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "c5c35a42-ae7d-4be1-b2dc-6ad4d4bae6aa") + (property "Reference" "TP29" + (at 39.37 385.572 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "TC2_P" + (at 39.37 387.35 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 39.37 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 39.37 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 39.37 392.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "86f8b5dc-027d-4b7a-a835-43ec04fc2b87") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "TP29") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "power:GND") - (at 220.98 83.82 0) + (at 212.09 97.79 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22815,7 +25901,7 @@ (fields_autoplaced yes) (uuid "c7c426b4-b860-41e8-b054-944f69f950f9") (property "Reference" "#PWR068" - (at 220.98 90.17 0) + (at 212.09 104.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22826,7 +25912,7 @@ ) ) (property "Value" "GND" - (at 220.98 88.9 0) + (at 212.09 102.87 0) (show_name no) (do_not_autoplace no) (effects @@ -22836,7 +25922,7 @@ ) ) (property "Footprint" "" - (at 220.98 83.82 0) + (at 212.09 97.79 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22847,7 +25933,7 @@ ) ) (property "Datasheet" "" - (at 220.98 83.82 0) + (at 212.09 97.79 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22858,7 +25944,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 220.98 83.82 0) + (at 212.09 97.79 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -22872,7 +25958,7 @@ (uuid "ca230125-2a48-407f-b2ef-6d3272438652") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR068") (unit 1) @@ -22973,7 +26059,7 @@ (uuid "d7965ed7-b9a0-4abc-a574-46e3c238b4af") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "J11") (unit 1) @@ -22983,7 +26069,7 @@ ) (symbol (lib_id "power:GND") - (at 78.74 215.9 0) + (at 78.74 266.7 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -22994,7 +26080,7 @@ (fields_autoplaced yes) (uuid "c8177d87-d963-4605-98a9-25af0f9ac9e7") (property "Reference" "#PWR039" - (at 78.74 222.25 0) + (at 78.74 273.05 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23005,7 +26091,7 @@ ) ) (property "Value" "GND" - (at 78.74 220.98 0) + (at 78.74 271.78 0) (show_name no) (do_not_autoplace no) (effects @@ -23015,7 +26101,7 @@ ) ) (property "Footprint" "" - (at 78.74 215.9 0) + (at 78.74 266.7 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23026,7 +26112,7 @@ ) ) (property "Datasheet" "" - (at 78.74 215.9 0) + (at 78.74 266.7 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23037,7 +26123,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 78.74 215.9 0) + (at 78.74 266.7 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23051,7 +26137,7 @@ (uuid "9e5e920e-ca16-4ad5-9c16-9ff40ef255cb") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR039") (unit 1) @@ -23061,7 +26147,7 @@ ) (symbol (lib_id "power:+3.3V") - (at 298.45 358.14 0) + (at 344.17 356.87 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -23072,7 +26158,7 @@ (fields_autoplaced yes) (uuid "cb49aaea-863d-4fd9-8416-8f74d64315c6") (property "Reference" "#PWR054" - (at 298.45 361.95 0) + (at 344.17 360.68 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23083,7 +26169,7 @@ ) ) (property "Value" "+3.3V" - (at 298.45 353.06 0) + (at 344.17 351.79 0) (show_name no) (do_not_autoplace no) (effects @@ -23093,7 +26179,7 @@ ) ) (property "Footprint" "" - (at 298.45 358.14 0) + (at 344.17 356.87 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23104,7 +26190,7 @@ ) ) (property "Datasheet" "" - (at 298.45 358.14 0) + (at 344.17 356.87 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23115,7 +26201,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 298.45 358.14 0) + (at 344.17 356.87 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23129,7 +26215,7 @@ (uuid "2faf60a4-f4c2-456d-afee-a23459741e94") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR054") (unit 1) @@ -23139,7 +26225,7 @@ ) (symbol (lib_id "Device:R") - (at 469.9 242.57 0) + (at 76.2 165.1 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -23149,7 +26235,7 @@ (dnp no) (uuid "cc10096e-ecfe-462f-abad-607d387bdfc6") (property "Reference" "R12" - (at 471.932 242.57 90) + (at 78.232 165.1 90) (show_name no) (do_not_autoplace no) (effects @@ -23159,7 +26245,7 @@ ) ) (property "Value" "10k" - (at 469.9 242.57 90) + (at 76.2 165.1 90) (show_name no) (do_not_autoplace no) (effects @@ -23169,7 +26255,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 469.9 242.57 0) + (at 76.2 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23180,7 +26266,7 @@ ) ) (property "Datasheet" "" - (at 469.9 242.57 0) + (at 76.2 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23191,7 +26277,7 @@ ) ) (property "Description" "" - (at 469.9 242.57 0) + (at 76.2 165.1 0) (show_name no) (do_not_autoplace no) (effects @@ -23201,7 +26287,7 @@ ) ) (property "LCSC" "C25744" - (at 469.9 242.57 0) + (at 76.2 165.1 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23218,7 +26304,7 @@ (uuid "6f2e93c1-f0ad-48ab-b5c3-a6a4fad0f625") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "R12") (unit 1) @@ -23228,7 +26314,7 @@ ) (symbol (lib_id "Transistor_FET:Q_NMOS_GSD") - (at 267.97 287.02 0) + (at 267.97 267.97 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -23238,7 +26324,7 @@ (dnp no) (uuid "cdb29f85-c6dd-4ab6-9dd2-a291668c04a3") (property "Reference" "Q5" - (at 273.05 285.115 0) + (at 273.05 266.065 0) (show_name no) (do_not_autoplace no) (effects @@ -23249,7 +26335,7 @@ ) ) (property "Value" "AO3400A" - (at 273.05 287.02 0) + (at 273.05 267.97 0) (show_name no) (do_not_autoplace no) (effects @@ -23260,7 +26346,7 @@ ) ) (property "Footprint" "Package_TO_SOT_SMD:SOT-23" - (at 267.97 287.02 0) + (at 267.97 267.97 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23271,7 +26357,7 @@ ) ) (property "Datasheet" "" - (at 267.97 287.02 0) + (at 267.97 267.97 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23282,7 +26368,7 @@ ) ) (property "Description" "" - (at 267.97 287.02 0) + (at 267.97 267.97 0) (show_name no) (do_not_autoplace no) (effects @@ -23301,7 +26387,7 @@ (uuid "8095b593-9ff8-4627-974d-39f7b9a21626") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "Q5") (unit 1) @@ -23309,6 +26395,84 @@ ) ) ) + (symbol + (lib_id "power:+3.3V") + (at 491.49 226.06 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (fields_autoplaced yes) + (uuid "ce917ae5-8eae-4810-bea0-c830ba26d0a8") + (property "Reference" "#PWR075" + (at 491.49 229.87 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "+3.3V" + (at 491.49 220.98 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 491.49 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 491.49 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 491.49 226.06 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "186885da-93cb-4272-aaa9-dc814b2e8aca") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "#PWR075") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "power:+5V") (at 281.94 213.36 0) @@ -23379,7 +26543,7 @@ (uuid "93003e86-ee1b-491a-a2a6-d6d0daf5f2f1") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR027") (unit 1) @@ -23470,7 +26634,7 @@ (uuid "09cb7812-dddc-47a3-ac0c-7b7056ac6bc9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "C23") (unit 1) @@ -23480,7 +26644,7 @@ ) (symbol (lib_id "power:GND") - (at 462.28 260.35 0) + (at 68.58 182.88 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -23491,7 +26655,7 @@ (fields_autoplaced yes) (uuid "d048ad74-98fd-49aa-89d7-8f39d9478bfc") (property "Reference" "#PWR017" - (at 462.28 266.7 0) + (at 68.58 189.23 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23502,7 +26666,7 @@ ) ) (property "Value" "GND" - (at 462.28 265.43 0) + (at 68.58 187.96 0) (show_name no) (do_not_autoplace no) (effects @@ -23512,7 +26676,7 @@ ) ) (property "Footprint" "" - (at 462.28 260.35 0) + (at 68.58 182.88 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23523,7 +26687,7 @@ ) ) (property "Datasheet" "" - (at 462.28 260.35 0) + (at 68.58 182.88 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23534,7 +26698,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 462.28 260.35 0) + (at 68.58 182.88 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23548,7 +26712,7 @@ (uuid "93660e90-ab24-4665-a37e-520a093c0c1b") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR017") (unit 1) @@ -23558,7 +26722,7 @@ ) (symbol (lib_id "Device:C") - (at 488.95 81.28 0) + (at 488.95 85.09 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -23568,7 +26732,7 @@ (dnp no) (uuid "d0860c85-1511-49f3-aee3-b60d62ddf2d2") (property "Reference" "C10" - (at 489.585 78.74 0) + (at 489.585 82.55 0) (show_name no) (do_not_autoplace no) (effects @@ -23579,7 +26743,7 @@ ) ) (property "Value" "100pF" - (at 489.585 83.82 0) + (at 489.585 87.63 0) (show_name no) (do_not_autoplace no) (effects @@ -23590,7 +26754,7 @@ ) ) (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 488.95 81.28 0) + (at 488.95 85.09 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23601,7 +26765,7 @@ ) ) (property "Datasheet" "" - (at 488.95 81.28 0) + (at 488.95 85.09 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23612,7 +26776,7 @@ ) ) (property "Description" "" - (at 488.95 81.28 0) + (at 488.95 85.09 0) (show_name no) (do_not_autoplace no) (effects @@ -23622,7 +26786,7 @@ ) ) (property "LCSC" "C26409" - (at 488.95 81.28 0) + (at 488.95 85.09 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23639,7 +26803,7 @@ (uuid "0c456223-f04a-4d76-9eb5-d684e8e2ea9f") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "C10") (unit 1) @@ -23715,7 +26879,7 @@ (uuid "e8b43a5a-3166-49ff-bf8f-1c0d4e850826") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#FLG02") (unit 1) @@ -23725,7 +26889,7 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 182.88 374.65 0) + (at 135.89 374.65 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -23735,7 +26899,7 @@ (dnp no) (uuid "d2ce38eb-9ee3-48d9-85c5-b5bbfda93448") (property "Reference" "TP24" - (at 182.88 367.792 0) + (at 135.89 367.792 0) (show_name no) (do_not_autoplace no) (effects @@ -23745,7 +26909,7 @@ ) ) (property "Value" "ENC_A" - (at 182.88 369.57 0) + (at 135.89 369.57 0) (show_name no) (do_not_autoplace no) (effects @@ -23755,7 +26919,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 182.88 374.65 0) + (at 135.89 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23766,7 +26930,7 @@ ) ) (property "Datasheet" "" - (at 182.88 374.65 0) + (at 135.89 374.65 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23777,7 +26941,7 @@ ) ) (property "Description" "" - (at 182.88 374.65 0) + (at 135.89 374.65 0) (show_name no) (do_not_autoplace no) (effects @@ -23790,7 +26954,7 @@ (uuid "90780157-b6a1-4126-b5ff-1d8a12ab3aa7") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "TP24") (unit 1) @@ -23868,7 +27032,7 @@ (uuid "1b023877-19c7-4364-80fa-d1567fcaf756") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR056") (unit 1) @@ -23878,7 +27042,7 @@ ) (symbol (lib_id "power:GND") - (at 441.96 255.27 0) + (at 48.26 177.8 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -23889,7 +27053,7 @@ (fields_autoplaced yes) (uuid "d486c5ce-6d8a-4b86-9b8b-bd988577668e") (property "Reference" "#PWR021" - (at 441.96 261.62 0) + (at 48.26 184.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23900,7 +27064,7 @@ ) ) (property "Value" "GND" - (at 441.96 260.35 0) + (at 48.26 182.88 0) (show_name no) (do_not_autoplace no) (effects @@ -23910,7 +27074,7 @@ ) ) (property "Footprint" "" - (at 441.96 255.27 0) + (at 48.26 177.8 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23921,7 +27085,7 @@ ) ) (property "Datasheet" "" - (at 441.96 255.27 0) + (at 48.26 177.8 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23932,7 +27096,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 441.96 255.27 0) + (at 48.26 177.8 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -23946,7 +27110,7 @@ (uuid "51fd838a-beb5-4ee7-b8bd-d988f76f593a") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR021") (unit 1) @@ -24037,7 +27201,7 @@ (uuid "e5d65a45-05df-41fe-ad7e-6703e3ad220d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "C1") (unit 1) @@ -24115,7 +27279,7 @@ (uuid "f340ce6d-1fc4-4b9f-854a-fc6db7536f8d") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR031") (unit 1) @@ -24124,8 +27288,8 @@ ) ) (symbol - (lib_id "Device:C") - (at 472.44 148.59 0) + (lib_id "power:GND") + (at 220.98 113.03 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24133,31 +27297,31 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "e40a3586-395b-4500-949b-93df9dcc97b9") - (property "Reference" "C14" - (at 473.075 146.05 0) + (fields_autoplaced yes) + (uuid "e572bf42-9dac-4326-85c5-0266515ede28") + (property "Reference" "#PWR069" + (at 220.98 119.38 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Value" "10nF" - (at 473.075 151.13 0) + (property "Value" "GND" + (at 220.98 118.11 0) (show_name no) (do_not_autoplace no) (effects (font (size 1.27 1.27) ) - (justify left) ) ) - (property "Footprint" "Capacitor_SMD:C_0402_1005Metric" - (at 472.44 148.59 0) + (property "Footprint" "" + (at 220.98 113.03 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24168,7 +27332,7 @@ ) ) (property "Datasheet" "" - (at 472.44 148.59 0) + (at 220.98 113.03 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24178,18 +27342,8 @@ ) ) ) - (property "Description" "" - (at 472.44 148.59 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C15195" - (at 472.44 148.59 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 220.98 113.03 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24200,15 +27354,12 @@ ) ) (pin "1" - (uuid "c3c286f7-d949-4db3-81bc-d5c008866d3f") - ) - (pin "2" - (uuid "ba96fcee-d418-4239-ac66-4e3a9b746d5d") + (uuid "dd611879-2f50-4ed6-8a5e-f3ffe0c026b1") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "C14") + (reference "#PWR069") (unit 1) ) ) @@ -24216,7 +27367,7 @@ ) (symbol (lib_id "power:GND") - (at 220.98 113.03 0) + (at 485.14 163.83 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24225,9 +27376,9 @@ (in_pos_files yes) (dnp no) (fields_autoplaced yes) - (uuid "e572bf42-9dac-4326-85c5-0266515ede28") - (property "Reference" "#PWR069" - (at 220.98 119.38 0) + (uuid "e5f47312-aceb-4123-b69a-b3a73f613aab") + (property "Reference" "#PWR078" + (at 485.14 170.18 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24238,7 +27389,7 @@ ) ) (property "Value" "GND" - (at 220.98 118.11 0) + (at 485.14 168.91 0) (show_name no) (do_not_autoplace no) (effects @@ -24248,7 +27399,7 @@ ) ) (property "Footprint" "" - (at 220.98 113.03 0) + (at 485.14 163.83 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24259,7 +27410,7 @@ ) ) (property "Datasheet" "" - (at 220.98 113.03 0) + (at 485.14 163.83 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24270,7 +27421,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 220.98 113.03 0) + (at 485.14 163.83 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24281,20 +27432,20 @@ ) ) (pin "1" - (uuid "dd611879-2f50-4ed6-8a5e-f3ffe0c026b1") + (uuid "078f9358-102c-42cf-a66d-7291622251cc") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR069") + (reference "#PWR078") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 514.35 109.22 0) + (lib_id "Device:LED") + (at 93.98 245.11 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24302,11 +27453,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "e6b3ec93-26c5-4103-9259-a8917e4d6670") - (property "Reference" "#PWR022" - (at 514.35 113.03 0) - (hide yes) + (uuid "e804040e-fe0a-47ee-8147-3930133ad516") + (property "Reference" "D3" + (at 91.44 245.11 0) (show_name no) (do_not_autoplace no) (effects @@ -24315,8 +27464,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 514.35 104.14 0) + (property "Value" "SSR" + (at 96.52 245.11 0) (show_name no) (do_not_autoplace no) (effects @@ -24325,8 +27474,8 @@ ) ) ) - (property "Footprint" "" - (at 514.35 109.22 0) + (property "Footprint" "LED_SMD:LED_0603_1608Metric" + (at 93.98 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24337,7 +27486,7 @@ ) ) (property "Datasheet" "" - (at 514.35 109.22 0) + (at 93.98 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24347,8 +27496,18 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 514.35 109.22 0) + (property "Description" "" + (at 93.98 245.11 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "LCSC" "C2286" + (at 93.98 245.11 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24359,20 +27518,23 @@ ) ) (pin "1" - (uuid "87858562-3e1a-4ea1-89a5-7b7cdbdf46b5") + (uuid "bb9477b6-c500-4673-8769-00ddd6ec6a01") + ) + (pin "2" + (uuid "c16cf0a3-aa07-4081-b3e6-01221d1b0f6f") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR022") + (reference "D3") (unit 1) ) ) ) ) (symbol - (lib_id "Device:LED") - (at 93.98 194.31 90) + (lib_id "power:+3.3V") + (at 514.35 43.18 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24380,9 +27542,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "e804040e-fe0a-47ee-8147-3930133ad516") - (property "Reference" "D3" - (at 91.44 194.31 0) + (fields_autoplaced yes) + (uuid "e9aec966-290a-48ea-82af-c20accd37ef4") + (property "Reference" "#PWR02" + (at 514.35 46.99 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -24391,8 +27555,8 @@ ) ) ) - (property "Value" "SSR1" - (at 96.52 194.31 0) + (property "Value" "+3.3V" + (at 514.35 38.1 0) (show_name no) (do_not_autoplace no) (effects @@ -24401,8 +27565,8 @@ ) ) ) - (property "Footprint" "LED_SMD:LED_0603_1608Metric" - (at 93.98 194.31 0) + (property "Footprint" "" + (at 514.35 43.18 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24413,7 +27577,7 @@ ) ) (property "Datasheet" "" - (at 93.98 194.31 0) + (at 514.35 43.18 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24423,18 +27587,8 @@ ) ) ) - (property "Description" "" - (at 93.98 194.31 0) - (show_name no) - (do_not_autoplace no) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "LCSC" "C2286" - (at 93.98 194.31 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 514.35 43.18 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24445,23 +27599,20 @@ ) ) (pin "1" - (uuid "bb9477b6-c500-4673-8769-00ddd6ec6a01") - ) - (pin "2" - (uuid "c16cf0a3-aa07-4081-b3e6-01221d1b0f6f") + (uuid "ccc0fd89-54ab-45dd-93e5-b0fb725d0041") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "D3") + (reference "#PWR02") (unit 1) ) ) ) ) (symbol - (lib_id "Connector:TestPoint") - (at 76.2 356.87 0) + (lib_id "power:GND") + (at 485.14 91.44 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24469,9 +27620,11 @@ (on_board yes) (in_pos_files yes) (dnp no) - (uuid "e98d8b59-8c8e-45c4-a41c-b2001586336b") - (property "Reference" "TP4" - (at 76.2 350.012 0) + (fields_autoplaced yes) + (uuid "eb629dd5-246c-45ce-b3e8-2a9a03f8e6c1") + (property "Reference" "#PWR062" + (at 485.14 97.79 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -24481,7 +27634,7 @@ ) ) (property "Value" "GND" - (at 76.2 351.79 0) + (at 485.14 96.52 0) (show_name no) (do_not_autoplace no) (effects @@ -24490,8 +27643,8 @@ ) ) ) - (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 76.2 356.87 0) + (property "Footprint" "" + (at 485.14 91.44 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24502,7 +27655,7 @@ ) ) (property "Datasheet" "" - (at 76.2 356.87 0) + (at 485.14 91.44 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24512,8 +27665,9 @@ ) ) ) - (property "Description" "" - (at 76.2 356.87 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 485.14 91.44 0) + (hide yes) (show_name no) (do_not_autoplace no) (effects @@ -24523,20 +27677,20 @@ ) ) (pin "1" - (uuid "298b0e56-c533-4d78-850f-3ee762c1e9ff") + (uuid "ee1fc9ce-30e6-4c7c-beae-7a453b528597") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "TP4") + (reference "#PWR062") (unit 1) ) ) ) ) (symbol - (lib_id "power:+3.3V") - (at 514.35 39.37 0) + (lib_id "power:GND") + (at 330.2 373.38 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24545,9 +27699,9 @@ (in_pos_files yes) (dnp no) (fields_autoplaced yes) - (uuid "e9aec966-290a-48ea-82af-c20accd37ef4") - (property "Reference" "#PWR02" - (at 514.35 43.18 0) + (uuid "eb8c836b-dd2b-4285-afe6-c9ed3e4ec731") + (property "Reference" "#PWR051" + (at 330.2 379.73 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24557,8 +27711,8 @@ ) ) ) - (property "Value" "+3.3V" - (at 514.35 34.29 0) + (property "Value" "GND" + (at 330.2 378.46 0) (show_name no) (do_not_autoplace no) (effects @@ -24568,7 +27722,7 @@ ) ) (property "Footprint" "" - (at 514.35 39.37 0) + (at 330.2 373.38 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24579,7 +27733,7 @@ ) ) (property "Datasheet" "" - (at 514.35 39.37 0) + (at 330.2 373.38 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24589,8 +27743,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"+3.3V\"" - (at 514.35 39.37 0) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 330.2 373.38 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24601,20 +27755,20 @@ ) ) (pin "1" - (uuid "ccc0fd89-54ab-45dd-93e5-b0fb725d0041") + (uuid "ef33a7ff-3196-404f-9257-6725bb0bcf29") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR02") + (reference "#PWR051") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 485.14 87.63 0) + (lib_id "power:+3.3V") + (at 532.13 314.96 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24623,9 +27777,9 @@ (in_pos_files yes) (dnp no) (fields_autoplaced yes) - (uuid "eb629dd5-246c-45ce-b3e8-2a9a03f8e6c1") - (property "Reference" "#PWR062" - (at 485.14 93.98 0) + (uuid "ebe46312-bc4b-4951-a17b-c76ce8f0738c") + (property "Reference" "#PWR076" + (at 532.13 318.77 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24635,8 +27789,8 @@ ) ) ) - (property "Value" "GND" - (at 485.14 92.71 0) + (property "Value" "+3.3V" + (at 532.13 309.88 0) (show_name no) (do_not_autoplace no) (effects @@ -24646,7 +27800,7 @@ ) ) (property "Footprint" "" - (at 485.14 87.63 0) + (at 532.13 314.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24657,7 +27811,7 @@ ) ) (property "Datasheet" "" - (at 485.14 87.63 0) + (at 532.13 314.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24667,8 +27821,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 485.14 87.63 0) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 532.13 314.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24679,12 +27833,12 @@ ) ) (pin "1" - (uuid "ee1fc9ce-30e6-4c7c-beae-7a453b528597") + (uuid "807d4eec-c0f6-4a0b-8ba4-eb1b74288811") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR062") + (reference "#PWR076") (unit 1) ) ) @@ -24692,7 +27846,7 @@ ) (symbol (lib_id "power:GND") - (at 284.48 374.65 0) + (at 107.95 57.15 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24701,9 +27855,9 @@ (in_pos_files yes) (dnp no) (fields_autoplaced yes) - (uuid "eb8c836b-dd2b-4285-afe6-c9ed3e4ec731") - (property "Reference" "#PWR051" - (at 284.48 381 0) + (uuid "ec2c5326-6862-4bcb-9052-e68d921b5cbe") + (property "Reference" "#PWR07" + (at 107.95 63.5 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24714,7 +27868,7 @@ ) ) (property "Value" "GND" - (at 284.48 379.73 0) + (at 107.95 62.23 0) (show_name no) (do_not_autoplace no) (effects @@ -24724,7 +27878,7 @@ ) ) (property "Footprint" "" - (at 284.48 374.65 0) + (at 107.95 57.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24735,7 +27889,7 @@ ) ) (property "Datasheet" "" - (at 284.48 374.65 0) + (at 107.95 57.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24746,7 +27900,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 284.48 374.65 0) + (at 107.95 57.15 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24757,20 +27911,20 @@ ) ) (pin "1" - (uuid "ef33a7ff-3196-404f-9257-6725bb0bcf29") + (uuid "fab27ba8-5ca1-454b-a674-ec83e6ead440") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR051") + (reference "#PWR07") (unit 1) ) ) ) ) (symbol - (lib_id "power:GND") - (at 107.95 57.15 0) + (lib_id "Connector:TestPoint") + (at 120.65 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -24778,11 +27932,9 @@ (on_board yes) (in_pos_files yes) (dnp no) - (fields_autoplaced yes) - (uuid "ec2c5326-6862-4bcb-9052-e68d921b5cbe") - (property "Reference" "#PWR07" - (at 107.95 63.5 0) - (hide yes) + (uuid "ee5385e1-92e0-4151-99f5-3e3e0f5ce8fe") + (property "Reference" "TP12" + (at 120.65 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -24791,8 +27943,8 @@ ) ) ) - (property "Value" "GND" - (at 107.95 62.23 0) + (property "Value" "TC2_MOSI" + (at 120.65 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -24801,8 +27953,8 @@ ) ) ) - (property "Footprint" "" - (at 107.95 57.15 0) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 120.65 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24813,7 +27965,7 @@ ) ) (property "Datasheet" "" - (at 107.95 57.15 0) + (at 120.65 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -24823,9 +27975,8 @@ ) ) ) - (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 107.95 57.15 0) - (hide yes) + (property "Description" "" + (at 120.65 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -24835,12 +27986,12 @@ ) ) (pin "1" - (uuid "fab27ba8-5ca1-454b-a674-ec83e6ead440") + (uuid "91c2d0cf-4549-48aa-a325-6b1e8b4c8350") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" - (reference "#PWR07") + (reference "TP12") (unit 1) ) ) @@ -25048,7 +28199,7 @@ (uuid "e1e31d1e-3eab-4bd6-a896-99473273d953") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "U1") (unit 1) @@ -25058,7 +28209,7 @@ ) (symbol (lib_id "Sensor_Temperature:MAX31856") - (at 516.89 69.85 0) + (at 516.89 73.66 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -25068,7 +28219,7 @@ (dnp no) (uuid "ef80f970-fdb1-4047-9af5-b800f2545d0f") (property "Reference" "U3" - (at 508.762 84.074 0) + (at 508.762 87.884 0) (show_name no) (do_not_autoplace no) (effects @@ -25079,7 +28230,7 @@ ) ) (property "Value" "MAX31856" - (at 530.098 84.074 0) + (at 530.098 87.884 0) (show_name no) (do_not_autoplace no) (effects @@ -25090,7 +28241,7 @@ ) ) (property "Footprint" "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" - (at 516.89 69.85 0) + (at 516.89 73.66 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25101,7 +28252,7 @@ ) ) (property "Datasheet" "" - (at 516.89 69.85 0) + (at 516.89 73.66 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25112,7 +28263,7 @@ ) ) (property "Description" "" - (at 516.89 69.85 0) + (at 516.89 73.66 0) (show_name no) (do_not_autoplace no) (effects @@ -25122,7 +28273,7 @@ ) ) (property "LCSC" "C2653162" - (at 516.89 69.85 0) + (at 516.89 73.66 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25175,7 +28326,7 @@ (uuid "966e55c1-6d15-4f0a-b812-35906fc575f0") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "U3") (unit 1) @@ -25185,7 +28336,7 @@ ) (symbol (lib_id "power:GND") - (at 539.75 246.38 270) + (at 146.05 168.91 270) (unit 1) (body_style 1) (exclude_from_sim no) @@ -25196,7 +28347,7 @@ (fields_autoplaced yes) (uuid "ef8e588e-8b4f-4bfe-a16e-770fb9ec4ab6") (property "Reference" "#PWR061" - (at 533.4 246.38 0) + (at 139.7 168.91 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25207,7 +28358,7 @@ ) ) (property "Value" "GND" - (at 535.94 246.38 90) + (at 142.24 168.91 90) (show_name no) (do_not_autoplace no) (effects @@ -25218,7 +28369,7 @@ ) ) (property "Footprint" "" - (at 539.75 246.38 0) + (at 146.05 168.91 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25229,7 +28380,7 @@ ) ) (property "Datasheet" "" - (at 539.75 246.38 0) + (at 146.05 168.91 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25240,7 +28391,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 539.75 246.38 0) + (at 146.05 168.91 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25254,7 +28405,7 @@ (uuid "4d4dcf87-b5c1-4aa5-8b89-9994f80ac6ea") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR061") (unit 1) @@ -25264,7 +28415,7 @@ ) (symbol (lib_id "power:GND") - (at 434.34 265.43 0) + (at 40.64 187.96 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -25275,7 +28426,7 @@ (fields_autoplaced yes) (uuid "f0313ba1-9a28-4ed2-8a64-2672683237e9") (property "Reference" "#PWR020" - (at 434.34 271.78 0) + (at 40.64 194.31 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25286,7 +28437,7 @@ ) ) (property "Value" "GND" - (at 434.34 270.51 0) + (at 40.64 193.04 0) (show_name no) (do_not_autoplace no) (effects @@ -25296,7 +28447,7 @@ ) ) (property "Footprint" "" - (at 434.34 265.43 0) + (at 40.64 187.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25307,7 +28458,7 @@ ) ) (property "Datasheet" "" - (at 434.34 265.43 0) + (at 40.64 187.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25318,7 +28469,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 434.34 265.43 0) + (at 40.64 187.96 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25332,7 +28483,7 @@ (uuid "41d01c8c-c79b-4bc2-b317-d277f81886a9") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR020") (unit 1) @@ -25342,7 +28493,82 @@ ) (symbol (lib_id "Connector:TestPoint") - (at 137.16 356.87 0) + (at 166.37 392.43 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "f054c17e-29b9-43a5-9497-dfaf8a4cde44") + (property "Reference" "TP37" + (at 166.37 385.572 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "COIL_FEEDBACK" + (at 166.37 387.35 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 166.37 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 166.37 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 166.37 392.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "86a30662-d5ef-4e3d-ac5d-af1c698a9501") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "TP37") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Connector:TestPoint") + (at 59.69 358.14 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -25352,7 +28578,7 @@ (dnp no) (uuid "f300a9b4-8345-4e17-aac5-43cc11a04824") (property "Reference" "TP8" - (at 137.16 350.012 0) + (at 59.69 351.282 0) (show_name no) (do_not_autoplace no) (effects @@ -25361,8 +28587,8 @@ ) ) ) - (property "Value" "SPI_MISO" - (at 137.16 351.79 0) + (property "Value" "TC1_MISO" + (at 59.69 353.06 0) (show_name no) (do_not_autoplace no) (effects @@ -25372,7 +28598,7 @@ ) ) (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" - (at 137.16 356.87 0) + (at 59.69 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25383,7 +28609,7 @@ ) ) (property "Datasheet" "" - (at 137.16 356.87 0) + (at 59.69 358.14 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25394,7 +28620,7 @@ ) ) (property "Description" "" - (at 137.16 356.87 0) + (at 59.69 358.14 0) (show_name no) (do_not_autoplace no) (effects @@ -25407,7 +28633,7 @@ (uuid "a0ba5456-497a-4fa1-b153-e8950ac829ba") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "TP8") (unit 1) @@ -25497,7 +28723,7 @@ (uuid "ce2c6c77-1085-4ab7-bd22-efbacc72ff0c") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "J1") (unit 1) @@ -25507,7 +28733,7 @@ ) (symbol (lib_id "power:GND") - (at 469.9 260.35 0) + (at 76.2 182.88 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -25518,7 +28744,7 @@ (fields_autoplaced yes) (uuid "f3a5372c-a500-4657-80ad-060ba3c559b0") (property "Reference" "#PWR018" - (at 469.9 266.7 0) + (at 76.2 189.23 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25529,7 +28755,7 @@ ) ) (property "Value" "GND" - (at 469.9 265.43 0) + (at 76.2 187.96 0) (show_name no) (do_not_autoplace no) (effects @@ -25539,7 +28765,7 @@ ) ) (property "Footprint" "" - (at 469.9 260.35 0) + (at 76.2 182.88 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25550,7 +28776,7 @@ ) ) (property "Datasheet" "" - (at 469.9 260.35 0) + (at 76.2 182.88 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25561,7 +28787,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 469.9 260.35 0) + (at 76.2 182.88 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25575,7 +28801,7 @@ (uuid "23528b7c-e3c4-4c68-887c-32bc7164cec2") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR018") (unit 1) @@ -25652,7 +28878,7 @@ (uuid "50098e3a-2967-4198-9a7b-fdde408fbcdb") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR029") (unit 1) @@ -25730,7 +28956,7 @@ (uuid "e5d7409b-e31e-412e-b893-3c91bf31260f") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR012") (unit 1) @@ -25807,7 +29033,7 @@ (uuid "a1f286a0-d2c8-4b7c-a4cf-096c633e51f1") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR030") (unit 1) @@ -25817,7 +29043,7 @@ ) (symbol (lib_id "power:GND") - (at 514.35 88.9 0) + (at 514.35 92.71 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -25828,7 +29054,7 @@ (fields_autoplaced yes) (uuid "f7faceed-72f8-40da-b533-9e04f190d7d3") (property "Reference" "#PWR01" - (at 514.35 95.25 0) + (at 514.35 99.06 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25839,7 +29065,7 @@ ) ) (property "Value" "GND" - (at 514.35 93.98 0) + (at 514.35 97.79 0) (show_name no) (do_not_autoplace no) (effects @@ -25849,7 +29075,7 @@ ) ) (property "Footprint" "" - (at 514.35 88.9 0) + (at 514.35 92.71 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25860,7 +29086,7 @@ ) ) (property "Datasheet" "" - (at 514.35 88.9 0) + (at 514.35 92.71 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25871,7 +29097,7 @@ ) ) (property "Description" "Power symbol creates a global label with name \"GND\" , ground" - (at 514.35 88.9 0) + (at 514.35 92.71 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -25885,7 +29111,7 @@ (uuid "e87ea71f-9f18-498a-bc12-f8ca8b95e2dc") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR01") (unit 1) @@ -25893,6 +29119,81 @@ ) ) ) + (symbol + (lib_id "Connector:TestPoint") + (at 140.97 392.43 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "f8268c0e-8f52-4dbd-a742-c59c40fb1bd0") + (property "Reference" "TP36" + (at 140.97 385.572 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "SUPERVISOR_RESET" + (at 140.97 387.35 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 140.97 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 140.97 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 140.97 392.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "04d7a7c4-b99a-4e98-ae8d-6050fc03584f") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "TP36") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "power:+3.3V") (at 140.97 44.45 0) @@ -25963,7 +29264,7 @@ (uuid "3eb62f4f-96b3-4aed-ba2d-6f8a188a43c3") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR08") (unit 1) @@ -25971,9 +29272,84 @@ ) ) ) + (symbol + (lib_id "Connector:TestPoint") + (at 46.99 392.43 0) + (unit 1) + (body_style 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (in_pos_files yes) + (dnp no) + (uuid "f8fd719f-eb33-4abe-9800-8198ee1388b3") + (property "Reference" "TP38" + (at 46.99 385.572 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "TC2_N" + (at 46.99 387.35 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "TestPoint:TestPoint_Pad_1.5x1.5mm" + (at 46.99 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Datasheet" "" + (at 46.99 392.43 0) + (hide yes) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Description" "" + (at 46.99 392.43 0) + (show_name no) + (do_not_autoplace no) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (pin "1" + (uuid "e96ba10c-7cd4-4fca-8106-46eacf856941") + ) + (instances + (project "safekiln" + (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" + (reference "TP38") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "Device:C") - (at 532.13 45.72 0) + (at 532.13 49.53 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -25983,7 +29359,7 @@ (dnp no) (uuid "f925a691-5910-4e8c-aca7-e7b4f6766755") (property "Reference" "C13" - (at 532.765 43.18 0) + (at 532.765 46.99 0) (show_name no) (do_not_autoplace no) (effects @@ -25994,7 +29370,7 @@ ) ) (property "Value" "10uF" - (at 532.765 48.26 0) + (at 532.765 52.07 0) (show_name no) (do_not_autoplace no) (effects @@ -26005,7 +29381,7 @@ ) ) (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" - (at 532.13 45.72 0) + (at 532.13 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26016,7 +29392,7 @@ ) ) (property "Datasheet" "" - (at 532.13 45.72 0) + (at 532.13 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26027,7 +29403,7 @@ ) ) (property "Description" "" - (at 532.13 45.72 0) + (at 532.13 49.53 0) (show_name no) (do_not_autoplace no) (effects @@ -26037,7 +29413,7 @@ ) ) (property "LCSC" "C15850" - (at 532.13 45.72 0) + (at 532.13 49.53 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26054,7 +29430,7 @@ (uuid "eb4b9d63-a35d-42f0-b997-c90e99c878eb") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "C13") (unit 1) @@ -26130,7 +29506,7 @@ (uuid "2e990fdf-9e11-483c-96e6-c061c81448a5") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "#PWR074") (unit 1) @@ -26140,7 +29516,7 @@ ) (symbol (lib_id "Device:R") - (at 256.54 281.94 0) + (at 256.54 262.89 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -26150,7 +29526,7 @@ (dnp no) (uuid "fb58a8d4-1087-45bf-961d-8bb1dbbfda57") (property "Reference" "R29" - (at 258.572 281.94 90) + (at 258.572 262.89 90) (show_name no) (do_not_autoplace no) (effects @@ -26160,7 +29536,7 @@ ) ) (property "Value" "10k" - (at 256.54 281.94 90) + (at 256.54 262.89 90) (show_name no) (do_not_autoplace no) (effects @@ -26170,7 +29546,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 256.54 281.94 0) + (at 256.54 262.89 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26181,7 +29557,7 @@ ) ) (property "Datasheet" "" - (at 256.54 281.94 0) + (at 256.54 262.89 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26192,7 +29568,7 @@ ) ) (property "Description" "" - (at 256.54 281.94 0) + (at 256.54 262.89 0) (show_name no) (do_not_autoplace no) (effects @@ -26208,7 +29584,7 @@ (uuid "194aab5c-b1e1-4e57-bfd3-0d58e2b35541") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "R29") (unit 1) @@ -26218,7 +29594,7 @@ ) (symbol (lib_id "Device:R") - (at 275.59 365.76 90) + (at 321.31 364.49 90) (unit 1) (body_style 1) (exclude_from_sim no) @@ -26228,7 +29604,7 @@ (dnp no) (uuid "fd2890eb-43b1-4e00-bf0c-b6e50cfb4bd4") (property "Reference" "R26" - (at 275.59 363.728 90) + (at 321.31 362.458 90) (show_name no) (do_not_autoplace no) (effects @@ -26238,7 +29614,7 @@ ) ) (property "Value" "1k" - (at 275.59 365.76 90) + (at 321.31 364.49 90) (show_name no) (do_not_autoplace no) (effects @@ -26248,7 +29624,7 @@ ) ) (property "Footprint" "Resistor_SMD:R_0402_1005Metric" - (at 275.59 365.76 0) + (at 321.31 364.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26259,7 +29635,7 @@ ) ) (property "Datasheet" "" - (at 275.59 365.76 0) + (at 321.31 364.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26270,7 +29646,7 @@ ) ) (property "Description" "" - (at 275.59 365.76 0) + (at 321.31 364.49 0) (show_name no) (do_not_autoplace no) (effects @@ -26280,7 +29656,7 @@ ) ) (property "LCSC" "C11702" - (at 275.59 365.76 0) + (at 321.31 364.49 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26297,7 +29673,7 @@ (uuid "9c9d902e-0ecb-45fd-8bc0-c87d20886a37") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "R26") (unit 1) @@ -26307,7 +29683,7 @@ ) (symbol (lib_id "Connector_Generic:Conn_01x04") - (at 546.1 248.92 0) + (at 152.4 171.45 0) (unit 1) (body_style 1) (exclude_from_sim no) @@ -26317,7 +29693,7 @@ (dnp no) (uuid "ff5a4fae-c51b-4ab1-82c0-9d3c76f77d6f") (property "Reference" "J5" - (at 546.1 243.84 0) + (at 152.4 166.37 0) (show_name no) (do_not_autoplace no) (effects @@ -26327,7 +29703,7 @@ ) ) (property "Value" "OLED 128x64 I2C" - (at 546.1 256.54 0) + (at 152.4 179.07 0) (show_name no) (do_not_autoplace no) (effects @@ -26337,7 +29713,7 @@ ) ) (property "Footprint" "Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical" - (at 546.1 248.92 0) + (at 152.4 171.45 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26348,7 +29724,7 @@ ) ) (property "Datasheet" "" - (at 546.1 248.92 0) + (at 152.4 171.45 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26359,7 +29735,7 @@ ) ) (property "Description" "" - (at 546.1 248.92 0) + (at 152.4 171.45 0) (show_name no) (do_not_autoplace no) (effects @@ -26369,7 +29745,7 @@ ) ) (property "LCSC" "C2691448" - (at 546.1 248.92 0) + (at 152.4 171.45 0) (hide yes) (show_name no) (do_not_autoplace no) @@ -26392,7 +29768,7 @@ (uuid "5da5f270-7e43-43c8-abb7-7c7ed47ef587") ) (instances - (project "kilncontrol" + (project "safekiln" (path "/6afeae78-026c-45c9-9b0b-16826713d2f4" (reference "J5") (unit 1) diff --git a/tasklist.md b/tasklist.md index 4c51eee..7e5e8aa 100644 --- a/tasklist.md +++ b/tasklist.md @@ -20,11 +20,11 @@ reused: gaps in the numbering are items that have been closed. | **P2** | Required for a release that claims the requirements are met. | | **P3** | Correctness polish, consistency, cleanup. | -## State, 2026-10-06 +## State, 2026-10-09 | | | |---|---| -| **Firmware logic** | Complete and tested. C++20, 398 host tests green plain and under ASan/UBSan, `clang-tidy` clean on host, target and webhost with no suppressions baseline, `esp32s3` builds with zero warnings at 243 kB (88 % of the OTA slot free), QEMU boots the image and fires it. | +| **Firmware logic** | Complete and tested. C++20, 398 host tests green plain and under ASan/UBSan, `clang-tidy` clean on host, target and webhost with no suppressions baseline, `esp32s3` builds with zero warnings at 246 kB (88 % of the OTA slot free). QEMU boots the image and fires it, on a developer machine and in CI: `tools/qemu-smoke.sh` runs it for 180 s and asserts seven things, ending with the simulated kiln passing 100 degC without latching a fault. | | **Firmware on hardware** | 15 of 16 ports are wired on the target. Only `update` has nothing behind it (`H2`). **None of it has been run against real hardware** (`L2`, `O3`, `P4`, `M3`). | | **Schematic** | ERC clean apart from one known `SDO` false positive (`A11`). Carries the lid interlock and the thermocouple-fault interlock. Does not carry the phase strap (`HR-22`) or the second and third CT inputs (`HR-23`). | | **PCB** | Updated from the schematic and placement started. **Not routed at all** (`A23`, `K4`). | @@ -45,10 +45,11 @@ reused: gaps in the numbering are items that have been closed. | [K](#k-hardware-interlock-chain) | Hardware interlock chain | 5 | | [L](#l-target-adapters) | Target adapters | 2 | | [M](#m-kiln_hmi-the-local-interface) | `kiln_hmi` | 3 | -| [O](#o-wifi-fr-net) | WiFi | 3 | +| [N](#n-security-obligations-and-the-cyber-resilience-act) | Security obligations and the CRA | 5 | +| [O](#o-wifi-fr-net) | WiFi | 4 | | [P](#p-http-transport-and-the-api) | HTTP transport and the API | 4 | | [Q](#q-the-file-store-ad-21) | The file store | 5 | -| [R](#r-the-independent-safety-supervisor-ad-22) | Independent safety supervisor | 7 | +| [R](#r-the-independent-safety-supervisor-ad-22) | Independent safety supervisor | 6 | --- @@ -200,7 +201,7 @@ reused: gaps in the numbering are items that have been closed. for two reasons: the files were being edited at the time, and the name is not only a filename there. `kilncontrol` appears in several hundred internal references, as `(project "kilncontrol")` in every symbol instance of the - schematic and as `(sheetfile "kilncontrol.kicad_sch")` in every footprint of + schematic and as `(sheetfile "safekiln.kicad_sch")` in every footprint of the PCB. Do it with KiCad's own Save As / rename rather than `git mv` plus a substitution, so the cross-references are rewritten by the tool that owns them. `board_pins.h` cites the schematic filename and will follow. @@ -370,12 +371,57 @@ question is whether it is worth its cost. ## H. Field update and local control -- [ ] **H2. There is no field update path at all.** `SWR-UPD-01` was inverted: - no firmware image is accepted over the network. That closes TH-04 completely - and leaves no way to ship a fix without physical access, including a - security fix. `OQ-08` asks what replaces it (USB/serial via `esptool`, or an - image staged over the network but applied only after a physical confirmation - at the kiln). **This blocks release**, and is tracked as `SRR-11`. +- [ ] **H2. The update path is specified and entirely unbuilt.** `OQ-08` is + resolved as of 2026-10-09: the device **pulls** a signed static manifest from + `update.bitcrushtesting.com` once a day, announces an available release on the + local display, and installs it only on a deliberate confirmation there. The + web interface stays read-only and gains no exception, which is why pull was + chosen over staging an image over the LAN: `SEC-00` keeps its absolute form. + `SWR-UPD-09` to `SWR-UPD-16` and `SWR-HMI-16` are the requirements, + [`docs/security.md` §6.2](docs/security.md) the reasoning, and + [`docs/architecture.md` §13.5](docs/architecture.md) the sequence. + + **This still blocks release** (`SRR-11`), because none of it exists. What has + to be written, roughly in dependency order: + + 1. **Generate the manifest signing key**, on a machine it can then leave. + `tools/update-manifest.py keygen` exists and the format it signs is in + [`docs/architecture.md` §13.5](docs/architecture.md); what does not exist + is the key, so `firmware/controller/main/update_pubkey.h` is not committed + and nothing can verify anything yet. One command, and then the key is an + obligation for the whole support period (`SRR-12`). + 2. **The verifier, host-tested first.** Signature check, semver comparison + against `kiln_fw_info_t::version`, target check, and the refusal of + anything not strictly newer (`SWR-UPD-13`). All of it is pure logic and + belongs in a component the host suite can beat on with a tampered manifest, + a wrong key, a truncated image and a replayed old release. + 3. **The adapter**, `esp_https_ota` behind `check` and `install` in + `port_update.h` (both already declared there), streaming into the inactive + slot. `otadata`, `ota_0` and `ota_1` already exist in `partitions.csv`, so + the layout needs nothing. + 4. **The screen** (`SWR-HMI-16`), which is the only place an install can be + authorised and therefore part of the security design rather than of the + interface. Needs the German strings too (`J`). + 5. **`CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE` is already on**; what is missing + is the late `confirm_running()` of `SWR-UPD-15`, called when the supervisor + link, both couples, the config, the programs and the display have all been + seen working. Calling it in start-up code is the defect this requirement + exists to prevent. + 6. **The `update.check_enabled` and `update.url` configuration items**, with + the opt-out reachable from the display, since the web interface cannot + write configuration. + 7. **`tools/update.py`** for `SWR-UPD-14`'s USB recovery: write to `ota_0`, + erase `otadata`, and leave `nvs`, `kilnfs`, `kilnlog` and `prod` alone. The + mistake it exists to prevent is erasing the production data block. + + Two things that are project work rather than firmware work, and that no amount + of firmware discharges: the release channel with an advisory per security + release and a **declared support period** (`SWR-UPD-16`, at least five years), + and the CRA Article 14 reporting route, which is live from **11 September + 2026** while the main obligations start on 11 December 2027. + + It also depends on `P`: there is still no HTTP stack on the target, and this + needs an HTTPS *client* even though it needs no server. - [ ] **H3. Local control is now the only control, and it has never been operated.** The web interface is read-only by design, so starting, pausing, @@ -509,6 +555,90 @@ question is whether it is worth its cost. --- +## N. Security obligations and the Cyber Resilience Act + +The inventory is [`docs/security.md` §13](docs/security.md), split into the +firmware half and the half that is not firmware. These are the items it leaves +open, and the order below is the order of [§13.3](docs/security.md): the live +weakness first, the deadline second, the sentence third, the engineering last. + +- [ ] **N1. The access point will start without a passphrase.** `OQ-S4`, and of + everything the CRA asks of this project it is the only item that is a live + weakness in code that exists today rather than something unbuilt or on paper. + A product must ship in a **secure default configuration**; an open AP, offered + as flexibility, is not one. The fix is a bound in the configuration table and + a refusal in the WiFi adapter: either enforce a minimum length on + `net.ap_pass` or refuse to start the AP without one, and say which in + `TH-11`'s goal, since that threat still has none. Overlaps `O`. + +- [ ] **N2. The Article 14 reporting procedure, and the mailbox behind + `SECURITY.md`.** `SECURITY.md` exists and names + `security@bitcrushtesting.com` as the single point of contact required by + Article 13(17); **that mailbox has to exist and be read by a person**. Behind + it: a written procedure for an actively exploited vulnerability or a severe + incident, being an early warning to ENISA and the relevant CSIRT within 24 + hours, a notification within 72, a final report within 14 days, and users + informed without undue delay. **This applies from 11 September 2026**, more + than a year before the Act's main obligations, and it does not wait for the + firmware. Carried as `SRR-14`. + +- [ ] **N3. Choose the support period, and declare it.** At least five years + (`SWR-UPD-16`), and the service life of a kiln controller is well beyond that + floor. The number gates the information given to users, how long the SBOM has + to be kept, and how long `update.bitcrushtesting.com` and its signing key have + to keep existing (`SRR-12`). It is a sentence to write and an obligation to + mean, and it is half of `OQ-R5`; the other half is the conformity assessment + route, where a kiln controller does not appear in the Act's important or + critical lists, so self-assessment should be available. Record the conclusion + rather than assume it. + +- [ ] **N4. Three requirements with no implementation.** Each was a gap nobody + had named until 2026-10-09: + + - `SWR-LOG-16`, **security event logging with an owner opt-out** (`SEC-13`). + The event log records process events; nothing records a refused manifest, a + rollback, a configuration change or a client joining the provisioning AP. + The opt-out is required as explicitly as the log, and the log must not + become a second copy of `SRR-05` by capturing credentials. + - `SWR-CFG-09`, **a factory reset that erases rather than unlinks** + (`SEC-14`). Reachable from the display, leaving the production data block + alone, with a test that reads the raw partition back and looks for the + secret. This is what turns `SRR-05`'s disposal obligation from a line in a + manual into a function of the product, and it is `ADV-4`'s only answer. + - **The SBOM's two loose ends.** `tools/sbom.py` satisfies `SWR-NFR-28` and + runs in CI and in the release workflow, which leaves **retention** of the + published documents for the support period, needing `N3` answered first, + and turning on `--require-licences` once four ESP-IDF v6.0.1 components + resolve: `cmock`, `esp_netif_stack`, `http_parser` and `protobuf-c` carry + no SPDX tag in their sources, three ship a licence file the SBOM points at + and `esp_netif_stack` ships neither, which is worth raising upstream. The + flag stays off by default because it would gate a release on a vendor + tree's tagging habits. + + Also unowned, and not requirements because they are process: somebody has to + **read ESP-IDF and mbedTLS advisories**, and the Annex II information for + users (contact, point of contact, intended use, limitations, how updates + arrive, end of support, secure disposal) has to be written with the + instructions `SYS-SAF-24` already shapes. + +- [ ] **N5. Two decisions that are now requirements rather than preferences.** + `OQ-S3`, flash encryption, stops being a trade the project may decline on the + SoldUnits route: the Act requires stored data to be protected by + state-of-the-art means and `net.wifi_pass` is plaintext in NVS. And secure + boot, which exists as an opt-in provisioning step, should be **on by default + for a sold unit**, which is a production-line decision nobody has recorded. + Both may legitimately differ between the two routes to market, as `OQ-S2` + already let secure boot be a per-unit decision; what cannot happen is either + staying open while units ship. + + Framing worth keeping: `security.md` §13.1 marks six of the Annex I Part I + items as **evidence rather than work**, because the read-only interface, the + absence of `malloc`, the isolation of control from the network and the test + apparatus already satisfy them. The job there is citing them in a conformity + file, not building anything. + +--- + ## O. WiFi, FR-NET - [ ] **O1. `SWR-NET-04` (mDNS, `kiln.local`) is not implemented.** mDNS left @@ -527,8 +657,40 @@ question is whether it is worth its cost. architecture 12.4's and it has not been measured against a real asset build. - [ ] **O3. Untested against a radio.** Same class as `L2`: it compiles and - passes analysis. Nobody has watched it associate, fall back to the AP, - recover from a dropped connection, or sync time. + passes analysis. Nobody has watched it associate, recover from a dropped + connection, or sync time. + + The WiFi setup of `O4` is in the same position and matters more, because it + is now the **only** way credentials reach the device: a scan that returns + nothing on real hardware, or a join that silently fails, leaves a kiln with + no network and no second route to one. First hardware session should be, in + order: scan in a crowded band, join a WPA2 network with a passphrase + containing symbols, power-cycle and confirm it comes back, then join a + different network to confirm it replaces rather than accumulates. + +- [ ] **O4. The provisioning AP is gone; WiFi is set up at the display.** + Done in firmware and unproven on hardware. `SWR-NET-02` and `SWR-NET-05` are + withdrawn, `SWR-NET-11` and `SWR-NET-12` replace them, `net.ap_ssid` and + `net.ap_pass` leave the schema, and `TH-11`, `SRR-08` and `OQ-S4` close with + them: the surface is deleted rather than regulated. + + What is written: the scan list and the character-by-character passphrase + entry in `kiln_hmi`, nine host tests over them including one that walks the + whole character set, `esp_wifi_scan_*` behind `port_net`, and the join wired + through the composition root, persisting credentials before attempting the + radio. + + What is left: + + - **The German strings** (`J`). The new screens are English-only, which + `SWR-NFR-23` does not allow. + - **A rotary encoder is a poor keyboard**, and 95 characters is a long way + round. If hardware testing finds this painful, the cheapest improvement is + to start the knob on the character the previous press landed on rather than + at `a`, which costs one byte of state. + - **Nothing shows the join failing.** The display returns to the network + screen and the operator infers it from "not connected". A result line, + including the radio's reason code, belongs on that screen. --- @@ -679,83 +841,6 @@ either the supervisor's pin count or a requirement. on every cold load. So `SWR-SAF-31` and `SYS-HW-21` are unchanged, the lid sense stays on the ESP32, and `Q5`'s branch is the only one section K loses. -- [x] **R10. The supervisor is integer-only.** Done. The internal unit is q7, - 1/128 degC in an `int32_t`, which is the MAX31856's own LSB, so the decode is - a shift and nothing else; the wire stays integer tenths and the one scaling - step is `sup_q7_to_dc`, which has its own tests. `nm` on the linked image - finds no `__aeabi_f*` symbol and no `lroundf`, and the text segment went from - 6 736 to 3 488 bytes: the soft-float helpers were 2.7 kB of a 6.7 kB image. - - Three things worth carrying forward. **Every NaN case is gone rather than - passing**, because an `int32_t` has no NaN, which also removed the `dt` - sign guard in `sup_step` (a `uint32_t` interval cannot be negative) and two - tests that existed only to pin NaN behaviour. **Timers saturate rather than - wrap**, via `add_ms`, because a latch timer that wrapped would fall back below - its threshold and un-arm a live condition. And `disagreeing` now takes its - magnitude in unsigned arithmetic, so neither a signed overflow nor negating - `INT32_MIN` is reachable even for inputs the decode cannot produce. - - `--specs=nano.specs` **stays**, and the reason changed: the only remaining - C library dependency is `memcpy` and `memset`, which the compiler emits for - the zero-initialised structs rather than anything anyone wrote. Verified by - trying `-nostdlib`, which now fails on exactly those two symbols and nothing - else. Supplying them locally is a decision with its own review, not a flag - change, so it is not done here. - -- [x] **R12. The supervisor's tests run under ASan and UBSan**, and the - controller's sanitiser job was found to be reporting findings while passing. - `SWR-TST-20` only ever said the build shall *support* the sanitisers, and the - supervisor's did not; it does now, through the same `ENABLE_ASAN` option name - the controller's host build uses, plus a second `ctest` step in the - `supervisor` CI job. - - The part worth recording is what adding it uncovered. **UBSan's default is to - print a runtime error and carry on**, leaving the exit code at zero, so - `ctest` reports PASSED for a test that triggered real undefined behaviour. - The controller's `asan+ubsan` matrix leg had been green on exactly those - terms since it was written, over three genuine findings. Both builds now pass - `-fno-sanitize-recover=undefined`. - - Those three findings turned out to be one class and not defects: `test_faults` - casting 999 to a fault code, `test_safety_current` casting 200, and - `test_suplink` feeding 200 as a wire trip reason, each deliberately, to prove - an out-of-range value from outside is rejected. It is the same behaviour - `firmware/controller/test/.clang-tidy` already exempts `EnumCastOutOfRange` - for, so UBSan's `enum` check is excluded in both CMakeLists with that reason - written down. Everything else UBSan checks now aborts. - - Verified the way the tidy canary is: reintroducing the signed `hi - lo` that - `disagreeing` avoids makes the sanitised step fail with "signed integer - overflow" and leaves the plain step passing. A gate that has not been shown - to fail is not known to be a gate. - -- [x] **R11. The supervisor is inside the static-analysis gate.** Found while - writing `docs/coding-standard.md`: `SWR-NFR-25` says code shall pass the - project's static analysis configuration, and `firmware/supervisor` passed - through no analyser at all. `.clang-tidy`'s `HeaderFilterRegex` named only - `firmware/controller/...`, `tools/tidy.sh` built databases only from the - controller's two host projects, and `tools/tidy-target.sh` hardcodes - `kiln_hal_esp32s3`. C11 records the same hole for `main.cpp` and `httpd.cpp` - and did not mention the supervisor, so the one component whose argument is - independent reviewability was the one component clang-tidy had never seen. - - `tools/tidy.sh` now drives four databases, 65 translation units. The - supervisor's two target-only units need no ARM toolchain: they include - nothing but `` and the project's own headers, so they are analysed - against a synthesised database with clang's `thumbv6m-none-eabi` target and - `-ffreestanding`, with the same vacuous-pass canary `tidy-target.sh` carries. - - It reported 207 findings, all in the supervisor, and the split is the useful - part. 46 were `macro-to-enum` in the core headers and were **fixed**, every - object-like macro in `core/` and `protocol/` becoming `constexpr`. 7 were - `const-correctness` in the suites and were fixed. 3 were narrow false - positives and carry a `NOLINTNEXTLINE` with the reason. The remaining ~150 - were one class, memory-mapped register access, in `board/` and `src/` only, - and are exempted by two directory-scoped `.clang-tidy` files on the same - grounds `kiln_hal_esp32s3` already has one. **Nothing is relaxed for - `core/` or `protocol/`**, which is the half that matters: the safety function - is clean under the unmodified root profile. - - [ ] **R8. The supervisor's firmware, and its own test strategy.** Small enough to read in one sitting, which is a design constraint and not an aspiration. It needs its own host-testable core on the same argument as diff --git a/tools/qemu-smoke.sh b/tools/qemu-smoke.sh new file mode 100755 index 0000000..63afb03 --- /dev/null +++ b/tools/qemu-smoke.sh @@ -0,0 +1,218 @@ +#!/usr/bin/env bash +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Boot the firmware under QEMU and assert that it fires. +# +# tools/qemu-smoke.sh build, run for 180 s, assert +# tools/qemu-smoke.sh --seconds 40 a shorter run, for iterating locally +# tools/qemu-smoke.sh --log FILE assert against an existing log, no run +# +# Needs ESP-IDF exported and qemu-xtensa installed: +# . "$IDF_PATH/export.sh" +# python "$IDF_PATH/tools/idf_tools.py" install qemu-xtensa +# +# =========================================================================== +# WHY THIS IS A SCRIPT AND NOT A FEW LINES IN ci.yml +# =========================================================================== +# It was a few lines in ci.yml, and they were run by the IDF container action +# as `bash -c ''`. Everything in the block therefore lives +# inside a single-quoted string, so one apostrophe in a comment or one +# `echo 'text'` ends the quoting and bash exits 2 on a parse error before a +# single line of it runs. That is what happened, and the symptom was a job that +# failed with no output at all, which reads exactly like the job that had been +# failing for a different reason the week before. +# +# A file has no such hazard, it can be run on a developer machine, and the +# assertions can be tested against a recorded log with --log. tools/tidy.sh and +# tools/tidy-target.sh are in the repository for the same reason. +# +# --------------------------------------------------------------------------- +# WHAT IT ASSERTS, AND WHY EACH ONE +# --------------------------------------------------------------------------- +# Booting is not the test. A controller that boots and sits at ambient would +# satisfy every "did it start" check ever written, so the last two assertions +# are the ones that matter: the simulated kiln has to pass 100 degC, and it has +# to get there without latching a fault. A rule that stops a working kiln is +# worse than no rule, because it is the one that gets switched off. +set -euo pipefail + +here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +root="$here/.." +fw="$root/firmware/controller" + +seconds=180 +log="" +run=1 + +while [ $# -gt 0 ]; do + case "$1" in + --seconds) seconds="$2"; shift 2 ;; + --log) log="$2"; run=0; shift 2 ;; + *) echo "unknown argument: $1" >&2; exit 2 ;; + esac +done + +# --- locate the tools ----------------------------------------------------- +# +# `idf.py` is a command on PATH inside the IDF container and a shell ALIAS on a +# developer machine that used the installer, and an alias does not survive into +# a script. Calling the interpreter and the script directly works in both, so +# every invocation below goes through this. +# IDF records the exact interpreter a build directory was configured with and +# refuses to reuse it from another, so this prefers IDF's own virtualenv rather +# than whatever python3 resolves to. +idf_python() { + if [ -n "${IDF_PYTHON_ENV_PATH:-}" ] && [ -x "$IDF_PYTHON_ENV_PATH/bin/python" ]; then + echo "$IDF_PYTHON_ENV_PATH/bin/python" + else + echo python3 + fi +} + +idf() { + if command -v idf.py >/dev/null 2>&1; then + idf.py "$@" + elif [ -n "${IDF_PATH:-}" ] && [ -f "$IDF_PATH/tools/idf.py" ]; then + "$(idf_python)" "$IDF_PATH/tools/idf.py" "$@" + else + echo "neither idf.py nor \$IDF_PATH/tools/idf.py is available." >&2 + echo "Run '. \$IDF_PATH/export.sh' first." >&2 + exit 1 + fi +} + +# --- locate the emulator -------------------------------------------------- +# +# `. export.sh` does NOT put qemu-xtensa on PATH in the IDF container image, +# which is what made `idf.py qemu` exit 127 with "command not found" while the +# tool was installed the whole time. Three ways to find it, cheapest first. +find_qemu() { + if command -v qemu-system-xtensa >/dev/null 2>&1; then + command -v qemu-system-xtensa + return 0 + fi + # idf_tools knows where it put things; this is the documented route and it + # does not depend on any layout this script guesses at. + if [ -n "${IDF_PATH:-}" ] && [ -f "$IDF_PATH/tools/idf_tools.py" ]; then + local line + line="$(python3 "$IDF_PATH/tools/idf_tools.py" export --format key-value 2>/dev/null \ + | sed -n 's/^PATH=//p' | head -1)" || true + if [ -n "$line" ]; then + local expanded + expanded="$(eval "echo \"$line\"")" + local saved="$PATH" + PATH="$expanded" + if command -v qemu-system-xtensa >/dev/null 2>&1; then + command -v qemu-system-xtensa + PATH="$saved" + return 0 + fi + PATH="$saved" + fi + fi + # Last resort: look where idf_tools installs. Reported, not silent, because + # needing this means one of the two routes above should have worked. + local found + found="$(find "${IDF_TOOLS_PATH:-$HOME/.espressif}" -name qemu-system-xtensa \ + -type f -perm -u+x 2>/dev/null | head -1)" + [ -n "$found" ] && { echo "$found"; return 0; } + return 1 +} + +if [ "$run" = "1" ]; then + qemu="$(find_qemu || true)" + if [ -z "$qemu" ]; then + echo "qemu-system-xtensa not found." >&2 + echo " IDF_PATH=${IDF_PATH:-unset}" >&2 + echo " IDF_TOOLS_PATH=${IDF_TOOLS_PATH:-unset}" >&2 + echo "Install it with:" >&2 + echo " python \"\$IDF_PATH/tools/idf_tools.py\" install qemu-xtensa" >&2 + exit 1 + fi + export PATH="$(dirname "$qemu"):$PATH" + echo "qemu: $qemu" + qemu-system-xtensa --version 2>&1 | head -1 || true + + cd "$fw" + export SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.qemu" + idf build + + log="$fw/qemu.log" + echo "running: idf.py qemu for ${seconds}s" + + # The timeout is in python because `timeout` is coreutils and this script + # also runs on a developer machine that may not have it. SIGINT first so + # QEMU can exit cleanly, SIGKILL after a grace, and the process group so + # the emulator goes with the wrapper that started it. + if command -v idf.py >/dev/null 2>&1; then + qemu_cmd="idf.py" + else + qemu_cmd="$(idf_python) $IDF_PATH/tools/idf.py" + fi + python3 - "$seconds" "$log" "$qemu_cmd" <<'PY' +import os, signal, shlex, subprocess, sys, time +seconds, logpath, cmd = int(sys.argv[1]), sys.argv[2], shlex.split(sys.argv[3]) +with open(logpath, "wb") as f: + p = subprocess.Popen(cmd + ["qemu"], stdout=f, stderr=subprocess.STDOUT, + stdin=subprocess.DEVNULL, start_new_session=True) + deadline = time.time() + seconds + while time.time() < deadline and p.poll() is None: + time.sleep(1) + if p.poll() is None: + os.killpg(os.getpgid(p.pid), signal.SIGINT) + try: + p.wait(timeout=15) + except subprocess.TimeoutExpired: + os.killpg(os.getpgid(p.pid), signal.SIGKILL) + elif p.returncode != 0: + # It stopped on its own, which for `idf.py qemu` means it failed. + print(f"idf.py qemu exited {p.returncode} on its own", file=sys.stderr) + sys.exit(p.returncode) +PY + echo "log: $log ($(wc -c < "$log") bytes)" +fi + +# --- assertions ----------------------------------------------------------- +[ -s "$log" ] || { echo "::error::QEMU produced no output"; exit 1; } + +fail=0 +want() { + if grep -qE "$1" "$log"; then + echo "ok: $2" + else + echo "::error::$2 -- expected /$1/ in the QEMU log" + fail=1 + fi +} + +# Matched against what main.cpp actually logs. An earlier version of this check +# looked for 'Safe Kiln Controller starting', which the firmware has never +# printed, so it could only ever have passed vacuously or failed. +want 'kiln: Safe Kiln Controller .* on esp32s3' 'the composition root ran' +want 'SIMULATED PLANT' 'the simulated plant was bound' +want 'started "' 'a program was accepted and started' +want '^\[RUN' 'the run controller reached Running' +want 'HEAT' 'the safety supervisor granted heat authority' + +# The kiln has to actually get somewhere. The state is padded inside its +# brackets, so strip the whole bracketed field before reading the temperature +# rather than counting on where it lands. +if awk '/^\[/ { gsub(/\[[^]]*\]/, ""); if ($1+0 > 100) found = 1 } + END { exit !found }' "$log"; then + echo "ok: the simulated kiln passed 100 degC" +else + echo "::error::the simulated kiln never passed 100 degC" + fail=1 +fi + +# And it has to get there without tripping a rule. +if grep -qE '^\s+FAULT [0-9]+' "$log"; then + echo "::error::a fault latched during an unperturbed firing" + grep -E '^\s+FAULT [0-9]+' "$log" | head -5 + fail=1 +else + echo "ok: no fault latched" +fi + +exit $fail diff --git a/tools/run-qemu.sh b/tools/run-qemu.sh index 2dff690..2f19d6f 100755 --- a/tools/run-qemu.sh +++ b/tools/run-qemu.sh @@ -17,7 +17,10 @@ set -euo pipefail here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -fw="$here/../firmware" +# firmware/controller since the split into controller and supervisor: this +# still said ../firmware, which is a directory with no CMakeLists in it, so the +# script failed on the first build. The same move broke the esp32s3 tidy job. +fw="$here/../firmware/controller" action="${1:-all}" if [[ -z "${IDF_PATH:-}" ]]; then diff --git a/tools/sbom.py b/tools/sbom.py new file mode 100755 index 0000000..d159ab3 --- /dev/null +++ b/tools/sbom.py @@ -0,0 +1,1161 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# The software bill of materials (SWR-NFR-28, UR-REG-004, SRR-14). +# +# tools/sbom.py # CycloneDX, from the default build dir +# tools/sbom.py --format both --strict +# tools/sbom.py --build-dir firmware/controller/build \ +# --image firmware/controller/build/safekiln.bin \ +# --out-dir dist --format both +# tools/sbom.py --self-test +# +# =========================================================================== +# WHY THIS EXISTS, AND WHAT IT HAS TO BE RIGHT ABOUT +# =========================================================================== +# The Cyber Resilience Act requires a machine-readable bill of materials +# covering at least the top-level dependencies, kept for the support period. +# The question it has to answer, under time pressure, is: +# +# "An advisory landed this morning against mbedTLS 3.6.0. Did we ship it?" +# +# A project that cannot answer that has to assume the worst about every unit it +# ever sold. So the one property that matters here is that the inventory is +# GENERATED FROM THE BUILD and not maintained by hand: a hand-written list of +# dependencies is wrong within one release of being written, and wrong in the +# direction that costs the most, which is omission. +# +# The source of truth is `build/project_description.json`, which the IDF build +# writes and which names the components that were ACTUALLY LINKED rather than +# the ones the project might use. Nothing in this tool guesses at that list. +# +# --------------------------------------------------------------------------- +# CYCLONEDX AND SPDX, AND WHY BOTH +# --------------------------------------------------------------------------- +# CycloneDX 1.6 JSON is the default: its model fits a firmware image (a product +# component with a dependency graph and file-level detail where that helps), and +# it is what vulnerability tooling consumes most readily. SPDX 2.3 JSON is +# available with `--format spdx` or `both`, because an assessor or a customer may +# ask for SPDX specifically and "we have the other one" is a bad answer to a +# question with a deadline attached. +# +# Both are emitted from one inventory, so they cannot disagree about what +# shipped. They differ in exactly one respect, deliberately: the web assets +# carry per-file hashes in the CycloneDX output, where nested components are part +# of the model, and stay a single package in the SPDX output, where file-level +# listing would pull in `filesAnalyzed` and a package verification code for no +# regulatory gain. That asymmetry is documented rather than silent. +# +# --------------------------------------------------------------------------- +# LICENCES ARE SCANNED, NOT ASSUMED +# --------------------------------------------------------------------------- +# ESP-IDF publishes no per-component licence manifest, and a curated map in this +# file would be the hand-maintained inventory this tool exists to avoid. So the +# licence of each component is taken from the `SPDX-License-Identifier:` tags in +# its own sources, which is the vendor's own statement about its own code, in the +# same spirit as tools/gen-stm32g031-header.py taking register addresses from +# ST's SVD rather than from anybody's recollection. +# +# Two honest limits on that: +# +# A SCAN IS EVIDENCE, NOT A LEGAL CONCLUSION. It reports what the files say. +# A component whose sources carry no tag comes out as NOASSERTION rather than +# as a guess, and `--strict` makes that a failure so a release cannot quietly +# ship an unknown. +# +# IT SEES ONLY WHAT IS ON DISK. Run it where $IDF_PATH is, which for CI means +# inside the IDF container, not in a step afterwards. Without the IDF tree it +# still produces a valid SBOM, with the component list intact and the licences +# unresolved, and says so loudly. +# +# --------------------------------------------------------------------------- +# WHAT IS FIRST-PARTY, WHICH IS MORE THAN YOU WOULD EXPECT +# --------------------------------------------------------------------------- +# There are no vendored third-party browser assets. `web/chart.js` is +# hand-written for exactly this reason (OQ-04: "a dependency would cost more than +# the entire asset budget and bring a licence to audit with it"), and the SBOM +# records that as a fact with hashes behind it rather than as an absence. An +# assessor asking "what JavaScript libraries does this ship" gets "none, and +# here are the four files it does ship". +# +# --------------------------------------------------------------------------- +# REPRODUCIBILITY +# --------------------------------------------------------------------------- +# Same build, same SBOM bytes. Components are sorted, the serial number is +# derived from a digest of the inventory rather than randomly generated, and the +# timestamp honours SOURCE_DATE_EPOCH. That matters because the SBOM is a +# release artefact kept for five years: a diff between two of them should show +# what changed in the product, not what time it was. +import argparse +import datetime +import hashlib +import json +import os +import pathlib +import re +import shutil +import subprocess +import sys + +ROOT = pathlib.Path(__file__).resolve().parent.parent +FIRMWARE = ROOT / "firmware" / "controller" +DEFAULT_BUILD_DIRS = ("build", "build-esp32s3", "build-hw", "build-qemu") + +SUPPLIER = "Bitcrush Testing" +PROJECT_LICENCE = "GPL-3.0-or-later" +PROJECT_URL = "https://github.com/Boernsman/kilncontrol" + +TOOL_NAME = "tools/sbom.py" +TOOL_VERSION = "1" + +CYCLONEDX_SPEC = "1.6" +SPDX_VERSION = "SPDX-2.3" +NOASSERTION = "NOASSERTION" + +# The release tag glob and the version rules of firmware/controller/CMakeLists.txt. +# Reimplemented here rather than parsed out of the image, because the SBOM has to +# name a version even when no image is given, and because `--match` is not +# optional: this repository carries a non-release tag that a bare +# `git describe --tags` would happily name a release after. +TAG_GLOB = "v[0-9]*.[0-9]*.[0-9]*" + +# Files worth opening when looking for an SPDX tag, and the caps that keep a scan +# of a large component tree to a fraction of a second. A tag lives in a header +# comment, so the first 2 KiB is where it is or is not. +SCAN_SUFFIXES = {".c", ".h", ".cpp", ".hpp", ".cc", ".cxx", ".S", ".s", ".py", + ".ld", ".cmake", ".txt", ".yml", ".yaml", ".json", ".rst", ".md"} +SCAN_MAX_FILES = 400 +SCAN_HEAD_BYTES = 2048 +SCAN_SKIP_DIRS = {".git", "test", "tests", "examples", "docs", "doc", "build"} + +# Test and example code does not ship, and in ESP-IDF it is licensed +# differently from the component it sits inside: the component is Apache-2.0 and +# its `test_apps/` carry CC0-1.0 or "Unlicense OR CC0-1.0", which is Espressif's +# convention for code they want people to copy freely. Scanning those in made +# every second component look dual-licensed in a way no shipped byte is. Found +# by running this against the real v6.0.1 tree rather than by reading about it, +# which is why the pattern is this specific: `test_apps`, `i2c_test_apps`, +# `heap_tests`, `pthread_unity_tests`, `host_test`. +SCAN_SKIP_DIR_RE = re.compile(r"(^|_)(test_apps?|tests?|unity_tests|host_test)$") + +SPDX_TAG = re.compile(rb"SPDX-License-Identifier:\s*([^\r\n*/]+)") + +WEB_SUFFIXES = {".html", ".js", ".css"} + +# Where a licence lives when it is not in an SPDX tag. Four of ESP-IDF v6.0.1's +# own components are in that position (cmock, esp_netif_stack, http_parser, +# protobuf-c), three of them with a licence FILE and no tags, often one +# directory down inside the vendored submodule: `CMock/LICENSE.txt`, +# `protobuf-c/LICENSE`. Finding those does not let this tool assert a licence, +# and it deliberately does not try: reading licence prose and concluding an SPDX +# id is the kind of guess this file exists to avoid. What it does is say where +# the answer is, so the person resolving the five has somewhere to start. +LICENCE_FILE_RE = re.compile(r"^(licen[sc]e|copying|notice)", re.I) +LICENCE_FILE_DEPTH = 3 +LICENCE_FILE_MAX = 4 + + +class Error(Exception): + """A problem worth a clean message rather than a traceback.""" + + +# --- small helpers -------------------------------------------------------- + +def run_capture(cmd, cwd=None): + try: + p = subprocess.run(cmd, cwd=cwd, stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, check=False) + except (FileNotFoundError, NotADirectoryError): + return None + if p.returncode != 0: + return None + return p.stdout.decode(errors="replace").strip() + + +def sha256_file(path): + h = hashlib.sha256() + with open(path, "rb") as f: + for chunk in iter(lambda: f.read(1 << 16), b""): + h.update(chunk) + return h.hexdigest() + + +def timestamp(): + """UTC, to the second, honouring SOURCE_DATE_EPOCH.""" + epoch = os.environ.get("SOURCE_DATE_EPOCH") + if epoch: + try: + when = datetime.datetime.fromtimestamp(int(epoch), datetime.timezone.utc) + except ValueError: + raise Error(f"SOURCE_DATE_EPOCH={epoch!r} is not an integer") from None + else: + when = datetime.datetime.now(datetime.timezone.utc) + return when.replace(microsecond=0).isoformat().replace("+00:00", "Z") + + +# --- the project version, by the same rules as the build ------------------ + +def semver(tag, ahead, rev, dirty): + """The version string firmware/controller/CMakeLists.txt would produce. + + The cases are its documented ones: + + on the tag, clean 1.4.0 + on the tag, dirty 1.4.0+dirty + 12 commits past it 1.4.0+12.a1b2c3d + ... and dirty 1.4.0+12.a1b2c3d.dirty + no tag yet 0.0.0+a1b2c3d + not a git checkout 0.0.0 + """ + suffix = ".dirty" if dirty else "" + if not tag: + if not rev: + return "0.0.0" + return f"0.0.0+{rev}{suffix}" + base = tag[1:] if tag.startswith("v") else tag + if not ahead: + return base if not dirty else f"{base}+dirty" + return f"{base}+{ahead}.{rev}{suffix}" + + +def project_version(repo=ROOT): + """Derived from git, and NOT from the build, on purpose. + + The build's own `project_version` is authoritative when a build exists and is + preferred by build_inventory; this is the fallback that lets the tool produce + an SBOM of the sources alone, which is what a `--self-test` or a dry run in a + tree with no build directory needs. + """ + if shutil.which("git") is None: + return "0.0.0" + rev = run_capture(["git", "rev-parse", "--short=7", "HEAD"], cwd=repo) + if rev is None: + return "0.0.0" + dirty = bool(run_capture(["git", "status", "--porcelain", "--untracked-files=no"], + cwd=repo)) + tag = run_capture(["git", "describe", "--tags", "--abbrev=0", "--match", TAG_GLOB], + cwd=repo) + ahead = None + if tag: + count = run_capture(["git", "rev-list", f"{tag}..HEAD", "--count"], cwd=repo) + ahead = None if count in (None, "", "0") else count + return semver(tag, ahead, rev, dirty) + + +# --- the build's own description ----------------------------------------- + +def find_build_dir(explicit=None): + if explicit is not None: + p = pathlib.Path(explicit) + if not (p / "project_description.json").is_file(): + raise Error(f"{p} holds no project_description.json; is it an IDF build dir?") + return p + for name in DEFAULT_BUILD_DIRS: + p = FIRMWARE / name + if (p / "project_description.json").is_file(): + return p + raise Error( + "no IDF build directory found. Build the firmware first:\n" + " idf.py -C firmware/controller build\n" + "or pass --build-dir. The component list comes from the build rather " + "than from a list in this tool, so there is nothing to report without one." + ) + + +def read_project_description(build_dir): + """Normalise the fields this tool needs out of project_description.json. + + Key names have moved between IDF versions, so each one is looked for under + the spellings it has had. A missing component map is an error rather than an + empty SBOM: an inventory that silently lists nothing is worse than no + inventory, because it looks like an answer. + """ + p = pathlib.Path(build_dir) / "project_description.json" + try: + d = json.loads(p.read_text()) + except json.JSONDecodeError as exc: + raise Error(f"{p} is not valid JSON: {exc}") from None + + info = d.get("build_component_info") or d.get("component_info") or {} + paths = d.get("build_component_paths") or [] + names = d.get("build_components") or list(info) + + components = {} + for i, name in enumerate(names): + # ESP-IDF v6.0.1 puts one empty string in `build_components`. Found by + # running this against a real build, where it produced a component + # called "esp-idf-" with no version and no licence: an SBOM entry for + # nothing, which is worse than a missing one because it looks like data. + if not name or not name.strip(): + continue + entry = info.get(name) or {} + directory = entry.get("dir") or (paths[i] if i < len(paths) else None) + if directory: + components[name] = directory + else: + components[name] = None + + if not components: + raise Error( + f"{p} names no components (looked for build_components, " + "build_component_info and component_info). Either the file is from " + "an IDF this tool has not seen, or the build did not finish." + ) + + return { + "project_name": d.get("project_name") or "safekiln", + "project_version": d.get("project_version"), + "target": d.get("target") or "esp32s3", + "idf_path": d.get("idf_path"), + "components": components, + "toolprefix": d.get("monitor_toolprefix") or "", + "c_compiler": d.get("c_compiler") or "", + } + + +def idf_version(idf_path): + if not idf_path: + return os.environ.get("IDF_VER") or NOASSERTION + p = pathlib.Path(idf_path) + vf = p / "version.txt" + if vf.is_file(): + text = vf.read_text().strip() + if text: + return text + described = run_capture(["git", "describe", "--tags", "--dirty"], cwd=p) + if described: + return described + return os.environ.get("IDF_VER") or NOASSERTION + + +def mbedtls_version(idf_path): + """From mbedTLS's own header, which is the only place that cannot be stale. + + Called out separately from the component scan because mbedTLS is the + dependency most likely to be the subject of the advisory this SBOM exists to + answer, and because its version is its submodule's, not ESP-IDF's. + """ + if not idf_path: + return None + base = pathlib.Path(idf_path) / "components" / "mbedtls" / "mbedtls" / "include" / "mbedtls" + for name in ("build_info.h", "version.h"): + f = base / name + if not f.is_file(): + continue + m = re.search(r'#define\s+MBEDTLS_VERSION_STRING\s+"([^"]+)"', f.read_text(errors="replace")) + if m: + return m.group(1) + return None + + +def compiler_version(desc): + """Version of the C compiler that actually built the image, if reachable.""" + cc = desc.get("c_compiler") or "" + if cc and pathlib.Path(cc).is_file(): + prog = cc + else: + prefix = desc.get("toolprefix") or "" + prog = shutil.which(prefix + "gcc") if prefix else None + if prog is None: + prog = shutil.which("xtensa-esp32s3-elf-gcc") + if prog is None: + return None, None + out = run_capture([prog, "-dumpversion"]) + return pathlib.Path(prog).name, (out or None) + + +# --- licences, from the sources themselves ------------------------------- + +def find_licence_files(directory): + """Relative paths of licence files, for a component whose sources carry no tag.""" + if not directory: + return [] + d = pathlib.Path(directory) + if not d.is_dir(): + return [] + found = [] + for path in sorted(d.rglob("*")): + if len(found) >= LICENCE_FILE_MAX: + break + rel = path.relative_to(d) + if len(rel.parts) > LICENCE_FILE_DEPTH or not path.is_file(): + continue + if LICENCE_FILE_RE.match(path.name): + found.append(rel.as_posix()) + return found + + +def scan_licenses(directory): + """SPDX expressions found in a component's own sources, sorted and deduped. + + Bounded by SCAN_MAX_FILES and SCAN_HEAD_BYTES so that scanning the whole of + ESP-IDF stays cheap; tests and examples are skipped because a test fixture's + licence is not the component's. + """ + if not directory: + return [] + d = pathlib.Path(directory) + if not d.is_dir(): + return [] + found = set() + seen = 0 + for path in sorted(d.rglob("*")): + if seen >= SCAN_MAX_FILES: + break + if not path.is_file() or path.suffix not in SCAN_SUFFIXES: + continue + if any(part in SCAN_SKIP_DIRS or SCAN_SKIP_DIR_RE.search(part) + for part in path.relative_to(d).parts[:-1]): + continue + seen += 1 + try: + with open(path, "rb") as f: + head = f.read(SCAN_HEAD_BYTES) + except OSError: + continue + for m in SPDX_TAG.finditer(head): + expr = m.group(1).decode(errors="replace").strip().strip("*").strip() + # A tag inside this tool's own regex, or a placeholder in a template, + # is not a licence statement. + if expr and not expr.startswith("<") and len(expr) < 120: + found.add(expr) + return sorted(found) + + +# --- the inventory -------------------------------------------------------- + +def spdxid(text): + """SPDX ids allow letters, digits, '.' and '-' and nothing else.""" + return re.sub(r"[^A-Za-z0-9.\-]", "-", text) + + +def check_unique(ids, what): + """Refuse to emit a document with a repeated identifier. + + Nothing produces one today, and the way one would appear is quiet: + `spdxid()` maps every character outside its allowed set to a dash, so a + component named `foo_bar` and one named `foo-bar` become the same package. + A consumer reading that document silently loses one of them, which is worse + than an error, so this is an error. + """ + seen = set() + for i in ids: + if i in seen: + raise Error( + f"two components share the {what} {i!r}. That would make one of " + "them invisible to whoever reads this document; rename one or " + "widen the identifier scheme before publishing." + ) + seen.add(i) + + +def make_component(name, version, licenses, ctype="library", purl=None, + description=None, hashes=None, supplier=None, nested=None): + return { + "name": name, + "version": version or NOASSERTION, + "licenses": licenses or [], + "type": ctype, + "purl": purl, + "description": description, + "hashes": hashes or {}, + "supplier": supplier, + "nested": nested or [], + } + + +def web_assets(version=None): + """The browser assets, with hashes, and the point they make by being listed. + + Not a dependency inventory: an evidence item. Every one of these is + first-party, which is the resolution of OQ-04 and is the answer to "which + JavaScript libraries does this ship". + """ + web = ROOT / "web" + if not web.is_dir(): + return None + files = sorted(p for p in web.iterdir() + if p.is_file() and p.suffix in WEB_SUFFIXES) + if not files: + return None + # Versioned with the product rather than left NOASSERTION: these files are + # part of this project and ship inside the image, so the image's version is + # the only version they have. + nested = [ + make_component(f"web/{p.name}", version, [PROJECT_LICENCE], ctype="file", + hashes={"SHA-256": sha256_file(p)}, supplier=SUPPLIER) + for p in files + ] + return make_component( + "safekiln-web-assets", version, [PROJECT_LICENCE], ctype="library", + supplier=SUPPLIER, + description=("The browser interface, served from the image. Every file is " + "first-party: there are no vendored third-party browser " + "libraries, which is the resolution of OQ-04 and is why this " + "entry exists at all."), + nested=nested, + ) + + +def build_inventory(build_dir=None, image=None, supervisor_elf=None, repo=ROOT): + """Everything that ships, from the build that made it. + + Returns (product, components, warnings), where each warning is a + (kind, text) pair. The kinds are separated because they are not equally the + project's fault: + + "structural" something about OUR build is missing: no image digest, no + build directory, no toolchain. A release must not ship with + one of these, and --strict refuses. + + "licence" a third-party component's own sources carry no SPDX tag. + Worth reporting every time and worth resolving, but gating a + release on the tagging habits of a vendor's tree would stop + releases for something the project cannot fix in the moment. + --require-licences is there for whoever decides otherwise. + """ + warnings = [] + + desc = None + if build_dir is not None or any( + (FIRMWARE / n / "project_description.json").is_file() for n in DEFAULT_BUILD_DIRS): + desc = read_project_description(find_build_dir(build_dir)) + + version = (desc or {}).get("project_version") or project_version(repo) + target = (desc or {}).get("target") or "esp32s3" + + hashes = {} + if image is not None: + p = pathlib.Path(image) + if not p.is_file(): + raise Error(f"no image at {p}") + hashes["SHA-256"] = sha256_file(p) + else: + warnings.append(( + "structural", + "no --image given, so the product carries no digest: an SBOM that " + "cannot be tied to a binary cannot answer which units are affected")) + + product = make_component( + "safekiln", version, [PROJECT_LICENCE], ctype="firmware", + purl=f"pkg:generic/safekiln@{version}?target={target}", + description=f"Safe Kiln Controller firmware for {target}", + hashes=hashes, supplier=SUPPLIER, + ) + + components = [] + + if desc is None: + warnings.append(( + "structural", + "no IDF build directory: the SBOM covers this project's own sources " + "and nothing it links against. Build first, or pass --build-dir")) + else: + idf_path = desc["idf_path"] + if not idf_path or not pathlib.Path(idf_path).is_dir(): + warnings.append(( + "structural", + "the ESP-IDF tree is not on this machine, so every component's " + "licence is NOASSERTION. Run this where $IDF_PATH is, which for " + "CI means inside the IDF container rather than a step after it")) + + idfver = idf_version(idf_path) + components.append(make_component( + "esp-idf", idfver, scan_licenses(pathlib.Path(idf_path) / "components" / "esp_common") + if idf_path else [], + purl=f"pkg:github/espressif/esp-idf@{idfver}", + description="The framework and SDK the controller image is built on", + supplier="Espressif Systems", + )) + + mbed = mbedtls_version(idf_path) + if mbed: + components.append(make_component( + "mbedtls", mbed, + scan_licenses(pathlib.Path(idf_path) / "components" / "mbedtls" / "mbedtls"), + purl=f"pkg:generic/mbedtls@{mbed}", + description=("TLS and the crypto behind secure boot and the update " + "manifest check (SWR-UPD-11). Versioned by its own " + "submodule rather than by ESP-IDF, which is why it is " + "named separately"), + supplier="TrustedFirmware", + )) + + for name, directory in sorted(desc["components"].items()): + licences = scan_licenses(directory) + description = f"ESP-IDF component `{name}`, linked into the image" + if not licences: + licences = [NOASSERTION] + files = find_licence_files(directory) + description += ( + ". Its sources carry no SPDX tag, so no licence is asserted" + + (f"; a licence file ships at {', '.join(files)}" if files + else " and it ships no licence file either, which is worth " + "raising upstream")) + components.append(make_component( + f"esp-idf-{name}", idfver, licences, + description=description, + supplier="Espressif Systems", + )) + + ccname, ccver = compiler_version(desc) + if ccname: + components.append(make_component( + ccname, ccver, [], ctype="application", + description=("The compiler that produced the controller image. A " + "build input rather than a shipped component: nothing " + "of it is distributed in the product, which is why no " + "licence is asserted for it"), + supplier="Espressif Systems", + )) + else: + warnings.append(( + "structural", + "the cross compiler is not reachable, so the toolchain is not in " + "the inventory; SWR-NFR-28 asks for it by name")) + + if supervisor_elf is not None: + p = pathlib.Path(supervisor_elf) + if not p.is_file(): + raise Error(f"no supervisor image at {p}") + components.append(make_component( + "safekiln-supervisor", version, [PROJECT_LICENCE], ctype="firmware", + hashes={"SHA-256": sha256_file(p)}, supplier=SUPPLIER, + description=("The independent safety supervisor (SWA-22), STM32G031K8T6. " + "Links no third-party source: the register definitions are " + "generated from ST's SVD and the trip logic is this " + "project's own"), + )) + armcc = shutil.which("arm-none-eabi-gcc") + if armcc: + components.append(make_component( + "arm-none-eabi-gcc", run_capture([armcc, "-dumpversion"]), [], + ctype="application", + description=("The compiler that produced the supervisor image. A " + "build input rather than a shipped component"), + )) + + web = web_assets(version) + if web is not None: + components.append(web) + + unresolved = [c["name"] for c in components if c["licenses"] == [NOASSERTION]] + if unresolved: + warnings.append(( + "licence", + f"{len(unresolved)} component(s) carry no SPDX tag in their sources and " + f"are NOASSERTION: {', '.join(unresolved[:6])}" + + (" ..." if len(unresolved) > 6 else ""))) + + components.sort(key=lambda c: c["name"]) + return product, components, warnings + + +def serial_uuid(product, components): + """A stable serial number: same inventory, same urn:uuid. + + Derived rather than random so that two SBOMs of the same build are + byte-identical and a diff between releases shows the product changing. The + version and variant bits are set so it is a well-formed UUID; it is a digest + wearing a UUID's clothes, which is what RFC 4122 version 5 is. + """ + payload = json.dumps([product, components], sort_keys=True).encode() + h = bytearray(hashlib.sha256(payload).digest()[:16]) + h[6] = (h[6] & 0x0F) | 0x50 + h[8] = (h[8] & 0x3F) | 0x80 + hexed = h.hex() + return f"{hexed[:8]}-{hexed[8:12]}-{hexed[12:16]}-{hexed[16:20]}-{hexed[20:32]}" + + +# --- CycloneDX 1.6 -------------------------------------------------------- + +def cdx_component(c, ref_prefix=""): + ref = f"{ref_prefix}{c['name']}@{c['version']}" + out = { + "bom-ref": ref, + "type": c["type"], + "name": c["name"], + "version": c["version"], + } + if c["supplier"]: + out["supplier"] = {"name": c["supplier"]} + if c["description"]: + out["description"] = c["description"] + if c["licenses"]: + out["licenses"] = [ + {"license": {"id": lic}} if re.fullmatch(r"[A-Za-z0-9.\-+]+", lic) + else {"expression": lic} + for lic in c["licenses"] if lic != NOASSERTION + ] + if not out["licenses"]: + del out["licenses"] + if c["purl"]: + out["purl"] = c["purl"] + if c["hashes"]: + out["hashes"] = [{"alg": alg, "content": val} + for alg, val in sorted(c["hashes"].items())] + if c["nested"]: + out["components"] = [cdx_component(n) for n in c["nested"]] + return out + + +def emit_cyclonedx(product, components, when): + prod = cdx_component(product) + comps = [cdx_component(c) for c in components] + check_unique([prod["bom-ref"], *(c["bom-ref"] for c in comps)], "bom-ref") + return { + "bomFormat": "CycloneDX", + "specVersion": CYCLONEDX_SPEC, + "serialNumber": f"urn:uuid:{serial_uuid(product, components)}", + "version": 1, + "metadata": { + "timestamp": when, + "tools": {"components": [{ + "type": "application", + "name": TOOL_NAME, + "version": TOOL_VERSION, + "supplier": {"name": SUPPLIER}, + }]}, + "component": prod, + "supplier": {"name": SUPPLIER, "url": [PROJECT_URL]}, + "licenses": [{"license": {"id": PROJECT_LICENCE}}], + }, + "components": comps, + "dependencies": [ + {"ref": prod["bom-ref"], "dependsOn": [c["bom-ref"] for c in comps]}, + *({"ref": c["bom-ref"], "dependsOn": []} for c in comps), + ], + } + + +# --- SPDX 2.3 ------------------------------------------------------------- + +def spdx_package(c, is_product=False): + pkg = { + "SPDXID": f"SPDXRef-{spdxid(c['name'])}", + "name": c["name"], + "versionInfo": c["version"], + "downloadLocation": PROJECT_URL if is_product else NOASSERTION, + "filesAnalyzed": False, + "licenseConcluded": NOASSERTION, + "licenseDeclared": (" AND ".join(c["licenses"]) if c["licenses"] + and c["licenses"] != [NOASSERTION] else NOASSERTION), + "copyrightText": NOASSERTION, + "supplier": f"Organization: {c['supplier']}" if c["supplier"] else NOASSERTION, + } + if is_product: + pkg["licenseConcluded"] = PROJECT_LICENCE + if c["description"]: + pkg["description"] = c["description"] + if c["purl"]: + pkg["externalRefs"] = [{ + "referenceCategory": "PACKAGE-MANAGER", + "referenceType": "purl", + "referenceLocator": c["purl"], + }] + if c["hashes"]: + pkg["checksums"] = [{"algorithm": alg.replace("-", ""), "checksumValue": val} + for alg, val in sorted(c["hashes"].items())] + return pkg + + +def emit_spdx(product, components, when): + prod = spdx_package(product, is_product=True) + pkgs = [spdx_package(c) for c in components] + check_unique([prod["SPDXID"], *(p["SPDXID"] for p in pkgs)], "SPDXID") + uuid = serial_uuid(product, components) + return { + "spdxVersion": SPDX_VERSION, + "dataLicense": "CC0-1.0", + "SPDXID": "SPDXRef-DOCUMENT", + "name": f"{product['name']}-{product['version']}", + "documentNamespace": f"{PROJECT_URL}/sbom/{product['name']}-{product['version']}-{uuid}", + "creationInfo": { + "created": when, + "creators": [f"Tool: {TOOL_NAME}-{TOOL_VERSION}", + f"Organization: {SUPPLIER}"], + }, + "packages": [prod, *pkgs], + "relationships": [ + {"spdxElementId": "SPDXRef-DOCUMENT", + "relationshipType": "DESCRIBES", + "relatedSpdxElement": prod["SPDXID"]}, + *({"spdxElementId": prod["SPDXID"], + "relationshipType": "DEPENDS_ON", + "relatedSpdxElement": p["SPDXID"]} for p in pkgs), + ], + } + + +# --- self-test ------------------------------------------------------------ + +def self_test(): + """Everything that needs no build, no ESP-IDF and no network. + + The project_description.json shapes are synthesised rather than taken from a + real build, because the point of those checks is the key names that have + moved between IDF versions, and a real file only ever has one of them. + """ + import tempfile + checks = failed = 0 + + def check(what, got, want): + nonlocal checks, failed + checks += 1 + if got != want: + failed += 1 + print(f" FAIL {what}: got {got!r}, want {want!r}") + + def raises(what, fn): + nonlocal checks, failed + checks += 1 + try: + fn() + except Error: + return + except Exception as exc: # noqa: BLE001 + failed += 1 + print(f" FAIL {what}: raised {type(exc).__name__}, want Error") + return + failed += 1 + print(f" FAIL {what}: did not raise") + + # --- the version rules, against CMakeLists' own documented cases ----- + check("on the tag, clean", semver("v1.4.0", None, "a1b2c3d", False), "1.4.0") + check("on the tag, dirty", semver("v1.4.0", None, "a1b2c3d", True), "1.4.0+dirty") + check("12 past it", semver("v1.4.0", "12", "a1b2c3d", False), "1.4.0+12.a1b2c3d") + check("12 past it, dirty", semver("v1.4.0", "12", "a1b2c3d", True), + "1.4.0+12.a1b2c3d.dirty") + check("no tag yet", semver(None, None, "a1b2c3d", False), "0.0.0+a1b2c3d") + check("no tag, dirty", semver(None, None, "a1b2c3d", True), "0.0.0+a1b2c3d.dirty") + check("not a checkout", semver(None, None, None, False), "0.0.0") + check("tag without the v", semver("1.4.0", None, "a1b2c3d", False), "1.4.0") + + # --- SPDX id sanitisation -------------------------------------------- + check("plain name", spdxid("mbedtls"), "mbedtls") + check("slashes and underscores", spdxid("esp-idf-wpa_supplicant"), + "esp-idf-wpa-supplicant") + check("version characters survive", spdxid("gcc-12.2.0"), "gcc-12.2.0") + check("path separators go", spdxid("web/app.js"), "web-app.js") + + # --- the licence scan ------------------------------------------------ + with tempfile.TemporaryDirectory() as tmp: + d = pathlib.Path(tmp) + (d / "a.c").write_bytes(b"/* SPDX-License-Identifier: Apache-2.0 */\n") + (d / "b.c").write_bytes(b"// SPDX-License-Identifier: MIT\n") + (d / "dual.c").write_bytes( + b"/* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */\n") + (d / "untagged.c").write_bytes(b"int main(void){return 0;}\n") + (d / "notsource.bin").write_bytes(b"SPDX-License-Identifier: WTFPL\n") + (d / "test").mkdir() + (d / "test" / "t.c").write_bytes(b"/* SPDX-License-Identifier: Unlicense */\n") + # The shapes the real ESP-IDF v6.0.1 tree uses for code that does not + # ship, each of which was polluting the licence set before it was + # skipped: component/test_apps/x/main/y.c, i2c_test_apps, heap_tests, + # pthread_unity_tests, host_test. + for sub_dir in ("test_apps/app/main", "i2c_test_apps", "heap_tests", + "pthread_unity_tests", "host_test"): + nested = d / sub_dir + nested.mkdir(parents=True) + (nested / "t.c").write_bytes(b"/* SPDX-License-Identifier: CC0-1.0 */\n") + got = scan_licenses(d) + check("scan finds the tags it should", + got, ["Apache-2.0", "Apache-2.0 OR GPL-2.0-or-later", "MIT"]) + check("a binary is not scanned", "WTFPL" in " ".join(got), False) + check("a test fixture's licence is not the component's", + "Unlicense" in " ".join(got), False) + check("nor a test app's, however it is spelled", + "CC0-1.0" in " ".join(got), False) + check("no directory, no licences", scan_licenses(None), []) + check("missing directory, no licences", scan_licenses(d / "nope"), []) + + # Licence files, in the shapes ESP-IDF's untagged components use. + lf = d / "vendored" + (lf / "sub" / "deep" / "deeper").mkdir(parents=True) + (lf / "LICENSE.txt").write_text("MIT-ish prose") + (lf / "sub" / "COPYING").write_text("prose") + (lf / "sub" / "deep" / "deeper" / "LICENSE").write_text("too deep to count") + (lf / "readme.md").write_text("not a licence") + check("licence files are found, nearest first", + find_licence_files(lf), ["LICENSE.txt", "sub/COPYING"]) + check("and nothing is asserted from them", scan_licenses(lf), []) + check("no directory, no licence files", find_licence_files(None), []) + + # --- project_description.json, in both of its shapes ------------- + modern = { + "project_name": "safekiln", "project_version": "1.4.0", + "target": "esp32s3", "idf_path": "/opt/esp/idf", + "monitor_toolprefix": "xtensa-esp32s3-elf-", + "build_components": ["freertos", "mbedtls"], + "build_component_info": { + "freertos": {"dir": "/opt/esp/idf/components/freertos"}, + "mbedtls": {"dir": "/opt/esp/idf/components/mbedtls"}, + }, + } + bd = d / "build" + bd.mkdir() + (bd / "project_description.json").write_text(json.dumps(modern)) + desc = read_project_description(bd) + check("project version", desc["project_version"], "1.4.0") + check("components, modern shape", sorted(desc["components"]), + ["freertos", "mbedtls"]) + check("component dir", desc["components"]["freertos"], + "/opt/esp/idf/components/freertos") + + older = { + "project_name": "safekiln", "target": "esp32s3", + "build_components": ["lwip", "newlib"], + "build_component_paths": ["/idf/components/lwip", "/idf/components/newlib"], + } + (bd / "project_description.json").write_text(json.dumps(older)) + desc2 = read_project_description(bd) + check("components, path-list shape", sorted(desc2["components"]), + ["lwip", "newlib"]) + check("dir from the parallel list", desc2["components"]["newlib"], + "/idf/components/newlib") + check("target defaulted", desc2["target"], "esp32s3") + + blank = dict(modern) + blank["build_components"] = ["freertos", "", "mbedtls"] + (bd / "project_description.json").write_text(json.dumps(blank)) + check("a blank component name is dropped, not published as 'esp-idf-'", + sorted(read_project_description(bd)["components"]), + ["freertos", "mbedtls"]) + + (bd / "project_description.json").write_text('{"project_name":"x"}') + raises("a description naming no components", + lambda: read_project_description(bd)) + (bd / "project_description.json").write_text("{not json") + raises("a description that is not JSON", + lambda: read_project_description(bd)) + raises("a build dir with no description", + lambda: find_build_dir(d)) + + # --- the documents --------------------------------------------------- + product = make_component( + "safekiln", "1.4.0", [PROJECT_LICENCE], ctype="firmware", + purl="pkg:generic/safekiln@1.4.0", hashes={"SHA-256": "ab" * 32}, + supplier=SUPPLIER) + comps = [ + make_component("esp-idf", "v6.0.1", ["Apache-2.0"], + purl="pkg:github/espressif/esp-idf@v6.0.1", + supplier="Espressif Systems"), + make_component("mbedtls", "3.6.0", + ["Apache-2.0 OR GPL-2.0-or-later"], supplier="TrustedFirmware"), + make_component("esp-idf-opaque", "v6.0.1", [NOASSERTION]), + make_component("safekiln-web-assets", None, [PROJECT_LICENCE], + nested=[make_component("web/app.js", None, [PROJECT_LICENCE], + ctype="file", + hashes={"SHA-256": "cd" * 32})]), + ] + when = "2026-10-09T00:00:00Z" + + cdx = emit_cyclonedx(product, comps, when) + check("cyclonedx format", cdx["bomFormat"], "CycloneDX") + check("cyclonedx spec", cdx["specVersion"], CYCLONEDX_SPEC) + check("serial is a urn:uuid", cdx["serialNumber"].startswith("urn:uuid:"), True) + check("product is the metadata component", cdx["metadata"]["component"]["name"], + "safekiln") + check("product carries its digest", + cdx["metadata"]["component"]["hashes"], [{"alg": "SHA-256", "content": "ab" * 32}]) + check("every component is listed", len(cdx["components"]), 4) + check("the dependency graph names the product", + cdx["dependencies"][0]["ref"], "safekiln@1.4.0") + check("and depends on all of them", len(cdx["dependencies"][0]["dependsOn"]), 4) + check("a graph entry per component", len(cdx["dependencies"]), 5) + byname = {c["name"]: c for c in cdx["components"]} + check("a simple licence is an id", + byname["esp-idf"]["licenses"], [{"license": {"id": "Apache-2.0"}}]) + check("a dual licence is an expression", + byname["mbedtls"]["licenses"], + [{"expression": "Apache-2.0 OR GPL-2.0-or-later"}]) + check("NOASSERTION is omitted rather than asserted", + "licenses" in byname["esp-idf-opaque"], False) + check("nested files are nested", + [n["name"] for n in byname["safekiln-web-assets"]["components"]], + ["web/app.js"]) + check("a nested file carries its hash", + byname["safekiln-web-assets"]["components"][0]["hashes"], + [{"alg": "SHA-256", "content": "cd" * 32}]) + + spdx = emit_spdx(product, comps, when) + check("spdx version", spdx["spdxVersion"], SPDX_VERSION) + check("data licence", spdx["dataLicense"], "CC0-1.0") + check("document id", spdx["SPDXID"], "SPDXRef-DOCUMENT") + check("the product plus every component", len(spdx["packages"]), 5) + check("the document describes the product", + spdx["relationships"][0], {"spdxElementId": "SPDXRef-DOCUMENT", + "relationshipType": "DESCRIBES", + "relatedSpdxElement": "SPDXRef-safekiln"}) + check("one DEPENDS_ON per component", + sum(1 for r in spdx["relationships"] if r["relationshipType"] == "DEPENDS_ON"), + 4) + spkgs = {p["name"]: p for p in spdx["packages"]} + check("declared licence of a dual-licensed package", + spkgs["mbedtls"]["licenseDeclared"], "Apache-2.0 OR GPL-2.0-or-later") + check("an unknown licence is NOASSERTION, not a guess", + spkgs["esp-idf-opaque"]["licenseDeclared"], NOASSERTION) + check("the product's concluded licence is this project's", + spkgs["safekiln"]["licenseConcluded"], PROJECT_LICENCE) + check("checksum algorithm is SPDX's spelling", + spkgs["safekiln"]["checksums"], [{"algorithm": "SHA256", + "checksumValue": "ab" * 32}]) + check("purl travels as an external ref", + spkgs["esp-idf"]["externalRefs"][0]["referenceLocator"], + "pkg:github/espressif/esp-idf@v6.0.1") + check("every SPDXID is well formed", + all(re.fullmatch(r"SPDXRef-[A-Za-z0-9.\-]+", p["SPDXID"]) + for p in spdx["packages"]), True) + check("no file-level listing in the SPDX output", "files" in spdx, False) + + # The collision that sanitisation would otherwise hide. + collide = [make_component("foo_bar", "1", []), make_component("foo-bar", "1", [])] + raises("two components that sanitise to one SPDXID", + lambda: emit_spdx(product, collide, when)) + twice = [make_component("same", "1", []), make_component("same", "1", [])] + raises("two components with one bom-ref", + lambda: emit_cyclonedx(product, twice, when)) + + # --- reproducibility -------------------------------------------------- + check("the serial is derived, not random", + serial_uuid(product, comps), serial_uuid(product, comps)) + check("and it is a well-formed v5-shaped uuid", + bool(re.fullmatch(r"[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}", + serial_uuid(product, comps))), True) + moved = [dict(c) for c in comps] + moved[0] = dict(moved[0], version="v6.0.2") + checks += 1 + if serial_uuid(product, comps) == serial_uuid(product, moved): + failed += 1 + print(" FAIL the serial ignores a version change") + check("same inventory, same bytes", + json.dumps(emit_cyclonedx(product, comps, when), sort_keys=True), + json.dumps(emit_cyclonedx(product, comps, when), sort_keys=True)) + + # --- SOURCE_DATE_EPOCH ------------------------------------------------ + old = os.environ.get("SOURCE_DATE_EPOCH") + try: + os.environ["SOURCE_DATE_EPOCH"] = "1760000000" + # 1760000000 = 20370 whole days plus 32000 s, so 08:53:20 UTC. + check("a fixed epoch gives a fixed timestamp", timestamp(), "2025-10-09T08:53:20Z") + os.environ["SOURCE_DATE_EPOCH"] = "not a number" + raises("a nonsense epoch", timestamp) + finally: + if old is None: + os.environ.pop("SOURCE_DATE_EPOCH", None) + else: + os.environ["SOURCE_DATE_EPOCH"] = old + + # --- the web assets, which are the evidence item ---------------------- + web = web_assets() + checks += 1 + if web is None: + failed += 1 + print(" FAIL web/ holds no assets, so the no-third-party-JS evidence is missing") + else: + check("every web asset is first-party", + {lic for n in web["nested"] for lic in n["licenses"]}, {PROJECT_LICENCE}) + check("and each carries a digest", + all(n["hashes"].get("SHA-256") for n in web["nested"]), True) + + # --- an inventory of the sources alone, which must still be valid ----- + product2, comps2, warnings = build_inventory(image=None) + check("the product is named", product2["name"], "safekiln") + check("its licence is this project's", product2["licenses"], [PROJECT_LICENCE]) + checks += 1 + if not any(kind == "structural" and "no --image" in text + for kind, text in warnings): + failed += 1 + print(" FAIL an SBOM with no image digest does not warn about it") + cdx2 = emit_cyclonedx(product2, comps2, when) + check("and it is still a valid document", cdx2["bomFormat"], "CycloneDX") + + print(f"{checks - failed}/{checks} checks passed") + return 1 if failed else 0 + + +# --- main ----------------------------------------------------------------- + +def main(argv=None): + ap = argparse.ArgumentParser( + description="Generate the software bill of materials (SWR-NFR-28).", + epilog="Run it where $IDF_PATH is, which for CI means inside the IDF " + "container: the component licences are scanned from the sources " + "on disk and cannot be recovered afterwards.", + ) + ap.add_argument("--build-dir", help="IDF build directory; default: the first of " + + ", ".join(DEFAULT_BUILD_DIRS)) + ap.add_argument("--image", help="the application binary, for the product digest") + ap.add_argument("--supervisor-elf", help="the supervisor image, to cover both MCUs") + ap.add_argument("--out-dir", default=str(ROOT / "dist"), + help="where to write; default dist/") + ap.add_argument("--format", choices=("cyclonedx", "spdx", "both"), + default="cyclonedx") + ap.add_argument("--strict", action="store_true", + help="fail on a gap in OUR build: no image digest, no build " + "directory, no toolchain. What a release should use") + ap.add_argument("--require-licences", action="store_true", + help="additionally fail when a third-party component's own " + "sources carry no SPDX tag. Not on by default: it would " + "gate a release on a vendor tree's tagging habits") + ap.add_argument("--self-test", action="store_true") + args = ap.parse_args(argv) + + if args.self_test: + return self_test() + + try: + product, components, warnings = build_inventory( + build_dir=args.build_dir, image=args.image, + supervisor_elf=args.supervisor_elf) + when = timestamp() + out = pathlib.Path(args.out_dir) + out.mkdir(parents=True, exist_ok=True) + stem = f"{product['name']}-{product['version']}" + + written = [] + if args.format in ("cyclonedx", "both"): + p = out / f"{stem}.cdx.json" + p.write_text(json.dumps(emit_cyclonedx(product, components, when), + indent=2) + "\n") + written.append(p) + if args.format in ("spdx", "both"): + p = out / f"{stem}.spdx.json" + p.write_text(json.dumps(emit_spdx(product, components, when), + indent=2) + "\n") + written.append(p) + except Error as exc: + print(f"error: {exc}", file=sys.stderr) + return 1 + + for p in written: + print(f"wrote {p}") + print(f"{product['name']} {product['version']}, {len(components)} components") + + structural = [text for kind, text in warnings if kind == "structural"] + licence = [text for kind, text in warnings if kind == "licence"] + + if warnings: + print() + print("Gaps, each of which makes this SBOM less able to answer the question") + print("it exists for:") + for text in structural: + print(f" - [build] {text}") + for text in licence: + print(f" - [licence] {text}") + + if structural and args.strict: + print() + print("error: --strict, and the build gaps above stand", file=sys.stderr) + return 1 + if licence and args.require_licences: + print() + print("error: --require-licences, and a component's licence is unresolved", + file=sys.stderr) + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/tidy-target.sh b/tools/tidy-target.sh index f81d339..19d5292 100755 --- a/tools/tidy-target.sh +++ b/tools/tidy-target.sh @@ -38,7 +38,10 @@ set -euo pipefail cd "$(dirname "$0")/.." -IDF_BUILD=${IDF_BUILD:-firmware/build} +# firmware/controller/build since the split into controller and supervisor. +# This said firmware/build, so the script ran and then reported the database +# missing, which reads like "you forgot to build" and is not that. +IDF_BUILD=${IDF_BUILD:-firmware/controller/build} DB=$IDF_BUILD/compile_commands.json OUT=${OUT:-$IDF_BUILD/tidy-target} SRC_DIR=firmware/controller/components/kiln_hal_esp32s3/src diff --git a/tools/udd-coverage.py b/tools/udd-coverage.py new file mode 100755 index 0000000..256a4b8 --- /dev/null +++ b/tools/udd-coverage.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# How much of the safety function the Unit Design Document actually describes. +# +# tools/udd-coverage.py +# +# Called by tools/udd.sh, which is where the document is built. +# +# WHY THIS EXISTS. doxygen says nothing about a file that carries no +# documentation comments at all: with EXTRACT_ALL off it simply leaves it out. +# So a clean run proves the comments that exist are well formed, and proves +# nothing whatever about the ones that do not. "0 warnings" on a document +# describing a tenth of the component is exactly the vacuous pass this project +# refuses for coverage, for MC/DC and for the target static analysis, and the +# refusal should not stop at documentation. +# +# The declarations are counted from the HEADERS rather than from doxygen's own +# output, deliberately: a unit that is missing from the document has to be +# missing from a list built independently of the document, or it is invisible +# twice. +import glob +import pathlib +import re +import sys +import xml.etree.ElementTree as ET + +# A public function or a public constant, which between them are what a unit +# design has to cover: what can be called, and the thresholds it decides with. +DECL = re.compile(r"^(?:constexpr\s+\w+\s+(\w+)\s*=|" + r"(?:void|bool|uint\d+_t|int\d+_t|size_t)\s+(\w+)\s*\()") + + +def documented_names(out_dir): + """Every member doxygen produced a non-empty brief description for.""" + names = set() + for f in glob.glob(str(pathlib.Path(out_dir) / "xml" / "*.xml")): + try: + root = ET.parse(f).getroot() + except ET.ParseError: + # doxygen emits one index file this parser will not take; the + # member definitions are in the per-file documents either way. + continue + for m in root.iter("memberdef"): + brief = m.find("briefdescription") + if brief is not None and "".join(brief.itertext()).strip(): + names.add(m.findtext("name")) + return names + + +def declared(sup_dir): + """Public functions and constants, per header, read from the source.""" + sup = pathlib.Path(sup_dir) + headers = sorted(sup.glob("core/include/sup/*.h")) + headers.append(sup / "protocol/include/sup_proto.h") + per_file = {} + for h in headers: + if not h.is_file(): + continue + names = set() + for line in h.read_text().splitlines(): + m = DECL.match(line.strip()) + if m: + names.add(m.group(1) or m.group(2)) + per_file[h.relative_to(sup)] = names + return per_file + + +def missing_file_blocks(sup_dir): + """Input files with no \\file block, which doxygen cannot warn about. + + This is the hole the doxygen settings cannot close, and it is a quiet one: + for a C or C++ global function to appear in the document at all, the FILE + has to carry a \\file block. Without one, doxygen skips the whole file, + members included, and says nothing. Two of this component's four headers + were in that state while the build was green. + """ + sup = pathlib.Path(sup_dir) + + # HEADERS only, and the distinction is the point. A unit design specifies + # units by their interface: what may be called, what may be passed, what + # comes back, what happens when it is wrong. The .cpp files are in the + # doxygen INPUT so an assessor can read the implementation one click from + # the specification, not so their file-static helpers acquire entries of + # their own; those are implementation (V-model level 6) and their contract + # is the header's. + roots = ["core/include", "protocol/include", "board"] + skip = {"stm32g031.h"} # generated from ST's SVD; excluded in the Doxyfile + out = [] + for root in roots: + base = sup / root + if not base.is_dir(): + continue + for f in sorted(base.rglob("*.h")): + if f.name in skip: + continue + text = f.read_text() + if "\\file" not in text and "@file" not in text: + out.append(f.relative_to(sup)) + return out + + +def main(argv): + strict = "--require-complete" in argv + argv = [a for a in argv if a != "--require-complete"] + if len(argv) != 3: + print("usage: udd-coverage.py [--require-complete] " + " ", file=sys.stderr) + return 2 + + have = documented_names(argv[2]) + per_file = declared(argv[1]) + public = set().union(*per_file.values()) if per_file else set() + missing = sorted(public - have) + no_file_block = missing_file_blocks(argv[1]) + + print() + print(f"Unit design coverage: {len(public) - len(missing)} of {len(public)} " + f"public functions and constants in core/ and protocol/") + for h, names in per_file.items(): + gap = sorted(names - have) + state = "complete" if not gap else f"{len(names) - len(gap)} of {len(names)}" + print(f" {str(h):<34} {state}") + + if missing: + print() + print(" Not in the document: " + ", ".join(missing[:12]) + + (" ..." if len(missing) > 12 else "")) + if no_file_block: + print() + print(" No \\file block, so doxygen cannot see these files at all:") + for f in no_file_block: + print(f" {f}") + + if strict and (missing or no_file_block): + print() + print("error: --require-complete, and the unit design has gaps above", + file=sys.stderr) + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv)) diff --git a/tools/udd.sh b/tools/udd.sh new file mode 100755 index 0000000..fa414d5 --- /dev/null +++ b/tools/udd.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Generate the supervisor's Unit Design Document (V-model level 5). +# +# tools/udd.sh build it, fail on any documentation warning +# tools/udd.sh --open build it and open it in a browser +# tools/udd.sh --lenient build it and report warnings without failing +# +# The document is firmware/supervisor/Doxyfile's output and the reasoning for +# generating rather than writing it is in that file's header. +# +# WARNINGS ARE THE GATE, and that is the whole point of running this in CI: an +# undocumented unit in the safety function is a hole in the unit design, and +# WARN_AS_ERROR turns it into a failed build rather than a document with a gap +# in it that nobody reads to the end of. --lenient exists for working on the +# documentation, not for CI. +set -euo pipefail + +here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +root="$here/.." +sup="$root/firmware/supervisor" +out="$sup/build-udd" + +lenient=0 +open_after=0 +for arg in "$@"; do + case "$arg" in + --lenient) lenient=1 ;; + --open) open_after=1 ;; + *) echo "unknown argument: $arg" >&2; exit 2 ;; + esac +done + +if ! command -v doxygen >/dev/null 2>&1; then + echo "doxygen is not installed." >&2 + echo " macOS: brew install doxygen" >&2 + echo " Debian: apt-get install doxygen" >&2 + exit 1 +fi + +# Graphviz is REQUIRED, and it used to be optional. The unit design now carries +# \dot blocks of its own: the trip logic's state machine and the cycle's +# program-sequence graph, which are the two pictures an assessment of a safety +# function actually asks for. Without dot those are not missing decoration, +# they are missing content, and doxygen says so loudly enough to fail the +# build. Better to say it here, in one sentence, than as a documentation +# warning somebody has to interpret. +if ! command -v dot >/dev/null 2>&1; then + echo "graphviz is not installed, and the unit design needs it: the state" >&2 + echo "machine and the program-sequence diagram are \dot blocks in the" >&2 + echo "headers." >&2 + echo " macOS: brew install graphviz" >&2 + echo " Debian: apt-get install graphviz" >&2 + exit 1 +fi +dot_flag="YES" + +cd "$sup" +rm -rf "$out" +mkdir -p "$out" + +# The overrides are appended to the configuration rather than edited into it, +# which is doxygen's documented way to do this and keeps the Doxyfile the one +# statement of what the document is. +{ + cat Doxyfile + echo "HAVE_DOT = $dot_flag" + if [ "$dot_flag" = "YES" ]; then + echo "CALL_GRAPH = YES" + echo "CALLER_GRAPH = YES" + echo "INCLUDE_GRAPH = YES" + fi + if [ "$lenient" = "1" ]; then + echo "WARN_AS_ERROR = NO" + fi +} | doxygen - || status=$? +status=${status:-0} + +warnings="$out/doxygen-warnings.txt" +if [ -s "$warnings" ]; then + echo + echo "--- documentation warnings ---" + cat "$warnings" + echo "--- $(grep -c . "$warnings") line(s) ---" +fi + +if [ "$status" -ne 0 ] && [ "$lenient" = "0" ]; then + echo >&2 + echo "The unit design is incomplete: every warning above is a unit, a" >&2 + echo "parameter or a return value with nothing said about it. Document it" >&2 + echo "or, if it genuinely belongs outside the document, exclude it in the" >&2 + echo "Doxyfile with the reason written next to it." >&2 + exit "$status" +fi + +# --- coverage, because zero warnings is not the same as a complete document -- +# +# doxygen is silent about a file that carries no documentation comments at all: +# with EXTRACT_ALL off it simply omits it, so "0 warnings" can mean "nothing is +# documented" as easily as "everything is". That is the vacuous pass this +# project refuses elsewhere, so the number is computed and printed every time. +if [ "$lenient" = "1" ]; then + python3 "$here/udd-coverage.py" "$sup" "$out" +else + python3 "$here/udd-coverage.py" --require-complete "$sup" "$out" +fi + +echo +echo "Unit Design Document: $out/html/index.html" +[ -d "$out/xml" ] && echo "Machine-readable: $out/xml/" + +if [ "$open_after" = "1" ]; then + if command -v open >/dev/null 2>&1; then open "$out/html/index.html" + elif command -v xdg-open >/dev/null 2>&1; then xdg-open "$out/html/index.html" + fi +fi diff --git a/tools/update-manifest.py b/tools/update-manifest.py new file mode 100755 index 0000000..af86d3a --- /dev/null +++ b/tools/update-manifest.py @@ -0,0 +1,1029 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Bitcrush Testing +# SPDX-License-Identifier: GPL-3.0-or-later +# +# The update manifest, and the key that signs it (SWR-UPD-09 to SWR-UPD-16, SEC-12). +# +# tools/update-manifest.py keygen --key keys/manifest.pem +# tools/update-manifest.py pubkey --key keys/manifest.pem --header firmware/controller/main/update_pubkey.h +# tools/update-manifest.py sign --key keys/manifest.pem --image build-esp32s3/safekiln.bin \ +# --version 1.4.2 --security --advisory advisories/2026-002.html +# tools/update-manifest.py verify --manifest dist/update/stable.json --pubkey keys/manifest.pub.pem +# tools/update-manifest.py show --manifest dist/update/stable.json +# tools/update-manifest.py --self-test +# +# =========================================================================== +# WHAT THIS TOOL IS FOR +# =========================================================================== +# The device fetches one static file per channel, verifies its signature against +# a key compiled into its own firmware, and only then believes a word of it +# (SWR-UPD-11). This tool makes that file. Nothing here touches a board: the +# output is a manifest and an image to put on a web server. +# +# The direction of the update path is the whole design and is argued in +# docs/security.md section 6.2. Two of its consequences land in this file: +# +# THE MANIFEST IS STATIC AND IDENTICAL FOR EVERY DEVICE (SWR-UPD-10). There is +# no per-device URL, no query string and no installed version in the request, +# so the comparison against the running version happens on the device. That is +# what keeps the daily check out of the telemetry category (SEC-06), and it is a +# constraint on the service as much as on the client: the moment a manifest is +# generated per unit, the check becomes a tracker. +# +# EVERY PATH IN IT IS RELATIVE (to the manifest's own directory). `update.url` +# is configurable so that a site can mirror the service rather than let the +# controller out to the internet (SRR-13), and a mirror is then a directory +# copy. An absolute URL in the manifest would send a mirrored device back to +# the origin and defeat the point. +# +# --------------------------------------------------------------------------- +# THE SIGNING KEY IS NOT THE SECURE BOOT KEY +# --------------------------------------------------------------------------- +# Two keys, two blast radii (SRR-12). The secure boot key decides what a +# provisioned board will BOOT and its digest is burnt into eFuses; this key +# decides what a board will be OFFERED. Signing manifests with the secure boot +# key would mean the key that can never be rotated is also the key used weekly. +# `keygen` and `sign` both refuse a key that is the configured secure boot key. +# +# Keep it offline. An attacker who holds it still has to get somebody to press +# confirm at the kiln (SWR-UPD-12), which is the whole reason the install is +# manual, but that is the last line and not a reason to be relaxed about the +# first. +# +# --------------------------------------------------------------------------- +# THE FORMAT, AND WHY IT IS AN ENVELOPE +# --------------------------------------------------------------------------- +# A manifest is a JSON envelope whose `payload` is the base64 of the exact bytes +# that were signed: +# +# { +# "alg": "RSA3072-PSS-SHA256", +# "key_id": "3f2a91c4", +# "payload": "eyJzY2hlbWEiOiAxLCAicHJvZHVjdCI6ICJzYWZla2lsbiIsIC4uLg==", +# "sig": "Base64 of 384 bytes" +# } +# +# Signing the bytes rather than the object is the point. A device that re- +# serialised the parsed JSON to check a signature would have to agree with this +# tool about key order, spacing and number formatting for ever; the usual way +# that goes wrong is a verifier that passes on the manifests it was tested with +# and fails on the one that matters. Here the device base64-decodes, verifies +# over those bytes, and parses afterwards. Canonicalisation stops being a +# problem anybody has to have an opinion about. +# +# The payload, once decoded: +# +# schema 1, so a future format change is detectable rather than confusing +# product "safekiln" +# channel "stable" (the file is .json) +# target "esp32s3", cross-checked against the image's own chip id +# version a RELEASE semantic version: 1.4.2, never 1.4.2+7.gabc1234.dirty +# released ISO date, for the operator and the advisory, not for logic +# security true for a security release (SWR-UPD-16), which then needs an advisory +# advisory relative path to the advisory, required when security is true +# image relative path to the image, resolved against the manifest's directory +# size bytes, so the device can refuse an image that does not match +# sha256 of the image, checked before it is marked bootable (SWR-UPD-11) +# +# What is deliberately NOT in it: release notes. The display is 128x64 pixels +# (SWR-HMI-16 shows a version and whether it is a security release), and a field +# that only a browser can usefully render would end up being the reason somebody +# adds a browser. The advisory is a URL for a human on another device. +# +# --------------------------------------------------------------------------- +# WHY openssl AND NOT A PYTHON CRYPTO LIBRARY +# --------------------------------------------------------------------------- +# Every tool in this directory is standard library plus a subprocess to a tool +# that is already on the machine, because UR-CON-04 forbids fetching a dependency +# to build or release this project. `cryptography` would be a pip install in a +# release path; openssl is on every developer machine and every CI runner. The +# self-test is stdlib only and runs the sign/verify round trip as well when +# openssl is present, so the arithmetic and the parsing are checked even where +# the crypto cannot be. +import argparse +import base64 +import datetime +import hashlib +import json +import os +import pathlib +import re +import shutil +import stat +import subprocess +import sys +import tempfile + +ROOT = pathlib.Path(__file__).resolve().parent.parent +FIRMWARE = ROOT / "firmware" / "controller" +SDKCONFIG_SECURE = FIRMWARE / "sdkconfig.secure" + +SCHEMA = 1 +PRODUCT = "safekiln" +DEFAULT_CHANNEL = "stable" +DEFAULT_TARGET = "esp32s3" +ALG = "RSA3072-PSS-SHA256" + +# RSA-3072 to match the scheme the ESP32-S3 ROM verifies for secure boot, so the +# release process has one key size and one hash to think about rather than two. +# PSS rather than PKCS#1 v1.5 for the same reason Secure Boot V2 uses it. +KEY_BITS = 3072 +SIG_BYTES = KEY_BITS // 8 # 384 + +# Signature block of Secure Boot V2: 4096 bytes at the next 4 KiB boundary after +# the image, beginning with this magic byte. Both numbers and the magic are the +# ESP32-S3's, and tools/secure-boot.py works from the same ones. The check here +# is structural: it says a block is present, not that it verifies. `espsecure +# signature-info-v2` is the authority on the latter and is used when available. +SIG_BLOCK_BYTES = 4096 +SIG_ALIGN = 4096 +SIG_BLOCK_MAGIC = 0xE7 + +# esp_image_header_t: magic at 0, chip id little-endian at 12. Read from the +# IDF header layout rather than recalled, because a wrong offset here would pass +# a manifest naming an image for another chip, which is exactly the mistake +# SWR-UPD-03 asks the device to refuse. +IMAGE_MAGIC = 0xE9 +IMAGE_CHIP_ID_OFFSET = 12 +CHIP_IDS = { + "esp32": 0x0000, + "esp32s2": 0x0002, + "esp32c3": 0x0005, + "esp32s3": 0x0009, +} + +# A release version and nothing else. SWR-UPD-06 allows build metadata on a +# build that is not on a tag ("1.4.2+7.gabc1234.dirty"), and SWR-UPD-13 compares +# versions to decide whether to install; publishing a version with build +# metadata would put a thing that is not a release into a channel. +RELEASE_VERSION = re.compile(r"^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$") + +CHANNEL_NAME = re.compile(r"^[a-z][a-z0-9-]{0,15}$") + + +class Error(Exception): + """A problem worth a clean message rather than a traceback.""" + + +# --- small helpers -------------------------------------------------------- + +def run_capture(cmd, stdin_bytes=None): + """Run a command and return stdout, raising Error on failure.""" + try: + p = subprocess.run(cmd, input=stdin_bytes, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, check=False) + except FileNotFoundError: + raise Error(f"{cmd[0]} not found") from None + if p.returncode != 0: + msg = p.stderr.decode(errors="replace").strip() or f"exit {p.returncode}" + raise Error(f"{' '.join(cmd[:3])}...: {msg}") + return p.stdout + + +def have(prog): + return shutil.which(prog) is not None + + +def require_openssl(): + if not have("openssl"): + raise Error( + "openssl not found. This tool shells out to it rather than adding a " + "Python crypto dependency (UR-CON-04); install openssl, or sign on a " + "machine that has it." + ) + + +def b64(data): + return base64.b64encode(data).decode("ascii") + + +def unb64(text, what): + try: + return base64.b64decode(text, validate=True) + except Exception: + raise Error(f"{what} is not valid base64") from None + + +# --- version comparison, the device's rule -------------------------------- + +def parse_release_version(text): + """(major, minor, patch) for a release version, or Error. + + Rejects build metadata on purpose: see RELEASE_VERSION. + """ + if not isinstance(text, str): + raise Error("version is not a string") + m = RELEASE_VERSION.match(text) + if m is None: + raise Error( + f"{text!r} is not a release version. Expected major.minor.patch with " + "no build metadata and no leading zeros; a build off a tag carries " + "'+count.rev' and is not a release (SWR-UPD-06)." + ) + return tuple(int(g) for g in m.groups()) + + +def is_newer(offered, running): + """SWR-UPD-13: strictly greater, or the device refuses it. + + The running version may carry build metadata, because a device can be + running a build that was never a release; the comparison ignores it, so + 1.4.2+7.gabc is treated as 1.4.2 and is NOT upgraded to 1.4.2. That is the + conservative direction: it refuses rather than reinstalls. + """ + base = running.split("+", 1)[0] + return parse_release_version(offered) > parse_release_version(base) + + +# --- the image ------------------------------------------------------------ + +def image_chip_id(data): + if len(data) <= IMAGE_CHIP_ID_OFFSET + 1: + raise Error("image is too short to hold an ESP image header") + if data[0] != IMAGE_MAGIC: + raise Error( + f"image does not start with the ESP image magic {IMAGE_MAGIC:#04x}; " + "is it an application binary?" + ) + return int.from_bytes(data[IMAGE_CHIP_ID_OFFSET:IMAGE_CHIP_ID_OFFSET + 2], "little") + + +def check_image_target(data, target): + want = CHIP_IDS.get(target) + if want is None: + raise Error(f"unknown target {target!r}; known: {', '.join(sorted(CHIP_IDS))}") + got = image_chip_id(data) + if got != want: + names = {v: k for k, v in CHIP_IDS.items()} + raise Error( + f"image is for chip id {got:#06x} ({names.get(got, 'unknown')}), " + f"not {target} ({want:#06x}). Publishing it would offer every device " + "an image it must refuse." + ) + + +def sig_block_offset(raw_size): + """Where Secure Boot V2's appended block starts for an image of this size. + + An image that already ends on a boundary still has the block at the next + one, which is the arithmetic tools/secure-boot.py::signed_size encodes from + the other direction. + """ + if raw_size < 0: + raise Error("negative image size") + return (raw_size + SIG_ALIGN - 1) // SIG_ALIGN * SIG_ALIGN + + +def image_has_sig_block(data): + """Whether a signature block looks present at the aligned offset. + + Structural only. A signed image is `payload | padding | 4096-byte block`, + so the block is the last SIG_BLOCK_BYTES and starts on an alignment boundary + with its magic byte. This catches the common mistake, publishing an + unsigned build, and does not pretend to be verification. + """ + if len(data) < SIG_BLOCK_BYTES * 2: + return False + if len(data) % SIG_ALIGN != 0: + return False + block = data[-SIG_BLOCK_BYTES:] + return block[0] == SIG_BLOCK_MAGIC and any(block) + + +def espsecure_says_signed(path): + """None when espsecure is unavailable, else True/False.""" + if not have("espsecure.py") and not have("espsecure"): + return None + prog = "espsecure.py" if have("espsecure.py") else "espsecure" + try: + out = run_capture([prog, "signature-info-v2", str(path)]).decode(errors="replace") + except Error: + return False + return "ignature block" in out + + +# --- relative paths ------------------------------------------------------- + +def check_relative(value, what): + """Every path in a manifest is relative to the manifest's own directory.""" + if not isinstance(value, str) or not value: + raise Error(f"{what} is missing") + if "://" in value or value.startswith("//"): + raise Error( + f"{what} is an absolute URL. Manifest paths are relative so that a " + "mirror is a directory copy and `update.url` works (SRR-13)." + ) + if value.startswith("/"): + raise Error(f"{what} must not start with '/'; it is relative to the manifest") + parts = pathlib.PurePosixPath(value).parts + if ".." in parts: + raise Error(f"{what} must not contain '..'") + if value != pathlib.PurePosixPath(value).as_posix(): + raise Error(f"{what} is not a clean POSIX relative path") + return value + + +# --- keys ----------------------------------------------------------------- + +def secure_boot_key_path(): + """The secure boot signing key this project configures, if any. + + Read from sdkconfig.secure rather than assumed, so that moving the key moves + this check with it. + """ + if not SDKCONFIG_SECURE.is_file(): + return None + m = re.search(r'^CONFIG_SECURE_BOOT_SIGNING_KEY="(.+)"$', + SDKCONFIG_SECURE.read_text(), re.M) + if m is None: + return None + return (FIRMWARE / m.group(1)).resolve() + + +def refuse_secure_boot_key(key): + """SRR-12: two keys, two blast radii.""" + sb = secure_boot_key_path() + key = pathlib.Path(key).resolve() + if sb is not None and key == sb: + raise Error( + f"{key} is this project's SECURE BOOT signing key.\n" + "The manifest key must be a different key: the secure boot key " + "decides what a provisioned board will boot and its digest is burnt " + "into eFuses, so it can never be rotated, while this one is used on " + "every release. See SRR-12 and docs/security.md section 6.2." + ) + if sb is not None and sb.is_file() and key.is_file(): + if sb.read_bytes() == key.read_bytes(): + raise Error( + f"{key} is byte-identical to the secure boot key at {sb}, which " + "is the same mistake under another name (SRR-12)." + ) + + +def public_der(key=None, pubkey=None): + """DER SubjectPublicKeyInfo of the public key, from either half of the pair. + + DER because that is what mbedtls_pk_parse_public_key wants on the device; a + PEM would mean shipping a base64 decoder to read a key. + """ + require_openssl() + if key is not None: + return run_capture(["openssl", "rsa", "-in", str(key), "-pubout", + "-outform", "DER"]) + if pubkey is not None: + return run_capture(["openssl", "rsa", "-pubin", "-in", str(pubkey), + "-pubout", "-outform", "DER"]) + raise Error("need --key or --pubkey") + + +def key_id(der): + """First four bytes of the SHA-256 of the DER public key, as hex. + + Short on purpose: it exists so a device can say "this manifest was signed + with a key I do not have" before attempting a verification, and so a key + rotation is visible in a file somebody is reading. It is not a security + property; the signature is. + """ + return hashlib.sha256(der).hexdigest()[:8] + + +# --- sign and verify ------------------------------------------------------ + +def sign_bytes(payload, key): + require_openssl() + with tempfile.TemporaryDirectory() as tmp: + pf = pathlib.Path(tmp) / "payload" + sf = pathlib.Path(tmp) / "sig" + pf.write_bytes(payload) + run_capture(["openssl", "dgst", "-sha256", + "-sigopt", "rsa_padding_mode:pss", + "-sigopt", "rsa_pss_saltlen:digest", + "-sign", str(key), "-out", str(sf), str(pf)]) + sig = sf.read_bytes() + if len(sig) != SIG_BYTES: + raise Error( + f"signature is {len(sig)} bytes, expected {SIG_BYTES}: is {key} an " + f"RSA-{KEY_BITS} key?" + ) + return sig + + +def verify_bytes(payload, sig, key=None, pubkey=None): + require_openssl() + with tempfile.TemporaryDirectory() as tmp: + d = pathlib.Path(tmp) + (d / "payload").write_bytes(payload) + (d / "sig").write_bytes(sig) + pub = d / "pub.pem" + if pubkey is not None: + pub = pathlib.Path(pubkey) + else: + if key is None: + raise Error("need --key or --pubkey") + pub.write_bytes(run_capture(["openssl", "rsa", "-in", str(key), + "-pubout"])) + try: + run_capture(["openssl", "dgst", "-sha256", + "-sigopt", "rsa_padding_mode:pss", + "-sigopt", "rsa_pss_saltlen:digest", + "-verify", str(pub), "-signature", str(d / "sig"), + str(d / "payload")]) + except Error: + return False + return True + + +# --- the payload and the envelope ---------------------------------------- + +def build_payload(version, channel, target, image_rel, size, digest, + security, advisory, released): + """The object that gets signed, validated before it is. + + Validation lives here rather than at the argument parser so that `verify` + applies exactly the same rules to a manifest somebody else produced. + """ + parse_release_version(version) + if not CHANNEL_NAME.match(channel or ""): + raise Error(f"channel {channel!r} must be lowercase letters, digits and dashes") + if target not in CHIP_IDS: + raise Error(f"unknown target {target!r}") + check_relative(image_rel, "image") + if size <= 0: + raise Error("size must be positive") + if not re.fullmatch(r"[0-9a-f]{64}", digest or ""): + raise Error("sha256 must be 64 lowercase hex characters") + if security and not advisory: + raise Error( + "a security release needs an advisory (SWR-UPD-16): the obligation is " + "to say what was fixed, not only to ship the fix." + ) + if advisory: + check_relative(advisory, "advisory") + try: + datetime.date.fromisoformat(released) + except ValueError: + raise Error(f"released {released!r} is not an ISO date") from None + + payload = { + "schema": SCHEMA, + "product": PRODUCT, + "channel": channel, + "target": target, + "version": version, + "released": released, + "security": bool(security), + "image": image_rel, + "size": int(size), + "sha256": digest, + } + if advisory: + payload["advisory"] = advisory + return payload + + +def payload_bytes(payload): + """The exact bytes that are signed. + + Sorted keys and a trailing newline: not because the device cares, it verifies + over whatever these bytes are, but because a human diffing two manifests + should see the release change and nothing else. + """ + return (json.dumps(payload, sort_keys=True, indent=2) + "\n").encode() + + +def envelope(payload, sig, kid): + return { + "alg": ALG, + "key_id": kid, + "payload": b64(payload_bytes(payload) if isinstance(payload, dict) else payload), + "sig": b64(sig), + } + + +def read_envelope(path): + p = pathlib.Path(path) + if not p.is_file(): + raise Error(f"no manifest at {p}") + try: + env = json.loads(p.read_text()) + except json.JSONDecodeError as exc: + raise Error(f"{p} is not valid JSON: {exc}") from None + if not isinstance(env, dict): + raise Error(f"{p} is not a JSON object") + for field in ("alg", "key_id", "payload", "sig"): + if field not in env: + raise Error(f"{p} has no {field!r}") + if env["alg"] != ALG: + raise Error(f"{p} is {env['alg']!r}, this tool signs {ALG!r}") + raw = unb64(env["payload"], "payload") + sig = unb64(env["sig"], "sig") + if len(sig) != SIG_BYTES: + raise Error(f"signature is {len(sig)} bytes, expected {SIG_BYTES}") + try: + payload = json.loads(raw) + except json.JSONDecodeError as exc: + raise Error(f"the signed payload in {p} is not valid JSON: {exc}") from None + return env, raw, sig, payload + + +def check_payload_fields(payload): + """Re-apply build_payload's rules to a payload we did not build.""" + if payload.get("schema") != SCHEMA: + raise Error(f"schema is {payload.get('schema')!r}, this tool knows {SCHEMA}") + if payload.get("product") != PRODUCT: + raise Error(f"product is {payload.get('product')!r}, expected {PRODUCT!r}") + build_payload(payload.get("version"), payload.get("channel"), + payload.get("target"), payload.get("image"), + payload.get("size", 0), payload.get("sha256"), + payload.get("security", False), payload.get("advisory"), + payload.get("released", "")) + + +# --- subcommands ---------------------------------------------------------- + +def cmd_keygen(args): + p = pathlib.Path(args.key) + if p.exists(): + raise Error( + f"{p} already exists. Overwriting a manifest signing key orphans " + "every device that trusts it until they are reflashed locally; move " + "it aside deliberately if that is what you mean." + ) + refuse_secure_boot_key(p) + require_openssl() + p.parent.mkdir(parents=True, exist_ok=True) + der = run_capture(["openssl", "genpkey", "-algorithm", "RSA", + "-pkeyopt", f"rsa_keygen_bits:{KEY_BITS}", + "-outform", "PEM"]) + p.write_bytes(der) + os.chmod(p, stat.S_IRUSR | stat.S_IWUSR) + kid = key_id(public_der(key=p)) + print(f"wrote {p} (mode 0600), key_id {kid}") + print() + print("Three things to do with it now, and one not to:") + print(f" 1. Move it OFF this machine. It signs what every unit is offered;") + print( " it has no business on a laptop that browses the web (SRR-12).") + print( " 2. Back it up somewhere you will still have in five years. The") + print( " support period outlasts most of the decisions in this project.") + print(f" 3. Emit the public half into the firmware:") + print(f" tools/update-manifest.py pubkey --key {p} --header ") + print( " Do NOT reuse the secure boot key for this, or this one for that.") + + +def cmd_pubkey(args): + if args.key: + refuse_secure_boot_key(args.key) + der = public_der(key=args.key, pubkey=args.pubkey) + kid = key_id(der) + print(f"key_id {kid}, {len(der)} bytes of DER SubjectPublicKeyInfo") + + if args.pem: + require_openssl() + src = ["-in", str(args.key)] if args.key else ["-pubin", "-in", str(args.pubkey)] + pem = run_capture(["openssl", "rsa", *src, "-pubout"]) + pathlib.Path(args.pem).write_bytes(pem) + print(f"wrote {args.pem}") + + if args.header: + lines = [] + for i in range(0, len(der), 12): + chunk = der[i:i + 12] + lines.append(" " + " ".join(f"0x{b:02x}," for b in chunk)) + body = "\n".join(lines) + text = f"""/* SPDX-FileCopyrightText: 2026 Bitcrush Testing + * SPDX-License-Identifier: GPL-3.0-or-later + * + * GENERATED by tools/update-manifest.py pubkey. Do not edit. + * + * The public half of the update manifest signing key (SWR-UPD-11, SEC-12), as + * DER SubjectPublicKeyInfo so that mbedtls_pk_parse_public_key can take it + * directly. Replacing this key means every device carrying the old one stops + * believing the service, so a rotation is a release, not a config change. + * + * key_id {kid}: the first four bytes of the SHA-256 of these bytes. + */ +#ifndef KILN_UPDATE_PUBKEY_H +#define KILN_UPDATE_PUBKEY_H + +#include +#include + +#define KILN_UPDATE_KEY_ID "{kid}" + +static const uint8_t kiln_update_pubkey_der[] = {{ +{body} +}}; + +static const size_t kiln_update_pubkey_der_len = sizeof kiln_update_pubkey_der; + +#endif /* KILN_UPDATE_PUBKEY_H */ +""" + out = pathlib.Path(args.header) + out.parent.mkdir(parents=True, exist_ok=True) + out.write_text(text) + print(f"wrote {out}") + + +def cmd_sign(args): + refuse_secure_boot_key(args.key) + image = pathlib.Path(args.image) + if not image.is_file(): + raise Error(f"no image at {image}") + data = image.read_bytes() + + check_image_target(data, args.target) + + signed = espsecure_says_signed(image) + if signed is False or (signed is None and not image_has_sig_block(data)): + how = "espsecure" if signed is False else "the appended block check" + if not args.allow_unsigned_image: + raise Error( + f"{image} carries no Secure Boot V2 signature ({how}).\n" + "SWR-UPD-11 has the device verify the image's own signature as " + "well as the digest in the manifest, so an unsigned image is one " + "a provisioned unit will refuse after downloading it.\n" + "Sign it first:\n" + " tools/secure-boot.py sign --key keys/prod.pem\n" + "or pass --allow-unsigned-image if you are deliberately making a " + "manifest for an unprovisioned test board." + ) + print(f"WARNING: {image} is not signed ({how}); a provisioned unit will " + "refuse it.") + + digest = hashlib.sha256(data).hexdigest() + image_rel = args.image_path or f"images/{PRODUCT}-{args.version}-{args.target}.bin" + released = args.released or datetime.date.today().isoformat() + + payload = build_payload(args.version, args.channel, args.target, image_rel, + len(data), digest, args.security, args.advisory, + released) + raw = payload_bytes(payload) + sig = sign_bytes(raw, args.key) + kid = key_id(public_der(key=args.key)) + if not verify_bytes(raw, sig, key=args.key): + raise Error( + "the signature this tool just made does not verify against its own " + "key. Something is wrong with the openssl invocation; do not publish." + ) + + out = pathlib.Path(args.out or (ROOT / "dist" / "update" / f"{args.channel}.json")) + out.parent.mkdir(parents=True, exist_ok=True) + out.write_text(json.dumps(envelope(payload, sig, kid), indent=2) + "\n") + + print(f"wrote {out}") + print() + print(raw.decode().rstrip()) + print() + print(f"signed with key_id {kid}, verified against its own public half") + print() + print("Serve it at this layout, where the manifest's directory is the root") + print("that every relative path resolves against:") + print() + print(f" https://update.bitcrushtesting.com/{PRODUCT}/{args.channel}.json") + print(f" https://update.bitcrushtesting.com/{PRODUCT}/{image_rel}") + if args.advisory: + print(f" https://update.bitcrushtesting.com/{PRODUCT}/{args.advisory}") + print() + print(f"Upload the image BEFORE the manifest. A manifest naming an image that") + print(f"is not there yet makes every device that checks report a failed") + print(f"update, which is a support call rather than a fix (SWR-UPD-09).") + + +def cmd_verify(args): + env, raw, sig, payload = read_envelope(args.manifest) + + # Signature FIRST, fields second, in that order and not the other way round. + # It is the order SWR-UPD-11 puts on the device, which discards an unverified + # manifest without looking further, and a tool that checked the fields first + # would report "bad version" for a forgery and teach whoever read that the + # wrong thing about what had just happened. + der = public_der(key=args.key, pubkey=args.pubkey) + kid = key_id(der) + if kid != env["key_id"]: + print(f"key_id mismatch: manifest says {env['key_id']}, this key is {kid}") + if not verify_bytes(raw, sig, key=args.key, pubkey=args.pubkey): + raise Error( + "SIGNATURE DOES NOT VERIFY. A device would discard this manifest " + "without parsing it further and without telling the operator " + "anything was offered (SWR-UPD-11)." + ) + print(f"signature verifies against key_id {kid}") + check_payload_fields(payload) + print(raw.decode().rstrip()) + + if args.image: + image = pathlib.Path(args.image) + if not image.is_file(): + raise Error(f"no image at {image}") + data = image.read_bytes() + if len(data) != payload["size"]: + raise Error(f"size mismatch: manifest {payload['size']}, image {len(data)}") + got = hashlib.sha256(data).hexdigest() + if got != payload["sha256"]: + raise Error(f"sha256 mismatch:\n manifest {payload['sha256']}\n image {got}") + check_image_target(data, payload["target"]) + print(f"{image} matches: {len(data)} bytes, sha256 and chip id agree") + + if args.running_version: + verdict = ("would install" if is_newer(payload["version"], args.running_version) + else "would be refused") + print(f"a device running {args.running_version}: {verdict} " + f"{payload['version']} (SWR-UPD-13)") + + +def cmd_show(args): + _, raw, _, payload = read_envelope(args.manifest) + print(raw.decode().rstrip()) + print() + print("NOT VERIFIED. `show` decodes and does not check the signature, which " + "is the one thing that decides whether any of the above is true. Use " + "`verify --pubkey ...` before believing it.") + try: + check_payload_fields(payload) + except Error as exc: + print(f"and the payload would be rejected anyway: {exc}") + + +# --- self-test ------------------------------------------------------------ + +def self_test(): + """Everything that needs no key and no network. + + The round trip through openssl is included when openssl is present, because + the failure this tool must never have is producing a manifest whose signature + does not verify, and the only way to know is to verify one. + """ + checks = failed = 0 + + def check(what, got, want): + nonlocal checks, failed + checks += 1 + if got != want: + failed += 1 + print(f" FAIL {what}: got {got!r}, want {want!r}") + + def raises(what, fn): + nonlocal checks, failed + checks += 1 + try: + fn() + except Error: + return + except Exception as exc: # noqa: BLE001 + failed += 1 + print(f" FAIL {what}: raised {type(exc).__name__}, want Error") + return + failed += 1 + print(f" FAIL {what}: did not raise") + + # --- versions: the device's acceptance rule --------------------------- + check("plain release", parse_release_version("1.4.2"), (1, 4, 2)) + check("zeros", parse_release_version("0.0.0"), (0, 0, 0)) + raises("build metadata", lambda: parse_release_version("1.4.2+7.gabc1234")) + raises("dirty build", lambda: parse_release_version("1.4.2+7.gabc1234.dirty")) + raises("leading zero", lambda: parse_release_version("1.04.2")) + raises("two components", lambda: parse_release_version("1.4")) + raises("v prefix", lambda: parse_release_version("v1.4.2")) + raises("not a string", lambda: parse_release_version(None)) + + check("newer patch", is_newer("1.4.3", "1.4.2"), True) + check("newer minor", is_newer("1.5.0", "1.4.9"), True) + check("newer major", is_newer("2.0.0", "1.99.99"), True) + check("same version", is_newer("1.4.2", "1.4.2"), False) + check("older", is_newer("1.4.1", "1.4.2"), False) + # 10 > 9 numerically, and "10" < "9" as text: the comparison a string + # compare gets wrong, which is why it is tested rather than assumed. + check("double digits", is_newer("1.10.0", "1.9.0"), True) + check("not a downgrade to 1.9", is_newer("1.9.0", "1.10.0"), False) + # A device on a non-release build is not offered the release it was built + # from: conservative, refuses rather than reinstalls. + check("running a dirty build of the same version", + is_newer("1.4.2", "1.4.2+7.gabc1234.dirty"), False) + check("running a dirty build, newer release offered", + is_newer("1.4.3", "1.4.2+7.gabc1234.dirty"), True) + + # --- image header ----------------------------------------------------- + def image(chip_id, magic=IMAGE_MAGIC, extra=0): + hdr = bytearray(32 + extra) + hdr[0] = magic + hdr[IMAGE_CHIP_ID_OFFSET:IMAGE_CHIP_ID_OFFSET + 2] = chip_id.to_bytes(2, "little") + return bytes(hdr) + + check("s3 chip id", image_chip_id(image(0x0009)), 9) + raises("wrong magic", lambda: image_chip_id(image(0x0009, magic=0x00))) + raises("too short", lambda: image_chip_id(b"\xe9\x00")) + check("s3 image for s3", check_image_target(image(0x0009), "esp32s3"), None) + raises("c3 image for s3", lambda: check_image_target(image(0x0005), "esp32s3")) + raises("unknown target", lambda: check_image_target(image(0x0009), "esp32h9")) + + # --- signature block placement, the same arithmetic as secure-boot.py - + check("empty", sig_block_offset(0), 0) + check("one byte", sig_block_offset(1), 4096) + check("one short", sig_block_offset(4095), 4096) + check("exactly one block", sig_block_offset(4096), 4096) + check("just over", sig_block_offset(4097), 8192) + raises("negative", lambda: sig_block_offset(-1)) + + signed = bytes([IMAGE_MAGIC]) + bytes(4095) + bytes([SIG_BLOCK_MAGIC]) + bytes(4095) + check("signed-looking image", image_has_sig_block(signed), True) + check("unpadded image", image_has_sig_block(bytes(5000)), False) + check("zero block", image_has_sig_block(bytes(8192)), False) + check("too small to hold a block", image_has_sig_block(bytes(4096)), False) + + # --- relative paths --------------------------------------------------- + check("plain path", check_relative("images/a.bin", "image"), "images/a.bin") + raises("absolute URL", lambda: check_relative("https://x/y.bin", "image")) + raises("scheme relative", lambda: check_relative("//x/y.bin", "image")) + raises("rooted", lambda: check_relative("/images/a.bin", "image")) + raises("parent", lambda: check_relative("../a.bin", "image")) + raises("parent inside", lambda: check_relative("images/../../a.bin", "image")) + raises("empty", lambda: check_relative("", "image")) + + # --- the payload ------------------------------------------------------ + good = dict(version="1.4.2", channel="stable", target="esp32s3", + image_rel="images/safekiln-1.4.2-esp32s3.bin", size=1234, + digest="a" * 64, security=False, advisory=None, + released="2026-10-09") + p = build_payload(**good) + check("payload keys", sorted(p), ["channel", "image", "product", "released", + "schema", "security", "sha256", "size", + "target", "version"]) + check("no advisory when not security", "advisory" in p, False) + check("security release carries one", + "advisory" in build_payload(**{**good, "security": True, + "advisory": "advisories/1.html"}), True) + raises("security without advisory", + lambda: build_payload(**{**good, "security": True})) + raises("bad digest", lambda: build_payload(**{**good, "digest": "nope"})) + raises("uppercase digest", lambda: build_payload(**{**good, "digest": "A" * 64})) + raises("zero size", lambda: build_payload(**{**good, "size": 0})) + raises("bad channel", lambda: build_payload(**{**good, "channel": "Stable!"})) + raises("bad date", lambda: build_payload(**{**good, "released": "09.10.2026"})) + + # Byte-for-byte stability: the payload is what gets signed, so a change in + # how it serialises is a change in what a device verifies. + raw = payload_bytes(p) + check("payload ends with a newline", raw.endswith(b"\n"), True) + check("payload is sorted", raw.index(b'"channel"') < raw.index(b'"version"'), True) + check("payload round trips", json.loads(raw), p) + check("payload is stable", payload_bytes(json.loads(raw)), raw) + + # --- the envelope ----------------------------------------------------- + with tempfile.TemporaryDirectory() as tmp: + d = pathlib.Path(tmp) + env = envelope(p, bytes(SIG_BYTES), "deadbeef") + mf = d / "stable.json" + mf.write_text(json.dumps(env, indent=2) + "\n") + _, raw2, sig2, pl2 = read_envelope(mf) + check("envelope round trip, payload", pl2, p) + check("envelope round trip, bytes", raw2, raw) + check("envelope round trip, sig length", len(sig2), SIG_BYTES) + + (d / "notjson.json").write_text("{") + raises("not JSON", lambda: read_envelope(d / "notjson.json")) + (d / "noalg.json").write_text('{"key_id":"x","payload":"","sig":""}') + raises("no alg", lambda: read_envelope(d / "noalg.json")) + (d / "wrongalg.json").write_text(json.dumps({**env, "alg": "ED25519"})) + raises("wrong alg", lambda: read_envelope(d / "wrongalg.json")) + (d / "shortsig.json").write_text(json.dumps({**env, "sig": b64(b"\x00" * 8)})) + raises("short signature", lambda: read_envelope(d / "shortsig.json")) + (d / "badb64.json").write_text(json.dumps({**env, "payload": "!!!"})) + raises("payload not base64", lambda: read_envelope(d / "badb64.json")) + (d / "payloadnotjson.json").write_text(json.dumps({**env, "payload": b64(b"{")})) + raises("payload not JSON", lambda: read_envelope(d / "payloadnotjson.json")) + raises("no such manifest", lambda: read_envelope(d / "nothing.json")) + + # A payload we did not build is held to the same rules. + check("our payload passes the re-check", check_payload_fields(p), None) + raises("future schema", + lambda: check_payload_fields({**p, "schema": 2})) + raises("another product", + lambda: check_payload_fields({**p, "product": "something"})) + raises("absolute image URL", + lambda: check_payload_fields({**p, "image": "https://x/y.bin"})) + + # --- the secure boot key guard --------------------------------------- + sb = secure_boot_key_path() + checks += 1 + if sb is None: + failed += 1 + print(" FAIL secure boot key path: sdkconfig.secure names no key, so the " + "SRR-12 guard would never fire") + else: + raises("signing with the secure boot key", lambda: refuse_secure_boot_key(sb)) + + # --- the round trip, where openssl exists ---------------------------- + if not have("openssl"): + print(" SKIP sign/verify round trip: no openssl on this machine") + else: + with tempfile.TemporaryDirectory() as tmp: + d = pathlib.Path(tmp) + key = d / "test.pem" + key.write_bytes(run_capture( + ["openssl", "genpkey", "-algorithm", "RSA", + "-pkeyopt", f"rsa_keygen_bits:{KEY_BITS}", "-outform", "PEM"])) + other = d / "other.pem" + other.write_bytes(run_capture( + ["openssl", "genpkey", "-algorithm", "RSA", + "-pkeyopt", f"rsa_keygen_bits:{KEY_BITS}", "-outform", "PEM"])) + + sig = sign_bytes(raw, key) + check("signature length", len(sig), SIG_BYTES) + check("verifies with its own key", verify_bytes(raw, sig, key=key), True) + check("fails with another key", verify_bytes(raw, sig, key=other), False) + check("fails on a tampered payload", + verify_bytes(raw[:-2] + b"X\n", sig, key=key), False) + check("fails on a tampered signature", + verify_bytes(raw, sig[:-1] + bytes([sig[-1] ^ 0xFF]), key=key), False) + + der = public_der(key=key) + check("DER is a SubjectPublicKeyInfo", der[0], 0x30) + check("key_id is eight hex", len(key_id(der)), 8) + check("key_id is stable", key_id(der), key_id(public_der(key=key))) + checks += 1 + if key_id(der) == key_id(public_der(key=other)): + failed += 1 + print(" FAIL key_id: two different keys share one") + + # PSS is randomised, so two signatures over the same bytes differ + # and both verify. Worth pinning: a verifier that compared + # signatures rather than verifying them would pass with v1.5 and + # fail here, and this is the scheme we have chosen. + check("PSS is randomised", sign_bytes(raw, key) != sig, True) + check("and the second one verifies", + verify_bytes(raw, sign_bytes(raw, key), key=key), True) + + print(f"{checks - failed}/{checks} checks passed") + return 1 if failed else 0 + + +# --- main ----------------------------------------------------------------- + +def main(argv=None): + ap = argparse.ArgumentParser( + description="Build and sign the update manifest (SWR-UPD-09 to SWR-UPD-16).", + epilog="The signing key is NOT the secure boot key, and belongs offline " + "(SRR-12). docs/security.md section 6.2 has the reasoning.", + ) + ap.add_argument("--self-test", action="store_true", + help="run the checks that need no key, no board and no network") + sub = ap.add_subparsers(dest="cmd") + + k = sub.add_parser("keygen", help="generate the manifest signing key") + k.add_argument("--key", required=True) + k.set_defaults(fn=cmd_keygen) + + pk = sub.add_parser("pubkey", help="print the key id; emit the public half") + pk.add_argument("--key", help="the private key") + pk.add_argument("--pubkey", help="or the public key, if that is all you have") + pk.add_argument("--header", help="write a C header for the firmware") + pk.add_argument("--pem", help="write the public key as PEM") + pk.set_defaults(fn=cmd_pubkey) + + s = sub.add_parser("sign", help="build and sign a manifest for an image") + s.add_argument("--key", required=True) + s.add_argument("--image", required=True, help="the signed application binary") + s.add_argument("--version", required=True, help="release version, e.g. 1.4.2") + s.add_argument("--channel", default=DEFAULT_CHANNEL) + s.add_argument("--target", default=DEFAULT_TARGET) + s.add_argument("--security", action="store_true", + help="mark it a security release (SWR-UPD-16); needs --advisory") + s.add_argument("--advisory", help="relative path to the advisory") + s.add_argument("--released", help="ISO date, default today") + s.add_argument("--image-path", help="relative path the manifest names, " + "default images/--.bin") + s.add_argument("--out", help="default dist/update/.json") + s.add_argument("--allow-unsigned-image", action="store_true", + help="publish an image with no Secure Boot V2 signature, for a " + "test board that was never provisioned") + s.set_defaults(fn=cmd_sign) + + v = sub.add_parser("verify", help="verify a manifest, and optionally its image") + v.add_argument("--manifest", required=True) + v.add_argument("--key", help="the private key") + v.add_argument("--pubkey", help="or the public key, which is what a device has") + v.add_argument("--image", help="check size, digest and chip id against it") + v.add_argument("--running-version", + help="report whether a device on this version would install it") + v.set_defaults(fn=cmd_verify) + + sh = sub.add_parser("show", help="decode a manifest WITHOUT verifying it") + sh.add_argument("--manifest", required=True) + sh.set_defaults(fn=cmd_show) + + args = ap.parse_args(argv) + if args.self_test: + return self_test() + if not getattr(args, "fn", None): + ap.print_help() + return 2 + try: + args.fn(args) + except Error as exc: + print(f"error: {exc}", file=sys.stderr) + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/web/app.js b/web/app.js index 640177b..d4ee7b9 100644 --- a/web/app.js +++ b/web/app.js @@ -168,7 +168,7 @@ function renderBanner(s) { b.className = 'banner' + (s.fault ? '' : ' warn'); if (s.fault) { - b.append(el('b', null, `Fault ${s.fault.code} — ${s.fault.label}`)); + b.append(el('b', null, `Fault ${s.fault.code}: ${s.fault.label}`)); b.append(el('div', null, s.fault.message)); if (s.fault.requirement) { b.append(el('div', 'tagline', `detected by ${s.fault.requirement}`)); @@ -177,7 +177,7 @@ function renderBanner(s) { if (warnings.length) { if (!s.fault) b.append(el('b', null, warnings.length === 1 ? 'Warning' : 'Warnings')); const ul = el('ul'); - for (const w of warnings) ul.append(el('li', null, `${w.code} ${w.label} — ${w.message}`)); + for (const w of warnings) ul.append(el('li', null, `${w.code} ${w.label}: ${w.message}`)); b.append(ul); } b.hidden = false; @@ -275,14 +275,29 @@ async function refreshPower() { live.power = { kw: (c.apparent_va || 0) / 1000, kwh: (c.energy_wh || 0) / 1000, - phases: c.phases, - perPhase: c.per_phase || [], basis: c.power_basis, }; + /* Only fields /api/current actually returns. This used to read `phases`, + `channels` and `per_phase`, which the API has never emitted: three-phase + went out of scope with OQ-06 and the client kept asking for it. On a + running kiln that showed up on the dashboard as the line + "undefined-phase, undefined CTs fitted", which is the kind of defect a + screenshot finds and a unit test does not. */ const note = $('power-basis'); if (note) { - note.textContent = `${c.phases}-phase, ${c.channels} CT` + - (c.channels === 1 ? '' : 's') + ' fitted. ' + (c.power_basis || ''); + if (!c.enabled) { + note.textContent = 'Current measurement is off, so power and energy are not measured.'; + } else if (!c.available) { + note.textContent = 'Current transformer fault, so power and energy are not measured.'; + } else { + /* What is fitted, and what the number assumes. The voltage is the one + the device is configured for rather than a constant here: power is + current times that voltage, so a reader who knows their supply is + 240 V needs to see which figure produced the kilowatts. */ + const cts = c.channels || 1; + const volts = Number(c.mains_v || 0).toFixed(0); + note.textContent = `${cts} CT fitted. Power assumes ${volts} V AC.`; + } } } catch (e) { live.power = null; @@ -426,7 +441,7 @@ async function loadRuns() { const when = r.start_utc_s ? new Date(r.start_utc_s * 1000).toLocaleString() : `run ${r.run_id}`; - left.append(el('div', null, `${r.program || '(unnamed)'} — ${when}`)); + left.append(el('div', null, `${r.program || '(unnamed)'} · ${when}`)); const bits = [`peak ${r.peak_c.toFixed(0)}°C`, fmtDur(r.duration_s), r.end_reason]; if (r.energy_wh) bits.push(`${(r.energy_wh / 1000).toFixed(2)} kWh`); if (r.fault) bits.push(`fault: ${r.fault}`); diff --git a/web/index.html b/web/index.html index a863ef7..49f1de1 100644 --- a/web/index.html +++ b/web/index.html @@ -18,7 +18,7 @@
- KILNCONTROL + Safe Kiln Controller
@@ -62,11 +62,14 @@ Current --A
-
+ +
Power --kW
-
+
Energy this run --kWh
@@ -102,8 +105,8 @@

Display only. Starting, pausing and aborting a firing, - manual heating and acknowledging a fault are done at the kiln - — not over the network. + manual heating and acknowledging a fault are done at the kiln, not over + the network.

@@ -133,13 +136,12 @@

Editor

+

+ Display only. Firing programs are shown here but are + authored at the kiln, not over the network. +

-

- Display only. Firing programs are shown here but are - authored at the kiln, not over the network (SWR-WEB-26). -

-